@syncswap/sdk
Version:
SyncSwap TypeScript SDK for building DeFi applications
114 lines (83 loc) • 3.41 kB
Markdown
# 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