@stabbleorg/mclmm-sdk 0.1.6 → 0.1.7

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.
Files changed (157) hide show
  1. package/lib/api/config.d.ts +25 -0
  2. package/lib/api/config.d.ts.map +1 -0
  3. package/lib/api/index.d.ts +15 -0
  4. package/lib/api/index.d.ts.map +1 -0
  5. package/lib/api/pools.d.ts +39 -0
  6. package/lib/api/pools.d.ts.map +1 -0
  7. package/lib/client.d.ts +43 -0
  8. package/lib/client.d.ts.map +1 -0
  9. package/lib/clmm.d.ts +91 -0
  10. package/lib/clmm.d.ts.map +1 -0
  11. package/lib/constants.d.ts +62 -0
  12. package/lib/constants.d.ts.map +1 -0
  13. package/lib/generated/accounts/ammConfig.d.ts +58 -0
  14. package/lib/generated/accounts/ammConfig.d.ts.map +1 -0
  15. package/lib/generated/accounts/index.d.ts +17 -0
  16. package/lib/generated/accounts/index.d.ts.map +1 -0
  17. package/lib/generated/accounts/observationState.d.ts +51 -0
  18. package/lib/generated/accounts/observationState.d.ts.map +1 -0
  19. package/lib/generated/accounts/operationState.d.ts +38 -0
  20. package/lib/generated/accounts/operationState.d.ts.map +1 -0
  21. package/lib/generated/accounts/personalPositionState.d.ts +73 -0
  22. package/lib/generated/accounts/personalPositionState.d.ts.map +1 -0
  23. package/lib/generated/accounts/poolState.d.ts +157 -0
  24. package/lib/generated/accounts/poolState.d.ts.map +1 -0
  25. package/lib/generated/accounts/protocolPositionState.d.ts +70 -0
  26. package/lib/generated/accounts/protocolPositionState.d.ts.map +1 -0
  27. package/lib/generated/accounts/supportMintAssociated.d.ts +36 -0
  28. package/lib/generated/accounts/supportMintAssociated.d.ts.map +1 -0
  29. package/lib/generated/accounts/tickArrayBitmapExtension.d.ts +36 -0
  30. package/lib/generated/accounts/tickArrayBitmapExtension.d.ts.map +1 -0
  31. package/lib/generated/accounts/tickArrayState.d.ts +39 -0
  32. package/lib/generated/accounts/tickArrayState.d.ts.map +1 -0
  33. package/lib/generated/errors/ammV3.d.ts +110 -0
  34. package/lib/generated/errors/ammV3.d.ts.map +1 -0
  35. package/lib/generated/errors/index.d.ts +9 -0
  36. package/lib/generated/errors/index.d.ts.map +1 -0
  37. package/lib/generated/index.d.ts +13 -0
  38. package/lib/generated/index.d.ts.map +1 -0
  39. package/lib/generated/instructions/closePosition.d.ts +78 -0
  40. package/lib/generated/instructions/closePosition.d.ts.map +1 -0
  41. package/lib/generated/instructions/closeProtocolPosition.d.ts +40 -0
  42. package/lib/generated/instructions/closeProtocolPosition.d.ts.map +1 -0
  43. package/lib/generated/instructions/collectFundFee.d.ts +96 -0
  44. package/lib/generated/instructions/collectFundFee.d.ts.map +1 -0
  45. package/lib/generated/instructions/collectProtocolFee.d.ts +96 -0
  46. package/lib/generated/instructions/collectProtocolFee.d.ts.map +1 -0
  47. package/lib/generated/instructions/collectRemainingRewards.d.ts +76 -0
  48. package/lib/generated/instructions/collectRemainingRewards.d.ts.map +1 -0
  49. package/lib/generated/instructions/createAmmConfig.d.ts +78 -0
  50. package/lib/generated/instructions/createAmmConfig.d.ts.map +1 -0
  51. package/lib/generated/instructions/createOperationAccount.d.ts +57 -0
  52. package/lib/generated/instructions/createOperationAccount.d.ts.map +1 -0
  53. package/lib/generated/instructions/createPool.d.ts +133 -0
  54. package/lib/generated/instructions/createPool.d.ts.map +1 -0
  55. package/lib/generated/instructions/createSupportMintAssociated.d.ts +64 -0
  56. package/lib/generated/instructions/createSupportMintAssociated.d.ts.map +1 -0
  57. package/lib/generated/instructions/decreaseLiquidity.d.ts +100 -0
  58. package/lib/generated/instructions/decreaseLiquidity.d.ts.map +1 -0
  59. package/lib/generated/instructions/decreaseLiquidityV2.d.ts +120 -0
  60. package/lib/generated/instructions/decreaseLiquidityV2.d.ts.map +1 -0
  61. package/lib/generated/instructions/increaseLiquidity.d.ts +100 -0
  62. package/lib/generated/instructions/increaseLiquidity.d.ts.map +1 -0
  63. package/lib/generated/instructions/increaseLiquidityV2.d.ts +118 -0
  64. package/lib/generated/instructions/increaseLiquidityV2.d.ts.map +1 -0
  65. package/lib/generated/instructions/index.d.ts +34 -0
  66. package/lib/generated/instructions/index.d.ts.map +1 -0
  67. package/lib/generated/instructions/initializeReward.d.ts +113 -0
  68. package/lib/generated/instructions/initializeReward.d.ts.map +1 -0
  69. package/lib/generated/instructions/openPosition.d.ts +198 -0
  70. package/lib/generated/instructions/openPosition.d.ts.map +1 -0
  71. package/lib/generated/instructions/openPositionV2.d.ts +218 -0
  72. package/lib/generated/instructions/openPositionV2.d.ts.map +1 -0
  73. package/lib/generated/instructions/openPositionWithToken22Nft.d.ts +201 -0
  74. package/lib/generated/instructions/openPositionWithToken22Nft.d.ts.map +1 -0
  75. package/lib/generated/instructions/setRewardParams.d.ts +92 -0
  76. package/lib/generated/instructions/setRewardParams.d.ts.map +1 -0
  77. package/lib/generated/instructions/swap.d.ts +95 -0
  78. package/lib/generated/instructions/swap.d.ts.map +1 -0
  79. package/lib/generated/instructions/swapRouterBaseIn.d.ts +71 -0
  80. package/lib/generated/instructions/swapRouterBaseIn.d.ts.map +1 -0
  81. package/lib/generated/instructions/swapV2.d.ts +112 -0
  82. package/lib/generated/instructions/swapV2.d.ts.map +1 -0
  83. package/lib/generated/instructions/transferRewardOwner.d.ts +46 -0
  84. package/lib/generated/instructions/transferRewardOwner.d.ts.map +1 -0
  85. package/lib/generated/instructions/updateAmmConfig.d.ts +51 -0
  86. package/lib/generated/instructions/updateAmmConfig.d.ts.map +1 -0
  87. package/lib/generated/instructions/updateOperationAccount.d.ts +66 -0
  88. package/lib/generated/instructions/updateOperationAccount.d.ts.map +1 -0
  89. package/lib/generated/instructions/updatePoolStatus.d.ts +44 -0
  90. package/lib/generated/instructions/updatePoolStatus.d.ts.map +1 -0
  91. package/lib/generated/instructions/updateRewardInfos.d.ts +39 -0
  92. package/lib/generated/instructions/updateRewardInfos.d.ts.map +1 -0
  93. package/lib/generated/programs/ammV3.d.ts +109 -0
  94. package/lib/generated/programs/ammV3.d.ts.map +1 -0
  95. package/lib/generated/programs/index.d.ts +9 -0
  96. package/lib/generated/programs/index.d.ts.map +1 -0
  97. package/lib/generated/shared/index.d.ts +50 -0
  98. package/lib/generated/shared/index.d.ts.map +1 -0
  99. package/lib/generated/types/collectPersonalFeeEvent.d.ts +37 -0
  100. package/lib/generated/types/collectPersonalFeeEvent.d.ts.map +1 -0
  101. package/lib/generated/types/collectProtocolFeeEvent.d.ts +37 -0
  102. package/lib/generated/types/collectProtocolFeeEvent.d.ts.map +1 -0
  103. package/lib/generated/types/configChangeEvent.d.ts +23 -0
  104. package/lib/generated/types/configChangeEvent.d.ts.map +1 -0
  105. package/lib/generated/types/createPersonalPositionEvent.d.ts +57 -0
  106. package/lib/generated/types/createPersonalPositionEvent.d.ts.map +1 -0
  107. package/lib/generated/types/decreaseLiquidityEvent.d.ts +51 -0
  108. package/lib/generated/types/decreaseLiquidityEvent.d.ts.map +1 -0
  109. package/lib/generated/types/increaseLiquidityEvent.d.ts +41 -0
  110. package/lib/generated/types/increaseLiquidityEvent.d.ts.map +1 -0
  111. package/lib/generated/types/index.d.ts +23 -0
  112. package/lib/generated/types/index.d.ts.map +1 -0
  113. package/lib/generated/types/liquidityCalculateEvent.d.ts +51 -0
  114. package/lib/generated/types/liquidityCalculateEvent.d.ts.map +1 -0
  115. package/lib/generated/types/liquidityChangeEvent.d.ts +41 -0
  116. package/lib/generated/types/liquidityChangeEvent.d.ts.map +1 -0
  117. package/lib/generated/types/observation.d.ts +29 -0
  118. package/lib/generated/types/observation.d.ts.map +1 -0
  119. package/lib/generated/types/poolCreatedEvent.d.ts +52 -0
  120. package/lib/generated/types/poolCreatedEvent.d.ts.map +1 -0
  121. package/lib/generated/types/positionRewardInfo.d.ts +20 -0
  122. package/lib/generated/types/positionRewardInfo.d.ts.map +1 -0
  123. package/lib/generated/types/rewardInfo.d.ts +66 -0
  124. package/lib/generated/types/rewardInfo.d.ts.map +1 -0
  125. package/lib/generated/types/swapEvent.d.ts +77 -0
  126. package/lib/generated/types/swapEvent.d.ts.map +1 -0
  127. package/lib/generated/types/tickState.d.ts +42 -0
  128. package/lib/generated/types/tickState.d.ts.map +1 -0
  129. package/lib/generated/types/updateRewardInfosEvent.d.ts +21 -0
  130. package/lib/generated/types/updateRewardInfosEvent.d.ts.map +1 -0
  131. package/lib/index.d.ts +19 -0
  132. package/lib/index.d.ts.map +1 -0
  133. package/lib/index.js +9385 -0
  134. package/lib/index.mjs +10022 -0
  135. package/lib/pool-manager.d.ts +84 -0
  136. package/lib/pool-manager.d.ts.map +1 -0
  137. package/lib/position-manager.d.ts +127 -0
  138. package/lib/position-manager.d.ts.map +1 -0
  139. package/lib/rewards.d.ts +7 -0
  140. package/lib/rewards.d.ts.map +1 -0
  141. package/lib/swap.d.ts +6 -0
  142. package/lib/swap.d.ts.map +1 -0
  143. package/lib/types.d.ts +307 -0
  144. package/lib/types.d.ts.map +1 -0
  145. package/lib/utils/index.d.ts +83 -0
  146. package/lib/utils/index.d.ts.map +1 -0
  147. package/lib/utils/math.d.ts +51 -0
  148. package/lib/utils/math.d.ts.map +1 -0
  149. package/lib/utils/pda.d.ts +80 -0
  150. package/lib/utils/pda.d.ts.map +1 -0
  151. package/lib/utils/pool.d.ts +180 -0
  152. package/lib/utils/pool.d.ts.map +1 -0
  153. package/lib/utils/tick.d.ts +172 -0
  154. package/lib/utils/tick.d.ts.map +1 -0
  155. package/lib/utils/tickQuery.d.ts +13 -0
  156. package/lib/utils/tickQuery.d.ts.map +1 -0
  157. package/package.json +3 -2
@@ -0,0 +1,84 @@
1
+ import { type Address, type TransactionSigner, Account, Rpc, SolanaRpcApiMainnet, SolanaRpcApiDevnet, SolanaRpcApiTestnet } from "@solana/kit";
2
+ import { PoolState } from "./generated";
3
+ import type { ClmmSdkConfig, MakeInstructionResult, PoolInfo } from "./types";
4
+ import BN from "bn.js";
5
+ import Decimal from "decimal.js";
6
+ export declare class PoolManager {
7
+ private readonly config;
8
+ constructor(config: ClmmSdkConfig);
9
+ /**
10
+ * Make create pool instructions
11
+ * @param params - Pool creation parameters
12
+ * @returns Instruction result following Raydium pattern
13
+ */
14
+ makeCreatePoolInstructions(params: {
15
+ owner: TransactionSigner;
16
+ tokenMintA: Address;
17
+ tokenMintB: Address;
18
+ ammConfigId: Address;
19
+ initialPrice: Decimal;
20
+ mintADecimals: number;
21
+ mintBDecimals: number;
22
+ }): Promise<MakeInstructionResult<{
23
+ poolId: Address;
24
+ observationId: Address;
25
+ tokenVault0: Address;
26
+ tokenVault1: Address;
27
+ }>>;
28
+ /**
29
+ * Make create AMM config instructions
30
+ * @param params - Config creation parameters
31
+ * @returns Instruction result following Raydium pattern
32
+ */
33
+ makeCreateAmmConfigInstructions(params: {
34
+ programId: Address;
35
+ owner: TransactionSigner;
36
+ index: number;
37
+ tickSpacing: number;
38
+ tradeFeeRate: number;
39
+ protocolFeeRate: number;
40
+ fundFeeRate: number;
41
+ }): Promise<MakeInstructionResult<{
42
+ ammConfigId: Address;
43
+ }>>;
44
+ /**
45
+ * Fetch pool information by address
46
+ * @param poolAddress - Pool state address
47
+ * @returns Pool information
48
+ */
49
+ getPool(poolAddress: Address): Promise<PoolInfo | null>;
50
+ /**
51
+ * Find pool by token pair and config index
52
+ * @param tokenA - First token mint
53
+ * @param tokenB - Second token mint
54
+ * @param ammConfigIndex - AMM config index (default: 0)
55
+ * @returns Pool information if found
56
+ */
57
+ getPoolByTokenPairAndConfig(tokenA: Address, tokenB: Address, ammConfigIndex?: number): Promise<PoolInfo | null>;
58
+ getAllPools(rpc: Rpc<SolanaRpcApiMainnet | SolanaRpcApiDevnet | SolanaRpcApiTestnet>): Promise<Account<PoolState>[]>;
59
+ /**
60
+ * Calculate pool price from sqrt price
61
+ * @param sqrtPriceX64 - Square root price in Q64.64 format
62
+ * @param decimalsA - Token A decimals
63
+ * @param decimalsB - Token B decimals
64
+ * @returns Human-readable price
65
+ */
66
+ calculatePoolPrice(sqrtPriceX64: BN, decimalsA: number, decimalsB: number): Decimal;
67
+ /**
68
+ * Enrich pool state with calculated fields
69
+ */
70
+ private enrichPoolInfo;
71
+ /**
72
+ * Validate fee tier
73
+ * @param fee - Fee tier to validate
74
+ * @returns True if valid
75
+ */
76
+ isValidFeeTier(fee: number): boolean;
77
+ /**
78
+ * Get tick spacing for fee tier
79
+ * @param fee - Fee tier
80
+ * @returns Tick spacing
81
+ */
82
+ getTickSpacing(fee: number): number;
83
+ }
84
+ //# sourceMappingURL=pool-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-manager.d.ts","sourceRoot":"","sources":["../src/pool-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,iBAAiB,EAEtB,OAAO,EACP,GAAG,EAEH,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAML,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,QAAQ,EAET,MAAM,SAAS,CAAC;AAajB,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAElD;;;;OAIG;IACG,0BAA0B,CAAC,MAAM,EAAE;QACvC,KAAK,EAAE,iBAAiB,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CACT,qBAAqB,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;QAChB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC,CACH;IA6ED;;;;OAIG;IACG,+BAA+B,CAAC,MAAM,EAAE;QAC5C,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,iBAAiB,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CACT,qBAAqB,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC,CACH;IAmCD;;;;OAIG;IACG,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqB7D;;;;;;OAMG;IACG,2BAA2B,CAC/B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,cAAc,GAAE,MAAU,GACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWrB,WAAW,CACf,GAAG,EAAE,GAAG,CAAC,mBAAmB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC,GACvE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IAyBhC;;;;;;OAMG;IACH,kBAAkB,CAChB,YAAY,EAAE,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO;IAQV;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAUpC"}
@@ -0,0 +1,127 @@
1
+ import { Account, type Address, type TransactionSigner } from "@solana/kit";
2
+ import { PersonalPositionState, PoolState } from "./generated";
3
+ import type { ClmmSdkConfig, MakeInstructionResult, PositionInfo } from "./types";
4
+ export declare class PositionManager {
5
+ private readonly config;
6
+ constructor(config: ClmmSdkConfig);
7
+ /**
8
+ * Make open position from liquidity instructions
9
+ * Use this when you know the exact liquidity amount you want to provide
10
+ * @param params - Position opening parameters
11
+ * @returns Instruction result following Raydium pattern
12
+ */
13
+ makeOpenPositionFromLiquidityInstructions(params: {
14
+ poolAccount: Account<PoolState, Address>;
15
+ ownerInfo: {
16
+ feePayer: TransactionSigner;
17
+ wallet: Address;
18
+ tokenAccountA: Address;
19
+ tokenAccountB: Address;
20
+ useSOLBalance?: boolean;
21
+ };
22
+ tickLower: number;
23
+ tickUpper: number;
24
+ liquidity: bigint;
25
+ amountMaxA: bigint;
26
+ amountMaxB: bigint;
27
+ withMetadata?: boolean;
28
+ getEphemeralSigners?: () => TransactionSigner[];
29
+ }): Promise<MakeInstructionResult<{
30
+ positionNftMint: Address;
31
+ positionNftAccount: Address;
32
+ metadataAccount: Address;
33
+ personalPosition: Address;
34
+ }>>;
35
+ /**
36
+ * Make open position from base token amount instructions
37
+ * Use this when you know how much of one specific token you want to deposit
38
+ * @param params - Position opening parameters
39
+ * @returns Instruction result following Raydium pattern
40
+ */
41
+ makeOpenPositionFromBaseInstructions(params: {
42
+ poolAccount: Account<PoolState, Address>;
43
+ ownerInfo: {
44
+ wallet: TransactionSigner;
45
+ tokenAccountA: Address;
46
+ tokenAccountB: Address;
47
+ useSOLBalance?: boolean;
48
+ };
49
+ tickLower: number;
50
+ tickUpper: number;
51
+ base: "MintA" | "MintB";
52
+ baseAmount: bigint;
53
+ otherAmountMax: bigint;
54
+ withMetadata?: boolean;
55
+ getEphemeralSigners?: () => TransactionSigner[];
56
+ }): Promise<MakeInstructionResult<{
57
+ positionNftMint: Address;
58
+ positionNftAccount: Address;
59
+ metadataAccount: Address;
60
+ personalPosition: Address;
61
+ }>>;
62
+ /**
63
+ * Make increase liquidity V2 instructions
64
+ * @param params - Increase liquidity parameters
65
+ * @returns Instruction result following Raydium pattern
66
+ */
67
+ makeIncreaseLiquidityV2Instructions(params: {
68
+ ownerPosition: PersonalPositionState;
69
+ poolState: Account<PoolState, Address>;
70
+ ownerInfo: {
71
+ wallet: TransactionSigner;
72
+ tokenAccountA: Address;
73
+ tokenAccountB: Address;
74
+ };
75
+ liquidity: bigint;
76
+ amountMaxA: bigint;
77
+ amountMaxB: bigint;
78
+ }): Promise<MakeInstructionResult<{}>>;
79
+ /**
80
+ * Make decrease liquidity V2 instructions
81
+ * @param params - Decrease liquidity parameters
82
+ * @returns Instruction result following Raydium pattern
83
+ */
84
+ makeDecreaseLiquidityV2Instructions(params: {
85
+ ownerPosition: PersonalPositionState;
86
+ poolState: Account<PoolState, Address>;
87
+ ownerInfo: {
88
+ wallet: TransactionSigner;
89
+ tokenAccountA: Address;
90
+ tokenAccountB: Address;
91
+ };
92
+ liquidity: bigint;
93
+ amountMinA: bigint;
94
+ amountMinB: bigint;
95
+ }): Promise<MakeInstructionResult<{}>>;
96
+ /**
97
+ * Make close position instructions
98
+ * @param params - Close position parameters
99
+ * @returns Instruction result following established pattern
100
+ */
101
+ makeClosePositionInstructions(params: {
102
+ ownerPosition: PersonalPositionState;
103
+ ownerInfo: {
104
+ wallet: TransactionSigner;
105
+ };
106
+ }): Promise<MakeInstructionResult<{}>>;
107
+ /**
108
+ * Get position information by NFT mint
109
+ * @param positionMint - Position NFT mint
110
+ * @returns Position information
111
+ */
112
+ getPosition(positionMint: Address): Promise<PersonalPositionState | null>;
113
+ /**
114
+ * Enrich position state with computed fields from pool data
115
+ * @param position - Raw position state from blockchain
116
+ * @param pool - Pool state from blockchain
117
+ * @returns Enriched position info with calculated amounts and prices
118
+ */
119
+ enrichPositionInfo(position: PersonalPositionState, pool: PoolState): PositionInfo;
120
+ /**
121
+ * Get all positions for a wallet with enriched information
122
+ * @param wallet - Wallet address
123
+ * @returns Array of enriched positions owned by the wallet
124
+ */
125
+ getPositionsForWallet(wallet: Address): Promise<PositionInfo[]>;
126
+ }
127
+ //# sourceMappingURL=position-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position-manager.d.ts","sourceRoot":"","sources":["../src/position-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * NOTE: Work in progress
3
+ *
4
+ * Rewards and Fee Collection Module
5
+ * Handles reward distribution, fee collection, and reward management
6
+ */
7
+ //# sourceMappingURL=rewards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewards.d.ts","sourceRoot":"","sources":["../src/rewards.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/lib/swap.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ *
3
+ * NOTE: Work in progress
4
+ *
5
+ */
6
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"AAAA;;;;EAIE"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,307 @@
1
+ import type { Address, Rpc, Instruction, TransactionSigner, SolanaRpcApiDevnet, SolanaRpcApiMainnet, SolanaRpcApiTestnet } from "@solana/kit";
2
+ import type { PoolState, PersonalPositionState } from "./generated";
3
+ import BN from "bn.js";
4
+ import { ClmmApiConfig } from "./api";
5
+ export interface ClmmSdkConfig {
6
+ /** RPC client for Solana network operations */
7
+ rpc: Rpc<SolanaRpcApiMainnet | SolanaRpcApiDevnet | SolanaRpcApiTestnet>;
8
+ /** API client config */
9
+ apiConfig?: ClmmApiConfig;
10
+ /** Optional program address override */
11
+ programAddress?: Address;
12
+ /** Default commitment level for transactions */
13
+ commitment?: "processed" | "confirmed" | "finalized";
14
+ }
15
+ /**
16
+ * Return type for make instructions following Raydium's pattern
17
+ */
18
+ export interface MakeInstructionResult<T = {}> {
19
+ /** Array of instructions */
20
+ instructions: Instruction[];
21
+ /** Required signers */
22
+ signers: TransactionSigner[];
23
+ /** Instruction types for categorization */
24
+ instructionTypes: string[];
25
+ /** Additional addresses and information */
26
+ address: T;
27
+ /** Lookup table addresses (empty for now) */
28
+ lookupTableAddress: string[];
29
+ }
30
+ export interface PoolInfo extends PoolState {
31
+ /** Calculated current price in token units */
32
+ currentPrice: number;
33
+ /** Token A symbol/metadata */
34
+ tokenA: TokenInfo;
35
+ /** Token B symbol/metadata */
36
+ tokenB: TokenInfo;
37
+ /** Total value locked in USD */
38
+ tvl?: number;
39
+ /** 24h volume in USD */
40
+ volume24h?: number;
41
+ /** Current APY for liquidity providers */
42
+ apy?: number;
43
+ }
44
+ /**
45
+ * Position Data API response
46
+ */
47
+ export type PoolApiData = {
48
+ tokenVault1: string;
49
+ tokenVault0: string;
50
+ ammConfig: string;
51
+ sqrtPriceX64: string;
52
+ tickSpacing: number;
53
+ tokenMint0: string;
54
+ tokenMint1: string;
55
+ owner: string;
56
+ tick: number;
57
+ address: string;
58
+ tvl: string;
59
+ };
60
+ export interface TokenInfo {
61
+ /** Token mint address */
62
+ mint: Address;
63
+ /** Token symbol */
64
+ symbol: string;
65
+ /** Token name */
66
+ name?: string;
67
+ /** Decimal places */
68
+ decimals: number;
69
+ /** Logo URI */
70
+ logoUri?: string;
71
+ }
72
+ export interface ClmmConfig {
73
+ tradeFeeRate: number;
74
+ index: number;
75
+ fundFeeRate: number;
76
+ tickSpacing: number;
77
+ fundOwner: string;
78
+ owner: string;
79
+ address: string;
80
+ protocolFeeRate: number;
81
+ }
82
+ export interface PositionInfo extends PersonalPositionState {
83
+ /** Token mint addresses from pool */
84
+ tokenMint0: Address;
85
+ tokenMint1: Address;
86
+ /** Computed token amounts based on liquidity and price range */
87
+ amount0: bigint;
88
+ amount1: bigint;
89
+ /** Price range bounds in human-readable format */
90
+ priceRange: {
91
+ lower: number;
92
+ upper: number;
93
+ };
94
+ /** Whether position is currently in range */
95
+ inRange: boolean;
96
+ /** Position age in seconds (from creation to now) */
97
+ ageSeconds: number;
98
+ /** Position value in USD (optional, requires price feeds) */
99
+ valueUsd?: number;
100
+ /** Uncollected fees mapped from PersonalPositionState for convenience */
101
+ unclaimedFees: {
102
+ token0: BN;
103
+ token1: BN;
104
+ };
105
+ /** Uncollected rewards (optional, if rewards are active) */
106
+ unclaimedRewards?: Array<{
107
+ mint: Address;
108
+ amount: BN;
109
+ symbol?: string;
110
+ }>;
111
+ }
112
+ export interface SwapQuote {
113
+ /** Input token amount */
114
+ amountIn: BN;
115
+ /** Expected output amount (before slippage) */
116
+ amountOut: BN;
117
+ /** Minimum output after slippage tolerance */
118
+ minAmountOut: BN;
119
+ /** Price impact percentage */
120
+ priceImpact: number;
121
+ /** Route through multiple pools if applicable */
122
+ route: SwapRoute[];
123
+ /** Estimated transaction fee */
124
+ fee: BN;
125
+ }
126
+ export interface SwapRoute {
127
+ /** Pool address */
128
+ poolAddress: Address;
129
+ /** Input token */
130
+ tokenIn: Address;
131
+ /** Output token */
132
+ tokenOut: Address;
133
+ /** Fee tier */
134
+ fee: number;
135
+ }
136
+ export interface SwapParams {
137
+ /** Input token mint */
138
+ tokenIn: Address;
139
+ /** Output token mint */
140
+ tokenOut: Address;
141
+ /** Input amount */
142
+ amountIn: BN;
143
+ /** Slippage tolerance (0-1, e.g., 0.01 for 1%) */
144
+ slippageTolerance: number;
145
+ /** User's wallet address */
146
+ wallet: Address;
147
+ /** Optional deadline for transaction */
148
+ deadline?: BN;
149
+ }
150
+ export interface AddLiquidityParams {
151
+ /** Pool address */
152
+ poolAddress: Address;
153
+ /** Lower tick of price range */
154
+ tickLower: number;
155
+ /** Upper tick of price range */
156
+ tickUpper: number;
157
+ /** Desired amount of token A */
158
+ amountA: BN;
159
+ /** Desired amount of token B */
160
+ amountB: BN;
161
+ /** Minimum amount of token A (slippage protection) */
162
+ minAmountA: BN;
163
+ /** Minimum amount of token B (slippage protection) */
164
+ minAmountB: BN;
165
+ /** Deadline for transaction */
166
+ nft2022?: boolean;
167
+ }
168
+ export interface RemoveLiquidityParams {
169
+ /** Position NFT mint address */
170
+ positionMint: Address;
171
+ /** Percentage of liquidity to remove (0-1) */
172
+ liquidity: BN;
173
+ /** Minimum amount of token A to receive */
174
+ minAmountA: BN;
175
+ /** Minimum amount of token B to receive */
176
+ minAmountB: BN;
177
+ /** User's wallet address */
178
+ wallet: Address;
179
+ /** Deadline for transaction */
180
+ deadline?: BN;
181
+ }
182
+ export interface CreatePoolParams {
183
+ /** Token A mint address */
184
+ tokenA: Address;
185
+ /** Token B mint address */
186
+ tokenB: Address;
187
+ /** Fee tier (e.g., 3000 for 0.3%) */
188
+ fee: number;
189
+ /** Initial price (sqrt price X64) */
190
+ initialPrice: BN;
191
+ /** AMM config to use */
192
+ ammConfig?: Address;
193
+ /** Pool creator wallet */
194
+ creator: Address;
195
+ }
196
+ export interface PriceRange {
197
+ /** Lower price bound */
198
+ lower: number;
199
+ /** Upper price bound */
200
+ upper: number;
201
+ }
202
+ export interface TickRange {
203
+ /** Lower tick */
204
+ lower: number;
205
+ /** Upper tick */
206
+ upper: number;
207
+ }
208
+ export declare enum ClmmErrorCode {
209
+ INSUFFICIENT_LIQUIDITY = "INSUFFICIENT_LIQUIDITY",
210
+ LIQUIDITY_INSUFFICIENT = "LIQUIDITY_INSUFFICIENT",
211
+ LIQUIDITY_SUB_DELTA_L_MUST_BE_SMALLER = "LIQUIDITY_SUB_DELTA_L_MUST_BE_SMALLER",
212
+ LIQUIDITY_ADD_DELTA_L_MUST_BE_GREATER = "LIQUIDITY_ADD_DELTA_L_MUST_BE_GREATER",
213
+ INVALID_LIQUIDITY_WHEN_UPDATING_POSITION = "INVALID_LIQUIDITY_WHEN_UPDATING_POSITION",
214
+ BOTH_TOKEN_AMOUNTS_MUST_NOT_BE_ZERO = "BOTH_TOKEN_AMOUNTS_MUST_NOT_BE_ZERO",
215
+ PRICE_SLIPPAGE = "PRICE_SLIPPAGE",
216
+ PRICE_SLIPPAGE_CHECK_FAILED = "PRICE_SLIPPAGE_CHECK_FAILED",
217
+ TOO_LITTLE_OUTPUT_RECEIVED = "TOO_LITTLE_OUTPUT_RECEIVED",
218
+ TOO_MUCH_INPUT_PAID = "TOO_MUCH_INPUT_PAID",
219
+ SQRT_PRICE_LIMIT_OVERFLOW = "SQRT_PRICE_LIMIT_OVERFLOW",
220
+ SQRT_PRICE_X64_OUT_OF_RANGE = "SQRT_PRICE_X64_OUT_OF_RANGE",
221
+ INVALID_TICK_RANGE = "INVALID_TICK_RANGE",
222
+ TICK_OUT_OF_RANGE = "TICK_OUT_OF_RANGE",
223
+ LOWER_TICK_MUST_BE_BELOW_UPPER_TICK = "LOWER_TICK_MUST_BE_BELOW_UPPER_TICK",
224
+ TICK_MUST_BE_GTE_MINIMUM_TICK = "TICK_MUST_BE_GTE_MINIMUM_TICK",
225
+ TICK_MUST_BE_LTE_MAXIMUM_TICK = "TICK_MUST_BE_LTE_MAXIMUM_TICK",
226
+ TICK_MUST_BE_DIVISIBLE_BY_TICK_SPACING = "TICK_MUST_BE_DIVISIBLE_BY_TICK_SPACING",
227
+ INVALID_TICK_ARRAY_ACCOUNT = "INVALID_TICK_ARRAY_ACCOUNT",
228
+ INVALID_TICK_ARRAY_BOUNDARY = "INVALID_TICK_ARRAY_BOUNDARY",
229
+ NOT_ENOUGH_TICK_ARRAY_ACCOUNTS = "NOT_ENOUGH_TICK_ARRAY_ACCOUNTS",
230
+ INVALID_FIRST_TICK_ARRAY_ACCOUNT = "INVALID_FIRST_TICK_ARRAY_ACCOUNT",
231
+ POOL_NOT_FOUND = "POOL_NOT_FOUND",
232
+ POSITION_NOT_FOUND = "POSITION_NOT_FOUND",
233
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
234
+ SWAP_AMOUNT_CANNOT_BE_ZERO = "SWAP_AMOUNT_CANNOT_BE_ZERO",
235
+ SWAP_INPUT_OR_OUTPUT_AMOUNT_TOO_SMALL = "SWAP_INPUT_OR_OUTPUT_AMOUNT_TOO_SMALL",
236
+ INPUT_POOL_VAULT_IS_INVALID = "INPUT_POOL_VAULT_IS_INVALID",
237
+ TRANSACTION_FAILED = "TRANSACTION_FAILED",
238
+ TRANSACTION_TOO_OLD = "TRANSACTION_TOO_OLD",
239
+ ZERO_MINT_AMOUNT = "ZERO_MINT_AMOUNT",
240
+ MINTING_AMOUNT_SHOULD_BE_GREATER_THAN_ZERO = "MINTING_AMOUNT_SHOULD_BE_GREATER_THAN_ZERO",
241
+ INVALID_REWARD_INDEX = "INVALID_REWARD_INDEX",
242
+ REWARD_TOKEN_LIMIT_REACHED = "REWARD_TOKEN_LIMIT_REACHED",
243
+ REWARD_TOKEN_ALREADY_IN_USE = "REWARD_TOKEN_ALREADY_IN_USE",
244
+ REWARD_TOKENS_MUST_CONTAIN_ONE_OF_POOL_VAULT_MINTS = "REWARD_TOKENS_MUST_CONTAIN_ONE_OF_POOL_VAULT_MINTS",
245
+ INVALID_REWARD_INIT_PARAM = "INVALID_REWARD_INIT_PARAM",
246
+ INVALID_COLLECT_REWARD_DESIRED_AMOUNT = "INVALID_COLLECT_REWARD_DESIRED_AMOUNT",
247
+ INVALID_COLLECT_REWARD_INPUT_ACCOUNT_NUMBER = "INVALID_COLLECT_REWARD_INPUT_ACCOUNT_NUMBER",
248
+ INVALID_REWARD_PERIOD = "INVALID_REWARD_PERIOD",
249
+ UNINITIALIZED_REWARD_INFO = "UNINITIALIZED_REWARD_INFO",
250
+ CLOSE_POSITION_ERR = "CLOSE_POSITION_ERR",
251
+ MUST_COLLECT_FEES_AND_REWARDS_BEFORE_CLOSING = "MUST_COLLECT_FEES_AND_REWARDS_BEFORE_CLOSING",
252
+ NOT_APPROVED = "NOT_APPROVED",
253
+ INVALID_UPDATE_CONFIG_FLAG = "INVALID_UPDATE_CONFIG_FLAG",
254
+ ACCOUNT_LACK = "ACCOUNT_LACK",
255
+ MAX_TOKEN_OVERFLOW = "MAX_TOKEN_OVERFLOW",
256
+ CALCULATE_OVERFLOW = "CALCULATE_OVERFLOW",
257
+ TOKEN2022_MINT_EXTENSION_NOT_SUPPORTED = "TOKEN2022_MINT_EXTENSION_NOT_SUPPORTED",
258
+ MISSING_TICK_ARRAY_BITMAP_EXTENSION_ACCOUNT = "MISSING_TICK_ARRAY_BITMAP_EXTENSION_ACCOUNT",
259
+ TRANSFER_FEE_CALCULATION_MISMATCH = "TRANSFER_FEE_CALCULATION_MISMATCH"
260
+ }
261
+ export declare class ClmmError extends Error {
262
+ code: ClmmErrorCode;
263
+ details?: unknown | undefined;
264
+ constructor(code: ClmmErrorCode, message: string, details?: unknown | undefined);
265
+ }
266
+ export interface SwapEvent {
267
+ /** Pool address */
268
+ pool: Address;
269
+ /** User who performed swap */
270
+ user: Address;
271
+ /** Input token and amount */
272
+ tokenIn: {
273
+ mint: Address;
274
+ amount: BN;
275
+ };
276
+ /** Output token and amount */
277
+ tokenOut: {
278
+ mint: Address;
279
+ amount: BN;
280
+ };
281
+ /** Transaction signature */
282
+ signature: string;
283
+ /** Block timestamp */
284
+ timestamp: number;
285
+ }
286
+ export interface LiquidityEvent {
287
+ /** Pool address */
288
+ pool: Address;
289
+ /** User who added/removed liquidity */
290
+ user: Address;
291
+ /** Position mint (if applicable) */
292
+ position?: Address;
293
+ /** Event type */
294
+ type: "add" | "remove";
295
+ /** Token amounts */
296
+ amounts: {
297
+ token0: BN;
298
+ token1: BN;
299
+ };
300
+ /** Transaction signature */
301
+ signature: string;
302
+ /** Block timestamp */
303
+ timestamp: number;
304
+ }
305
+ export declare function isValidTick(tick: number): boolean;
306
+ export declare function isValidSlippage(slippage: number): boolean;
307
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Utility functions and helpers
3
+ * Centralized export for all utility modules
4
+ */
5
+ export * from "./math";
6
+ export * from "./pda";
7
+ export * from "./tick";
8
+ export * from "./pool";
9
+ import { Rpc, SignatureBytes, SolanaRpcApiDevnet, SolanaRpcApiMainnet, SolanaRpcApiTestnet, type Address } from "@solana/kit";
10
+ /**
11
+ * Validate that an address is not empty
12
+ * @param address - Address to validate
13
+ * @param name - Name for error messages
14
+ * @throws ClmmError if address is invalid
15
+ */
16
+ export declare function validateAddress(address: Address, name?: string): void;
17
+ /**
18
+ * Validate that an amount is positive
19
+ * @param amount - Amount to validate
20
+ * @param name - Name for error messages
21
+ * @throws ClmmError if amount is invalid
22
+ */
23
+ export declare function validateAmount(amount: bigint, name?: string): void;
24
+ /**
25
+ * Sleep for a specified number of milliseconds
26
+ * @param ms - Milliseconds to sleep
27
+ */
28
+ export declare function sleep(ms: number): Promise<void>;
29
+ /**
30
+ * Format a bigint amount to a human-readable string with decimals
31
+ * @param amount - Raw amount as bigint
32
+ * @param decimals - Number of decimal places
33
+ * @param precision - Display precision (default: 6)
34
+ * @returns Formatted string
35
+ */
36
+ export declare function formatAmount(amount: bigint, decimals: number, precision?: number): string;
37
+ /**
38
+ * Check if two bigints are approximately equal (within tolerance)
39
+ * @param a - First value
40
+ * @param b - Second value
41
+ * @param tolerance - Tolerance (default: 1)
42
+ * @returns Whether values are approximately equal
43
+ */
44
+ export declare function approximatelyEqual(a: bigint, b: bigint, tolerance?: bigint): boolean;
45
+ /**
46
+ * Retry a function with exponential backoff
47
+ * @param fn - Function to retry
48
+ * @param maxRetries - Maximum number of retries
49
+ * @param initialDelay - Initial delay in milliseconds
50
+ * @returns Promise resolving to function result
51
+ */
52
+ export declare function retry<T>(fn: () => Promise<T>, maxRetries?: number, initialDelay?: number): Promise<T>;
53
+ /**
54
+ * Convert basis points to percentage
55
+ * @param basisPoints - Value in basis points (1 bp = 0.01%)
56
+ * @returns Percentage value (0.01 = 1%)
57
+ */
58
+ export declare function basisPointsToPercentage(basisPoints: number): number;
59
+ /**
60
+ * Convert percentage to basis points
61
+ * @param percentage - Percentage value (0.01 = 1%)
62
+ * @returns Value in basis points
63
+ */
64
+ export declare function percentageToBasisPoints(percentage: number): number;
65
+ /**
66
+ * Check if a string is a valid Solana address format
67
+ * @param address - Address string to validate
68
+ * @returns Whether the address format is valid
69
+ */
70
+ export declare function isValidSolanaAddress(address: string): boolean;
71
+ export declare function addresstoBytes(address: Address): import("@solana/kit").ReadonlyUint8Array;
72
+ export declare function getFakeSigner(address: Address): {
73
+ address: Address;
74
+ signAndSendTransactions: (transactions: readonly Readonly<{
75
+ messageBytes: import("@solana/kit").TransactionMessageBytes;
76
+ signatures: import("@solana/kit").SignaturesMap;
77
+ }>[], _config: import("@solana/kit").BaseTransactionSignerConfig | undefined) => Promise<SignatureBytes[]>;
78
+ };
79
+ /**
80
+ * A very brutal way to differentate between mainnet and devnet RPC
81
+ */
82
+ export declare function getApisFromEndpoint(rpc: Rpc<SolanaRpcApiMainnet | SolanaRpcApiDevnet | SolanaRpcApiTestnet>): string;
83
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;;;;;;EAS7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,CAAC,mBAAmB,GAAG,kBAAkB,GAAG,mBAAmB,CAAC,UAOzE"}