Skip to content

@aptos-cf-swapv3/clmm-sdk

Aptos CLMM (Concentrated Liquidity Market Maker) SDK for swap and liquidity management.

安装

bash
pnpm add @aptos-cf-swapv3/clmm-sdk

初始化

typescript
import { SDK } from '@aptos-cf-swapv3/clmm-sdk'

const sdk = new SDK({
  rpcUrl: 'https://fullnode.testnet.aptoslabs.com/v1',
  networkOptions: {
    nativeToken: '0x1::aptos_coin::AptosCoin',
    modules: {
      LiquidswapDeployer: '0x...',
      ClmmIntegrate: '0x...',
      FetcherDeployer: '0x...',
      TokenDeployer: '0x...',
      IntegerMate: '0x...',
    },
  },
})

SDK 核心类

SDK

主 SDK 类,提供所有模块的访问入口。

属性

  • client: AptosClient - Aptos 客户端实例
  • tokenClient: TokenClient - Token 客户端实例
  • senderAddress: string - 发送者地址
  • sdkOptions: SdkOptions - SDK 配置选项

方法

getGlobalConfig(forceRefresh?: boolean): Promise<GlobalConfig>

获取全局配置信息。

参数:

  • forceRefresh?: boolean - 是否强制刷新缓存

返回:

typescript
Promise<GlobalConfig>
// GlobalConfig = {
//   protocol_fee_rate: string
//   is_pause: boolean
// }

模块访问器

  • sdk.Swap - SwapModule 实例
  • sdk.Position - PositionModule 实例
  • sdk.Pool - PoolModule 实例
  • sdk.Resources - ResourcesModule 实例
  • sdk.Rewarder - RewarderModule 实例
  • sdk.Router - RouterModule 实例
  • sdk.Token - TokenModule 实例
  • sdk.Fetcher - FetcherModule 实例
  • sdk.CfModules - CfModules 实例

SwapModule

交易模块,用于处理代币交换。

方法

calculateRates(params: CalculateRatesParams): CalculateRatesResult

计算交换汇率。

参数:

typescript
type CalculateRatesParams = {
  decimalsA: number
  decimalsB: number
  a2b: boolean
  byAmountIn: boolean
  amount: BN
  swapTicks: Array<TickData>
  currentPool: Pool
}

返回:

typescript
type CalculateRatesResult = {
  estimatedAmountIn: BN
  estimatedAmountOut: BN
  estimatedEndSqrtPrice: BN
  estimatedFeeAmount: BN
  isExceed: boolean
  extraComputeLimit: number
  aToB: boolean
  byAmountIn: boolean
  amount: BN
  priceImpactPct: number
}

createSwapTransactionPayload(params: CreateTXPayloadParams, bcsPackage?: boolean): TransactionPayload

创建交换交易负载。

参数:

typescript
type CreateTXPayloadParams = {
  pool_addr: string
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  a_to_b: boolean
  by_amount_in: boolean
  amount: string
  amount_limit: string
  partner: string
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

PositionModule

流动性头寸模块,用于管理流动性头寸。

方法

createAddLiquidityTransactionPayload(params: AddLiquidityParams | AddLiquidityFixTokenParams, bcsPackage?: boolean): TransactionPayload

创建添加流动性交易负载。

参数:

typescript
// 方式1:按流动性数量
type AddLiquidityParams = {
  delta_liquidity: BN
  max_amount_a: number | string
  max_amount_b: number | string
  pool: string
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  tick_lower: number
  tick_upper: number
  is_open: boolean
  index: number
}

// 方式2:按固定代币数量
type AddLiquidityFixTokenParams = {
  amount_a: number | string
  amount_b: number | string
  fix_amount_a: boolean
  pool: string
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  tick_lower: number
  tick_upper: number
  is_open: boolean
  index: number
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

removeLiquidityTransactionPayload(params: RemoveLiquidityParams, bcsPackage?: boolean): TransactionPayload

创建移除流动性交易负载。

参数:

typescript
type RemoveLiquidityParams = {
  pool: string
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  delta_liquidity: BN
  min_amount_a: number
  min_amount_b: number
  pos_index: number
  is_close: boolean
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

closePositionTransactionPayload(params: ClosePositionParams, bcsPackage?: boolean): TransactionPayload

创建关闭头寸交易负载。

参数:

typescript
type ClosePositionParams = {
  pool_address: string
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  pos_index: number
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

collectFeeTransactionPayload(params: CollectFeeParams, bcsPackage?: boolean): TransactionPayload

创建收取手续费交易负载。

参数:

typescript
type CollectFeeParams = {
  pool: string
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  pos_index: number
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

PoolModule

池子管理模块。

方法

getPoolAddress(token0: string, token1: string, tick_spacing: number): Promise<string | null>

根据代币地址和 tick_spacing 获取池子地址。

参数:

  • token0: string - 代币0地址
  • token1: string - 代币1地址
  • tick_spacing: number - Tick 间距

返回:

typescript
Promise<string | null>

calculatePoolAddress(token0: string, token1: string, tick_spacing: number): Promise<[string, boolean]>

计算池子地址。

参数:

  • token0: string - 代币0地址
  • token1: string - 代币1地址
  • tick_spacing: number - Tick 间距

返回:

typescript
Promise<[string, boolean]> // [poolAddress, exists]

creatPoolTransactionPayload(params: CreatePoolParams): TxPayloadCallFunction

创建池子交易负载。

参数:

typescript
type CreatePoolParams = {
  tokenA: string // Object<Metadata> 地址
  tokenB: string // Object<Metadata> 地址
  tick_spacing: number
  initialize_sqrt_price: BN
  uri: string
}

返回:

typescript
TxPayloadCallFunction

createPoolAndAddLiquidityTransactionPayload(params: CreatePoolAndAddLiquidityParams): TxPayloadCallFunction

创建池子并添加初始流动性的交易负载。

参数:

typescript
type CreatePoolAndAddLiquidityParams = {
  tokenA: string
  tokenB: string
  tick_spacing: number
  initialize_sqrt_price: BN
  uri: string
  delta_liquidity: BN
  max_amount_a: number | string
  max_amount_b: number | string
  tick_lower: number
  tick_upper: number
}

返回:

typescript
TxPayloadCallFunction

ResourcesModule

资源查询模块,用于获取链上资源信息。

方法

getPools(assignPools?: string[], offset?: number, limit?: number): Promise<Pool[]>

获取池子列表。

参数:

  • assignPools?: string[] - 指定的池子地址列表
  • offset?: number - 偏移量(默认 0)
  • limit?: number - 限制数量(默认 100)

返回:

typescript
Promise<Pool[]>

getPool(poolAddress: string, forceRefresh?: boolean): Promise<Pool>

获取单个池子信息。

参数:

  • poolAddress: string - 池子地址
  • forceRefresh?: boolean - 是否强制刷新(默认 true)

返回:

typescript
Promise<Pool>

getTickDataByIndex(tickHandle: string, tickIndex: number): Promise<TickData>

根据索引获取 Tick 数据。

参数:

  • tickHandle: string - Tick 表句柄
  • tickIndex: number - Tick 索引

返回:

typescript
Promise<TickData>

getPoolLowerAndUpperTicks(account: string, pool: Pool): Promise<TickData[][]>

获取池子的上下限 Tick 数据。

参数:

  • account: string - 账户地址
  • pool: Pool - 池子信息

返回:

typescript
Promise<[TickData[], TickData[]]> // [lowerTicks, upperTicks]

getPositionInfo(pool: Pool, positionKey: string | number, forceRefresh?: boolean): Promise<Position>

获取头寸信息。

参数:

  • pool: Pool - 池子信息
  • positionKey: string | number - 头寸名称或索引
  • forceRefresh?: boolean - 是否强制刷新(默认 true)

返回:

typescript
Promise<Position>

getPositionList(accountAddress: string, pools: Pool[]): Promise<Position[]>

获取账户的头寸列表。

参数:

  • accountAddress: string - 账户地址
  • pools: Pool[] - 池子列表

返回:

typescript
Promise<Position[]>

getGlobalConfig(swapAddress: string, forceRefresh?: boolean): Promise<GlobalConfig>

获取全局配置。

参数:

  • swapAddress: string - Swap 合约地址
  • forceRefresh?: boolean - 是否强制刷新(默认 true)

返回:

typescript
Promise<GlobalConfig>

getCoinInfos(accountAddress: string, forceRefresh?: boolean): Promise<CoinInfo[]>

获取账户的代币信息列表。

参数:

  • accountAddress: string - 账户地址
  • forceRefresh?: boolean - 是否强制刷新(默认 true)

返回:

typescript
Promise<CoinInfo[]>

getCoinStores(accountAddress: string, forceRefresh?: boolean): Promise<CoinStore[]>

获取账户的代币存储列表。

参数:

  • accountAddress: string - 账户地址
  • forceRefresh?: boolean - 是否强制刷新(默认 true)

返回:

typescript
Promise<CoinStore[]>

getCoinStore(accountAddress: string, coinType: string): Promise<CoinStore | null>

获取指定代币的存储信息。

参数:

  • accountAddress: string - 账户地址
  • coinType: string - 代币类型

返回:

typescript
Promise<CoinStore | null>

getCollectionList(accountAddress: string): Promise<any[]>

获取账户的 NFT 集合列表。

参数:

  • accountAddress: string - 账户地址

返回:

typescript
Promise<any[]>

fetchAccountResource<T>(accountAddress: string, resourceType: AptosResourceType): Promise<AptosResource<T> | null>

获取账户资源。

参数:

  • accountAddress: string - 账户地址
  • resourceType: AptosResourceType - 资源类型

返回:

typescript
Promise<AptosResource<T> | null>

fetchAccountResources<T>(accountAddress: string): Promise<AptosResource<T>[] | null>

获取账户所有资源。

参数:

  • accountAddress: string - 账户地址

返回:

typescript
Promise<AptosResource<T>[] | null>

RewarderModule

奖励器模块,用于管理流动性挖矿奖励。

方法

listRewarderInfosFromClmmpool(poolAddress: string): Promise<any[]>

获取池子的所有奖励器信息。

参数:

  • poolAddress: string - 池子地址

返回:

typescript
Promise<any[]>

emissionsEveryDay(poolAddress: string): Promise<any[] | null>

获取池子每日排放量。

参数:

  • poolAddress: string - 池子地址

返回:

typescript
Promise<Array<{
  emissions: number
  coin_address: string
}> | null>

collectRewarderAmount(pool: Pool, positionName: string): Promise<any | null>

获取头寸的奖励金额。

参数:

  • pool: Pool - 池子信息
  • positionName: string - 头寸名称

返回:

typescript
Promise<{
  reward_amount_owed_0: string
  reward_amount_owed_1: string
  reward_amount_owed_2: string
} | null>

updatePoolRewarder(poolAddress: string, currentTime: BN): Promise<Pool>

更新池子奖励器状态。

参数:

  • poolAddress: string - 池子地址
  • currentTime: BN - 当前时间戳

返回:

typescript
Promise<Pool>

posRewardersAmount(poolAddress: string, positionName: string, tickLower: TickData, tickUpper: TickData): Promise<any[]>

获取头寸的奖励金额(包含未领取和待领取)。

参数:

  • poolAddress: string - 池子地址
  • positionName: string - 头寸名称
  • tickLower: TickData - 下限 Tick
  • tickUpper: TickData - 上限 Tick

返回:

typescript
Promise<Array<{
  amount_owed: BN
  coin_address: string
}>>

poolRewardersAmount(account: string, poolAddress: string, tickLowers: TickData[], tickUppers: TickData[]): Promise<BN[]>

获取账户在池子中的所有奖励金额。

参数:

  • account: string - 账户地址
  • poolAddress: string - 池子地址
  • tickLowers: TickData[] - 下限 Tick 列表
  • tickUppers: TickData[] - 上限 Tick 列表

返回:

typescript
Promise<BN[]> // [reward0, reward1, reward2]

collectPosRewarderTransactionPayload(params: CollectRewarderParams, bcsPackage?: boolean): TransactionPayload

创建收取单个奖励器奖励的交易负载。

参数:

typescript
type CollectRewarderParams = {
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  coinTypeC: AptosResourceType
  pool_address: string
  index: number
  pos_index: number
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

collectPoolRewarderTransactionPayload(params: CollectPoolRewarderParams, bcsPackage?: boolean): TransactionPayload | undefined

创建收取池子奖励的交易负载(支持1-3个奖励器)。

参数:

typescript
type CollectPoolRewarderParams = {
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  coinTypeC: AptosResourceType
  coinTypeD?: AptosResourceType
  coinTypeE?: AptosResourceType
  pool_address: string
  pos_index: number
  rewarder_nums: number // 1, 2, 或 3
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction | undefined

RouterModule

路由模块,用于计算代币交换路径和价格。

方法

setPoolMap(): Promise<void>

设置池子映射表。

返回:

typescript
Promise<void>

getPoolAddress(base: string, quote: string): string | undefined

获取交易对的池子地址。

参数:

  • base: string - 基础代币符号
  • quote: string - 报价代币符号

返回:

typescript
string | undefined

loadGraph(): Promise<RouterModule>

加载价格图。

返回:

typescript
Promise<RouterModule>

addPriceProvider(provider: PriceProvider): RouterModule

添加价格提供者。

参数:

typescript
type PriceProvider = {
  prices: Array<{
    quote: string
    base: string
    price: Decimal
  }>
}

返回:

typescript
RouterModule

addCoinProvider(provider: CoinProvider): RouterModule

添加代币提供者。

参数:

typescript
type CoinProvider = {
  tokens: Array<{
    address: string
    symbol: string
    decimals: number
  }>
}

返回:

typescript
RouterModule

tokenInfo(key: string): CoinNode | undefined

获取代币信息。

参数:

  • key: string - 代币地址或符号

返回:

typescript
CoinNode | undefined

price(base: string, quote: string): PriceResult | undefined

获取代币价格。

参数:

  • base: string - 基础代币地址或符号
  • quote: string - 报价代币地址或符号

返回:

typescript
PriceResult | undefined
// PriceResult = {
//   price: Decimal
//   nodes: string[]
//   pools: string[]
// }

swap(base: string, quote: string, amount: Decimal): Decimal | undefined

计算交换后的代币数量。

参数:

  • base: string - 基础代币地址或符号
  • quote: string - 报价代币地址或符号
  • amount: Decimal - 交换数量

返回:

typescript
Decimal | undefined

lamportsSwap(base: string, quote: string, lamports: Decimal): Decimal | undefined

以最小单位计算交换。

参数:

  • base: string - 基础代币地址或符号
  • quote: string - 报价代币地址或符号
  • lamports: Decimal - 最小单位数量

返回:

typescript
Decimal | undefined

toLamports(token: string, amount: Decimal): Decimal | undefined

将代币数量转换为最小单位。

参数:

  • token: string - 代币地址或符号
  • amount: Decimal - 代币数量

返回:

typescript
Decimal | undefined

toAmount(token: string, amount: Decimal): Decimal | undefined

将最小单位转换为代币数量。

参数:

  • token: string - 代币地址或符号
  • amount: Decimal - 最小单位数量

返回:

typescript
Decimal | undefined

TokenModule

代币管理模块。

方法

addToListPayload(list: string, coinType: string, bcsPackage?: boolean): TransactionPayload

创建添加到代币列表的交易负载。

参数:

  • list: string - 列表地址
  • coinType: string - 代币类型
  • bcsPackage?: boolean - 是否使用 BCS 格式(默认 false)

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

addApproverToRegistryPayload(approver: string, bcsPackage?: boolean): TransactionPayload

创建添加审批者到注册表的交易负载。

参数:

  • approver: string - 审批者地址
  • bcsPackage?: boolean - 是否使用 BCS 格式(默认 false)

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

addToRegistryByApprovePayload(params: TokenInfoParams, bcsPackage?: boolean): TransactionPayload

创建通过审批添加到注册表的交易负载。

参数:

typescript
type TokenInfoParams = {
  name: string
  symbol: string
  coingecko_id: string
  logo_url: string
  project_url: string
  is_update: boolean
  coinType: AptosResourceType
}

返回:

typescript
TxnBuilderTypes.TransactionPayloadEntryFunction | TxPayloadCallFunction

getOwnerTokenList(simulationKey: SimulationKeys, listOwnerAddr: string, forceRefresh?: boolean): Promise<TokenInfo[]>

获取所有者代币列表。

参数:

  • simulationKey: SimulationKeys - 模拟密钥
  • listOwnerAddr: string - 列表所有者地址
  • forceRefresh?: boolean - 是否强制刷新(默认 false)

返回:

typescript
Promise<TokenInfo[]>

getAllRegisteredTokenList(simulationKey: SimulationKeys, forceRefresh?: boolean): Promise<TokenInfo[]>

获取所有已注册代币列表。

参数:

  • simulationKey: SimulationKeys - 模拟密钥
  • forceRefresh?: boolean - 是否强制刷新(默认 false)

返回:

typescript
Promise<TokenInfo[]>

FetcherModule

数据获取模块,用于批量获取 Tick 数据。

方法

getTicks(params: GetTickParams): Promise<Tick[]>

获取指定范围的 Tick 数据。

参数:

typescript
type GetTickParams = {
  accountAddress: string
  accountPublicKey: string
  pool: string
  coinTypeA: string
  coinTypeB: string
  index: number
  offset: number
  limit: number
}

返回:

typescript
Promise<Tick[]>

fetchTicks(params: FetchTickParams): Promise<Tick[]>

获取池子的所有 Tick 数据。

参数:

typescript
type FetchTickParams = {
  accountAddress: string
  accountPublicKey: string
  pool: string
  coinTypeA: string
  coinTypeB: string
}

返回:

typescript
Promise<Tick[]>

CfModules

Coinfair 模块集合。

CfPoolModule

getPoolInfo(poolAddress: string): Promise<CfPoolInfo>

获取池子信息(Coinfair 格式)。

参数:

  • poolAddress: string - 池子地址

返回:

typescript
Promise<CfPoolInfo>
// CfPoolInfo = {
//   collection_name: string
//   current_fifrt_price?: string
//   current_sqrt_price?: string
//   current_tick_index: CfBits
//   fee_growth_global_a: string
//   fee_growth_global_b: string
//   fee_protocol_coin_a: string
//   fee_protocol_coin_b: string
//   fee_rate: string
//   index: string
//   initialized_ticks?: CfInitializedTick[]
//   is_pause: boolean
//   liquidity: string
//   metadata_a: { inner: string }
//   metadata_b: { inner: string }
//   position_index: string
//   rewarder_infos: any[]
//   rewarder_last_updated_time: string
//   tick_spacing: string
//   uri: string
// }

数学工具

TickMath

Tick 数学工具类。

静态方法

  • tickIndexToSqrtPriceX64(tickIndex: number): BN - Tick 索引转平方根价格
  • sqrtPriceX64ToTickIndex(sqrtPriceX64: BN): number - 平方根价格转 Tick 索引
  • sqrtPriceX64ToPrice(sqrtPriceX64: BN, decimalsA: number, decimalsB: number): Decimal - 平方根价格转实际价格

Position Math

getLiquidityFromCoinA(sqrtPriceX: BN, sqrtPriceY: BN, coinAmount: BN): BN

根据代币 A 数量计算流动性。

getLiquidityFromCoinB(sqrtPriceX: BN, sqrtPriceY: BN, coinAmount: BN): BN

根据代币 B 数量计算流动性。

Swap Math

computeSwap(a2b: boolean, byAmountIn: boolean, amount: BN, poolData: ClmmpoolData, ticks: TickData[]): SwapResult

计算交换结果。


React Hooks

SdkProvider

SDK 上下文提供者组件。

typescript
import { SdkProvider } from '@aptos-cf-swapv3/clmm-sdk'

<SdkProvider options={sdkOptions}>
  {children}
</SdkProvider>

useSdk

获取 SDK 实例的 Hook。

typescript
import { useSdk } from '@aptos-cf-swapv3/clmm-sdk'

const { sdk, sdkOptions, status, isInitialized } = useSdk()

返回:

typescript
{
  sdk: SDK | null
  sdkOptions: SdkOptions
  status: string
  isInitialized: boolean
}

useFeeTiers

获取费率等级列表的 Hook。

typescript
import { useFeeTiers } from '@aptos-cf-swapv3/clmm-sdk'

const { feeTiers, loading, error, refetch } = useFeeTiers()

返回:

typescript
{
  feeTiers: FeeTier[]
  loading: boolean
  error: Error | null
  refetch: () => Promise<void>
}

// FeeTier = {
//   tick_spacing: number
//   fee_rate: number
// }

工具函数

sortTokenAddresses(token0: string, token1: string): [string, string]

对代币地址进行字典序排序。

Decimal

Decimal.js 的默认导出,用于高精度数值计算。


类型定义

核心类型

typescript
// SDK 配置
type SdkOptions = {
  rpcUrl: string
  networkOptions: {
    nativeToken: AptosResourceType
    modules: {
      LiquidswapDeployer: AptosResourceType
      ClmmIntegrate: AptosResourceType
      FetcherDeployer: AptosResourceType
      TokenDeployer: AptosResourceType
      IntegerMate: AptosResourceType
    } & Record<string, AptosResourceType>
  }
}

// 池子信息
type Pool = {
  coinTypeA: AptosResourceType
  coinTypeB: AptosResourceType
  poolType: string
  poolAddress: string
  tickSpacing: string
  coinAmountA: number
  coinAmountB: number
  current_sqrt_price: number
  current_tick_index: number
  fee_growth_global_a: number
  fee_growth_global_b: number
  fee_protocol_coin_a: number
  fee_protocol_coin_b: number
  fee_rate: number
  liquidity: number
  index: number
  positionIndex: number
  tick_indexes_handle: string
  ticks_handle: string
  positions_handle: string
  collectionName: string
  uri: string
  is_pause: boolean
  rewarder_infos: Rewarder[]
  rewarder_last_updated_time: BN
}

// 头寸信息
type Position = {
  name: string
  pool: AptosResourceType
  liquidity: string
  tick_lower_index: string
  tick_upper_index: string
  fee_growth_inside_a: string
  fee_owed_a: string
  fee_growth_inside_b: string
  fee_owed_b: string
  reward_amount_owed_0: string
  reward_amount_owed_1: string
  reward_amount_owed_2: string
  reward_growth_inside_0: string
  reward_growth_inside_1: string
  reward_growth_inside_2: string
  index: number
}

// Tick 数据
type TickData = {
  index: number
  sqrtPrice: string
  liquidityGross: string
  liquidityNet: string
  feeGrowthOutsideA: string
  feeGrowthOutsideB: string
  rewardersGrowthOutside: string[]
}

示例

创建 SDK 实例

typescript
import { SDK } from '@aptos-cf-swapv3/clmm-sdk'

const sdk = new SDK({
  rpcUrl: 'https://fullnode.testnet.aptoslabs.com/v1',
  networkOptions: {
    nativeToken: '0x1::aptos_coin::AptosCoin',
    modules: {
      LiquidswapDeployer: '0x...',
      ClmmIntegrate: '0x...',
      FetcherDeployer: '0x...',
      TokenDeployer: '0x...',
      IntegerMate: '0x...',
    },
  },
})

获取池子信息

typescript
const pool = await sdk.Resources.getPool(poolAddress)
console.log(pool)

创建交换交易

typescript
const payload = sdk.Swap.createSwapTransactionPayload({
  pool_addr: poolAddress,
  coinTypeA: '0x1::aptos_coin::AptosCoin',
  coinTypeB: '0x...::usdc::USDC',
  a_to_b: true,
  by_amount_in: true,
  amount: '1000000',
  amount_limit: '950000',
  partner: '',
})

添加流动性

typescript
const payload = sdk.Position.createAddLiquidityTransactionPayload({
  pool: poolAddress,
  coinTypeA: '0x1::aptos_coin::AptosCoin',
  coinTypeB: '0x...::usdc::USDC',
  delta_liquidity: new BN('1000000'),
  max_amount_a: '1000000',
  max_amount_b: '2000000',
  tick_lower: -100,
  tick_upper: 100,
  is_open: true,
  index: 0,
})

使用 React Hook

typescript
import { SdkProvider, useSdk, useFeeTiers } from '@aptos-cf-swapv3/clmm-sdk'

function App() {
  return (
    <SdkProvider>
      <MyComponent />
    </SdkProvider>
  )
}

function MyComponent() {
  const { sdk } = useSdk()
  const { feeTiers, loading } = useFeeTiers()
  
  // 使用 SDK...
}

License

Apache-2.0