@flashnet/sdk 0.4.4 → 0.5.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 (61) hide show
  1. package/dist/cjs/index.d.ts +2 -1
  2. package/dist/cjs/index.d.ts.map +1 -1
  3. package/dist/cjs/index.js +17 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/src/api/typed-endpoints.d.ts +70 -0
  6. package/dist/cjs/src/api/typed-endpoints.d.ts.map +1 -1
  7. package/dist/cjs/src/api/typed-endpoints.js +106 -11
  8. package/dist/cjs/src/api/typed-endpoints.js.map +1 -1
  9. package/dist/cjs/src/client/FlashnetClient.d.ts +179 -1
  10. package/dist/cjs/src/client/FlashnetClient.d.ts.map +1 -1
  11. package/dist/cjs/src/client/FlashnetClient.js +477 -14
  12. package/dist/cjs/src/client/FlashnetClient.js.map +1 -1
  13. package/dist/cjs/src/config/index.js +1 -1
  14. package/dist/cjs/src/types/errors.js +11 -11
  15. package/dist/cjs/src/types/index.d.ts +412 -0
  16. package/dist/cjs/src/types/index.d.ts.map +1 -1
  17. package/dist/cjs/src/types/index.js +1 -1
  18. package/dist/cjs/src/utils/index.d.ts +1 -0
  19. package/dist/cjs/src/utils/index.d.ts.map +1 -1
  20. package/dist/cjs/src/utils/index.js.map +1 -1
  21. package/dist/cjs/src/utils/intents.d.ts +91 -0
  22. package/dist/cjs/src/utils/intents.d.ts.map +1 -1
  23. package/dist/cjs/src/utils/intents.js +117 -0
  24. package/dist/cjs/src/utils/intents.js.map +1 -1
  25. package/dist/cjs/src/utils/spark-address.js +2 -2
  26. package/dist/cjs/src/utils/tick-math.d.ts +240 -0
  27. package/dist/cjs/src/utils/tick-math.d.ts.map +1 -0
  28. package/dist/cjs/src/utils/tick-math.js +299 -0
  29. package/dist/cjs/src/utils/tick-math.js.map +1 -0
  30. package/dist/cjs/src/utils/tokenAddress.js +1 -1
  31. package/dist/esm/index.d.ts +2 -1
  32. package/dist/esm/index.d.ts.map +1 -1
  33. package/dist/esm/index.js +2 -1
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/src/api/typed-endpoints.d.ts +70 -0
  36. package/dist/esm/src/api/typed-endpoints.d.ts.map +1 -1
  37. package/dist/esm/src/api/typed-endpoints.js +106 -11
  38. package/dist/esm/src/api/typed-endpoints.js.map +1 -1
  39. package/dist/esm/src/client/FlashnetClient.d.ts +179 -1
  40. package/dist/esm/src/client/FlashnetClient.d.ts.map +1 -1
  41. package/dist/esm/src/client/FlashnetClient.js +478 -15
  42. package/dist/esm/src/client/FlashnetClient.js.map +1 -1
  43. package/dist/esm/src/config/index.js +1 -1
  44. package/dist/esm/src/types/errors.js +11 -11
  45. package/dist/esm/src/types/index.d.ts +412 -0
  46. package/dist/esm/src/types/index.d.ts.map +1 -1
  47. package/dist/esm/src/types/index.js +1 -1
  48. package/dist/esm/src/utils/index.d.ts +1 -0
  49. package/dist/esm/src/utils/index.d.ts.map +1 -1
  50. package/dist/esm/src/utils/index.js.map +1 -1
  51. package/dist/esm/src/utils/intents.d.ts +91 -0
  52. package/dist/esm/src/utils/intents.d.ts.map +1 -1
  53. package/dist/esm/src/utils/intents.js +112 -1
  54. package/dist/esm/src/utils/intents.js.map +1 -1
  55. package/dist/esm/src/utils/spark-address.js +2 -2
  56. package/dist/esm/src/utils/tick-math.d.ts +240 -0
  57. package/dist/esm/src/utils/tick-math.d.ts.map +1 -0
  58. package/dist/esm/src/utils/tick-math.js +287 -0
  59. package/dist/esm/src/utils/tick-math.js.map +1 -0
  60. package/dist/esm/src/utils/tokenAddress.js +1 -1
  61. package/package.json +6 -3
@@ -0,0 +1,287 @@
1
+ /**
2
+ * V3 Concentrated Liquidity Tick Math Utilities
3
+ *
4
+ * In V3 AMMs, price is represented as ticks where: price = 1.0001^tick
5
+ * Each tick represents a 0.01% (1 basis point) price change.
6
+ *
7
+ * Pool price convention: "amount of asset B per 1 unit of asset A" (in smallest units)
8
+ * For a USDB/BTC pool (A=USDB, B=BTC): price = sats per microUSDB
9
+ */
10
+ // Constants
11
+ const LOG_BASE = Math.log(1.0001);
12
+ const MIN_TICK = -887272;
13
+ const MAX_TICK = 887272;
14
+ /**
15
+ * Convert a raw pool price to a tick.
16
+ *
17
+ * @param price - Pool price (amount of asset B per unit of asset A in smallest units)
18
+ * @returns The tick value
19
+ *
20
+ * @example
21
+ * // For USDB/BTC pool at ~$90k: price = 0.00111 sats per microUSDB
22
+ * priceToTick(0.00111) // returns approximately -68038
23
+ */
24
+ function priceToTick(price) {
25
+ const priceNum = typeof price === "string" ? parseFloat(price) : price;
26
+ if (priceNum <= 0) {
27
+ throw new Error("Price must be positive");
28
+ }
29
+ const tick = Math.log(priceNum) / LOG_BASE;
30
+ return Math.round(tick);
31
+ }
32
+ /**
33
+ * Convert a tick to a raw pool price.
34
+ *
35
+ * @param tick - The tick value
36
+ * @returns Pool price as a string (for precision)
37
+ *
38
+ * @example
39
+ * tickToPrice(-68038) // returns "0.001109..." (sats per microUSDB)
40
+ */
41
+ function tickToPrice(tick) {
42
+ if (tick < MIN_TICK || tick > MAX_TICK) {
43
+ throw new Error(`Tick must be between ${MIN_TICK} and ${MAX_TICK}`);
44
+ }
45
+ const price = 1.0001 ** tick;
46
+ return price.toString();
47
+ }
48
+ /**
49
+ * Round a tick down to the nearest valid tick (multiple of tick spacing).
50
+ *
51
+ * @param tick - The tick to round
52
+ * @param tickSpacing - The pool's tick spacing (e.g., 60)
53
+ * @returns Rounded tick
54
+ */
55
+ function roundTickDown(tick, tickSpacing) {
56
+ return Math.floor(tick / tickSpacing) * tickSpacing;
57
+ }
58
+ /**
59
+ * Round a tick up to the nearest valid tick (multiple of tick spacing).
60
+ *
61
+ * @param tick - The tick to round
62
+ * @param tickSpacing - The pool's tick spacing (e.g., 60)
63
+ * @returns Rounded tick
64
+ */
65
+ function roundTickUp(tick, tickSpacing) {
66
+ return Math.ceil(tick / tickSpacing) * tickSpacing;
67
+ }
68
+ /**
69
+ * Round a tick to the nearest valid tick (multiple of tick spacing).
70
+ *
71
+ * @param tick - The tick to round
72
+ * @param tickSpacing - The pool's tick spacing (e.g., 60)
73
+ * @returns Rounded tick
74
+ */
75
+ function roundTick(tick, tickSpacing) {
76
+ return Math.round(tick / tickSpacing) * tickSpacing;
77
+ }
78
+ /**
79
+ * Convert a human-readable price to a V3 tick.
80
+ *
81
+ * This is the most user-friendly function for calculating ticks.
82
+ * Express your price as "quote per base" (e.g., "$90,000 per BTC").
83
+ *
84
+ * @example
85
+ * // BTC at $90,000, pool has USDB (6 decimals) as A, BTC (8 decimals) as B
86
+ * humanPriceToTick({
87
+ * humanPrice: 90000,
88
+ * baseDecimals: 8, // BTC
89
+ * quoteDecimals: 6, // USD
90
+ * baseIsAssetA: false, // BTC is asset B (default)
91
+ * tickSpacing: 60
92
+ * }) // returns -68040
93
+ *
94
+ * @example
95
+ * // Get tick range for $80,000 to $100,000
96
+ * const tickLower = humanPriceToTick({ humanPrice: 100000, baseDecimals: 8, quoteDecimals: 6, tickSpacing: 60 });
97
+ * const tickUpper = humanPriceToTick({ humanPrice: 80000, baseDecimals: 8, quoteDecimals: 6, tickSpacing: 60 });
98
+ * // Note: higher price = lower tick for this pool configuration
99
+ */
100
+ function humanPriceToTick(options) {
101
+ const { humanPrice, baseDecimals, quoteDecimals, baseIsAssetA = false, tickSpacing, } = options;
102
+ if (humanPrice <= 0) {
103
+ throw new Error("Human price must be positive");
104
+ }
105
+ // Pool price is "amount of B per unit of A" in smallest units
106
+ // Human price is "quote per base"
107
+ // If base is asset B (common case: BTC/USD pool where BTC is B):
108
+ // pool_price = 10^(baseDecimals - quoteDecimals) / humanPrice
109
+ // If base is asset A:
110
+ // pool_price = humanPrice * 10^(quoteDecimals - baseDecimals)
111
+ let poolPrice;
112
+ if (baseIsAssetA) {
113
+ // Base is A, so human price is "B per A" which is the same direction as pool price
114
+ poolPrice = humanPrice * 10 ** (quoteDecimals - baseDecimals);
115
+ }
116
+ else {
117
+ // Base is B, so human price is "A per B", need to invert
118
+ poolPrice = 10 ** (baseDecimals - quoteDecimals) / humanPrice;
119
+ }
120
+ let tick = priceToTick(poolPrice);
121
+ if (tickSpacing) {
122
+ tick = roundTick(tick, tickSpacing);
123
+ }
124
+ return tick;
125
+ }
126
+ /**
127
+ * Convert a V3 tick to a human-readable price.
128
+ *
129
+ * @example
130
+ * // Tick -68040 in a USDB/BTC pool
131
+ * tickToHumanPrice({
132
+ * tick: -68040,
133
+ * baseDecimals: 8, // BTC
134
+ * quoteDecimals: 6, // USD
135
+ * baseIsAssetA: false // BTC is asset B
136
+ * }) // returns approximately 90000 (dollars per BTC)
137
+ */
138
+ function tickToHumanPrice(options) {
139
+ const { tick, baseDecimals, quoteDecimals, baseIsAssetA = false } = options;
140
+ const poolPrice = parseFloat(tickToPrice(tick));
141
+ // Reverse the conversion from humanPriceToTick
142
+ if (baseIsAssetA) {
143
+ return poolPrice / 10 ** (quoteDecimals - baseDecimals);
144
+ }
145
+ else {
146
+ return 10 ** (baseDecimals - quoteDecimals) / poolPrice;
147
+ }
148
+ }
149
+ /**
150
+ * Get a tick range from human-readable price bounds.
151
+ *
152
+ * Automatically handles the conversion and ensures tickLower < tickUpper.
153
+ *
154
+ * @example
155
+ * // Get tick range for $80,000 to $100,000 BTC price
156
+ * const range = tickRangeFromPrices({
157
+ * priceLower: 80000,
158
+ * priceUpper: 100000,
159
+ * baseDecimals: 8,
160
+ * quoteDecimals: 6,
161
+ * tickSpacing: 60
162
+ * });
163
+ * // returns { tickLower: -69120, tickUpper: -66840, actualPriceLower: 80180, actualPriceUpper: 99820 }
164
+ */
165
+ function tickRangeFromPrices(options) {
166
+ const { priceLower, priceUpper, baseDecimals, quoteDecimals, baseIsAssetA = false, tickSpacing, } = options;
167
+ if (priceLower >= priceUpper) {
168
+ throw new Error("priceLower must be less than priceUpper");
169
+ }
170
+ const tick1 = humanPriceToTick({
171
+ humanPrice: priceLower,
172
+ baseDecimals,
173
+ quoteDecimals,
174
+ baseIsAssetA,
175
+ tickSpacing,
176
+ });
177
+ const tick2 = humanPriceToTick({
178
+ humanPrice: priceUpper,
179
+ baseDecimals,
180
+ quoteDecimals,
181
+ baseIsAssetA,
182
+ tickSpacing,
183
+ });
184
+ // Ensure tickLower < tickUpper (tick direction depends on baseIsAssetA)
185
+ const tickLower = Math.min(tick1, tick2);
186
+ const tickUpper = Math.max(tick1, tick2);
187
+ // Calculate actual prices at the rounded ticks
188
+ const actualPriceLower = tickToHumanPrice({
189
+ tick: baseIsAssetA ? tickLower : tickUpper,
190
+ baseDecimals,
191
+ quoteDecimals,
192
+ baseIsAssetA,
193
+ });
194
+ const actualPriceUpper = tickToHumanPrice({
195
+ tick: baseIsAssetA ? tickUpper : tickLower,
196
+ baseDecimals,
197
+ quoteDecimals,
198
+ baseIsAssetA,
199
+ });
200
+ return {
201
+ tickLower,
202
+ tickUpper,
203
+ actualPriceLower,
204
+ actualPriceUpper,
205
+ };
206
+ }
207
+ //
208
+ // Pool Price Calculation from Amount
209
+ //
210
+ /**
211
+ * Calculate the pool price needed for a given position configuration.
212
+ *
213
+ * @param humanPrice - Human-readable price (e.g., 90000 for $90k/BTC)
214
+ * @param baseDecimals - Decimals of base token
215
+ * @param quoteDecimals - Decimals of quote token
216
+ * @param baseIsAssetA - Whether base is asset A (default: false)
217
+ * @returns Pool price string suitable for createConcentratedPool's initialPrice
218
+ */
219
+ function humanPriceToPoolPrice(humanPrice, baseDecimals, quoteDecimals, baseIsAssetA = false) {
220
+ if (humanPrice <= 0) {
221
+ throw new Error("Human price must be positive");
222
+ }
223
+ let poolPrice;
224
+ if (baseIsAssetA) {
225
+ poolPrice = humanPrice * 10 ** (quoteDecimals - baseDecimals);
226
+ }
227
+ else {
228
+ poolPrice = 10 ** (baseDecimals - quoteDecimals) / humanPrice;
229
+ }
230
+ return poolPrice.toPrecision(10);
231
+ }
232
+ /**
233
+ * Convert pool price to human-readable price.
234
+ *
235
+ * @param poolPrice - Pool price (amount of B per unit of A in smallest units)
236
+ * @param baseDecimals - Decimals of base token
237
+ * @param quoteDecimals - Decimals of quote token
238
+ * @param baseIsAssetA - Whether base is asset A (default: false)
239
+ * @returns Human-readable price
240
+ */
241
+ function poolPriceToHumanPrice(poolPrice, baseDecimals, quoteDecimals, baseIsAssetA = false) {
242
+ const price = typeof poolPrice === "string" ? parseFloat(poolPrice) : poolPrice;
243
+ if (baseIsAssetA) {
244
+ return price / 10 ** (quoteDecimals - baseDecimals);
245
+ }
246
+ else {
247
+ return 10 ** (baseDecimals - quoteDecimals) / price;
248
+ }
249
+ }
250
+ //
251
+ // Convenience exports
252
+ //
253
+ /**
254
+ * V3 tick math utilities namespace for cleaner imports.
255
+ *
256
+ * @example
257
+ * import { V3TickMath } from "@flashnet/sdk";
258
+ *
259
+ * const tick = V3TickMath.fromHumanPrice({
260
+ * humanPrice: 90000,
261
+ * baseDecimals: 8,
262
+ * quoteDecimals: 6,
263
+ * tickSpacing: 60
264
+ * });
265
+ */
266
+ const V3TickMath = {
267
+ // Core conversions
268
+ priceToTick,
269
+ tickToPrice,
270
+ // Tick spacing
271
+ roundTickDown,
272
+ roundTickUp,
273
+ roundTick,
274
+ // Human-readable conversions
275
+ fromHumanPrice: humanPriceToTick,
276
+ toHumanPrice: tickToHumanPrice,
277
+ rangeFromPrices: tickRangeFromPrices,
278
+ // Pool price conversions
279
+ humanPriceToPoolPrice,
280
+ poolPriceToHumanPrice,
281
+ // Constants
282
+ MIN_TICK,
283
+ MAX_TICK,
284
+ };
285
+
286
+ export { V3TickMath, humanPriceToPoolPrice, humanPriceToTick, poolPriceToHumanPrice, priceToTick, roundTick, roundTickDown, roundTickUp, tickRangeFromPrices, tickToHumanPrice, tickToPrice };
287
+ //# sourceMappingURL=tick-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick-math.js","sources":["../../../../../../src/utils/tick-math.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -60,7 +60,7 @@ function decodeSparkHumanReadableTokenIdentifier(humanReadableTokenIdentifier, n
60
60
  throw new Error("Failed to decode Spark human readable token identifier");
61
61
  }
62
62
  }
63
- // ===== BACKWARD COMPATIBILITY LAYER =====
63
+ // BACKWARD COMPATIBILITY LAYER
64
64
  /**
65
65
  * @deprecated Use SparkHumanReadableTokenIdentifierNetworkPrefix instead
66
66
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flashnet/sdk",
3
- "version": "0.4.4",
3
+ "version": "0.5.1",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -54,6 +54,9 @@
54
54
  "test:cjs": "node tests/test-cjs.cjs",
55
55
  "test:bun": "bun tests/test-bun.js",
56
56
  "test:modular": "node tests/test-modular.mjs",
57
+ "test:e2e": "npx tsx tests/e2e.ts",
58
+ "test:e2e:v3": "npx tsx tests/e2e-concentrated-liquidity-sdk.ts",
59
+ "test:e2e:all": "npm run test:e2e && npm run test:e2e:v3",
57
60
  "lint": "biome check .",
58
61
  "lint:fix": "biome check --write .",
59
62
  "format": "biome format --write .",
@@ -62,8 +65,8 @@
62
65
  },
63
66
  "devDependencies": {
64
67
  "@biomejs/biome": "2.0.5",
65
- "@buildonspark/issuer-sdk": "^0.1.0",
66
- "@buildonspark/spark-sdk": "^0.5.0",
68
+ "@buildonspark/issuer-sdk": "^0.1.4",
69
+ "@buildonspark/spark-sdk": "^0.5.4",
67
70
  "@rollup/plugin-typescript": "^12.1.4",
68
71
  "@types/bun": "latest",
69
72
  "@types/jest": "^30.0.0",