paystream-sdk
v1.0.0
Published
TypeScript SDK for Meteora CP-AMM and DLMM protocols via Paystream
Maintainers
Readme
Paystream SDK
A TypeScript SDK for interacting with Meteora's CP-AMM and DLMM protocols on Solana via Paystream.
Installation
npm install paystream-sdkUsage
Basic Setup
import PaystreamSDK from 'paystream-sdk';
import { PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
// Create SDK instance
const sdk = PaystreamSDK.createMainnet();
// Or with custom RPC
const customSdk = PaystreamSDK.createWithRpc('https://your-rpc-endpoint.com');CP-AMM Operations
// Get all pools
const pools = await sdk.cpAmm.getAllPools();
// Get quote for swap
const quote = await sdk.cpAmm.getQuote({
inAmount: new BN(1000000), // 1 USDC (6 decimals)
inputTokenMint: new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
slippage: 0.01, // 1%
poolAddress: new PublicKey('pool_address_here')
});
// Execute swap
const swapTx = await sdk.cpAmm.swap({
payer: userPublicKey,
pool: poolAddress,
inputTokenMint: tokenAMint,
outputTokenMint: tokenBMint,
amountIn: new BN(1000000),
minimumAmountOut: quote.minSwapOutAmount
});
// Add liquidity
const addLiquidityTx = await sdk.cpAmm.addLiquidity({
owner: userPublicKey,
position: positionAddress,
pool: poolAddress,
positionNftAccount: nftAccount,
liquidityDelta: new BN(1000000),
maxAmountTokenA: new BN(1000000),
maxAmountTokenB: new BN(1000000),
tokenAAmountThreshold: new BN(950000),
tokenBAmountThreshold: new BN(950000)
});DLMM Operations
// Get user positions
const positions = await sdk.dlmm.getPositionsByUserAndLbPair(
poolAddress,
userPublicKey
);
// Execute swap
const dlmmSwapTx = await sdk.dlmm.swap(poolAddress, {
inToken: tokenAMint,
outToken: tokenBMint,
inAmount: new BN(1000000),
minOutAmount: new BN(990000),
lbPair: poolAddress,
user: userPublicKey
});
// Claim swap fees
const claimTx = await sdk.dlmm.claimSwapFee(poolAddress, {
owner: userPublicKey,
position: userPosition
});
// Claim LM rewards
const rewardTx = await sdk.dlmm.claimLMReward(poolAddress, {
owner: userPublicKey,
position: userPosition
});API Reference
PaystreamSDK
Main SDK class that provides access to CP-AMM and DLMM functionality.
Static Methods
createMainnet(): Create SDK instance for Solana mainnetcreateDevnet(): Create SDK instance for Solana devnetcreateTestnet(): Create SDK instance for Solana testnetcreateWithRpc(rpcEndpoint): Create SDK instance with custom RPC endpoint
MeteoraCP (CP-AMM)
Methods for interacting with Meteora's Constant Product AMM.
createCustomPool(params): Create a new liquidity poolfetchPoolState(poolAddress): Get pool state informationaddLiquidity(params): Add liquidity to a poolremoveLiquidity(params): Remove liquidity from a poolgetQuote(params): Get swap quoteswap(params): Execute token swapfetchPositionState(positionAddress): Get position informationgetAllPools(): Get all available poolsgetAllConfigs(): Get all pool configurations
MeteoraLD (DLMM)
Methods for interacting with Meteora's Dynamic Liquidity Market Maker.
createPool(poolAddress): Create DLMM pool instancecreateMultiplePools(poolAddresses): Create multiple pool instancesclosePosition(poolAddress, params): Close a liquidity positiongetPositionsByUserAndLbPair(poolAddress, userAddress): Get user positionsclaimSwapFee(poolAddress, params): Claim swap fees for a positionclaimAllSwapFee(poolAddress, params): Claim swap fees for all positionsclaimLMReward(poolAddress, params): Claim liquidity mining rewardsclaimAllLMRewards(poolAddress, params): Claim all LM rewardsswap(poolAddress, params): Execute token swapgetPoolInfo(poolAddress): Get pool information
Types
The SDK includes comprehensive TypeScript types for all parameters and return values. See the exported types for detailed interface definitions.
License
MIT
