avnu

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

avnu SDK Integration

avnu SDK 集成

avnu is the leading DEX aggregator on Starknet, providing optimized swaps across multiple liquidity sources, DCA orders, staking, gasless transactions, and market data APIs.
avnu是Starknet上领先的DEX聚合器,提供跨多个流动性来源的优化兑换、DCA订单、质押、无Gas交易以及市场数据API服务。

Installation

安装

bash
npm install @avnu/avnu-sdk starknet
bash
npm install @avnu/avnu-sdk starknet

Account Setup

账户设置

The SDK requires a Starknet account. Two patterns depending on your use case:
SDK需要一个Starknet账户,根据你的使用场景有两种配置方式:

Direct Account (Scripts/Backend)

直接账户(脚本/后端)

typescript
import { Account, RpcProvider } from 'starknet';

const provider = new RpcProvider({
  nodeUrl: process.env.STARKNET_RPC_URL || 'https://rpc.starknet.lava.build'
});

const account = new Account(
  provider,
  process.env.STARKNET_ACCOUNT_ADDRESS!,
  process.env.STARKNET_PRIVATE_KEY!
);
typescript
import { Account, RpcProvider } from 'starknet';

const provider = new RpcProvider({
  nodeUrl: process.env.STARKNET_RPC_URL || 'https://rpc.starknet.lava.build'
});

const account = new Account(
  provider,
  process.env.STARKNET_ACCOUNT_ADDRESS!,
  process.env.STARKNET_PRIVATE_KEY!
);

Wallet Account (Frontend/dApps)

钱包账户(前端/去中心化应用)

typescript
import { WalletAccount } from 'starknet';

// User connects their wallet (Argent, Braavos)
const account = await WalletAccount.connect(provider, walletProvider);
typescript
import { WalletAccount } from 'starknet';

// 用户连接钱包(Argent、Braavos等)
const account = await WalletAccount.connect(provider, walletProvider);

Common Token Addresses

常用代币地址

typescript
const TOKENS = {
  ETH: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',
  STRK: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
  USDC: '0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',
  USDT: '0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8',
};

typescript
const TOKENS = {
  ETH: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',
  STRK: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
  USDC: '0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',
  USDT: '0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8',
};

Swap Operations

兑换操作

Get optimized quotes from multiple DEXs and execute swaps with best-price routing.
从多个DEX获取最优报价,并通过最优价格路由执行兑换。

Get Quotes

获取报价

typescript
import { getQuotes } from '@avnu/avnu-sdk';

const quotes = await getQuotes({
  sellTokenAddress: TOKENS.ETH,
  buyTokenAddress: TOKENS.USDC,
  sellAmount: BigInt(1e18), // 1 ETH
  takerAddress: account.address,
  size: 3, // Get top 3 quotes
});

const best = quotes[0];
console.log('Buy amount:', best.buyAmount);
console.log('Price impact:', `${(best.priceImpact / 100).toFixed(2)}%`); // basis points to %
console.log('Gas fees USD:', best.gasFeesInUsd);
typescript
import { getQuotes } from '@avnu/avnu-sdk';

const quotes = await getQuotes({
  sellTokenAddress: TOKENS.ETH,
  buyTokenAddress: TOKENS.USDC,
  sellAmount: BigInt(1e18), // 1 ETH
  takerAddress: account.address,
  size: 3, // 获取前3个报价
});

const best = quotes[0];
console.log('可买入数量:', best.buyAmount);
console.log('价格影响:', `${(best.priceImpact / 100).toFixed(2)}%`); // 基点转换为百分比
console.log('Gas费用(美元):', best.gasFeesInUsd);

Execute Swap

执行兑换

typescript
import { executeSwap } from '@avnu/avnu-sdk';

const result = await executeSwap({
  provider: account,
  quote: quotes[0],
  slippage: 0.01, // 1%
  executeApprove: true,
});

console.log('Tx hash:', result.transactionHash);
typescript
import { executeSwap } from '@avnu/avnu-sdk';

const result = await executeSwap({
  provider: account,
  quote: quotes[0],
  slippage: 0.01, // 1%
  executeApprove: true,
});

console.log('交易哈希:', result.transactionHash);

Build Calls Only (for custom execution)

仅生成调用(用于自定义执行)

typescript
import { quoteToCalls } from '@avnu/avnu-sdk';

const { calls } = await quoteToCalls({
  quote: quotes[0],
  takerAddress: account.address,
  slippage: 0.01,
  includeApprove: true,
});

// Execute manually
const tx = await account.execute(calls);
typescript
import { quoteToCalls } from '@avnu/avnu-sdk';

const { calls } = await quoteToCalls({
  quote: quotes[0],
  takerAddress: account.address,
  slippage: 0.01,
  includeApprove: true,
});

// 手动执行
const tx = await account.execute(calls);

Slippage Strategies

滑点策略

Token TypeRecommended Slippage
Stablecoins0.1% - 0.5%
Major tokens (ETH, STRK)0.5% - 1%
Low liquidity1% - 3%
See references/swap-guide.md for advanced routing and multi-quote analysis.

代币类型推荐滑点
稳定币0.1% - 0.5%
主流代币(ETH、STRK)0.5% - 1%
低流动性代币1% - 3%
高级路由和多报价分析请参考 references/swap-guide.md

DCA (Dollar Cost Averaging)

定期定额投资(DCA)

Create recurring buy orders that execute automatically at specified intervals.
创建可按指定时间间隔自动执行的定期买入订单。

Create DCA Order

创建DCA订单

typescript
import { executeCreateDca, createDcaToCalls } from '@avnu/avnu-sdk';
import moment from 'moment';

const dcaOrder = {
  sellTokenAddress: TOKENS.USDC,
  buyTokenAddress: TOKENS.ETH,
  sellAmount: '100000000', // Total 100 USDC (6 decimals)
  sellAmountPerCycle: '10000000', // 10 USDC per execution
  frequency: moment.duration(1, 'day'),
  traderAddress: account.address,
};

const result = await executeCreateDca({
  provider: account,
  order: dcaOrder,
});

console.log('DCA created:', result.transactionHash);
typescript
import { executeCreateDca, createDcaToCalls } from '@avnu/avnu-sdk';
import moment from 'moment';

const dcaOrder = {
  sellTokenAddress: TOKENS.USDC,
  buyTokenAddress: TOKENS.ETH,
  sellAmount: '100000000', // 总计100 USDC(6位小数)
  sellAmountPerCycle: '10000000', // 每次执行买入10 USDC
  frequency: moment.duration(1, 'day'),
  traderAddress: account.address,
};

const result = await executeCreateDca({
  provider: account,
  order: dcaOrder,
});

console.log('DCA订单已创建:', result.transactionHash);

Get User's DCA Orders

获取用户的DCA订单

typescript
import { getDcaOrders, DcaOrderStatus } from '@avnu/avnu-sdk';

const orders = await getDcaOrders({
  traderAddress: account.address,
  status: DcaOrderStatus.ACTIVE,
  page: 0,
  size: 20,
});

orders.content.forEach(order => {
  console.log('Order:', order.orderAddress);
  console.log('Progress:', order.executedTradesCount, '/', order.iterations);
  console.log('Sold:', order.amountSold, '/ Bought:', order.amountBought);
});
typescript
import { getDcaOrders, DcaOrderStatus } from '@avnu/avnu-sdk';

const orders = await getDcaOrders({
  traderAddress: account.address,
  status: DcaOrderStatus.ACTIVE,
  page: 0,
  size: 20,
});

orders.content.forEach(order => {
  console.log('订单地址:', order.orderAddress);
  console.log('执行进度:', order.executedTradesCount, '/', order.iterations);
  console.log('已卖出:', order.amountSold, '/ 已买入:', order.amountBought);
});

Cancel DCA Order

取消DCA订单

typescript
import { executeCancelDca } from '@avnu/avnu-sdk';

const result = await executeCancelDca({
  provider: account,
  orderAddress: '0xorder...',
});
typescript
import { executeCancelDca } from '@avnu/avnu-sdk';

const result = await executeCancelDca({
  provider: account,
  orderAddress: '0xorder...',
});

DCA Frequency Options

DCA时间间隔选项

typescript
moment.duration(1, 'hour')   // Hourly
moment.duration(1, 'day')    // Daily
moment.duration(1, 'week')   // Weekly
moment.duration(1, 'month')  // Monthly
See references/dca-guide.md for pricing strategies and order lifecycle.

typescript
moment.duration(1, 'hour')   // 每小时
moment.duration(1, 'day')    // 每天
moment.duration(1, 'week')   // 每周
moment.duration(1, 'month')  // 每月
定价策略和订单生命周期请参考 references/dca-guide.md

Staking

质押

Stake tokens to earn rewards. Supports STRK and BTC variants.
质押代币以赚取奖励,支持STRK和BTC变体。

Stake Tokens

质押代币

typescript
import { executeStake } from '@avnu/avnu-sdk';

const result = await executeStake({
  provider: account,
  poolAddress: '0xpool...',
  amount: BigInt(100e18), // 100 STRK
});

console.log('Staked:', result.transactionHash);
typescript
import { executeStake } from '@avnu/avnu-sdk';

const result = await executeStake({
  provider: account,
  poolAddress: '0xpool...',
  amount: BigInt(100e18), // 100 STRK
});

console.log('质押完成:', result.transactionHash);

Get Staking Info

获取质押信息

typescript
import { getUserStakingInfo, getAvnuStakingInfo } from '@avnu/avnu-sdk';

// Get pool info
const stakingInfo = await getAvnuStakingInfo();
console.log('Total staked:', stakingInfo.totalStaked);
console.log('APY:', stakingInfo.apy);

// Get user position
const userInfo = await getUserStakingInfo(
  TOKENS.STRK,
  account.address
);
console.log('Staked:', userInfo.stakedAmount);
console.log('Rewards:', userInfo.pendingRewards);
typescript
import { getUserStakingInfo, getAvnuStakingInfo } from '@avnu/avnu-sdk';

// 获取矿池信息
const stakingInfo = await getAvnuStakingInfo();
console.log('总质押量:', stakingInfo.totalStaked);
console.log('年化收益率(APY):', stakingInfo.apy);

// 获取用户持仓
const userInfo = await getUserStakingInfo(
  TOKENS.STRK,
  account.address
);
console.log('用户质押量:', userInfo.stakedAmount);
console.log('待领取奖励:', userInfo.pendingRewards);

Claim Rewards

领取奖励

typescript
import { executeClaimRewards } from '@avnu/avnu-sdk';

// Claim and withdraw
await executeClaimRewards({
  provider: account,
  poolAddress: '0xpool...',
  restake: false,
});

// Claim and restake
await executeClaimRewards({
  provider: account,
  poolAddress: '0xpool...',
  restake: true,
});
typescript
import { executeClaimRewards } from '@avnu/avnu-sdk';

// 领取并提取
await executeClaimRewards({
  provider: account,
  poolAddress: '0xpool...',
  restake: false,
});

// 领取并复投
await executeClaimRewards({
  provider: account,
  poolAddress: '0xpool...',
  restake: true,
});

Unstake (Two-Step Process)

解除质押(两步流程)

typescript
import { executeInitiateUnstake, executeUnstake } from '@avnu/avnu-sdk';

// Step 1: Initiate unstake (starts cooldown)
await executeInitiateUnstake({
  provider: account,
  poolAddress: '0xpool...',
  amount: BigInt(50e18),
});

// Step 2: After cooldown period (7-21 days), complete withdrawal
await executeUnstake({
  provider: account,
  poolAddress: '0xpool...',
});
See references/staking-guide.md for pool discovery and unbonding periods.

typescript
import { executeInitiateUnstake, executeUnstake } from '@avnu/avnu-sdk';

// 第一步:发起解除质押(开始冷却期)
await executeInitiateUnstake({
  provider: account,
  poolAddress: '0xpool...',
  amount: BigInt(50e18),
});

// 第二步:冷却期结束后(7-21天),完成提取
await executeUnstake({
  provider: account,
  poolAddress: '0xpool...',
});
矿池发现和解绑周期请参考 references/staking-guide.md

Paymaster (Gasless Transactions)

Paymaster(无Gas交易)

Enable gasless transactions where users pay fees in ERC-20 tokens instead of ETH.
启用无Gas交易,用户可使用ERC-20代币支付手续费,而非ETH。

Setup PaymasterRpc

设置PaymasterRpc

typescript
import { PaymasterRpc } from 'starknet';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.api.avnu.fi/paymaster/v1',
});
typescript
import { PaymasterRpc } from 'starknet';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.api.avnu.fi/paymaster/v1',
});

Gasless Swap (User Pays in Token)

无Gas兑换(用户用代币支付手续费)

typescript
import { PaymasterRpc, type PaymasterDetails } from 'starknet';
import { executeSwap } from '@avnu/avnu-sdk';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.api.avnu.fi/paymaster/v1',
});

const result = await executeSwap({
  provider: account,
  quote: quotes[0],
  slippage: 0.01,
  paymaster: {
    active: true,
    provider: paymaster,
    params: {
      feeMode: { mode: 'default', gasToken: TOKENS.USDC },
    },
  },
});
typescript
import { PaymasterRpc, type PaymasterDetails } from 'starknet';
import { executeSwap } from '@avnu/avnu-sdk';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.api.avnu.fi/paymaster/v1',
});

const result = await executeSwap({
  provider: account,
  quote: quotes[0],
  slippage: 0.01,
  paymaster: {
    active: true,
    provider: paymaster,
    params: {
      feeMode: { mode: 'default', gasToken: TOKENS.USDC },
    },
  },
});

With Fee Estimation (Recommended)

带手续费估算(推荐)

typescript
import { PaymasterRpc, type PaymasterDetails } from 'starknet';
import { quoteToCalls } from '@avnu/avnu-sdk';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.api.avnu.fi/paymaster/v1',
});

// Build calls from quote
const { calls } = await quoteToCalls({
  quote: quotes[0],
  takerAddress: account.address,
  slippage: 0.01,
  includeApprove: true,
});

// Estimate fees
const feeDetails: PaymasterDetails = {
  feeMode: { mode: 'default', gasToken: TOKENS.USDC },
};
const estimation = await account.estimatePaymasterTransactionFee(calls, feeDetails);

// Execute with estimated max fee
const result = await account.executePaymasterTransaction(
  calls,
  feeDetails,
  estimation.suggested_max_fee_in_gas_token
);
See references/paymaster-guide.md for supported tokens and best practices.

typescript
import { PaymasterRpc, type PaymasterDetails } from 'starknet';
import { quoteToCalls } from '@avnu/avnu-sdk';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.api.avnu.fi/paymaster/v1',
});

// 根据报价生成调用
const { calls } = await quoteToCalls({
  quote: quotes[0],
  takerAddress: account.address,
  slippage: 0.01,
  includeApprove: true,
});

// 估算手续费
const feeDetails: PaymasterDetails = {
  feeMode: { mode: 'default', gasToken: TOKENS.USDC },
};
const estimation = await account.estimatePaymasterTransactionFee(calls, feeDetails);

// 使用估算的最大手续费执行
const result = await account.executePaymasterTransaction(
  calls,
  feeDetails,
  estimation.suggested_max_fee_in_gas_token
);
支持的代币和最佳实践请参考 references/paymaster-guide.md

Gasfree (Sponsored Transactions)

Gasfree(赞助交易)

Enable zero-gas-fee transactions where your dApp pays gas on behalf of users. Requires an API key from portal.avnu.fi.
启用零Gas费交易,由你的dApp代用户支付Gas费。需要从 portal.avnu.fi 获取API密钥。

Setup (Backend/Scripts)

设置(后端/脚本)

typescript
import { PaymasterRpc } from 'starknet';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.paymaster.avnu.fi',
  headers: {
    'x-paymaster-api-key': process.env.AVNU_PAYMASTER_API_KEY!,
  },
});
typescript
import { PaymasterRpc } from 'starknet';

const paymaster = new PaymasterRpc({
  nodeUrl: 'https://starknet.paymaster.avnu.fi',
  headers: {
    'x-paymaster-api-key': process.env.AVNU_PAYMASTER_API_KEY!,
  },
});

Gasfree Swap

Gasfree兑换

typescript
import { executeSwap } from '@avnu/avnu-sdk';

const result = await executeSwap({
  provider: account,
  quote: quotes[0],
  slippage: 0.01,
  paymaster: {
    active: true,
    provider: paymaster,
    params: {
      feeMode: { mode: 'sponsored' },
    },
  },
});
// User paid $0 in gas!
typescript
import { executeSwap } from '@avnu/avnu-sdk';

const result = await executeSwap({
  provider: account,
  quote: quotes[0],
  slippage: 0.01,
  paymaster: {
    active: true,
    provider: paymaster,
    params: {
      feeMode: { mode: 'sponsored' },
    },
  },
});
// 用户支付的Gas费为0!

Frontend Integration (Next.js)

前端集成(Next.js)

The API key must never be exposed client-side. Use a 3-phase pattern:
typescript
// Server Action (API key protected)
'use server';
import { buildPaymasterTransaction, executePaymasterTransaction } from '@avnu/avnu-sdk';

export async function buildSponsoredTx(userAddress: string, calls: Call[]) {
  return buildPaymasterTransaction({
    takerAddress: userAddress,
    paymaster: { provider: getPaymaster(), params: { feeMode: { mode: 'sponsored' } } },
    calls,
  });
}

// Client-side
const prepared = await buildSponsoredTx(account.address, calls);  // 1. Build on server
const signed = await signPaymasterTransaction({ provider: account, typedData: prepared.typed_data });  // 2. Sign on client
const result = await executeSponsoredTx(account.address, signed);  // 3. Execute on server
See references/gasfree-frontend.md for complete Next.js integration with hooks and error handling. See scripts/gasfree-swap.ts for a runnable backend example.
API密钥绝不能暴露在客户端,需使用三步流程:
typescript
// 服务器动作(API密钥受保护)
'use server';
import { buildPaymasterTransaction, executePaymasterTransaction } from '@avnu/avnu-sdk';

export async function buildSponsoredTx(userAddress: string, calls: Call[]) {
  return buildPaymasterTransaction({
    takerAddress: userAddress,
    paymaster: { provider: getPaymaster(), params: { feeMode: { mode: 'sponsored' } } },
    calls,
  });
}

// 客户端
const prepared = await buildSponsoredTx(account.address, calls);  // 1. 在服务器端生成
const signed = await signPaymasterTransaction({ provider: account, typedData: prepared.typed_data });  // 2. 在客户端签名
const result = await executeSponsoredTx(account.address, signed);  // 3. 在服务器端执行
完整的Next.js集成(包含钩子和错误处理)请参考 references/gasfree-frontend.md。 可运行的后端示例请参考 scripts/gasfree-swap.ts

Gasless vs Gasfree

无Gas vs Gasfree

ModeWho PaysAPI KeyBest For
GaslessUser (in token)NoUsers without ETH
GasfreedAppYesZero-friction UX

模式支付方是否需要API密钥适用场景
无Gas用户(用代币支付)没有ETH的用户
GasfreedApp零摩擦用户体验

Tokens & Prices

代币与价格

Fetch token lists and real-time market data.
获取代币列表和实时市场数据。

Fetch Tokens

获取代币

typescript
import { fetchTokens, fetchVerifiedTokenBySymbol } from '@avnu/avnu-sdk';

// Get paginated token list
const page = await fetchTokens({
  page: 0,
  size: 50,
  tags: ['Verified'],
});

page.content.forEach(token => {
  console.log(token.symbol, token.address, token.decimals);
});

// Get verified token by symbol
const eth = await fetchVerifiedTokenBySymbol('ETH');
const strk = await fetchVerifiedTokenBySymbol('STRK');
typescript
import { fetchTokens, fetchVerifiedTokenBySymbol } from '@avnu/avnu-sdk';

// 获取分页代币列表
const page = await fetchTokens({
  page: 0,
  size: 50,
  tags: ['Verified'],
});

page.content.forEach(token => {
  console.log(token.symbol, token.address, token.decimals);
});

// 通过符号获取已验证代币
const eth = await fetchVerifiedTokenBySymbol('ETH');
const strk = await fetchVerifiedTokenBySymbol('STRK');

Get Token Prices

获取代币价格

typescript
import { getPrices } from '@avnu/avnu-sdk';

const prices = await getPrices([
  TOKENS.ETH,
  TOKENS.STRK,
  TOKENS.USDC,
]);

prices.forEach(p => {
  console.log('Address:', p.address);
  console.log('Global USD:', p.globalMarket?.usd);
  console.log('Starknet USD:', p.starknetMarket?.usd);
});
Token tags:
Verified
,
Community
,
Unruggable
,
AVNU
,
Unknown
. See references/tokens-prices.md for OHLCV data.

typescript
import { getPrices } from '@avnu/avnu-sdk';

const prices = await getPrices([
  TOKENS.ETH,
  TOKENS.STRK,
  TOKENS.USDC,
]);

prices.forEach(p => {
  console.log('代币地址:', p.address);
  console.log('全球市场价格(美元):', p.globalMarket?.usd);
  console.log('Starknet市场价格(美元):', p.starknetMarket?.usd);
});
代币标签:
Verified
Community
Unruggable
AVNU
Unknown
。OHLCV数据请参考 references/tokens-prices.md

Error Quick Reference

错误速查

ErrorCauseSolution
INSUFFICIENT_LIQUIDITY
No route foundReduce amount or try different pair
SLIPPAGE_EXCEEDED
Price moved during executionIncrease slippage or refresh quote
QUOTE_EXPIRED
Quote too old (>30s)Fetch new quote before executing
PAYMASTER_REJECTED
Transaction not eligibleCheck token/amount eligibility
INSUFFICIENT_BALANCE
Not enough tokensValidate balance before execute
See references/error-handling.md for complete error taxonomy.

错误原因解决方案
INSUFFICIENT_LIQUIDITY
未找到路由减少兑换数量或尝试其他交易对
SLIPPAGE_EXCEEDED
执行期间价格波动提高滑点设置或刷新报价
QUOTE_EXPIRED
报价过期(超过30秒)执行前重新获取报价
PAYMASTER_REJECTED
交易不符合条件检查代币/数量是否符合要求
INSUFFICIENT_BALANCE
代币余额不足执行前验证余额
完整的错误分类请参考 references/error-handling.md

Configuration

配置

Environment Variables

环境变量

bash
undefined
bash
undefined

Required for direct account

直接账户必填

STARKNET_ACCOUNT_ADDRESS=0x... STARKNET_PRIVATE_KEY=0x... # NEVER commit!
STARKNET_ACCOUNT_ADDRESS=0x... STARKNET_PRIVATE_KEY=0x... # 绝不要提交到代码仓库!

Optional

可选

undefined
undefined

SDK Options

SDK选项

typescript
import { AvnuOptions } from '@avnu/avnu-sdk';

const options: AvnuOptions = {
  baseUrl: 'https://starknet.api.avnu.fi', // Default
  impulseBaseUrl: 'https://starknet.impulse.avnu.fi', // DCA API
  abortSignal: controller.signal, // Request cancellation
};

// Pass to any SDK call
const quotes = await getQuotes(request, options);
typescript
import { AvnuOptions } from '@avnu/avnu-sdk';

const options: AvnuOptions = {
  baseUrl: 'https://starknet.api.avnu.fi', // 默认值
  impulseBaseUrl: 'https://starknet.impulse.avnu.fi', // DCA API
  abortSignal: controller.signal, // 请求取消
};

// 传递给任意SDK调用
const quotes = await getQuotes(request, options);

Networks

网络

NetworkBase URL
Mainnet
https://starknet.api.avnu.fi
Sepolia
https://sepolia.api.avnu.fi
See references/configuration.md for complete setup guide.

网络基础URL
主网
https://starknet.api.avnu.fi
Sepolia测试网
https://sepolia.api.avnu.fi
完整设置指南请参考 references/configuration.md

References & Examples

参考资料与示例

Guides: swap-guide | dca-guide | staking-guide | paymaster-guide | gasfree-frontend | tokens-prices | error-handling | configuration
Scripts: swap-example.ts | dca-example.ts | staking-example.ts | gasless-swap.ts | gasfree-swap.ts
Links: Docs | SDK GitHub | App
指南: swap-guide | dca-guide | staking-guide | paymaster-guide | gasfree-frontend | tokens-prices | error-handling | configuration
脚本: swap-example.ts | dca-example.ts | staking-example.ts | gasless-swap.ts | gasfree-swap.ts
链接: 文档 | SDK GitHub | 应用