sally-defi-ts-sdk 0.3.2

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 (125) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +263 -0
  3. package/dist/aio/client.d.ts +93 -0
  4. package/dist/aio/client.d.ts.map +1 -0
  5. package/dist/aio/client.js +283 -0
  6. package/dist/aio/client.js.map +1 -0
  7. package/dist/aio/index.d.ts +20 -0
  8. package/dist/aio/index.d.ts.map +1 -0
  9. package/dist/aio/index.js +19 -0
  10. package/dist/aio/index.js.map +1 -0
  11. package/dist/aio/modules/fees.d.ts +19 -0
  12. package/dist/aio/modules/fees.d.ts.map +1 -0
  13. package/dist/aio/modules/fees.js +47 -0
  14. package/dist/aio/modules/fees.js.map +1 -0
  15. package/dist/aio/modules/liquidity.d.ts +47 -0
  16. package/dist/aio/modules/liquidity.d.ts.map +1 -0
  17. package/dist/aio/modules/liquidity.js +115 -0
  18. package/dist/aio/modules/liquidity.js.map +1 -0
  19. package/dist/aio/modules/prices.d.ts +18 -0
  20. package/dist/aio/modules/prices.d.ts.map +1 -0
  21. package/dist/aio/modules/prices.js +48 -0
  22. package/dist/aio/modules/prices.js.map +1 -0
  23. package/dist/aio/modules/swap.d.ts +50 -0
  24. package/dist/aio/modules/swap.d.ts.map +1 -0
  25. package/dist/aio/modules/swap.js +267 -0
  26. package/dist/aio/modules/swap.js.map +1 -0
  27. package/dist/aio/modules/wallet.d.ts +13 -0
  28. package/dist/aio/modules/wallet.d.ts.map +1 -0
  29. package/dist/aio/modules/wallet.js +27 -0
  30. package/dist/aio/modules/wallet.js.map +1 -0
  31. package/dist/aio/token.d.ts +19 -0
  32. package/dist/aio/token.d.ts.map +1 -0
  33. package/dist/aio/token.js +50 -0
  34. package/dist/aio/token.js.map +1 -0
  35. package/dist/client.d.ts +142 -0
  36. package/dist/client.d.ts.map +1 -0
  37. package/dist/client.js +452 -0
  38. package/dist/client.js.map +1 -0
  39. package/dist/constants.d.ts +36 -0
  40. package/dist/constants.d.ts.map +1 -0
  41. package/dist/constants.js +39 -0
  42. package/dist/constants.js.map +1 -0
  43. package/dist/data/deployment.json +1 -0
  44. package/dist/deployment.d.ts +44 -0
  45. package/dist/deployment.d.ts.map +1 -0
  46. package/dist/deployment.js +118 -0
  47. package/dist/deployment.js.map +1 -0
  48. package/dist/errors.d.ts +57 -0
  49. package/dist/errors.d.ts.map +1 -0
  50. package/dist/errors.js +197 -0
  51. package/dist/errors.js.map +1 -0
  52. package/dist/index.d.ts +48 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +47 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/modules/fees.d.ts +32 -0
  57. package/dist/modules/fees.d.ts.map +1 -0
  58. package/dist/modules/fees.js +64 -0
  59. package/dist/modules/fees.js.map +1 -0
  60. package/dist/modules/liquidity.d.ts +134 -0
  61. package/dist/modules/liquidity.d.ts.map +1 -0
  62. package/dist/modules/liquidity.js +277 -0
  63. package/dist/modules/liquidity.js.map +1 -0
  64. package/dist/modules/prices.d.ts +47 -0
  65. package/dist/modules/prices.d.ts.map +1 -0
  66. package/dist/modules/prices.js +85 -0
  67. package/dist/modules/prices.js.map +1 -0
  68. package/dist/modules/swap.d.ts +102 -0
  69. package/dist/modules/swap.d.ts.map +1 -0
  70. package/dist/modules/swap.js +400 -0
  71. package/dist/modules/swap.js.map +1 -0
  72. package/dist/modules/wallet.d.ts +16 -0
  73. package/dist/modules/wallet.d.ts.map +1 -0
  74. package/dist/modules/wallet.js +30 -0
  75. package/dist/modules/wallet.js.map +1 -0
  76. package/dist/permit2.d.ts +97 -0
  77. package/dist/permit2.d.ts.map +1 -0
  78. package/dist/permit2.js +130 -0
  79. package/dist/permit2.js.map +1 -0
  80. package/dist/previews.d.ts +57 -0
  81. package/dist/previews.d.ts.map +1 -0
  82. package/dist/previews.js +69 -0
  83. package/dist/previews.js.map +1 -0
  84. package/dist/safety.d.ts +80 -0
  85. package/dist/safety.d.ts.map +1 -0
  86. package/dist/safety.js +133 -0
  87. package/dist/safety.js.map +1 -0
  88. package/dist/token.d.ts +215 -0
  89. package/dist/token.d.ts.map +1 -0
  90. package/dist/token.js +239 -0
  91. package/dist/token.js.map +1 -0
  92. package/dist/types.d.ts +229 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +462 -0
  95. package/dist/types.js.map +1 -0
  96. package/dist/util.d.ts +13 -0
  97. package/dist/util.d.ts.map +1 -0
  98. package/dist/util.js +22 -0
  99. package/dist/util.js.map +1 -0
  100. package/package.json +48 -0
  101. package/src/aio/client.ts +329 -0
  102. package/src/aio/index.ts +20 -0
  103. package/src/aio/modules/fees.ts +60 -0
  104. package/src/aio/modules/liquidity.ts +181 -0
  105. package/src/aio/modules/prices.ts +57 -0
  106. package/src/aio/modules/swap.ts +347 -0
  107. package/src/aio/modules/wallet.ts +34 -0
  108. package/src/aio/token.ts +59 -0
  109. package/src/client.ts +526 -0
  110. package/src/constants.ts +43 -0
  111. package/src/data/deployment.json +1 -0
  112. package/src/deployment.ts +132 -0
  113. package/src/errors.ts +215 -0
  114. package/src/index.ts +90 -0
  115. package/src/modules/fees.ts +78 -0
  116. package/src/modules/liquidity.ts +446 -0
  117. package/src/modules/prices.ts +97 -0
  118. package/src/modules/swap.ts +502 -0
  119. package/src/modules/wallet.ts +37 -0
  120. package/src/permit2.ts +169 -0
  121. package/src/previews.ts +95 -0
  122. package/src/safety.ts +152 -0
  123. package/src/token.ts +254 -0
  124. package/src/types.ts +438 -0
  125. package/src/util.ts +20 -0
package/dist/types.js ADDED
@@ -0,0 +1,462 @@
1
+ /**
2
+ * Typed result objects for every Sally tuple/struct return.
3
+ *
4
+ * ethers decodes Solidity structs into positional `Result` arrays. These classes
5
+ * give each field a name, so callers get `pos.liquidity` instead of `pos[7]` —
6
+ * and AI/agent callers get a stable, documented schema. Every class has a
7
+ * `fromRaw` constructor that maps the ABI component order to named fields.
8
+ *
9
+ * Amounts are kept as raw `bigint` (wei / token base units). Use
10
+ * {@link TokenAmount} or the `prices` helpers to humanize.
11
+ */
12
+ import { pyRound } from "./util.js";
13
+ // --------------------------------------------------------------------------- //
14
+ // Enums
15
+ // --------------------------------------------------------------------------- //
16
+ /** DEX generation used for a swap hop (matches contract `version` uint8). */
17
+ export var PoolVersion;
18
+ (function (PoolVersion) {
19
+ PoolVersion[PoolVersion["V2"] = 2] = "V2";
20
+ PoolVersion[PoolVersion["V3"] = 3] = "V3";
21
+ PoolVersion[PoolVersion["V4"] = 4] = "V4";
22
+ })(PoolVersion || (PoolVersion = {}));
23
+ /**
24
+ * Lock asset kind as stored by the LiquidityController.
25
+ *
26
+ * Values match the on-chain constants
27
+ * (`LOCK_KIND_V3_NFT=1`, `LOCK_KIND_V2_LP=2`, `LOCK_KIND_V4_NFT=3`).
28
+ */
29
+ export var LockKind;
30
+ (function (LockKind) {
31
+ LockKind[LockKind["V3_POSITION"] = 1] = "V3_POSITION";
32
+ LockKind[LockKind["V2_LP"] = 2] = "V2_LP";
33
+ LockKind[LockKind["V4_POSITION"] = 3] = "V4_POSITION";
34
+ })(LockKind || (LockKind = {}));
35
+ const NATIVE_SENTINELS = new Set([
36
+ "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
37
+ "0x0000000000000000000000000000000000000000",
38
+ ]);
39
+ // --------------------------------------------------------------------------- //
40
+ // Swap routing
41
+ // --------------------------------------------------------------------------- //
42
+ /** One hop of a hybrid route (can itself be multi-token within a version). */
43
+ export class SwapStep {
44
+ version;
45
+ path;
46
+ dexPath;
47
+ pools;
48
+ baseToken;
49
+ estimatedAmountOut;
50
+ constructor(version, path, dexPath, pools, baseToken, estimatedAmountOut) {
51
+ this.version = version;
52
+ this.path = path;
53
+ this.dexPath = dexPath;
54
+ this.pools = pools;
55
+ this.baseToken = baseToken;
56
+ this.estimatedAmountOut = estimatedAmountOut;
57
+ }
58
+ static fromRaw(r) {
59
+ return new SwapStep(Number(r[0]), [...r[1]].map((a) => String(a)), [...r[2]].map((x) => Number(x)), [...r[3]].map((a) => String(a)), String(r[4]), BigInt(r[5]));
60
+ }
61
+ get isEmpty() {
62
+ return this.version === 0 && this.path.length === 0;
63
+ }
64
+ /** ABI-encodable tuple for this step. */
65
+ toTuple() {
66
+ return [this.version, this.path, this.dexPath, this.pools, this.baseToken, this.estimatedAmountOut];
67
+ }
68
+ }
69
+ /**
70
+ * Result of `getBestSwapPath` — up to three cross-version steps.
71
+ *
72
+ * This is exactly the struct `executeHybridSwap` consumes, so it round-trips:
73
+ * quote -> {@link toTuple} -> execute.
74
+ */
75
+ export class SwapPath {
76
+ firstStep;
77
+ secondStep;
78
+ thirdStep;
79
+ stepCount;
80
+ constructor(firstStep, secondStep, thirdStep, stepCount) {
81
+ this.firstStep = firstStep;
82
+ this.secondStep = secondStep;
83
+ this.thirdStep = thirdStep;
84
+ this.stepCount = stepCount;
85
+ }
86
+ static fromRaw(r) {
87
+ return new SwapPath(SwapStep.fromRaw(r[0]), SwapStep.fromRaw(r[1]), SwapStep.fromRaw(r[2]), Number(r[3]));
88
+ }
89
+ /** ABI-encodable tuple for `executeHybridSwap(swapData, …)`. */
90
+ toTuple() {
91
+ return [this.firstStep.toTuple(), this.secondStep.toTuple(), this.thirdStep.toTuple(), this.stepCount];
92
+ }
93
+ get activeSteps() {
94
+ return [this.firstStep, this.secondStep, this.thirdStep].slice(0, this.stepCount);
95
+ }
96
+ /** Quoted output = the last active step's estimate. */
97
+ get estimatedAmountOut() {
98
+ const steps = this.activeSteps;
99
+ return steps.length ? steps[steps.length - 1].estimatedAmountOut : 0n;
100
+ }
101
+ /** Every pool this route would route through (across all active steps). */
102
+ get poolAddresses() {
103
+ const out = [];
104
+ for (const st of this.activeSteps)
105
+ out.push(...st.pools);
106
+ return out;
107
+ }
108
+ /**
109
+ * Return a list of route-integrity violations (empty == sound route).
110
+ *
111
+ * Guards against funds entering the wrong pool: verifies the path starts at
112
+ * `tokenIn`, ends at `tokenOut` and that every hop chains into the next
113
+ * (`step[i]` last token == `step[i+1]` first token). Native sentinels are
114
+ * resolved to `wnative` before comparing.
115
+ */
116
+ checkIntegrity(tokenIn, tokenOut, wnative) {
117
+ const norm = (a) => {
118
+ a = a.toLowerCase();
119
+ if (wnative && NATIVE_SENTINELS.has(a))
120
+ return wnative.toLowerCase();
121
+ return a;
122
+ };
123
+ const problems = [];
124
+ const steps = this.activeSteps;
125
+ if (steps.length === 0)
126
+ return ["empty route (step_count == 0)"];
127
+ // Chain over the steps that actually carry a token path. Anchoring the
128
+ // start/end and hop-continuity checks to this list (instead of raw steps)
129
+ // means an empty intermediate/edge step can't silently drop a link.
130
+ const chain = steps.filter((s) => s.path.length > 0);
131
+ if (chain.length === 0)
132
+ return ["route has no token path"];
133
+ if (norm(chain[0].path[0]) !== norm(tokenIn)) {
134
+ problems.push(`path start ${chain[0].path[0]} != token_in ${tokenIn}`);
135
+ }
136
+ const last = chain[chain.length - 1];
137
+ if (norm(last.path[last.path.length - 1]) !== norm(tokenOut)) {
138
+ problems.push(`path end ${last.path[last.path.length - 1]} != token_out ${tokenOut}`);
139
+ }
140
+ for (let i = 0; i < chain.length - 1; i++) {
141
+ const a = chain[i].path[chain[i].path.length - 1];
142
+ const b = chain[i + 1].path[0];
143
+ if (norm(a) !== norm(b)) {
144
+ problems.push(`hop ${i}->${i + 1} broken: ${a} != ${b}`);
145
+ }
146
+ }
147
+ return problems;
148
+ }
149
+ }
150
+ // --------------------------------------------------------------------------- //
151
+ // Token safety / pricing
152
+ // --------------------------------------------------------------------------- //
153
+ /** Honeypot / transfer-tax probe from `getTokenInfos`. */
154
+ export class TokenInfo {
155
+ buyEstimate;
156
+ buyResult;
157
+ sellEstimate;
158
+ sellResult;
159
+ buySuccess;
160
+ approveSuccess;
161
+ sellSuccess;
162
+ constructor(buyEstimate, buyResult, sellEstimate, sellResult, buySuccess, approveSuccess, sellSuccess) {
163
+ this.buyEstimate = buyEstimate;
164
+ this.buyResult = buyResult;
165
+ this.sellEstimate = sellEstimate;
166
+ this.sellResult = sellResult;
167
+ this.buySuccess = buySuccess;
168
+ this.approveSuccess = approveSuccess;
169
+ this.sellSuccess = sellSuccess;
170
+ }
171
+ static fromRaw(r) {
172
+ return new TokenInfo(BigInt(r[0]), BigInt(r[1]), BigInt(r[2]), BigInt(r[3]), Boolean(r[4]), Boolean(r[5]), Boolean(r[6]));
173
+ }
174
+ /** True if the sell leg failed while the buy succeeded. */
175
+ get isHoneypot() {
176
+ return this.buySuccess && !this.sellSuccess;
177
+ }
178
+ get buyTaxBps() {
179
+ if (this.buyEstimate === 0n)
180
+ return 0;
181
+ return Math.max(0, pyRound((1 - Number(this.buyResult) / Number(this.buyEstimate)) * 10_000));
182
+ }
183
+ get sellTaxBps() {
184
+ if (this.sellEstimate === 0n)
185
+ return 0;
186
+ return Math.max(0, pyRound((1 - Number(this.sellResult) / Number(this.sellEstimate)) * 10_000));
187
+ }
188
+ }
189
+ /** A USD/WETH price (1e18-scaled) plus the base token it was priced via. */
190
+ export class PriceResult {
191
+ price;
192
+ viaToken;
193
+ constructor(price, viaToken) {
194
+ this.price = price;
195
+ this.viaToken = viaToken;
196
+ }
197
+ static fromRaw(r) {
198
+ return new PriceResult(BigInt(r[0]), String(r[1]));
199
+ }
200
+ get asFloat() {
201
+ return Number(this.price) / 1e18;
202
+ }
203
+ }
204
+ /** One entry of `getWalletBalance` — balance + live USD valuation. */
205
+ export class WalletBalance {
206
+ token;
207
+ balance;
208
+ usdPrice18;
209
+ usdValue;
210
+ decimals;
211
+ ok;
212
+ constructor(token, balance, usdPrice18, usdValue, decimals, ok) {
213
+ this.token = token;
214
+ this.balance = balance;
215
+ this.usdPrice18 = usdPrice18;
216
+ this.usdValue = usdValue;
217
+ this.decimals = decimals;
218
+ this.ok = ok;
219
+ }
220
+ static fromRaw(r) {
221
+ return new WalletBalance(String(r[0]), BigInt(r[1]), BigInt(r[2]), BigInt(r[3]), Number(r[4]), Boolean(r[5]));
222
+ }
223
+ get balanceFloat() {
224
+ return Number(this.balance) / 10 ** this.decimals;
225
+ }
226
+ get usdValueFloat() {
227
+ return Number(this.usdValue) / 1e18;
228
+ }
229
+ }
230
+ // --------------------------------------------------------------------------- //
231
+ // Liquidity positions
232
+ // --------------------------------------------------------------------------- //
233
+ export class V2Position {
234
+ pair;
235
+ token0;
236
+ token1;
237
+ lpBalance;
238
+ reserve0;
239
+ reserve1;
240
+ totalSupply;
241
+ share0;
242
+ share1;
243
+ locked;
244
+ unlockTime;
245
+ constructor(pair, token0, token1, lpBalance, reserve0, reserve1, totalSupply, share0, share1, locked, unlockTime) {
246
+ this.pair = pair;
247
+ this.token0 = token0;
248
+ this.token1 = token1;
249
+ this.lpBalance = lpBalance;
250
+ this.reserve0 = reserve0;
251
+ this.reserve1 = reserve1;
252
+ this.totalSupply = totalSupply;
253
+ this.share0 = share0;
254
+ this.share1 = share1;
255
+ this.locked = locked;
256
+ this.unlockTime = unlockTime;
257
+ }
258
+ static fromRaw(r) {
259
+ return new V2Position(String(r[0]), String(r[1]), String(r[2]), BigInt(r[3]), BigInt(r[4]), BigInt(r[5]), BigInt(r[6]), BigInt(r[7]), BigInt(r[8]), Boolean(r[9]), BigInt(r[10]));
260
+ }
261
+ }
262
+ export class V3Position {
263
+ positionManager;
264
+ tokenId;
265
+ token0;
266
+ token1;
267
+ fee;
268
+ tickLower;
269
+ tickUpper;
270
+ liquidity;
271
+ tokensOwed0;
272
+ tokensOwed1;
273
+ locked;
274
+ unlockTime;
275
+ constructor(positionManager, tokenId, token0, token1, fee, tickLower, tickUpper, liquidity, tokensOwed0, tokensOwed1, locked, unlockTime) {
276
+ this.positionManager = positionManager;
277
+ this.tokenId = tokenId;
278
+ this.token0 = token0;
279
+ this.token1 = token1;
280
+ this.fee = fee;
281
+ this.tickLower = tickLower;
282
+ this.tickUpper = tickUpper;
283
+ this.liquidity = liquidity;
284
+ this.tokensOwed0 = tokensOwed0;
285
+ this.tokensOwed1 = tokensOwed1;
286
+ this.locked = locked;
287
+ this.unlockTime = unlockTime;
288
+ }
289
+ static fromRaw(r) {
290
+ return new V3Position(String(r[0]), BigInt(r[1]), String(r[2]), String(r[3]), Number(r[4]), Number(r[5]), Number(r[6]), BigInt(r[7]), BigInt(r[8]), BigInt(r[9]), Boolean(r[10]), BigInt(r[11]));
291
+ }
292
+ }
293
+ export class V4Position {
294
+ positionManager;
295
+ tokenId;
296
+ poolId;
297
+ currency0;
298
+ currency1;
299
+ fee;
300
+ tickSpacing;
301
+ hooks;
302
+ tickLower;
303
+ tickUpper;
304
+ liquidity;
305
+ locked;
306
+ unlockTime;
307
+ constructor(positionManager, tokenId, poolId, currency0, currency1, fee, tickSpacing, hooks, tickLower, tickUpper, liquidity, locked, unlockTime) {
308
+ this.positionManager = positionManager;
309
+ this.tokenId = tokenId;
310
+ this.poolId = poolId;
311
+ this.currency0 = currency0;
312
+ this.currency1 = currency1;
313
+ this.fee = fee;
314
+ this.tickSpacing = tickSpacing;
315
+ this.hooks = hooks;
316
+ this.tickLower = tickLower;
317
+ this.tickUpper = tickUpper;
318
+ this.liquidity = liquidity;
319
+ this.locked = locked;
320
+ this.unlockTime = unlockTime;
321
+ }
322
+ static fromRaw(r) {
323
+ return new V4Position(String(r[0]), BigInt(r[1]), String(r[2]), String(r[3]), String(r[4]), Number(r[5]), Number(r[6]), String(r[7]), Number(r[8]), Number(r[9]), BigInt(r[10]), Boolean(r[11]), BigInt(r[12]));
324
+ }
325
+ }
326
+ export class V2PoolState {
327
+ pair;
328
+ token0;
329
+ token1;
330
+ reserve0;
331
+ reserve1;
332
+ constructor(pair, token0, token1, reserve0, reserve1) {
333
+ this.pair = pair;
334
+ this.token0 = token0;
335
+ this.token1 = token1;
336
+ this.reserve0 = reserve0;
337
+ this.reserve1 = reserve1;
338
+ }
339
+ static fromRaw(r) {
340
+ return new V2PoolState(String(r[0]), String(r[1]), String(r[2]), BigInt(r[3]), BigInt(r[4]));
341
+ }
342
+ }
343
+ export class V3PoolState {
344
+ pool;
345
+ token0;
346
+ token1;
347
+ fee;
348
+ tick;
349
+ sqrtPriceX96;
350
+ liquidity;
351
+ tickSpacing;
352
+ constructor(pool, token0, token1, fee, tick, sqrtPriceX96, liquidity, tickSpacing) {
353
+ this.pool = pool;
354
+ this.token0 = token0;
355
+ this.token1 = token1;
356
+ this.fee = fee;
357
+ this.tick = tick;
358
+ this.sqrtPriceX96 = sqrtPriceX96;
359
+ this.liquidity = liquidity;
360
+ this.tickSpacing = tickSpacing;
361
+ }
362
+ static fromRaw(r) {
363
+ return new V3PoolState(String(r[0]), String(r[1]), String(r[2]), Number(r[3]), Number(r[4]), BigInt(r[5]), BigInt(r[6]), Number(r[7]));
364
+ }
365
+ }
366
+ export class V4PoolState {
367
+ poolId;
368
+ currency0;
369
+ currency1;
370
+ fee;
371
+ tickSpacing;
372
+ hooks;
373
+ sqrtPriceX96;
374
+ tick;
375
+ protocolFee;
376
+ lpFee;
377
+ liquidity;
378
+ constructor(poolId, currency0, currency1, fee, tickSpacing, hooks, sqrtPriceX96, tick, protocolFee, lpFee, liquidity) {
379
+ this.poolId = poolId;
380
+ this.currency0 = currency0;
381
+ this.currency1 = currency1;
382
+ this.fee = fee;
383
+ this.tickSpacing = tickSpacing;
384
+ this.hooks = hooks;
385
+ this.sqrtPriceX96 = sqrtPriceX96;
386
+ this.tick = tick;
387
+ this.protocolFee = protocolFee;
388
+ this.lpFee = lpFee;
389
+ this.liquidity = liquidity;
390
+ }
391
+ static fromRaw(r) {
392
+ return new V4PoolState(String(r[0]), String(r[1]), String(r[2]), Number(r[3]), Number(r[4]), String(r[5]), BigInt(r[6]), Number(r[7]), Number(r[8]), Number(r[9]), BigInt(r[10]));
393
+ }
394
+ }
395
+ /** A time-lock entry from `getLocks`. */
396
+ export class Lock {
397
+ kind;
398
+ asset;
399
+ tokenIdOrAmount;
400
+ lockTime;
401
+ unlockTime;
402
+ owner;
403
+ tokenA;
404
+ tokenB;
405
+ nonce;
406
+ constructor(kind, asset, tokenIdOrAmount, lockTime, unlockTime, owner, tokenA, tokenB, nonce) {
407
+ this.kind = kind;
408
+ this.asset = asset;
409
+ this.tokenIdOrAmount = tokenIdOrAmount;
410
+ this.lockTime = lockTime;
411
+ this.unlockTime = unlockTime;
412
+ this.owner = owner;
413
+ this.tokenA = tokenA;
414
+ this.tokenB = tokenB;
415
+ this.nonce = nonce;
416
+ }
417
+ static fromRaw(r) {
418
+ return new Lock(Number(r[0]), String(r[1]), BigInt(r[2]), BigInt(r[3]), BigInt(r[4]), String(r[5]), String(r[6]), String(r[7]), BigInt(r[8]));
419
+ }
420
+ get kindName() {
421
+ const name = LockKind[this.kind];
422
+ return name !== undefined ? name : `UNKNOWN(${this.kind})`;
423
+ }
424
+ }
425
+ /** Uncollected fees of a V3/V4 position from `getClaimableFees`. */
426
+ export class ClaimableFees {
427
+ token0;
428
+ amount0;
429
+ token1;
430
+ amount1;
431
+ constructor(token0, amount0, token1, amount1) {
432
+ this.token0 = token0;
433
+ this.amount0 = amount0;
434
+ this.token1 = token1;
435
+ this.amount1 = amount1;
436
+ }
437
+ static fromRaw(r) {
438
+ return new ClaimableFees(String(r[0]), BigInt(r[1]), String(r[2]), BigInt(r[3]));
439
+ }
440
+ }
441
+ /** Paged referral-fee balances from `getReferralFeeTokens`. */
442
+ export class ReferralFeeTokens {
443
+ tokens;
444
+ amounts;
445
+ maxIndex;
446
+ constructor(tokens, amounts, maxIndex) {
447
+ this.tokens = tokens;
448
+ this.amounts = amounts;
449
+ this.maxIndex = maxIndex;
450
+ }
451
+ static fromRaw(r) {
452
+ return new ReferralFeeTokens([...r[0]].map((a) => String(a)), [...r[1]].map((x) => BigInt(x)), Number(r[2]));
453
+ }
454
+ asDict() {
455
+ const out = {};
456
+ for (let i = 0; i < this.tokens.length && i < this.amounts.length; i++) {
457
+ out[this.tokens[i]] = this.amounts[i];
458
+ }
459
+ return out;
460
+ }
461
+ }
462
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Small numeric helpers that match Python semantics exactly, so this SDK is a
3
+ * faithful 1:1 port (and not subtly off by a unit at .5 boundaries).
4
+ */
5
+ /**
6
+ * Round half-to-even ("banker's rounding"), matching Python's built-in `round()`.
7
+ *
8
+ * JS `Math.round` rounds half **up** (0.5 -> 1, 2.5 -> 3), while Python rounds
9
+ * half to the nearest **even** integer (0.5 -> 0, 2.5 -> 2). The SDK's tax-bps
10
+ * and price-impact-bps math goes through Python `round()`, so we reproduce it.
11
+ */
12
+ export declare function pyRound(x: number): number;
13
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOzC"}
package/dist/util.js ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Small numeric helpers that match Python semantics exactly, so this SDK is a
3
+ * faithful 1:1 port (and not subtly off by a unit at .5 boundaries).
4
+ */
5
+ /**
6
+ * Round half-to-even ("banker's rounding"), matching Python's built-in `round()`.
7
+ *
8
+ * JS `Math.round` rounds half **up** (0.5 -> 1, 2.5 -> 3), while Python rounds
9
+ * half to the nearest **even** integer (0.5 -> 0, 2.5 -> 2). The SDK's tax-bps
10
+ * and price-impact-bps math goes through Python `round()`, so we reproduce it.
11
+ */
12
+ export function pyRound(x) {
13
+ const floor = Math.floor(x);
14
+ const diff = x - floor;
15
+ if (diff < 0.5)
16
+ return floor;
17
+ if (diff > 0.5)
18
+ return floor + 1;
19
+ // Exactly .5 -> pick the even neighbour.
20
+ return floor % 2 === 0 ? floor : floor + 1;
21
+ }
22
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,IAAI,IAAI,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,IAAI,GAAG,GAAG;QAAE,OAAO,KAAK,GAAG,CAAC,CAAC;IACjC,yCAAyC;IACzC,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "sally-defi-ts-sdk",
3
+ "version": "0.3.2",
4
+ "description": "Fully on-chain TypeScript SDK for the Sally DeFi CrossHybrid protocol (Base + BSC) — swaps, pricing, liquidity. No API, no subgraph, no backend.",
5
+ "keywords": [
6
+ "defi", "ethereum", "base", "bsc", "ethers", "uniswap", "swap",
7
+ "liquidity", "sally", "onchain", "decentralized", "trustless", "no-api"
8
+ ],
9
+ "author": "Sally.tools <support@sally.tools>",
10
+ "license": "MIT",
11
+ "homepage": "https://sally.tools",
12
+ "repository": "https://github.com/SallyTools/sally-defi-ts-sdk",
13
+ "type": "module",
14
+ "main": "./dist/index.js",
15
+ "module": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ },
22
+ "./aio": {
23
+ "types": "./dist/aio/index.d.ts",
24
+ "import": "./dist/aio/index.js"
25
+ }
26
+ },
27
+ "files": ["dist", "src"],
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.json && npm run copy:data",
30
+ "copy:data": "node -e \"require('fs').mkdirSync('dist/data',{recursive:true});require('fs').copyFileSync('src/data/deployment.json','dist/data/deployment.json')\"",
31
+ "prepublishOnly": "npm run build",
32
+ "pretest": "npm run build",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "typecheck": "tsc --noEmit -p tsconfig.json"
36
+ },
37
+ "dependencies": {
38
+ "ethers": "^6.13.0"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.5.0",
42
+ "vitest": "^2.0.0",
43
+ "@types/node": "^20.0.0"
44
+ },
45
+ "engines": {
46
+ "node": ">=18"
47
+ }
48
+ }