@stabbleorg/mclmm-sdk 0.1.12 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__tests__/fixtures/pool-states.d.ts +84 -0
- package/lib/__tests__/fixtures/pool-states.d.ts.map +1 -0
- package/lib/__tests__/fixtures/tick-arrays.d.ts +42 -0
- package/lib/__tests__/fixtures/tick-arrays.d.ts.map +1 -0
- package/lib/__tests__/helpers/integration-mocks.d.ts +82 -0
- package/lib/__tests__/helpers/integration-mocks.d.ts.map +1 -0
- package/lib/__tests__/integration/performance.test.d.ts +12 -0
- package/lib/__tests__/integration/performance.test.d.ts.map +1 -0
- package/lib/__tests__/integration/swap-flow.test.d.ts +12 -0
- package/lib/__tests__/integration/swap-flow.test.d.ts.map +1 -0
- package/lib/__tests__/setup.d.ts +19 -0
- package/lib/__tests__/setup.d.ts.map +1 -0
- package/lib/__tests__/unit/math-utils.test.d.ts +11 -0
- package/lib/__tests__/unit/math-utils.test.d.ts.map +1 -0
- package/lib/__tests__/unit/pool-data-manager.test.d.ts +16 -0
- package/lib/__tests__/unit/pool-data-manager.test.d.ts.map +1 -0
- package/lib/__tests__/unit/price-api-client.test.d.ts +2 -0
- package/lib/__tests__/unit/price-api-client.test.d.ts.map +1 -0
- package/lib/__tests__/unit/swap-manager.test.d.ts +14 -0
- package/lib/__tests__/unit/swap-manager.test.d.ts.map +1 -0
- package/lib/__tests__/unit/swap-math-engine.test.d.ts +14 -0
- package/lib/__tests__/unit/swap-math-engine.test.d.ts.map +1 -0
- package/lib/api/config.d.ts +6 -0
- package/lib/api/config.d.ts.map +1 -1
- package/lib/client.d.ts +2 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/constants.d.ts +41 -1
- package/lib/constants.d.ts.map +1 -1
- package/lib/generated/accounts/ammConfig.d.ts +1 -1
- package/lib/generated/accounts/ammConfig.d.ts.map +1 -1
- package/lib/generated/accounts/observationState.d.ts +1 -1
- package/lib/generated/accounts/observationState.d.ts.map +1 -1
- package/lib/generated/accounts/operationState.d.ts +1 -1
- package/lib/generated/accounts/operationState.d.ts.map +1 -1
- package/lib/generated/accounts/personalPositionState.d.ts +1 -1
- package/lib/generated/accounts/personalPositionState.d.ts.map +1 -1
- package/lib/generated/accounts/poolState.d.ts +1 -1
- package/lib/generated/accounts/poolState.d.ts.map +1 -1
- package/lib/generated/accounts/protocolPositionState.d.ts +1 -1
- package/lib/generated/accounts/protocolPositionState.d.ts.map +1 -1
- package/lib/generated/accounts/supportMintAssociated.d.ts +1 -1
- package/lib/generated/accounts/supportMintAssociated.d.ts.map +1 -1
- package/lib/generated/accounts/tickArrayBitmapExtension.d.ts +1 -1
- package/lib/generated/accounts/tickArrayBitmapExtension.d.ts.map +1 -1
- package/lib/generated/accounts/tickArrayState.d.ts +1 -1
- package/lib/generated/accounts/tickArrayState.d.ts.map +1 -1
- package/lib/generated/instructions/closePosition.d.ts +1 -1
- package/lib/generated/instructions/closePosition.d.ts.map +1 -1
- package/lib/generated/instructions/closeProtocolPosition.d.ts +1 -1
- package/lib/generated/instructions/closeProtocolPosition.d.ts.map +1 -1
- package/lib/generated/instructions/collectFundFee.d.ts +1 -1
- package/lib/generated/instructions/collectFundFee.d.ts.map +1 -1
- package/lib/generated/instructions/collectProtocolFee.d.ts +1 -1
- package/lib/generated/instructions/collectProtocolFee.d.ts.map +1 -1
- package/lib/generated/instructions/collectRemainingRewards.d.ts +1 -1
- package/lib/generated/instructions/collectRemainingRewards.d.ts.map +1 -1
- package/lib/generated/instructions/createAmmConfig.d.ts +1 -1
- package/lib/generated/instructions/createAmmConfig.d.ts.map +1 -1
- package/lib/generated/instructions/createOperationAccount.d.ts +1 -1
- package/lib/generated/instructions/createOperationAccount.d.ts.map +1 -1
- package/lib/generated/instructions/createPool.d.ts +1 -1
- package/lib/generated/instructions/createPool.d.ts.map +1 -1
- package/lib/generated/instructions/createSupportMintAssociated.d.ts +1 -1
- package/lib/generated/instructions/createSupportMintAssociated.d.ts.map +1 -1
- package/lib/generated/instructions/decreaseLiquidityV2.d.ts +1 -1
- package/lib/generated/instructions/decreaseLiquidityV2.d.ts.map +1 -1
- package/lib/generated/instructions/increaseLiquidityV2.d.ts +1 -1
- package/lib/generated/instructions/increaseLiquidityV2.d.ts.map +1 -1
- package/lib/generated/instructions/initializeReward.d.ts +1 -1
- package/lib/generated/instructions/initializeReward.d.ts.map +1 -1
- package/lib/generated/instructions/openPositionWithToken22Nft.d.ts +1 -1
- package/lib/generated/instructions/openPositionWithToken22Nft.d.ts.map +1 -1
- package/lib/generated/instructions/setRewardParams.d.ts +1 -1
- package/lib/generated/instructions/setRewardParams.d.ts.map +1 -1
- package/lib/generated/instructions/swapRouterBaseIn.d.ts +1 -1
- package/lib/generated/instructions/swapRouterBaseIn.d.ts.map +1 -1
- package/lib/generated/instructions/swapV2.d.ts +1 -1
- package/lib/generated/instructions/swapV2.d.ts.map +1 -1
- package/lib/generated/instructions/transferRewardOwner.d.ts +1 -1
- package/lib/generated/instructions/transferRewardOwner.d.ts.map +1 -1
- package/lib/generated/instructions/updateAmmConfig.d.ts +1 -1
- package/lib/generated/instructions/updateAmmConfig.d.ts.map +1 -1
- package/lib/generated/instructions/updateOperationAccount.d.ts +1 -1
- package/lib/generated/instructions/updateOperationAccount.d.ts.map +1 -1
- package/lib/generated/instructions/updatePoolStatus.d.ts +1 -1
- package/lib/generated/instructions/updatePoolStatus.d.ts.map +1 -1
- package/lib/generated/instructions/updateRewardInfos.d.ts +1 -1
- package/lib/generated/instructions/updateRewardInfos.d.ts.map +1 -1
- package/lib/generated/programs/ammV3.d.ts.map +1 -1
- package/lib/generated/shared/index.d.ts.map +1 -1
- package/lib/generated/types/closePositionEvent.d.ts +16 -0
- package/lib/generated/types/closePositionEvent.d.ts.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4555 -1835
- package/lib/index.mjs +4548 -1834
- package/lib/managers/index.d.ts +7 -0
- package/lib/managers/index.d.ts.map +1 -0
- package/lib/managers/pool-data-manager.d.ts +132 -0
- package/lib/managers/pool-data-manager.d.ts.map +1 -0
- package/lib/managers/price-api-client.d.ts +295 -0
- package/lib/managers/price-api-client.d.ts.map +1 -0
- package/lib/position-manager.d.ts.map +1 -1
- package/lib/swap.d.ts +832 -2
- package/lib/swap.d.ts.map +1 -1
- package/lib/types.d.ts +23 -4
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/index.d.ts +5 -2
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/math.d.ts +386 -0
- package/lib/utils/math.d.ts.map +1 -1
- package/lib/utils/tickQuery.d.ts +62 -1
- package/lib/utils/tickQuery.d.ts.map +1 -1
- package/package.json +13 -5
package/lib/swap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -8,10 +8,24 @@ export interface ClmmSdkConfig {
|
|
|
8
8
|
rpc: Rpc<SolanaRpcType>;
|
|
9
9
|
/** API client config */
|
|
10
10
|
apiConfig?: ClmmApiConfig;
|
|
11
|
+
/** Price API configuration (for real-time price fetching) */
|
|
12
|
+
priceApiConfig?: {
|
|
13
|
+
/** Base URL for price API*/
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
/** Request timeout in milliseconds (default: 5000) */
|
|
16
|
+
timeout?: number;
|
|
17
|
+
};
|
|
11
18
|
/** Optional program address override */
|
|
12
19
|
programAddress?: Address;
|
|
13
20
|
/** Default commitment level for transactions */
|
|
14
21
|
commitment?: "processed" | "confirmed" | "finalized";
|
|
22
|
+
/** Optional logger for production-friendly logging */
|
|
23
|
+
logger?: {
|
|
24
|
+
debug?: (message: string, ...args: any[]) => void;
|
|
25
|
+
info?: (message: string, ...args: any[]) => void;
|
|
26
|
+
warn?: (message: string, ...args: any[]) => void;
|
|
27
|
+
error?: (message: string, ...args: any[]) => void;
|
|
28
|
+
};
|
|
15
29
|
}
|
|
16
30
|
/**
|
|
17
31
|
* Return type for make instructions following Raydium's pattern
|
|
@@ -135,7 +149,7 @@ export interface SwapRoute {
|
|
|
135
149
|
tokenIn: Address;
|
|
136
150
|
/** Output token */
|
|
137
151
|
tokenOut: Address;
|
|
138
|
-
/** Fee tier */
|
|
152
|
+
/** Fee tier in parts per million (PPM), e.g., 3000 = 0.3% */
|
|
139
153
|
fee: number;
|
|
140
154
|
}
|
|
141
155
|
export interface SwapParams {
|
|
@@ -143,7 +157,7 @@ export interface SwapParams {
|
|
|
143
157
|
tokenIn: Address;
|
|
144
158
|
/** Output token mint */
|
|
145
159
|
tokenOut: Address;
|
|
146
|
-
/** Input amount */
|
|
160
|
+
/** Input amount (for exact-in swaps) or maximum input (for exact-out swaps) */
|
|
147
161
|
amountIn: BN;
|
|
148
162
|
/** Slippage tolerance (0-1, e.g., 0.01 for 1%) */
|
|
149
163
|
slippageTolerance: number;
|
|
@@ -151,6 +165,10 @@ export interface SwapParams {
|
|
|
151
165
|
wallet: Address;
|
|
152
166
|
/** Optional deadline for transaction */
|
|
153
167
|
deadline?: BN;
|
|
168
|
+
/** Swap mode: true = exact-in (default), false = exact-out */
|
|
169
|
+
isBaseInput?: boolean;
|
|
170
|
+
/** Desired output amount (for exact-out swaps only) */
|
|
171
|
+
amountOut?: BN;
|
|
154
172
|
}
|
|
155
173
|
export interface AddLiquidityParams {
|
|
156
174
|
/** Pool address */
|
|
@@ -239,6 +257,7 @@ export declare enum ClmmErrorCode {
|
|
|
239
257
|
SWAP_AMOUNT_CANNOT_BE_ZERO = "SWAP_AMOUNT_CANNOT_BE_ZERO",
|
|
240
258
|
SWAP_INPUT_OR_OUTPUT_AMOUNT_TOO_SMALL = "SWAP_INPUT_OR_OUTPUT_AMOUNT_TOO_SMALL",
|
|
241
259
|
INPUT_POOL_VAULT_IS_INVALID = "INPUT_POOL_VAULT_IS_INVALID",
|
|
260
|
+
SWAP_SIMULATION_FAILED = "SWAP_SIMULATION_FAILED",
|
|
242
261
|
TRANSACTION_FAILED = "TRANSACTION_FAILED",
|
|
243
262
|
TRANSACTION_TOO_OLD = "TRANSACTION_TOO_OLD",
|
|
244
263
|
ZERO_MINT_AMOUNT = "ZERO_MINT_AMOUNT",
|
|
@@ -265,8 +284,8 @@ export declare enum ClmmErrorCode {
|
|
|
265
284
|
}
|
|
266
285
|
export declare class ClmmError extends Error {
|
|
267
286
|
code: ClmmErrorCode;
|
|
268
|
-
details?: unknown
|
|
269
|
-
constructor(code: ClmmErrorCode, message: string, details?: unknown
|
|
287
|
+
details?: unknown;
|
|
288
|
+
constructor(code: ClmmErrorCode, message: string, details?: unknown);
|
|
270
289
|
}
|
|
271
290
|
export interface SwapEvent {
|
|
272
291
|
/** Pool address */
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,GAAG,EACH,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,CAAC;AAGxB,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IACxB,wBAAwB;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,wCAAwC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,UAAU,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -71,10 +71,13 @@ export declare function isValidSolanaAddress(address: string): boolean;
|
|
|
71
71
|
export declare function addresstoBytes(address: Address): import("@solana/kit").ReadonlyUint8Array;
|
|
72
72
|
export declare function getFakeSigner(address: Address): {
|
|
73
73
|
address: Address;
|
|
74
|
-
signAndSendTransactions: (transactions: readonly Readonly<{
|
|
74
|
+
signAndSendTransactions: (transactions: readonly (Readonly<{
|
|
75
75
|
messageBytes: import("@solana/kit").TransactionMessageBytes;
|
|
76
76
|
signatures: import("@solana/kit").SignaturesMap;
|
|
77
|
-
}>
|
|
77
|
+
}> | (Readonly<{
|
|
78
|
+
messageBytes: import("@solana/kit").TransactionMessageBytes;
|
|
79
|
+
signatures: import("@solana/kit").SignaturesMap;
|
|
80
|
+
}> & import("@solana/kit").TransactionWithLifetime))[], _config: import("@solana/kit").BaseTransactionSignerConfig | undefined) => Promise<SignatureBytes[]>;
|
|
78
81
|
};
|
|
79
82
|
/**
|
|
80
83
|
* A very brutal way to differentate between mainnet and devnet RPC
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAIvB,OAAO,EAGL,GAAG,EACH,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EAEnB,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE,MAAkB,GACvB,IAAI,CAON;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiB,GAAG,IAAI,CAO5E;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAU,GACpB,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,GAAE,MAAW,GACrB,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,YAAY,GAAE,MAAa,GAC1B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,4CAG9C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAIvB,OAAO,EAGL,GAAG,EACH,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EAEnB,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE,MAAkB,GACvB,IAAI,CAON;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiB,GAAG,IAAI,CAO5E;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAU,GACpB,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,GAAE,MAAW,GACrB,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,YAAY,GAAE,MAAa,GAC1B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,4CAG9C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO;;;;;;;;;EAS7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,CAAC,mBAAmB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC,UAOzE"}
|
package/lib/utils/math.d.ts
CHANGED
|
@@ -1,11 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview
|
|
3
|
+
* Mathematical utilities for Concentrated Liquidity Market Maker (CLMM) operations.
|
|
4
|
+
*
|
|
5
|
+
* This module provides all the core mathematical functions needed for:
|
|
6
|
+
* - Price calculations and conversions
|
|
7
|
+
* - Liquidity amount calculations
|
|
8
|
+
* - Swap computations
|
|
9
|
+
* - Tick and price range mathematics
|
|
10
|
+
*
|
|
11
|
+
* ## Key Concepts
|
|
12
|
+
*
|
|
13
|
+
* ### X64 Fixed-Point Arithmetic
|
|
14
|
+
* All prices in the CLMM are represented as X64 fixed-point numbers,
|
|
15
|
+
* meaning they are scaled by 2^64 for precision. This allows for exact
|
|
16
|
+
* integer arithmetic while representing fractional values.
|
|
17
|
+
*
|
|
18
|
+
* ### Square Root Price
|
|
19
|
+
* Instead of storing price directly, we store √P × 2^64, where P is the
|
|
20
|
+
* price of token1 in terms of token0. This makes the math more efficient
|
|
21
|
+
* for liquidity calculations.
|
|
22
|
+
*
|
|
23
|
+
* ### Ticks
|
|
24
|
+
* Prices are discretized into ticks, where each tick represents a 0.01%
|
|
25
|
+
* (1 basis point) price movement. Tick i corresponds to price 1.0001^i.
|
|
26
|
+
*
|
|
27
|
+
* ## Module Organization
|
|
28
|
+
*
|
|
29
|
+
* - **MathUtils**: Low-level arithmetic (mul/div with rounding)
|
|
30
|
+
* - **SqrtPriceMath**: Price ↔ sqrt price ↔ tick conversions
|
|
31
|
+
* - **TickMath**: Tick spacing and alignment utilities
|
|
32
|
+
* - **LiquidityMath**: Token amount ↔ liquidity calculations
|
|
33
|
+
* - **SwapMath**: Core swap step computations
|
|
34
|
+
*
|
|
35
|
+
* ## Rust Source Mapping
|
|
36
|
+
*
|
|
37
|
+
* These implementations are direct ports from the Rust program:
|
|
38
|
+
* - `programs/clmm/src/libraries/full_math.rs` → MathUtils
|
|
39
|
+
* - `programs/clmm/src/libraries/sqrt_price_math.rs` → SqrtPriceMath
|
|
40
|
+
* - `programs/clmm/src/libraries/tick_math.rs` → TickMath
|
|
41
|
+
* - `programs/clmm/src/libraries/liquidity_math.rs` → LiquidityMath
|
|
42
|
+
* - `programs/clmm/src/libraries/swap_math.rs` → SwapMath
|
|
43
|
+
*
|
|
44
|
+
* @module utils/math
|
|
45
|
+
*/
|
|
1
46
|
import BN from "bn.js";
|
|
2
47
|
import Decimal from "decimal.js";
|
|
48
|
+
import type { Account, Address } from "@solana/kit";
|
|
49
|
+
import type { TickArrayState } from "../generated";
|
|
3
50
|
export declare class MathUtils {
|
|
51
|
+
/**
|
|
52
|
+
* Multiply two numbers and divide by a denominator, rounding up.
|
|
53
|
+
* Used for conservative amount calculations (favoring the protocol).
|
|
54
|
+
*
|
|
55
|
+
* Formula: ceil((a × b) / denominator)
|
|
56
|
+
*
|
|
57
|
+
* @param a - First multiplicand
|
|
58
|
+
* @param b - Second multiplicand
|
|
59
|
+
* @param denominator - Divisor
|
|
60
|
+
* @returns Result rounded up
|
|
61
|
+
*/
|
|
4
62
|
static mulDivRoundingUp(a: BN, b: BN, denominator: BN): BN;
|
|
63
|
+
/**
|
|
64
|
+
* Multiply two numbers and divide by a denominator, rounding down (floor).
|
|
65
|
+
* Used for conservative amount calculations (favoring users).
|
|
66
|
+
*
|
|
67
|
+
* Formula: floor((a × b) / denominator)
|
|
68
|
+
*
|
|
69
|
+
* @param a - First multiplicand
|
|
70
|
+
* @param b - Second multiplicand
|
|
71
|
+
* @param denominator - Divisor
|
|
72
|
+
* @returns Result rounded down
|
|
73
|
+
* @throws Error if denominator is zero
|
|
74
|
+
*/
|
|
5
75
|
static mulDivFloor(a: BN, b: BN, denominator: BN): BN;
|
|
76
|
+
/**
|
|
77
|
+
* Multiply two numbers and divide by a denominator, rounding up (ceiling).
|
|
78
|
+
* Similar to mulDivRoundingUp but uses a different calculation method.
|
|
79
|
+
*
|
|
80
|
+
* Formula: ceil((a × b) / denominator) = floor((a × b + denominator - 1) / denominator)
|
|
81
|
+
*
|
|
82
|
+
* @param a - First multiplicand
|
|
83
|
+
* @param b - Second multiplicand
|
|
84
|
+
* @param denominator - Divisor
|
|
85
|
+
* @returns Result rounded up
|
|
86
|
+
* @throws Error if denominator is zero
|
|
87
|
+
*/
|
|
6
88
|
static mulDivCeil(a: BN, b: BN, denominator: BN): BN;
|
|
89
|
+
/**
|
|
90
|
+
* Convert X64 fixed-point number to Decimal.
|
|
91
|
+
* X64 means the number is scaled by 2^64.
|
|
92
|
+
*
|
|
93
|
+
* @param num - X64 fixed-point number
|
|
94
|
+
* @param decimalPlaces - Optional decimal places to round to
|
|
95
|
+
* @returns Decimal representation
|
|
96
|
+
*/
|
|
7
97
|
static x64ToDecimal(num: BN, decimalPlaces?: number): Decimal;
|
|
98
|
+
/**
|
|
99
|
+
* Convert Decimal to X64 fixed-point number.
|
|
100
|
+
* X64 means the number is scaled by 2^64.
|
|
101
|
+
*
|
|
102
|
+
* @param num - Decimal number
|
|
103
|
+
* @returns X64 fixed-point BN
|
|
104
|
+
*/
|
|
8
105
|
static decimalToX64(num: Decimal): BN;
|
|
106
|
+
/**
|
|
107
|
+
* Wrapping subtraction for U128 values (handles underflow).
|
|
108
|
+
* Used in certain CLMM calculations where wrapping arithmetic is needed.
|
|
109
|
+
*
|
|
110
|
+
* Formula: (n0 + 2^128 - n1) mod 2^128
|
|
111
|
+
*
|
|
112
|
+
* @param n0 - Minuend
|
|
113
|
+
* @param n1 - Subtrahend
|
|
114
|
+
* @returns Wrapped difference
|
|
115
|
+
*/
|
|
9
116
|
static wrappingSubU128(n0: BN, n1: BN): BN;
|
|
10
117
|
}
|
|
11
118
|
export declare class SqrtPriceMath {
|
|
@@ -24,8 +131,102 @@ export declare class TickMath {
|
|
|
24
131
|
static roundPriceWithTickspacing(price: Decimal, tickSpacing: number, mintDecimalsA: number, mintDecimalsB: number): Decimal;
|
|
25
132
|
}
|
|
26
133
|
export declare class LiquidityMath {
|
|
134
|
+
/**
|
|
135
|
+
* Adds a signed delta to a liquidity value.
|
|
136
|
+
*
|
|
137
|
+
* @param x - Current liquidity
|
|
138
|
+
* @param y - Delta to add (can be negative)
|
|
139
|
+
* @returns New liquidity value
|
|
140
|
+
*/
|
|
27
141
|
static addDelta(x: BN, y: BN): BN;
|
|
142
|
+
/**
|
|
143
|
+
* Calculates the amount of token A (token0) for a given liquidity across a price range.
|
|
144
|
+
*
|
|
145
|
+
* This corresponds to `get_delta_amount_0_unsigned` in the Rust implementation.
|
|
146
|
+
*
|
|
147
|
+
* **Mathematical Formula:**
|
|
148
|
+
* ```
|
|
149
|
+
* Δx = L × (√P_upper - √P_lower) / (√P_upper × √P_lower)
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* Where:
|
|
153
|
+
* - L = liquidity
|
|
154
|
+
* - √P_upper = sqrtPriceX64B (higher price boundary)
|
|
155
|
+
* - √P_lower = sqrtPriceX64A (lower price boundary)
|
|
156
|
+
*
|
|
157
|
+
* **Use Cases:**
|
|
158
|
+
* - Calculating token amounts when adding/removing liquidity
|
|
159
|
+
* - Computing swap amounts in the CLMM
|
|
160
|
+
* - Determining position values
|
|
161
|
+
*
|
|
162
|
+
* @param sqrtPriceX64A - Lower sqrt price boundary (X64 fixed-point)
|
|
163
|
+
* @param sqrtPriceX64B - Upper sqrt price boundary (X64 fixed-point)
|
|
164
|
+
* @param liquidity - Liquidity amount
|
|
165
|
+
* @param roundUp - If true, round up the result (used for amount_in calculations); if false, round down (used for amount_out)
|
|
166
|
+
* @returns Token A amount (unsigned integer)
|
|
167
|
+
*
|
|
168
|
+
* @throws Error if sqrtPriceX64A is not greater than 0
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const sqrtPriceLower = new BN("1234567890");
|
|
173
|
+
* const sqrtPriceUpper = new BN("9876543210");
|
|
174
|
+
* const liquidity = new BN("1000000");
|
|
175
|
+
*
|
|
176
|
+
* // Calculate token A amount needed (round up for safety when depositing)
|
|
177
|
+
* const tokenAAmount = LiquidityMath.getTokenAmountAFromLiquidity(
|
|
178
|
+
* sqrtPriceLower,
|
|
179
|
+
* sqrtPriceUpper,
|
|
180
|
+
* liquidity,
|
|
181
|
+
* true
|
|
182
|
+
* );
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
28
185
|
static getTokenAmountAFromLiquidity(sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): BN;
|
|
186
|
+
/**
|
|
187
|
+
* Calculates the amount of token B (token1) for a given liquidity across a price range.
|
|
188
|
+
*
|
|
189
|
+
* This corresponds to `get_delta_amount_1_unsigned` in the Rust implementation.
|
|
190
|
+
*
|
|
191
|
+
* **Mathematical Formula:**
|
|
192
|
+
* ```
|
|
193
|
+
* Δy = L × (√P_upper - √P_lower) / Q64
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* Where:
|
|
197
|
+
* - L = liquidity
|
|
198
|
+
* - √P_upper = sqrtPriceX64B (higher price boundary)
|
|
199
|
+
* - √P_lower = sqrtPriceX64A (lower price boundary)
|
|
200
|
+
* - Q64 = 2^64 (fixed-point scaling factor)
|
|
201
|
+
*
|
|
202
|
+
* **Use Cases:**
|
|
203
|
+
* - Calculating token amounts when adding/removing liquidity
|
|
204
|
+
* - Computing swap amounts in the CLMM
|
|
205
|
+
* - Determining position values
|
|
206
|
+
*
|
|
207
|
+
* @param sqrtPriceX64A - Lower sqrt price boundary (X64 fixed-point)
|
|
208
|
+
* @param sqrtPriceX64B - Upper sqrt price boundary (X64 fixed-point)
|
|
209
|
+
* @param liquidity - Liquidity amount
|
|
210
|
+
* @param roundUp - If true, round up the result (used for amount_in calculations); if false, round down (used for amount_out)
|
|
211
|
+
* @returns Token B amount (unsigned integer)
|
|
212
|
+
*
|
|
213
|
+
* @throws Error if sqrtPriceX64A is not greater than 0
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* const sqrtPriceLower = new BN("1234567890");
|
|
218
|
+
* const sqrtPriceUpper = new BN("9876543210");
|
|
219
|
+
* const liquidity = new BN("1000000");
|
|
220
|
+
*
|
|
221
|
+
* // Calculate token B amount needed (round up for safety when depositing)
|
|
222
|
+
* const tokenBAmount = LiquidityMath.getTokenAmountBFromLiquidity(
|
|
223
|
+
* sqrtPriceLower,
|
|
224
|
+
* sqrtPriceUpper,
|
|
225
|
+
* liquidity,
|
|
226
|
+
* true
|
|
227
|
+
* );
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
29
230
|
static getTokenAmountBFromLiquidity(sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): BN;
|
|
30
231
|
static getLiquidityFromTokenAmountA(sqrtPriceX64A: BN, sqrtPriceX64B: BN, amountA: BN, roundUp: boolean): BN;
|
|
31
232
|
static getLiquidityFromTokenAmountB(sqrtPriceX64A: BN, sqrtPriceX64B: BN, amountB: BN): BN;
|
|
@@ -39,6 +240,42 @@ export declare class LiquidityMath {
|
|
|
39
240
|
amountSlippageB: BN;
|
|
40
241
|
};
|
|
41
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* SwapMath
|
|
245
|
+
*
|
|
246
|
+
* Implements core swap calculation logic for CLMM (Concentrated Liquidity Market Maker).
|
|
247
|
+
*
|
|
248
|
+
* These functions are direct ports from the Rust implementation in:
|
|
249
|
+
* `programs/clmm/src/libraries/swap_math.rs`
|
|
250
|
+
*
|
|
251
|
+
* @remarks
|
|
252
|
+
* The swap math handles the complex calculations needed to determine:
|
|
253
|
+
* - How much of the input token is consumed
|
|
254
|
+
* - How much of the output token is produced
|
|
255
|
+
* - How much fee is charged
|
|
256
|
+
* - What the new price will be after the swap
|
|
257
|
+
*
|
|
258
|
+
* All prices use X64 fixed-point representation (scaled by 2^64).
|
|
259
|
+
*/
|
|
260
|
+
/**
|
|
261
|
+
* Result of a single swap step calculation.
|
|
262
|
+
*
|
|
263
|
+
* Corresponds to the `SwapStep` struct in the Rust implementation.
|
|
264
|
+
*/
|
|
265
|
+
export interface SwapStep {
|
|
266
|
+
/** The price after swapping the amount in/out, not to exceed the price target */
|
|
267
|
+
sqrtPriceNextX64: BN;
|
|
268
|
+
/** Amount of input token consumed in this step */
|
|
269
|
+
amountIn: BN;
|
|
270
|
+
/** Amount of output token produced in this step */
|
|
271
|
+
amountOut: BN;
|
|
272
|
+
/** Fee charged for this swap step */
|
|
273
|
+
feeAmount: BN;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Extended step computations interface used in full swap calculations.
|
|
277
|
+
* Includes additional state tracking beyond the basic SwapStep.
|
|
278
|
+
*/
|
|
42
279
|
export interface StepComputations {
|
|
43
280
|
sqrtPriceStartX64: BN;
|
|
44
281
|
tickNext: number;
|
|
@@ -48,4 +285,153 @@ export interface StepComputations {
|
|
|
48
285
|
amountOut: BN;
|
|
49
286
|
feeAmount: BN;
|
|
50
287
|
}
|
|
288
|
+
export declare class SwapMath {
|
|
289
|
+
/**
|
|
290
|
+
* Computes the result of swapping some amount in or amount out, given the parameters of the swap.
|
|
291
|
+
*
|
|
292
|
+
* This is the core swap calculation function that determines:
|
|
293
|
+
* - The new price after the swap step
|
|
294
|
+
* - How much input token is consumed
|
|
295
|
+
* - How much output token is produced
|
|
296
|
+
* - How much fee is charged
|
|
297
|
+
*
|
|
298
|
+
* **Corresponds to:** `compute_swap_step` in `programs/clmm/src/libraries/swap_math.rs`
|
|
299
|
+
*
|
|
300
|
+
* @param sqrtPriceCurrentX64 - Current sqrt price (X64 fixed-point)
|
|
301
|
+
* @param sqrtPriceTargetX64 - Target sqrt price for this step (X64 fixed-point)
|
|
302
|
+
* @param liquidity - Available liquidity for this price range
|
|
303
|
+
* @param amountRemaining - Amount of tokens remaining to be swapped
|
|
304
|
+
* @param feeRate - Fee rate (e.g., 3000 for 0.3%)
|
|
305
|
+
* @param isBaseInput - True if specifying exact input amount, false if specifying exact output
|
|
306
|
+
* @param zeroForOne - True if swapping token0 for token1, false otherwise
|
|
307
|
+
* @returns SwapStep result containing new price, amounts, and fees
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```typescript
|
|
311
|
+
* const step = SwapMath.computeSwapStep(
|
|
312
|
+
* new BN("1234567890"), // current price
|
|
313
|
+
* new BN("9876543210"), // target price
|
|
314
|
+
* new BN("1000000"), // liquidity
|
|
315
|
+
* new BN("10000"), // amount remaining
|
|
316
|
+
* 3000, // 0.3% fee
|
|
317
|
+
* true, // exact input
|
|
318
|
+
* true // swap token0 for token1
|
|
319
|
+
* );
|
|
320
|
+
* console.log(`Amount in: ${step.amountIn}, Amount out: ${step.amountOut}, Fee: ${step.feeAmount}`);
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
static computeSwapStep(sqrtPriceCurrentX64: BN, sqrtPriceTargetX64: BN, liquidity: BN, amountRemaining: BN, feeRate: number, isBaseInput: boolean, zeroForOne: boolean): SwapStep;
|
|
324
|
+
/**
|
|
325
|
+
* Pre-calculates amount_in or amount_out for the specified price range.
|
|
326
|
+
*
|
|
327
|
+
* The amount may overflow u64 due to unreasonable sqrt_price_target_x64.
|
|
328
|
+
* This function returns null when overflow occurs, which is handled in computeSwapStep
|
|
329
|
+
* to recalculate the price that can be reached based on the amount.
|
|
330
|
+
*
|
|
331
|
+
* **Corresponds to:** `calculate_amount_in_range` in `programs/clmm/src/libraries/swap_math.rs`
|
|
332
|
+
*
|
|
333
|
+
* @param sqrtPriceCurrentX64 - Current sqrt price
|
|
334
|
+
* @param sqrtPriceTargetX64 - Target sqrt price
|
|
335
|
+
* @param liquidity - Available liquidity
|
|
336
|
+
* @param zeroForOne - Swap direction
|
|
337
|
+
* @param isBaseInput - Whether this is an exact input swap
|
|
338
|
+
* @returns The calculated amount, or null if overflow would occur
|
|
339
|
+
*
|
|
340
|
+
* @private
|
|
341
|
+
*/
|
|
342
|
+
private static calculateAmountInRange;
|
|
343
|
+
/**
|
|
344
|
+
* Complete swap computation that handles crossing multiple ticks.
|
|
345
|
+
* This is the full implementation that iterates through tick arrays as needed.
|
|
346
|
+
*
|
|
347
|
+
* @param poolState - Current pool state with price, tick, liquidity
|
|
348
|
+
* @param tickArrayCache - Cache of loaded tick arrays
|
|
349
|
+
* @param tickSpacing - Pool tick spacing
|
|
350
|
+
* @param amountSpecified - Amount to swap (input for exact input, output for exact output)
|
|
351
|
+
* @param sqrtPriceLimitX64 - Price limit for slippage protection
|
|
352
|
+
* @param zeroForOne - Swap direction (token0 → token1 or token1 → token0)
|
|
353
|
+
* @param isBaseInput - True for exact input swaps, false for exact output swaps
|
|
354
|
+
* @param feeRate - Trading fee rate (e.g., 3000 for 0.3%)
|
|
355
|
+
* @param protocolFeeRate - Protocol fee rate (portion of trading fee)
|
|
356
|
+
* @param fundFeeRate - Fund fee rate (portion of trading fee)
|
|
357
|
+
* @param poolId - Pool address for PDA derivation
|
|
358
|
+
* @returns Swap result with amounts, fees, and updated state
|
|
359
|
+
*
|
|
360
|
+
* @example
|
|
361
|
+
* ```typescript
|
|
362
|
+
* const result = await SwapMath.swapCompute({
|
|
363
|
+
* poolState: {
|
|
364
|
+
* sqrtPriceX64: new BN("79228162514264337593543950336"),
|
|
365
|
+
* tickCurrent: 0,
|
|
366
|
+
* liquidity: new BN("1000000000"),
|
|
367
|
+
* feeGrowthGlobal0X64: new BN(0),
|
|
368
|
+
* feeGrowthGlobal1X64: new BN(0),
|
|
369
|
+
* },
|
|
370
|
+
* tickArrayCache: {},
|
|
371
|
+
* tickSpacing: 10,
|
|
372
|
+
* amountSpecified: new BN("1000000"),
|
|
373
|
+
* sqrtPriceLimitX64: SwapMath.getDefaultSqrtPriceLimit(true),
|
|
374
|
+
* zeroForOne: true,
|
|
375
|
+
* isBaseInput: true,
|
|
376
|
+
* feeRate: 3000,
|
|
377
|
+
* protocolFeeRate: 200,
|
|
378
|
+
* fundFeeRate: 100,
|
|
379
|
+
* poolId: "..." as Address,
|
|
380
|
+
* });
|
|
381
|
+
* console.log(`Swapped ${result.amountIn} for ${result.amountOut}`);
|
|
382
|
+
* ```
|
|
383
|
+
*/
|
|
384
|
+
static swapCompute(params: {
|
|
385
|
+
poolState: {
|
|
386
|
+
sqrtPriceX64: BN;
|
|
387
|
+
tickCurrent: number;
|
|
388
|
+
liquidity: BN;
|
|
389
|
+
feeGrowthGlobal0X64: BN;
|
|
390
|
+
feeGrowthGlobal1X64: BN;
|
|
391
|
+
};
|
|
392
|
+
tickArrayCache: {
|
|
393
|
+
[key: string]: Account<TickArrayState>;
|
|
394
|
+
};
|
|
395
|
+
tickSpacing: number;
|
|
396
|
+
amountSpecified: BN;
|
|
397
|
+
sqrtPriceLimitX64: BN;
|
|
398
|
+
zeroForOne: boolean;
|
|
399
|
+
isBaseInput: boolean;
|
|
400
|
+
feeRate: number;
|
|
401
|
+
protocolFeeRate: number;
|
|
402
|
+
fundFeeRate: number;
|
|
403
|
+
poolId: Address;
|
|
404
|
+
}): Promise<{
|
|
405
|
+
amountIn: BN;
|
|
406
|
+
amountOut: BN;
|
|
407
|
+
feeAmount: BN;
|
|
408
|
+
protocolFee: BN;
|
|
409
|
+
fundFee: BN;
|
|
410
|
+
endSqrtPriceX64: BN;
|
|
411
|
+
endTick: number;
|
|
412
|
+
endLiquidity: BN;
|
|
413
|
+
crossedTicks: Array<{
|
|
414
|
+
tick: number;
|
|
415
|
+
liquidityNet: bigint;
|
|
416
|
+
}>;
|
|
417
|
+
}>;
|
|
418
|
+
/**
|
|
419
|
+
* Helper function to validate swap parameters before execution.
|
|
420
|
+
*
|
|
421
|
+
* @param sqrtPriceCurrentX64 - Current sqrt price
|
|
422
|
+
* @param sqrtPriceLimitX64 - Price limit for slippage protection
|
|
423
|
+
* @param amountSpecified - Amount to swap
|
|
424
|
+
* @param zeroForOne - Swap direction
|
|
425
|
+
* @throws Error if parameters are invalid
|
|
426
|
+
*/
|
|
427
|
+
static validateSwapParams(sqrtPriceCurrentX64: BN, sqrtPriceLimitX64: BN, amountSpecified: BN, zeroForOne: boolean): void;
|
|
428
|
+
/**
|
|
429
|
+
* Calculate default sqrt price limit based on swap direction.
|
|
430
|
+
* This provides slippage protection by limiting price movement.
|
|
431
|
+
*
|
|
432
|
+
* @param zeroForOne - Swap direction
|
|
433
|
+
* @returns Default price limit
|
|
434
|
+
*/
|
|
435
|
+
static getDefaultSqrtPriceLimit(zeroForOne: boolean): BN;
|
|
436
|
+
}
|
|
51
437
|
//# sourceMappingURL=math.d.ts.map
|
package/lib/utils/math.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,OAAO,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/tickQuery.d.ts
CHANGED
|
@@ -1,11 +1,72 @@
|
|
|
1
1
|
import BN from "bn.js";
|
|
2
|
-
import { TickArrayBitmapExtension, TickArrayState } from "../generated";
|
|
2
|
+
import { TickArrayBitmapExtension, TickArrayState, TickState } from "../generated";
|
|
3
3
|
import { Account, Address, Rpc, SolanaRpcApiDevnet, SolanaRpcApiMainnet, SolanaRpcApiTestnet } from "@solana/kit";
|
|
4
4
|
export declare const FETCH_TICKARRAY_COUNT = 15;
|
|
5
5
|
export declare class TickQuery {
|
|
6
6
|
static getTickArrays(rpc: Rpc<SolanaRpcApiMainnet | SolanaRpcApiDevnet | SolanaRpcApiTestnet>, poolId: Address, tickCurrent: number, tickSpacing: number, tickArrayBitmapArray: BN[], exTickArrayBitmap: TickArrayBitmapExtension): Promise<{
|
|
7
7
|
[key: string]: Account<TickArrayState>;
|
|
8
8
|
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Find the next initialized tick array starting from a given offset.
|
|
11
|
+
*
|
|
12
|
+
* @param tickIndex - Current tick index
|
|
13
|
+
* @param tickSpacing - Pool tick spacing
|
|
14
|
+
* @param zeroForOne - Swap direction
|
|
15
|
+
* @param tickArrayBitmap - Bitmap of initialized tick arrays
|
|
16
|
+
* @param exBitmapInfo - Extended bitmap information
|
|
17
|
+
* @returns Next tick array start index and whether it exists
|
|
18
|
+
*/
|
|
19
|
+
static nextInitializedTickArray(tickIndex: number, tickSpacing: number, zeroForOne: boolean, tickArrayBitmap: BN[], exBitmapInfo: TickArrayBitmapExtension): {
|
|
20
|
+
isExist: boolean;
|
|
21
|
+
nextStartIndex: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Find the first initialized tick in a tick array.
|
|
25
|
+
*
|
|
26
|
+
* @param poolId - Pool address
|
|
27
|
+
* @param tickArray - Tick array state
|
|
28
|
+
* @param zeroForOne - Search direction
|
|
29
|
+
* @returns First initialized tick, tick array address, and start index
|
|
30
|
+
*/
|
|
31
|
+
static firstInitializedTickInOneArray(poolId: Address, tickArray: Account<TickArrayState>, zeroForOne: boolean): Promise<{
|
|
32
|
+
nextTick: TickState | undefined;
|
|
33
|
+
tickArrayAddress: Address;
|
|
34
|
+
tickArrayStartTickIndex: number;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Find the next initialized tick within a single tick array.
|
|
38
|
+
*
|
|
39
|
+
* @param poolId - Pool address
|
|
40
|
+
* @param tickArrayCache - Cache of loaded tick arrays
|
|
41
|
+
* @param tickIndex - Current tick index
|
|
42
|
+
* @param tickSpacing - Pool tick spacing
|
|
43
|
+
* @param zeroForOne - Search direction
|
|
44
|
+
* @returns Next initialized tick info
|
|
45
|
+
*/
|
|
46
|
+
static nextInitializedTickInOneArray(poolId: Address, tickArrayCache: {
|
|
47
|
+
[key: string]: Account<TickArrayState>;
|
|
48
|
+
}, tickIndex: number, tickSpacing: number, zeroForOne: boolean): Promise<{
|
|
49
|
+
initializedTick: TickState | undefined;
|
|
50
|
+
tickArrayAddress: Address | undefined;
|
|
51
|
+
tickArrayStartTickIndex: number;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Find the next initialized tick across multiple tick arrays.
|
|
55
|
+
*
|
|
56
|
+
* @param poolId - Pool address
|
|
57
|
+
* @param tickArrayCache - Cache of loaded tick arrays
|
|
58
|
+
* @param tickIndex - Current tick index
|
|
59
|
+
* @param tickSpacing - Pool tick spacing
|
|
60
|
+
* @param zeroForOne - Search direction
|
|
61
|
+
* @returns Next initialized tick info
|
|
62
|
+
*/
|
|
63
|
+
static nextInitializedTick(poolId: Address, tickArrayCache: {
|
|
64
|
+
[key: string]: Account<TickArrayState>;
|
|
65
|
+
}, tickIndex: number, tickSpacing: number, zeroForOne: boolean): Promise<{
|
|
66
|
+
nextTick: TickState;
|
|
67
|
+
tickArrayAddress: Address | undefined;
|
|
68
|
+
tickArrayStartTickIndex: number;
|
|
69
|
+
}>;
|
|
9
70
|
static getArrayStartIndex(tickIndex: number, tickSpacing: number): number;
|
|
10
71
|
static checkIsValidStartIndex(tickIndex: number, tickSpacing: number): boolean;
|
|
11
72
|
static tickCount(tickSpacing: number): number;
|