@stabbleorg/mclmm-sdk 0.1.14 → 0.2.1
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/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4530 -1821
- package/lib/index.mjs +4523 -1820
- 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 +29 -11
- 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 +389 -1
- 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
|
@@ -2,16 +2,31 @@ import type { Address, Rpc, Instruction, TransactionSigner, SolanaRpcApiDevnet,
|
|
|
2
2
|
import type { PoolState, PersonalPositionState } from "./generated";
|
|
3
3
|
import BN from "bn.js";
|
|
4
4
|
import { ClmmApiConfig } from "./api";
|
|
5
|
+
import { ReturnTypeGetTickPrice } from "./utils";
|
|
5
6
|
export type SolanaRpcType = SolanaRpcApiMainnet | SolanaRpcApiDevnet | SolanaRpcApiTestnet;
|
|
6
7
|
export interface ClmmSdkConfig {
|
|
7
8
|
/** RPC client for Solana network operations */
|
|
8
9
|
rpc: Rpc<SolanaRpcType>;
|
|
9
10
|
/** API client config */
|
|
10
11
|
apiConfig?: ClmmApiConfig;
|
|
12
|
+
/** Price API configuration (for real-time price fetching) */
|
|
13
|
+
priceApiConfig?: {
|
|
14
|
+
/** Base URL for price API*/
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
/** Request timeout in milliseconds (default: 5000) */
|
|
17
|
+
timeout?: number;
|
|
18
|
+
};
|
|
11
19
|
/** Optional program address override */
|
|
12
20
|
programAddress?: Address;
|
|
13
21
|
/** Default commitment level for transactions */
|
|
14
22
|
commitment?: "processed" | "confirmed" | "finalized";
|
|
23
|
+
/** Optional logger for production-friendly logging */
|
|
24
|
+
logger?: {
|
|
25
|
+
debug?: (message: string, ...args: any[]) => void;
|
|
26
|
+
info?: (message: string, ...args: any[]) => void;
|
|
27
|
+
warn?: (message: string, ...args: any[]) => void;
|
|
28
|
+
error?: (message: string, ...args: any[]) => void;
|
|
29
|
+
};
|
|
15
30
|
}
|
|
16
31
|
/**
|
|
17
32
|
* Return type for make instructions following Raydium's pattern
|
|
@@ -89,13 +104,11 @@ export interface PositionInfo extends PersonalPositionState {
|
|
|
89
104
|
tokenMint0: Address;
|
|
90
105
|
tokenMint1: Address;
|
|
91
106
|
/** Computed token amounts based on liquidity and price range */
|
|
92
|
-
amount0:
|
|
93
|
-
amount1:
|
|
94
|
-
/** Price range bounds
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
upper: number;
|
|
98
|
-
};
|
|
107
|
+
amount0: string;
|
|
108
|
+
amount1: string;
|
|
109
|
+
/** Price range bounds */
|
|
110
|
+
priceLower: ReturnTypeGetTickPrice;
|
|
111
|
+
priceUpper: ReturnTypeGetTickPrice;
|
|
99
112
|
/** Whether position is currently in range */
|
|
100
113
|
inRange: boolean;
|
|
101
114
|
/** Position age in seconds (from creation to now) */
|
|
@@ -135,7 +148,7 @@ export interface SwapRoute {
|
|
|
135
148
|
tokenIn: Address;
|
|
136
149
|
/** Output token */
|
|
137
150
|
tokenOut: Address;
|
|
138
|
-
/** Fee tier */
|
|
151
|
+
/** Fee tier in parts per million (PPM), e.g., 3000 = 0.3% */
|
|
139
152
|
fee: number;
|
|
140
153
|
}
|
|
141
154
|
export interface SwapParams {
|
|
@@ -143,7 +156,7 @@ export interface SwapParams {
|
|
|
143
156
|
tokenIn: Address;
|
|
144
157
|
/** Output token mint */
|
|
145
158
|
tokenOut: Address;
|
|
146
|
-
/** Input amount */
|
|
159
|
+
/** Input amount (for exact-in swaps) or maximum input (for exact-out swaps) */
|
|
147
160
|
amountIn: BN;
|
|
148
161
|
/** Slippage tolerance (0-1, e.g., 0.01 for 1%) */
|
|
149
162
|
slippageTolerance: number;
|
|
@@ -151,6 +164,10 @@ export interface SwapParams {
|
|
|
151
164
|
wallet: Address;
|
|
152
165
|
/** Optional deadline for transaction */
|
|
153
166
|
deadline?: BN;
|
|
167
|
+
/** Swap mode: true = exact-in (default), false = exact-out */
|
|
168
|
+
isBaseInput?: boolean;
|
|
169
|
+
/** Desired output amount (for exact-out swaps only) */
|
|
170
|
+
amountOut?: BN;
|
|
154
171
|
}
|
|
155
172
|
export interface AddLiquidityParams {
|
|
156
173
|
/** Pool address */
|
|
@@ -239,6 +256,7 @@ export declare enum ClmmErrorCode {
|
|
|
239
256
|
SWAP_AMOUNT_CANNOT_BE_ZERO = "SWAP_AMOUNT_CANNOT_BE_ZERO",
|
|
240
257
|
SWAP_INPUT_OR_OUTPUT_AMOUNT_TOO_SMALL = "SWAP_INPUT_OR_OUTPUT_AMOUNT_TOO_SMALL",
|
|
241
258
|
INPUT_POOL_VAULT_IS_INVALID = "INPUT_POOL_VAULT_IS_INVALID",
|
|
259
|
+
SWAP_SIMULATION_FAILED = "SWAP_SIMULATION_FAILED",
|
|
242
260
|
TRANSACTION_FAILED = "TRANSACTION_FAILED",
|
|
243
261
|
TRANSACTION_TOO_OLD = "TRANSACTION_TOO_OLD",
|
|
244
262
|
ZERO_MINT_AMOUNT = "ZERO_MINT_AMOUNT",
|
|
@@ -265,8 +283,8 @@ export declare enum ClmmErrorCode {
|
|
|
265
283
|
}
|
|
266
284
|
export declare class ClmmError extends Error {
|
|
267
285
|
code: ClmmErrorCode;
|
|
268
|
-
details?: unknown
|
|
269
|
-
constructor(code: ClmmErrorCode, message: string, details?: unknown
|
|
286
|
+
details?: unknown;
|
|
287
|
+
constructor(code: ClmmErrorCode, message: string, details?: unknown);
|
|
270
288
|
}
|
|
271
289
|
export interface SwapEvent {
|
|
272
290
|
/** 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;
|
|
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;
|
|
@@ -34,11 +235,49 @@ export declare class LiquidityMath {
|
|
|
34
235
|
amountA: BN;
|
|
35
236
|
amountB: BN;
|
|
36
237
|
};
|
|
37
|
-
static getAmountsFromLiquidityWithSlippage(sqrtPriceCurrentX64: BN, sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN,
|
|
238
|
+
static getAmountsFromLiquidityWithSlippage(sqrtPriceCurrentX64: BN, sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, add: boolean, roundUp: boolean, amountSlippage: number): {
|
|
239
|
+
amountA: BN;
|
|
240
|
+
amountB: BN;
|
|
38
241
|
amountSlippageA: BN;
|
|
39
242
|
amountSlippageB: BN;
|
|
40
243
|
};
|
|
41
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* SwapMath
|
|
247
|
+
*
|
|
248
|
+
* Implements core swap calculation logic for CLMM (Concentrated Liquidity Market Maker).
|
|
249
|
+
*
|
|
250
|
+
* These functions are direct ports from the Rust implementation in:
|
|
251
|
+
* `programs/clmm/src/libraries/swap_math.rs`
|
|
252
|
+
*
|
|
253
|
+
* @remarks
|
|
254
|
+
* The swap math handles the complex calculations needed to determine:
|
|
255
|
+
* - How much of the input token is consumed
|
|
256
|
+
* - How much of the output token is produced
|
|
257
|
+
* - How much fee is charged
|
|
258
|
+
* - What the new price will be after the swap
|
|
259
|
+
*
|
|
260
|
+
* All prices use X64 fixed-point representation (scaled by 2^64).
|
|
261
|
+
*/
|
|
262
|
+
/**
|
|
263
|
+
* Result of a single swap step calculation.
|
|
264
|
+
*
|
|
265
|
+
* Corresponds to the `SwapStep` struct in the Rust implementation.
|
|
266
|
+
*/
|
|
267
|
+
export interface SwapStep {
|
|
268
|
+
/** The price after swapping the amount in/out, not to exceed the price target */
|
|
269
|
+
sqrtPriceNextX64: BN;
|
|
270
|
+
/** Amount of input token consumed in this step */
|
|
271
|
+
amountIn: BN;
|
|
272
|
+
/** Amount of output token produced in this step */
|
|
273
|
+
amountOut: BN;
|
|
274
|
+
/** Fee charged for this swap step */
|
|
275
|
+
feeAmount: BN;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Extended step computations interface used in full swap calculations.
|
|
279
|
+
* Includes additional state tracking beyond the basic SwapStep.
|
|
280
|
+
*/
|
|
42
281
|
export interface StepComputations {
|
|
43
282
|
sqrtPriceStartX64: BN;
|
|
44
283
|
tickNext: number;
|
|
@@ -48,4 +287,153 @@ export interface StepComputations {
|
|
|
48
287
|
amountOut: BN;
|
|
49
288
|
feeAmount: BN;
|
|
50
289
|
}
|
|
290
|
+
export declare class SwapMath {
|
|
291
|
+
/**
|
|
292
|
+
* Computes the result of swapping some amount in or amount out, given the parameters of the swap.
|
|
293
|
+
*
|
|
294
|
+
* This is the core swap calculation function that determines:
|
|
295
|
+
* - The new price after the swap step
|
|
296
|
+
* - How much input token is consumed
|
|
297
|
+
* - How much output token is produced
|
|
298
|
+
* - How much fee is charged
|
|
299
|
+
*
|
|
300
|
+
* **Corresponds to:** `compute_swap_step` in `programs/clmm/src/libraries/swap_math.rs`
|
|
301
|
+
*
|
|
302
|
+
* @param sqrtPriceCurrentX64 - Current sqrt price (X64 fixed-point)
|
|
303
|
+
* @param sqrtPriceTargetX64 - Target sqrt price for this step (X64 fixed-point)
|
|
304
|
+
* @param liquidity - Available liquidity for this price range
|
|
305
|
+
* @param amountRemaining - Amount of tokens remaining to be swapped
|
|
306
|
+
* @param feeRate - Fee rate (e.g., 3000 for 0.3%)
|
|
307
|
+
* @param isBaseInput - True if specifying exact input amount, false if specifying exact output
|
|
308
|
+
* @param zeroForOne - True if swapping token0 for token1, false otherwise
|
|
309
|
+
* @returns SwapStep result containing new price, amounts, and fees
|
|
310
|
+
*
|
|
311
|
+
* @example
|
|
312
|
+
* ```typescript
|
|
313
|
+
* const step = SwapMath.computeSwapStep(
|
|
314
|
+
* new BN("1234567890"), // current price
|
|
315
|
+
* new BN("9876543210"), // target price
|
|
316
|
+
* new BN("1000000"), // liquidity
|
|
317
|
+
* new BN("10000"), // amount remaining
|
|
318
|
+
* 3000, // 0.3% fee
|
|
319
|
+
* true, // exact input
|
|
320
|
+
* true // swap token0 for token1
|
|
321
|
+
* );
|
|
322
|
+
* console.log(`Amount in: ${step.amountIn}, Amount out: ${step.amountOut}, Fee: ${step.feeAmount}`);
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
static computeSwapStep(sqrtPriceCurrentX64: BN, sqrtPriceTargetX64: BN, liquidity: BN, amountRemaining: BN, feeRate: number, isBaseInput: boolean, zeroForOne: boolean): SwapStep;
|
|
326
|
+
/**
|
|
327
|
+
* Pre-calculates amount_in or amount_out for the specified price range.
|
|
328
|
+
*
|
|
329
|
+
* The amount may overflow u64 due to unreasonable sqrt_price_target_x64.
|
|
330
|
+
* This function returns null when overflow occurs, which is handled in computeSwapStep
|
|
331
|
+
* to recalculate the price that can be reached based on the amount.
|
|
332
|
+
*
|
|
333
|
+
* **Corresponds to:** `calculate_amount_in_range` in `programs/clmm/src/libraries/swap_math.rs`
|
|
334
|
+
*
|
|
335
|
+
* @param sqrtPriceCurrentX64 - Current sqrt price
|
|
336
|
+
* @param sqrtPriceTargetX64 - Target sqrt price
|
|
337
|
+
* @param liquidity - Available liquidity
|
|
338
|
+
* @param zeroForOne - Swap direction
|
|
339
|
+
* @param isBaseInput - Whether this is an exact input swap
|
|
340
|
+
* @returns The calculated amount, or null if overflow would occur
|
|
341
|
+
*
|
|
342
|
+
* @private
|
|
343
|
+
*/
|
|
344
|
+
private static calculateAmountInRange;
|
|
345
|
+
/**
|
|
346
|
+
* Complete swap computation that handles crossing multiple ticks.
|
|
347
|
+
* This is the full implementation that iterates through tick arrays as needed.
|
|
348
|
+
*
|
|
349
|
+
* @param poolState - Current pool state with price, tick, liquidity
|
|
350
|
+
* @param tickArrayCache - Cache of loaded tick arrays
|
|
351
|
+
* @param tickSpacing - Pool tick spacing
|
|
352
|
+
* @param amountSpecified - Amount to swap (input for exact input, output for exact output)
|
|
353
|
+
* @param sqrtPriceLimitX64 - Price limit for slippage protection
|
|
354
|
+
* @param zeroForOne - Swap direction (token0 → token1 or token1 → token0)
|
|
355
|
+
* @param isBaseInput - True for exact input swaps, false for exact output swaps
|
|
356
|
+
* @param feeRate - Trading fee rate (e.g., 3000 for 0.3%)
|
|
357
|
+
* @param protocolFeeRate - Protocol fee rate (portion of trading fee)
|
|
358
|
+
* @param fundFeeRate - Fund fee rate (portion of trading fee)
|
|
359
|
+
* @param poolId - Pool address for PDA derivation
|
|
360
|
+
* @returns Swap result with amounts, fees, and updated state
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* ```typescript
|
|
364
|
+
* const result = await SwapMath.swapCompute({
|
|
365
|
+
* poolState: {
|
|
366
|
+
* sqrtPriceX64: new BN("79228162514264337593543950336"),
|
|
367
|
+
* tickCurrent: 0,
|
|
368
|
+
* liquidity: new BN("1000000000"),
|
|
369
|
+
* feeGrowthGlobal0X64: new BN(0),
|
|
370
|
+
* feeGrowthGlobal1X64: new BN(0),
|
|
371
|
+
* },
|
|
372
|
+
* tickArrayCache: {},
|
|
373
|
+
* tickSpacing: 10,
|
|
374
|
+
* amountSpecified: new BN("1000000"),
|
|
375
|
+
* sqrtPriceLimitX64: SwapMath.getDefaultSqrtPriceLimit(true),
|
|
376
|
+
* zeroForOne: true,
|
|
377
|
+
* isBaseInput: true,
|
|
378
|
+
* feeRate: 3000,
|
|
379
|
+
* protocolFeeRate: 200,
|
|
380
|
+
* fundFeeRate: 100,
|
|
381
|
+
* poolId: "..." as Address,
|
|
382
|
+
* });
|
|
383
|
+
* console.log(`Swapped ${result.amountIn} for ${result.amountOut}`);
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
static swapCompute(params: {
|
|
387
|
+
poolState: {
|
|
388
|
+
sqrtPriceX64: BN;
|
|
389
|
+
tickCurrent: number;
|
|
390
|
+
liquidity: BN;
|
|
391
|
+
feeGrowthGlobal0X64: BN;
|
|
392
|
+
feeGrowthGlobal1X64: BN;
|
|
393
|
+
};
|
|
394
|
+
tickArrayCache: {
|
|
395
|
+
[key: string]: Account<TickArrayState>;
|
|
396
|
+
};
|
|
397
|
+
tickSpacing: number;
|
|
398
|
+
amountSpecified: BN;
|
|
399
|
+
sqrtPriceLimitX64: BN;
|
|
400
|
+
zeroForOne: boolean;
|
|
401
|
+
isBaseInput: boolean;
|
|
402
|
+
feeRate: number;
|
|
403
|
+
protocolFeeRate: number;
|
|
404
|
+
fundFeeRate: number;
|
|
405
|
+
poolId: Address;
|
|
406
|
+
}): Promise<{
|
|
407
|
+
amountIn: BN;
|
|
408
|
+
amountOut: BN;
|
|
409
|
+
feeAmount: BN;
|
|
410
|
+
protocolFee: BN;
|
|
411
|
+
fundFee: BN;
|
|
412
|
+
endSqrtPriceX64: BN;
|
|
413
|
+
endTick: number;
|
|
414
|
+
endLiquidity: BN;
|
|
415
|
+
crossedTicks: Array<{
|
|
416
|
+
tick: number;
|
|
417
|
+
liquidityNet: bigint;
|
|
418
|
+
}>;
|
|
419
|
+
}>;
|
|
420
|
+
/**
|
|
421
|
+
* Helper function to validate swap parameters before execution.
|
|
422
|
+
*
|
|
423
|
+
* @param sqrtPriceCurrentX64 - Current sqrt price
|
|
424
|
+
* @param sqrtPriceLimitX64 - Price limit for slippage protection
|
|
425
|
+
* @param amountSpecified - Amount to swap
|
|
426
|
+
* @param zeroForOne - Swap direction
|
|
427
|
+
* @throws Error if parameters are invalid
|
|
428
|
+
*/
|
|
429
|
+
static validateSwapParams(sqrtPriceCurrentX64: BN, sqrtPriceLimitX64: BN, amountSpecified: BN, zeroForOne: boolean): void;
|
|
430
|
+
/**
|
|
431
|
+
* Calculate default sqrt price limit based on swap direction.
|
|
432
|
+
* This provides slippage protection by limiting price movement.
|
|
433
|
+
*
|
|
434
|
+
* @param zeroForOne - Swap direction
|
|
435
|
+
* @returns Default price limit
|
|
436
|
+
*/
|
|
437
|
+
static getDefaultSqrtPriceLimit(zeroForOne: boolean): BN;
|
|
438
|
+
}
|
|
51
439
|
//# 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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"}
|