anyswap
v0.1.1
Published
TypeScript client library for AnySwap protocol - a multi-token Balancer-style AMM on Solana
Downloads
25
Maintainers
Readme
AnySwap
TypeScript client library for AnySwap protocol - a multi-token Balancer-style AMM on Solana
Installation
npm install anyswap
# or
yarn add anyswap
# or
pnpm add anyswapFeatures
- 🔄 Multi-token Swaps: Swap between multiple tokens in a single transaction
- 💧 Flexible Liquidity: Add/remove liquidity with custom token amounts
- ⚖️ Weighted Pools: Balancer-style weighted constant product formula
- 🎯 Type-safe: Full TypeScript support with auto-generated types from IDL
- ⚡ Optimized: Efficient compute unit usage for complex operations
Quick Start
import { AnySwap } from 'anyswap';
import { AnchorProvider } from '@coral-xyz/anchor';
import { Connection, PublicKey } from '@solana/web3.js';
import { BN } from '@coral-xyz/anchor';
// Initialize
const connection = new Connection('https://api.devnet.solana.com');
const provider = new AnchorProvider(connection, wallet, { commitment: 'confirmed' });
const client = new AnySwap(provider);
// Create a pool
const result = await client.createPool(
new BN(5), // fee numerator
new BN(1000), // fee denominator
adminPublicKey
);
// Add token to pool
await client.addTokenToPool(
poolPublicKey,
tokenMintPublicKey,
new BN(50), // weight
new BN(1000000), // initial liquidity
existingVaults
);
// Swap tokens
await client.swap(
poolPublicKey,
[{ amount: new BN(100), vault: vaultA, user: userAccountA }], // inputs
[{ amount: new BN(90), vault: vaultB, user: userAccountB }] // outputs
);API Reference
Constructor
new AnySwap(provider: Provider)Methods
Pool Management
createPool(feeNumerator: BN, feeDenominator: BN, admin: PublicKey): Promise<CreatePoolResult>getPoolInfo(pool: PublicKey): Promise<PoolInfo>
Token Operations
addTokenToPool(pool: PublicKey, mint: PublicKey, weight: BN, liquidity: BN, existingVaults: PublicKey[]): Promise<string>removeTokenFromPool(pool: PublicKey, mint: PublicKey, admin?: PublicKey): Promise<string>modifyTokenWeight(pool: PublicKey, mint: PublicKey, newWeight: BN, admin?: PublicKey): Promise<string>
Liquidity
addLiquidity(pool: PublicKey, amounts: BN[], userTokenAccounts: PublicKey[], vaultAccounts: PublicKey[]): Promise<string>removeLiquidity(pool: PublicKey, burnAmount: BN, userTokenAccounts: PublicKey[], vaultAccounts: PublicKey[]): Promise<string>
Swap
swap(pool: PublicKey, inlets: SwapInput[], outlets: SwapOutput[]): Promise<string>
Admin
modifyFee(pool: PublicKey, feeNumerator: BN, feeDenominator: BN, admin?: PublicKey): Promise<string>
Examples
See the examples directory for complete working examples.
Development
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm testLicense
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
