UNPKG

@syncswap/sdk

Version:

SyncSwap TypeScript SDK for building DeFi applications

114 lines (83 loc) 3.41 kB
# SyncSwap SDK SyncSwap SDK is a TypeScript library that provides access to SyncSwap's decentralized exchange functionality on multiple networks including Sophon, zkSync, Linea, and Scroll. ## Installation ```bash npm install @syncswap/sdk ``` ## Getting Started ```typescript import SyncSwapSDK from "@syncswap/sdk"; const sdk = new SyncSwapSDK({ network: "sophonMainnet" }); await sdk.initialize(signer); ``` ## Basic Swap Example ```typescript import SyncSwapSDK from "@syncswap/sdk"; import { BigNumber } from "ethers"; const sdk = new SyncSwapSDK({ network: "sophonMainnet" }); await sdk.initialize(signer); const tokenIn = "0x..."; // USDC address const tokenOut = "0x..."; // ETH address const amountIn = BigNumber.from("1000000"); // Amount to swap const account = await signer.getAddress(); // Get route data const routePools = await sdk.fetchSyncSwapRouteData(tokenIn, tokenOut, account); // Calculate best route const route = await sdk.calculateSyncSwapRoute(routePools, tokenIn, tokenOut, amountIn); // Try permit for gasless approval const permitSignature = await sdk.signPermit(tokenIn, amountIn); // Execute swap const swapTx = await sdk.swapExactInput(route, permitSignature, account); const tx = await signer.sendTransaction(swapTx); ``` ## Token Management ```typescript // Get all token information (no network parameter needed) const allTokens = sdk.getAllTokens(); const verifiedTokens = sdk.getVerifiedTokens(); const indexedTokens = sdk.getIndexedTokens(); // Find specific tokens const usdcToken = sdk.getTokenBySymbol("USDC"); const tokenByAddress = sdk.getTokenByAddress("0x..."); // Check token status const isVerified = sdk.isTokenVerified("0x..."); const isIndexed = sdk.isTokenIndexed("0x..."); // Get network-specific addresses const wethAddress = sdk.getWETHAddress(); const routeTokens = sdk.getRouteTokens(); ``` ## Advanced Configuration You can configure the SDK with various options: ```typescript const sdk = new SyncSwapSDK({ network: "sophonMainnet", // Network name allowUniswapV3Pools: true, // Enable Uniswap V3 style pools aquaPoolOnly: false, // Only use Aqua pools enableHops: true, // Enable multi-hop swaps enableSplits: true, // Enable split routes slidePage: "auto", // Slippage configuration }); ``` ## Supported Networks - Sophon Mainnet (`sophonMainnet`) - zkSync Mainnet (`zkSyncMainnet`) - Linea Mainnet (`lineaMainnet`) - Scroll Mainnet (`scrollMainnet`) - Sophon Testnet (`sophonTestnet`) - zkSync Testnet (`zkSyncTestnet`) ## API Reference For complete working examples, please see [`example/index.ts`](./example/index.ts). ### Key Methods - `initialize(provider)` - Set up SDK with provider/signer - `fetchSyncSwapRouteData(tokenA, tokenB, userAccount?, routeTokens?)` - Get route pool data - `calculateSyncSwapRoute(routePools, tokenIn, tokenOut, amountIn)` - Calculate optimal swap route - `getTokenPermitData(tokenAddress)` - Check permit support (cached) - `signPermit(tokenAddress, amount, spender?, deadline?)` - Create approval signatures - `swapExactInput(route, signature, to)` - Execute token swaps - `getAllTokens()` - Get all registered tokens - `getTokenByAddress(address)` - Find token by address - `getTokenBySymbol(symbol)` - Find token by symbol - `getWETHAddress()` - Get wrapped ETH address for current network - `getRouteTokens()` - Get route tokens for current network ## License ISC