Skip to main content

Installation

Learn how to install and configure the Saros TypeScript SDK (@saros-finance/sdk) in your JavaScript or TypeScript project.

Installation

Using npm

npm install @saros-finance/sdk

Using yarn

yarn add @saros-finance/sdk

Using pnpm

pnpm add @saros-finance/sdk

Dependencies

The SDK automatically installs these peer dependencies:

  • @solana/web3.js - Solana JavaScript SDK
  • bn.js - BigNumber support for precise calculations
  • graphql-request - GraphQL client for pool data

Project Setup

TypeScript Configuration

If using TypeScript, ensure your tsconfig.json includes:

{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"skipLibCheck": true,
"strict": true,
"lib": ["ES2020", "DOM"]
}
}

Environment Variables

Create a .env file for configuration:

# Solana RPC Configuration
SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
# For development: https://api.devnet.solana.com

# Wallet Configuration (development only - never commit real keys)
WALLET_PRIVATE_KEY=your_base58_encoded_private_key

# Optional: Custom program addresses (defaults provided)
SAROS_SWAP_PROGRAM_ID=SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr
SAROS_FARM_PROGRAM_ID=SFarmWM5wLFNEw1q5ofqL7CrwBMwdcqQgK6oQuoBGZJ

Basic Setup

Connection Setup

import { genConnectionSolana } from '@saros-finance/sdk';
import { PublicKey } from '@solana/web3.js';

// Create Solana connection
const connection = genConnectionSolana();

// Test connection
async function testConnection() {
try {
const version = await connection.getVersion();
console.log('Connected to Solana:', version);
} catch (error) {
console.error('Connection failed:', error);
}
}

Import SDK Functions

// Core functions
import {
getSwapAmountSaros,
swapSaros,
createPool,
getPoolInfo
} from '@saros-finance/sdk';

// Liquidity functions
import {
depositAllTokenTypes,
withdrawAllTokenTypes
} from '@saros-finance/sdk';

// Utility functions
import {
convertBalanceToWei,
getTokenMintInfo,
getTokenAccountInfo,
getInfoTokenByMint
} from '@saros-finance/sdk';

// Services (default import)
import sarosSdk from '@saros-finance/sdk';
const { SarosFarmService, SarosStakeServices } = sarosSdk;

Verification

Quick Test

Create a test file to verify installation:

// test-installation.ts
import { genConnectionSolana, convertBalanceToWei } from '@saros-finance/sdk';
import { PublicKey } from '@solana/web3.js';

async function verifyInstallation() {
console.log('🔍 Testing Saros SDK installation...');

try {
// Test 1: Connection
const connection = genConnectionSolana();
const version = await connection.getVersion();
console.log('✅ Solana connection successful:', version['solana-core']);

// Test 2: Utility functions
const weiAmount = convertBalanceToWei(1, 6);
console.log('✅ Utility functions working:', weiAmount);

// Test 3: Public Key creation
const testKey = new PublicKey('11111111111111111111111111111112');
console.log('✅ Solana web3.js integration:', testKey.toString());

console.log('🎉 Saros SDK successfully installed and verified!');
} catch (error) {
console.error('❌ Installation verification failed:', error);
}
}

verifyInstallation();

Run the test:

npx ts-node test-installation.ts
# or with Node.js: node test-installation.js

Expected output:

🔍 Testing Saros SDK installation...
✅ Solana connection successful: 1.18.0
✅ Utility functions working: 1000000
✅ Solana web3.js integration: 11111111111111111111111111111112
🎉 Saros SDK successfully installed and verified!

Common Issues

Module Resolution Errors

Problem: Cannot resolve module '@saros-finance/sdk'

Solution:

# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install

# Or use exact versions
npm install @saros-finance/sdk@2.4.0 --save-exact

Web3.js Version Conflicts

Problem: Multiple versions of @solana/web3.js

Solution:

# Check for conflicts
npm ls @solana/web3.js

# Force single version
npm install @solana/web3.js@1.87.6 --save-exact

TypeScript Compilation Errors

Problem: Type errors with SDK imports

Solution:

// Add to tsconfig.json
{
"compilerOptions": {
"skipLibCheck": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
}
}

RPC Connection Issues

Problem: fetch is not defined in Node.js

Solution:

# Install fetch polyfill for Node.js < 18
npm install node-fetch
// Add at top of your file for Node.js < 18
import fetch from 'node-fetch';
global.fetch = fetch;

Next Steps

✅ SDK installed and verified
➡️ Next: Configuration Guide

Or explore specific features: