@moon-cx/sdk 0.0.0-stage → 2.0.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.
Files changed (155) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +2 -2
  3. package/dist/adapters/sender.d.ts +88 -0
  4. package/dist/adapters/sender.d.ts.map +1 -0
  5. package/dist/adapters/sender.js +62 -0
  6. package/dist/adapters/sender.js.map +1 -0
  7. package/dist/adapters/tonclient.d.ts +13 -0
  8. package/dist/adapters/tonclient.d.ts.map +1 -0
  9. package/dist/adapters/tonclient.js +17 -0
  10. package/dist/adapters/tonclient.js.map +1 -0
  11. package/dist/api/index.d.ts +210 -0
  12. package/dist/api/index.d.ts.map +1 -0
  13. package/dist/api/index.js +364 -0
  14. package/dist/api/index.js.map +1 -0
  15. package/dist/codec/bins.d.ts +26 -0
  16. package/dist/codec/bins.d.ts.map +1 -0
  17. package/dist/codec/bins.js +67 -0
  18. package/dist/codec/bins.js.map +1 -0
  19. package/dist/codec/clmm.d.ts +87 -0
  20. package/dist/codec/clmm.d.ts.map +1 -0
  21. package/dist/codec/clmm.js +119 -0
  22. package/dist/codec/clmm.js.map +1 -0
  23. package/dist/codec/cpmm.d.ts +112 -0
  24. package/dist/codec/cpmm.d.ts.map +1 -0
  25. package/dist/codec/cpmm.js +146 -0
  26. package/dist/codec/cpmm.js.map +1 -0
  27. package/dist/codec/jetton.d.ts +30 -0
  28. package/dist/codec/jetton.d.ts.map +1 -0
  29. package/dist/codec/jetton.js +37 -0
  30. package/dist/codec/jetton.js.map +1 -0
  31. package/dist/codec/mempad.d.ts +109 -0
  32. package/dist/codec/mempad.d.ts.map +1 -0
  33. package/dist/codec/mempad.js +162 -0
  34. package/dist/codec/mempad.js.map +1 -0
  35. package/dist/core/amount.d.ts +33 -0
  36. package/dist/core/amount.d.ts.map +1 -0
  37. package/dist/core/amount.js +81 -0
  38. package/dist/core/amount.js.map +1 -0
  39. package/dist/core/asset.d.ts +82 -0
  40. package/dist/core/asset.d.ts.map +1 -0
  41. package/dist/core/asset.js +143 -0
  42. package/dist/core/asset.js.map +1 -0
  43. package/dist/core/errors.d.ts +70 -0
  44. package/dist/core/errors.d.ts.map +1 -0
  45. package/dist/core/errors.js +114 -0
  46. package/dist/core/errors.js.map +1 -0
  47. package/dist/core/fee.d.ts +36 -0
  48. package/dist/core/fee.d.ts.map +1 -0
  49. package/dist/core/fee.js +40 -0
  50. package/dist/core/fee.js.map +1 -0
  51. package/dist/core/gas.d.ts +112 -0
  52. package/dist/core/gas.d.ts.map +1 -0
  53. package/dist/core/gas.js +265 -0
  54. package/dist/core/gas.js.map +1 -0
  55. package/dist/core/percent.d.ts +27 -0
  56. package/dist/core/percent.d.ts.map +1 -0
  57. package/dist/core/percent.js +71 -0
  58. package/dist/core/percent.js.map +1 -0
  59. package/dist/core/tx.d.ts +36 -0
  60. package/dist/core/tx.d.ts.map +1 -0
  61. package/dist/core/tx.js +17 -0
  62. package/dist/core/tx.js.map +1 -0
  63. package/dist/index.d.ts +63 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +41 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/jetton/index.d.ts +53 -0
  68. package/dist/jetton/index.d.ts.map +1 -0
  69. package/dist/jetton/index.js +90 -0
  70. package/dist/jetton/index.js.map +1 -0
  71. package/dist/math/clmm-swap.d.ts +80 -0
  72. package/dist/math/clmm-swap.d.ts.map +1 -0
  73. package/dist/math/clmm-swap.js +277 -0
  74. package/dist/math/clmm-swap.js.map +1 -0
  75. package/dist/math/clmm.d.ts +234 -0
  76. package/dist/math/clmm.d.ts.map +1 -0
  77. package/dist/math/clmm.js +270 -0
  78. package/dist/math/clmm.js.map +1 -0
  79. package/dist/math/cpmm.d.ts +170 -0
  80. package/dist/math/cpmm.d.ts.map +1 -0
  81. package/dist/math/cpmm.js +175 -0
  82. package/dist/math/cpmm.js.map +1 -0
  83. package/dist/math/integer.d.ts +10 -0
  84. package/dist/math/integer.d.ts.map +1 -0
  85. package/dist/math/integer.js +44 -0
  86. package/dist/math/integer.js.map +1 -0
  87. package/dist/math/q128.d.ts +45 -0
  88. package/dist/math/q128.d.ts.map +1 -0
  89. package/dist/math/q128.js +108 -0
  90. package/dist/math/q128.js.map +1 -0
  91. package/dist/moon.d.ts +245 -0
  92. package/dist/moon.d.ts.map +1 -0
  93. package/dist/moon.js +332 -0
  94. package/dist/moon.js.map +1 -0
  95. package/dist/ops/jetton-input.d.ts +3 -0
  96. package/dist/ops/jetton-input.d.ts.map +1 -0
  97. package/dist/ops/jetton-input.js +8 -0
  98. package/dist/ops/jetton-input.js.map +1 -0
  99. package/dist/ops/liquidity.d.ts +157 -0
  100. package/dist/ops/liquidity.d.ts.map +1 -0
  101. package/dist/ops/liquidity.js +413 -0
  102. package/dist/ops/liquidity.js.map +1 -0
  103. package/dist/ops/mempad.d.ts +143 -0
  104. package/dist/ops/mempad.d.ts.map +1 -0
  105. package/dist/ops/mempad.js +248 -0
  106. package/dist/ops/mempad.js.map +1 -0
  107. package/dist/ops/pool.d.ts +75 -0
  108. package/dist/ops/pool.d.ts.map +1 -0
  109. package/dist/ops/pool.js +129 -0
  110. package/dist/ops/pool.js.map +1 -0
  111. package/dist/ops/position.d.ts +47 -0
  112. package/dist/ops/position.d.ts.map +1 -0
  113. package/dist/ops/position.js +73 -0
  114. package/dist/ops/position.js.map +1 -0
  115. package/dist/ops/swap.d.ts +104 -0
  116. package/dist/ops/swap.d.ts.map +1 -0
  117. package/dist/ops/swap.js +248 -0
  118. package/dist/ops/swap.js.map +1 -0
  119. package/dist/pool/amounts.d.ts +36 -0
  120. package/dist/pool/amounts.d.ts.map +1 -0
  121. package/dist/pool/amounts.js +68 -0
  122. package/dist/pool/amounts.js.map +1 -0
  123. package/dist/pool/assets.d.ts +45 -0
  124. package/dist/pool/assets.d.ts.map +1 -0
  125. package/dist/pool/assets.js +57 -0
  126. package/dist/pool/assets.js.map +1 -0
  127. package/dist/pool/clmm.d.ts +309 -0
  128. package/dist/pool/clmm.d.ts.map +1 -0
  129. package/dist/pool/clmm.js +561 -0
  130. package/dist/pool/clmm.js.map +1 -0
  131. package/dist/pool/cpmm.d.ts +228 -0
  132. package/dist/pool/cpmm.d.ts.map +1 -0
  133. package/dist/pool/cpmm.js +332 -0
  134. package/dist/pool/cpmm.js.map +1 -0
  135. package/dist/protocol/generated.d.ts +2752 -0
  136. package/dist/protocol/generated.d.ts.map +1 -0
  137. package/dist/protocol/generated.js +3564 -0
  138. package/dist/protocol/generated.js.map +1 -0
  139. package/dist/protocol/index.d.ts +19 -0
  140. package/dist/protocol/index.d.ts.map +1 -0
  141. package/dist/protocol/index.js +49 -0
  142. package/dist/protocol/index.js.map +1 -0
  143. package/dist/state/address.d.ts +121 -0
  144. package/dist/state/address.d.ts.map +1 -0
  145. package/dist/state/address.js +143 -0
  146. package/dist/state/address.js.map +1 -0
  147. package/dist/state/source.d.ts +26 -0
  148. package/dist/state/source.d.ts.map +1 -0
  149. package/dist/state/source.js +32 -0
  150. package/dist/state/source.js.map +1 -0
  151. package/dist/state/storage.d.ts +218 -0
  152. package/dist/state/storage.d.ts.map +1 -0
  153. package/dist/state/storage.js +273 -0
  154. package/dist/state/storage.js.map +1 -0
  155. package/package.json +74 -4
@@ -0,0 +1,309 @@
1
+ import type { Address } from '@ton/core';
2
+ import { Amount } from '../core/amount.ts';
3
+ import type { Asset } from '../core/asset.ts';
4
+ import { Percent } from '../core/percent.ts';
5
+ import type { BuiltOperation } from '../core/tx.ts';
6
+ import { type StateSource } from '../state/source.ts';
7
+ import { type ClmmPoolState, type ClmmPositionState, type ClmmRangeState } from '../state/storage.ts';
8
+ import { type SwapQuote } from '../ops/swap.ts';
9
+ import { type ClmmDepositPlan, type LiquidityShape } from '../ops/liquidity.ts';
10
+ import { type PoolAssets } from './cpmm.ts';
11
+ import type { Jettons } from '../jetton/index.ts';
12
+ import { type AmountLike } from './amounts.ts';
13
+ import { type PoolDecimalsSource } from './assets.ts';
14
+ import { type Operation, type Sender } from '../adapters/sender.ts';
15
+ /**
16
+ * Bins a CLMM position spans, inclusive. Bins rather than prices because the
17
+ * conversion depends on both tokens' decimals; {@link ClmmRange.binsAround} and
18
+ * {@link ClmmRange.binsBetween} do it explicitly.
19
+ */
20
+ export type ClmmDepositBounds = {
21
+ fromBin: number;
22
+ toBin: number;
23
+ };
24
+ /**
25
+ * A CLMM pool. It holds no liquidity itself: it is a directory of ranges,
26
+ * each covering 2048 bins. Trading and deposits happen on a {@link ClmmPool.range}.
27
+ */
28
+ export declare class ClmmPool {
29
+ #private;
30
+ readonly address: Address;
31
+ readonly assets: PoolAssets;
32
+ /** Where each side's decimals came from; see `DecimalsSource`. */
33
+ readonly decimalsSource: PoolDecimalsSource;
34
+ readonly state: ClmmPoolState;
35
+ readonly jettons: Jettons | null;
36
+ private constructor();
37
+ /**
38
+ * Reads a pool. Same rules as `CpmmPool.open`: x and y are the pool's own,
39
+ * `assets` must match them side for side, and decimals come from the jetton
40
+ * masters whenever `jettons` can read them.
41
+ *
42
+ * @throws BuildError when `assets` names a token the pool does not hold, or
43
+ * names the pool's tokens in the other order
44
+ * @throws JettonLookupError when a master's metadata cannot be read
45
+ */
46
+ static open(source: StateSource, address: Address, options?: {
47
+ assets?: Partial<PoolAssets>;
48
+ jettons?: Jettons;
49
+ }): Promise<ClmmPool>;
50
+ /** Bin step in basis points: 25, 50, 100 or 200. */
51
+ get binStep(): number;
52
+ get feeBps(): number;
53
+ /** Address of one range, derived offline from the pool's stored range code. */
54
+ rangeAddress(rangeNum: number): Address;
55
+ /**
56
+ * Opens a range by its number. Range 0 covers bins -1024..1023. There is no
57
+ * default: the market is often not in range 0, so prefer {@link ClmmPool.rangeForPrice}.
58
+ */
59
+ range(rangeNum: number): Promise<ClmmRange>;
60
+ /** Opens the range that holds a given bin. */
61
+ rangeForBin(bin: number): Promise<ClmmRange>;
62
+ /** Opens the range that holds a given price. */
63
+ rangeForPrice(price: number): Promise<ClmmRange>;
64
+ /** The bin a human-readable price falls into, decimals accounted for. */
65
+ binAtPrice(price: number): number;
66
+ /** The price at the lower edge of a bin. */
67
+ priceAtBin(bin: number): number;
68
+ }
69
+ /** One range of a CLMM pool: where its liquidity and trading actually live. */
70
+ export declare class ClmmRange {
71
+ #private;
72
+ readonly address: Address;
73
+ readonly pool: ClmmPool;
74
+ constructor(source: StateSource, pool: ClmmPool, address: Address, state: ClmmRangeState);
75
+ get state(): ClmmRangeState;
76
+ get assets(): PoolAssets;
77
+ /** Bin the price currently sits in. Signed. */
78
+ get currentBin(): number;
79
+ /** Current price of X in units of Y. */
80
+ get price(): number;
81
+ /** Bins that hold liquidity right now. */
82
+ get activeBins(): number[];
83
+ refresh(): Promise<this>;
84
+ buildSwap(args: {
85
+ quote: SwapQuote;
86
+ sender: Address;
87
+ senderJettonWallet?: Address;
88
+ queryId?: bigint;
89
+ }): BuiltOperation<SwapQuote>;
90
+ /**
91
+ * Spreads a deposit across the named bins. More than `MAX_BINS_PER_POSITION` bins,
92
+ * or a span crossing into another range, is refused here rather than on chain.
93
+ */
94
+ planDeposit(args: ClmmDepositBounds & {
95
+ shape: LiquidityShape;
96
+ x: AmountLike;
97
+ y: AmountLike;
98
+ }): ClmmDepositPlan;
99
+ buildDeposit(args: {
100
+ plan: ClmmDepositPlan;
101
+ sender: Address;
102
+ senderJettonWallets: {
103
+ x?: Address;
104
+ y?: Address;
105
+ };
106
+ queryId?: bigint;
107
+ }): BuiltOperation<ClmmDepositPlan>;
108
+ /**
109
+ * Prepares a deposit against freshly read state. Sends nothing.
110
+ * `details` carries the bin layout, the placed totals and what cannot be placed.
111
+ */
112
+ deposit(args: ClmmDepositBounds & {
113
+ shape: LiquidityShape;
114
+ x: AmountLike;
115
+ y: AmountLike;
116
+ /** Whose operation this is, and what `send()` will sign with. */
117
+ wallet?: Sender;
118
+ /** Use when signing elsewhere: attributes the operation without a wallet. */
119
+ sender?: Address;
120
+ refresh?: boolean;
121
+ queryId?: bigint;
122
+ }): Promise<Operation<ClmmDepositPlan>>;
123
+ /**
124
+ * Prepares a swap against freshly read state. Sends nothing. `details` carries
125
+ * the quote: output, minimum, bins crossed and the Q128 price bound.
126
+ */
127
+ swap(args: {
128
+ assetIn: Asset;
129
+ amountIn: AmountLike;
130
+ slippage: Percent;
131
+ /** Whose operation this is, and what `send()` will sign with. */
132
+ wallet?: Sender;
133
+ /** Use when signing elsewhere: attributes the operation without a wallet. */
134
+ sender?: Address;
135
+ refresh?: boolean;
136
+ queryId?: bigint;
137
+ }): Promise<Operation<SwapQuote>>;
138
+ /** The sender's own jetton wallets for this pool's sides. */
139
+ walletsOf(owner: Address): Promise<{
140
+ x?: Address;
141
+ y?: Address;
142
+ }>;
143
+ /**
144
+ * Bins spanning a width either side of the current price, as of the last read;
145
+ * call `refresh()` first for a fresh price.
146
+ */
147
+ binsAround(width: Percent): ClmmDepositBounds;
148
+ /** Bins spanning two human-readable prices, decimals accounted for. */
149
+ binsBetween(fromPrice: number, toPrice: number): ClmmDepositBounds;
150
+ /** How many bins a width would span, before committing to it. */
151
+ binsInWidth(width: Percent): number;
152
+ /** Address of a position by its index within this range. */
153
+ positionAddress(nftIndex: bigint): Address;
154
+ /**
155
+ * Opens a position by index, or returns null if none is deployed. Positions are
156
+ * keyed by index, not owner: one wallet can hold several in the same range.
157
+ */
158
+ position(nftIndex: bigint): Promise<ClmmPosition | null>;
159
+ /**
160
+ * Finds this wallet's positions by walking the range's index backwards, newest
161
+ * first; `limit` bounds how many accounts are read. For many wallets, use
162
+ * {@link ClmmRange.scanPositions} once.
163
+ */
164
+ positionsOf(owner: Address, options?: {
165
+ limit?: number;
166
+ }): Promise<ClmmPosition[]>;
167
+ /**
168
+ * Reads every position in the range once and returns them indexed by owner.
169
+ * Indices with no deployed account are skipped.
170
+ */
171
+ scanPositions(options?: {
172
+ /** First index to read. Defaults to 0. */
173
+ from?: number;
174
+ /** Last index to read, exclusive. Defaults to the range's next index. */
175
+ to?: number;
176
+ /** How many accounts to read at once. Defaults to 16. */
177
+ batch?: number;
178
+ /** Called after each batch, for progress on a long scan. */
179
+ onProgress?: (read: number, total: number) => void;
180
+ }): Promise<ClmmPositionIndex>;
181
+ /** Opens a position at an address you already have. */
182
+ positionAt(address: Address): Promise<ClmmPosition>;
183
+ }
184
+ /** What a CLMM withdrawal returns. */
185
+ export type ClmmWithdrawal = {
186
+ bins: number[];
187
+ /** Liquidity converted back at the current price. */
188
+ principal: {
189
+ x: Amount;
190
+ y: Amount;
191
+ };
192
+ /** Fees the named bins have accrued since the position last settled. */
193
+ fees: {
194
+ x: Amount;
195
+ y: Amount;
196
+ };
197
+ total: {
198
+ x: Amount;
199
+ y: Amount;
200
+ };
201
+ };
202
+ /**
203
+ * Every position in a range, read once and queried in memory.
204
+ *
205
+ * Built by {@link ClmmRange.scanPositions}. Nothing here touches the network.
206
+ */
207
+ export declare class ClmmPositionIndex {
208
+ #private;
209
+ readonly range: ClmmRange;
210
+ /** Positions found, in index order. */
211
+ readonly positions: readonly ClmmPosition[];
212
+ /** The index window that was read. */
213
+ readonly scanned: {
214
+ from: number;
215
+ to: number;
216
+ };
217
+ constructor(range: ClmmRange, positions: readonly ClmmPosition[], scanned: {
218
+ from: number;
219
+ to: number;
220
+ });
221
+ get size(): number;
222
+ /** How many indices were read, including ones that held nothing. */
223
+ get scannedCount(): number;
224
+ /** This wallet's positions. Pure lookup. */
225
+ of(owner: Address): ClmmPosition[];
226
+ byIndex(nftIndex: bigint): ClmmPosition | null;
227
+ /** Every wallet holding liquidity in this range. */
228
+ owners(): Address[];
229
+ /** Positions holding liquidity in the bin the price sits in right now. */
230
+ inRange(): ClmmPosition[];
231
+ }
232
+ /** A liquidity position in one CLMM range. */
233
+ export declare class ClmmPosition {
234
+ #private;
235
+ readonly address: Address;
236
+ readonly range: ClmmRange;
237
+ constructor(range: ClmmRange, address: Address, state: ClmmPositionState, source: StateSource);
238
+ get state(): ClmmPositionState;
239
+ /** Re-reads the position and its range. */
240
+ refresh(): Promise<this>;
241
+ /**
242
+ * Withdraws liquidity from the named bins, against freshly read state. Bins are
243
+ * emptied whole, with their accrued fees. A bin the position does not hold would
244
+ * revert the whole message, so the list is checked first.
245
+ */
246
+ withdraw(args?: {
247
+ /** Defaults to every bin the position holds. */
248
+ bins?: readonly number[];
249
+ /** Whose operation this is, and what `send()` will sign with. */
250
+ wallet?: Sender;
251
+ refresh?: boolean;
252
+ queryId?: bigint;
253
+ }): Promise<Operation<ClmmWithdrawal>>;
254
+ /**
255
+ * What withdrawing these bins returns: principal at the current price, plus
256
+ * the fees those bins have accrued.
257
+ */
258
+ expectedFrom(bins: readonly number[]): ClmmWithdrawal;
259
+ /** Collects accrued fees, against freshly read state. */
260
+ collectFees(args?: {
261
+ /** Whose operation this is, and what `send()` will sign with. */
262
+ wallet?: Sender;
263
+ refresh?: boolean;
264
+ queryId?: bigint;
265
+ }): Promise<Operation<{
266
+ protocol: 'cpmm' | 'clmm';
267
+ }>>;
268
+ get nftIndex(): bigint;
269
+ get owner(): Address;
270
+ /** Liquidity this position holds, per bin. */
271
+ get liquidity(): Map<number, bigint>;
272
+ /**
273
+ * What the position is worth right now, principal only. Each bin is valued at the
274
+ * price clamped to its own bounds, so bins the price has moved past hold one side.
275
+ */
276
+ get value(): {
277
+ x: Amount;
278
+ y: Amount;
279
+ };
280
+ /** Fees waiting to be collected, summed over the position's bins. */
281
+ get pendingFees(): {
282
+ x: Amount;
283
+ y: Amount;
284
+ };
285
+ /** Once locked, liquidity can never be withdrawn. Fees still can. */
286
+ get isLocked(): boolean;
287
+ /** A deposit is still settling; withdrawals are refused until it lands. */
288
+ get isPending(): boolean;
289
+ /** Bins this position holds liquidity in. */
290
+ get bins(): number[];
291
+ buildWithdraw(args?: {
292
+ bins?: readonly number[];
293
+ queryId?: bigint;
294
+ }): BuiltOperation<{
295
+ bins: number[];
296
+ }>;
297
+ buildCollectFees(args?: {
298
+ queryId?: bigint;
299
+ }): BuiltOperation<{
300
+ protocol: 'cpmm' | 'clmm';
301
+ }>;
302
+ buildLockForever(args: {
303
+ confirm: string;
304
+ queryId?: bigint;
305
+ }): BuiltOperation<{
306
+ irreversible: true;
307
+ }>;
308
+ }
309
+ //# sourceMappingURL=clmm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clmm.d.ts","sourceRoot":"","sources":["../../src/pool/clmm.ts"],"names":[],"mappings":"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"}