@jack-kernel/sdk 1.1.0 → 1.2.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 (50) hide show
  1. package/README.md +128 -19
  2. package/dist/cjs/index.js +83 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/lifi/chain-map.js +39 -0
  5. package/dist/cjs/lifi/chain-map.js.map +1 -0
  6. package/dist/cjs/lifi/fallback.js +135 -0
  7. package/dist/cjs/lifi/fallback.js.map +1 -0
  8. package/dist/cjs/lifi/index.js +34 -0
  9. package/dist/cjs/lifi/index.js.map +1 -0
  10. package/dist/cjs/lifi/lifi-provider.js +496 -0
  11. package/dist/cjs/lifi/lifi-provider.js.map +1 -0
  12. package/dist/cjs/lifi/token-map.js +75 -0
  13. package/dist/cjs/lifi/token-map.js.map +1 -0
  14. package/dist/cjs/lifi/types.js +3 -0
  15. package/dist/cjs/lifi/types.js.map +1 -0
  16. package/dist/cjs/lifi/utils.js +45 -0
  17. package/dist/cjs/lifi/utils.js.map +1 -0
  18. package/dist/esm/index.js +69 -1
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/lifi/chain-map.js +35 -0
  21. package/dist/esm/lifi/chain-map.js.map +1 -0
  22. package/dist/esm/lifi/fallback.js +128 -0
  23. package/dist/esm/lifi/fallback.js.map +1 -0
  24. package/dist/esm/lifi/index.js +19 -0
  25. package/dist/esm/lifi/index.js.map +1 -0
  26. package/dist/esm/lifi/lifi-provider.js +492 -0
  27. package/dist/esm/lifi/lifi-provider.js.map +1 -0
  28. package/dist/esm/lifi/token-map.js +71 -0
  29. package/dist/esm/lifi/token-map.js.map +1 -0
  30. package/dist/esm/lifi/types.js +2 -0
  31. package/dist/esm/lifi/types.js.map +1 -0
  32. package/dist/esm/lifi/utils.js +41 -0
  33. package/dist/esm/lifi/utils.js.map +1 -0
  34. package/dist/types/index.d.ts +58 -1
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/types/lifi/chain-map.d.ts +27 -0
  37. package/dist/types/lifi/chain-map.d.ts.map +1 -0
  38. package/dist/types/lifi/fallback.d.ts +58 -0
  39. package/dist/types/lifi/fallback.d.ts.map +1 -0
  40. package/dist/types/lifi/index.d.ts +18 -0
  41. package/dist/types/lifi/index.d.ts.map +1 -0
  42. package/dist/types/lifi/lifi-provider.d.ts +133 -0
  43. package/dist/types/lifi/lifi-provider.d.ts.map +1 -0
  44. package/dist/types/lifi/token-map.d.ts +34 -0
  45. package/dist/types/lifi/token-map.d.ts.map +1 -0
  46. package/dist/types/lifi/types.d.ts +52 -0
  47. package/dist/types/lifi/types.d.ts.map +1 -0
  48. package/dist/types/lifi/utils.d.ts +29 -0
  49. package/dist/types/lifi/utils.d.ts.map +1 -0
  50. package/package.json +4 -1
package/dist/esm/index.js CHANGED
@@ -30,6 +30,8 @@ import { CostTracker } from './costs.js';
30
30
  import { AgentUtils } from './agent.js';
31
31
  // Import Yellow provider and config for SDK integration
32
32
  import { YellowProvider } from './yellow/yellow-provider.js';
33
+ // Import LI.FI provider and types
34
+ import { LifiProvider } from './lifi/lifi-provider.js';
33
35
  // Import types and enums for use in this file
34
36
  import { ExecutionStatus } from './types.js';
35
37
  /**
@@ -84,6 +86,10 @@ export class JACK_SDK {
84
86
  * **Validates: Requirements 1.6, 1.7**
85
87
  */
86
88
  yellow;
89
+ /**
90
+ * LI.FI provider - cross-chain quote and route discovery (optional)
91
+ */
92
+ lifi;
87
93
  /**
88
94
  * Internal HTTP client (exposed for advanced use cases)
89
95
  */
@@ -96,7 +102,8 @@ export class JACK_SDK {
96
102
  * caching, and custom headers.
97
103
  *
98
104
  * @param config - Client configuration (baseUrl required, other options optional). Optionally includes
99
- * a `yellow` field with YellowSDKConfig to enable Yellow Network integration.
105
+ * a `yellow` field with YellowSDKConfig to enable Yellow Network integration, and/or a `lifi` field
106
+ * with LifiConfig to enable LI.FI integration.
100
107
  * @throws ValidationError if configuration is invalid
101
108
  * @throws Error if YellowProvider initialization fails when yellow config is provided
102
109
  *
@@ -126,6 +133,13 @@ export class JACK_SDK {
126
133
  * }
127
134
  * });
128
135
  * console.log(sdk.yellow); // YellowProvider instance
136
+ *
137
+ * // With LI.FI integration
138
+ * const sdk = new JACK_SDK({
139
+ * baseUrl: 'https://api.jack.example',
140
+ * lifi: { integrator: 'jackkernel' }
141
+ * });
142
+ * console.log(sdk.lifi); // LifiProvider instance
129
143
  * ```
130
144
  */
131
145
  constructor(config) {
@@ -140,6 +154,10 @@ export class JACK_SDK {
140
154
  if (config.yellow !== undefined) {
141
155
  this.yellow = new YellowProvider(config.yellow, config.yellow.walletClient);
142
156
  }
157
+ // Conditionally initialize LI.FI provider
158
+ if (config.lifi !== undefined) {
159
+ this.lifi = new LifiProvider(config.lifi);
160
+ }
143
161
  }
144
162
  /**
145
163
  * Convenience method: Submit a signed intent
@@ -265,5 +283,55 @@ export class JACK_SDK {
265
283
  getIntentTypedData(params) {
266
284
  return this.intents.getTypedData(params);
267
285
  }
286
+ /**
287
+ * Convenience method: Get a LI.FI quote for intent params
288
+ *
289
+ * Delegates to LifiProvider.fetchQuote(). Throws if the SDK was not
290
+ * initialized with a LI.FI configuration.
291
+ *
292
+ * @param params - Intent parameters
293
+ * @returns Promise resolving to a normalized LifiQuotePayload
294
+ * @throws Error if LI.FI is not configured
295
+ *
296
+ * @example
297
+ * ```typescript
298
+ * const sdk = new JACK_SDK({ baseUrl: '...', lifi: {} });
299
+ * const quote = await sdk.getLifiQuote(params);
300
+ * console.log('Quote:', quote.quote.amountOut);
301
+ * ```
302
+ *
303
+ * **Validates: Requirements 1.6, 1.7**
304
+ */
305
+ async getLifiQuote(params) {
306
+ if (!this.lifi)
307
+ throw new Error('LI.FI not configured');
308
+ return this.lifi.fetchQuote(params);
309
+ }
310
+ /**
311
+ * Convenience method: Get a LI.FI route for intent params
312
+ *
313
+ * Delegates to LifiProvider.fetchRoute(). Throws if the SDK was not
314
+ * initialized with a LI.FI configuration.
315
+ *
316
+ * @param params - Intent parameters
317
+ * @returns Promise resolving to a normalized LifiRoutePayload
318
+ * @throws Error if LI.FI is not configured
319
+ *
320
+ * @example
321
+ * ```typescript
322
+ * const sdk = new JACK_SDK({ baseUrl: '...', lifi: {} });
323
+ * const route = await sdk.getLifiRoute(params);
324
+ * console.log('Route:', route.route?.steps);
325
+ * ```
326
+ *
327
+ * **Validates: Requirements 1.6, 1.7**
328
+ */
329
+ async getLifiRoute(params) {
330
+ if (!this.lifi)
331
+ throw new Error('LI.FI not configured');
332
+ return this.lifi.fetchRoute(params);
333
+ }
268
334
  }
335
+ // LI.FI integration
336
+ export * from './lifi/index.js';
269
337
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ChainMap — pure mapping module for chain name → chain ID resolution.
3
+ *
4
+ * Lookups are case-insensitive via `name.toLowerCase()`.
5
+ */
6
+ /** Default chain name → chain ID mappings. */
7
+ const CHAIN_MAP = {
8
+ arbitrum: 42161,
9
+ optimism: 10,
10
+ base: 8453,
11
+ polygon: 137,
12
+ };
13
+ /**
14
+ * Resolve a human-readable chain name to its numeric chain ID.
15
+ *
16
+ * @param name - Chain name (case-insensitive), e.g. "Arbitrum", "OPTIMISM"
17
+ * @returns A discriminated union: `{ ok: true, chainId }` on success,
18
+ * `{ ok: false, reason }` when the chain is not supported.
19
+ */
20
+ export function resolveChain(name) {
21
+ const chainId = CHAIN_MAP[name.toLowerCase()];
22
+ if (chainId !== undefined) {
23
+ return { ok: true, chainId };
24
+ }
25
+ return { ok: false, reason: `Unsupported chain: ${name}` };
26
+ }
27
+ /**
28
+ * Return a copy of the supported chain mappings.
29
+ *
30
+ * @returns A new `Record<string, number>` with all supported chain entries.
31
+ */
32
+ export function getSupportedChains() {
33
+ return { ...CHAIN_MAP };
34
+ }
35
+ //# sourceMappingURL=chain-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-map.js","sourceRoot":"","sources":["../../../src/lifi/chain-map.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,8CAA8C;AAC9C,MAAM,SAAS,GAA2B;IACxC,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,GAAG;CACb,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,IAAI,EAAE,EAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * FallbackProvider — generates estimated quotes, routes, and statuses when
3
+ * the LI.FI SDK is unavailable or returns errors.
4
+ *
5
+ * Ported from `apps/dashboard/src/lib/lifi.ts` for reuse across the SDK.
6
+ *
7
+ * @module
8
+ */
9
+ import { resolveChain } from './chain-map.js';
10
+ /**
11
+ * Static exchange rates used when the LI.FI SDK is unavailable.
12
+ * Keys are formatted as `TOKENA:TOKENB` (upper-case).
13
+ */
14
+ export const FALLBACK_RATES = {
15
+ 'USDC:WETH': 0.0004,
16
+ 'USDC:ETH': 0.0004,
17
+ 'ETH:USDC': 2500,
18
+ 'WETH:USDC': 2500,
19
+ 'ETH:WETH': 1,
20
+ 'WETH:ETH': 1,
21
+ };
22
+ /**
23
+ * Produce a deterministic, human-readable ID from a seed string using the
24
+ * DJB2 hash algorithm.
25
+ *
26
+ * The result has the form `JK-LIFI-{hash}` where `{hash}` is the unsigned
27
+ * 32-bit DJB2 value encoded in upper-case base-36.
28
+ *
29
+ * @param seed - Arbitrary string to hash
30
+ * @returns A deterministic ID of the form `JK-LIFI-[A-Z0-9]+`
31
+ */
32
+ export function deterministicId(seed) {
33
+ let hash = 5381;
34
+ for (let i = 0; i < seed.length; i += 1) {
35
+ hash = (hash * 33) ^ seed.charCodeAt(i);
36
+ }
37
+ return `JK-LIFI-${(hash >>> 0).toString(36).toUpperCase()}`;
38
+ }
39
+ /**
40
+ * Build a fallback quote payload when the LI.FI SDK is unavailable.
41
+ *
42
+ * Uses static exchange rates from {@link FALLBACK_RATES} to estimate the
43
+ * output amount. If the token pair is not in the static table the rate
44
+ * defaults to `1`.
45
+ *
46
+ * @param params - The original intent parameters
47
+ * @param reason - Fallback metadata describing why the fallback was triggered
48
+ * @returns A complete {@link LifiQuotePayload} with `provider: 'fallback'`
49
+ */
50
+ export function buildFallbackQuote(params, reason) {
51
+ const fromChainRes = resolveChain(params.sourceChain ?? '');
52
+ const toChainRes = resolveChain(params.destinationChain ?? '');
53
+ const fromChainId = fromChainRes.ok ? fromChainRes.chainId : 0;
54
+ const toChainId = toChainRes.ok ? toChainRes.chainId : 0;
55
+ const rateKey = `${params.tokenIn}:${params.tokenOut}`.toUpperCase();
56
+ const rate = FALLBACK_RATES[rateKey] ?? 1;
57
+ const amountInNum = Number(params.amountIn || '0');
58
+ const amountOut = Number.isFinite(amountInNum)
59
+ ? (amountInNum * rate).toFixed(6)
60
+ : params.amountIn;
61
+ const seed = `${params.sourceChain}-${params.destinationChain}-${params.tokenIn}-${params.tokenOut}-${params.amountIn}`;
62
+ return {
63
+ provider: 'fallback',
64
+ routeId: deterministicId(seed),
65
+ timestamp: Date.now(),
66
+ quote: {
67
+ amountIn: params.amountIn,
68
+ amountOut,
69
+ minAmountOut: params.minAmountOut,
70
+ fromChainId,
71
+ toChainId,
72
+ fromToken: params.tokenIn,
73
+ toToken: params.tokenOut,
74
+ estimatedGasUsd: '0',
75
+ },
76
+ fallback: reason,
77
+ };
78
+ }
79
+ /**
80
+ * Build a fallback route payload when the LI.FI SDK is unavailable.
81
+ *
82
+ * The route payload contains no execution steps but preserves the chain and
83
+ * token metadata so callers can still display useful information.
84
+ *
85
+ * @param params - The original intent parameters
86
+ * @param reason - Fallback metadata describing why the fallback was triggered
87
+ * @returns A complete {@link LifiRoutePayload} with `provider: 'fallback'`
88
+ */
89
+ export function buildFallbackRoute(params, reason) {
90
+ const fromChainRes = resolveChain(params.sourceChain ?? '');
91
+ const toChainRes = resolveChain(params.destinationChain ?? '');
92
+ const fromChainId = fromChainRes.ok ? fromChainRes.chainId : 0;
93
+ const toChainId = toChainRes.ok ? toChainRes.chainId : 0;
94
+ const seed = `${params.sourceChain}-${params.destinationChain}-${params.tokenIn}-${params.tokenOut}-${params.amountIn}`;
95
+ return {
96
+ provider: 'fallback',
97
+ routeId: deterministicId(seed),
98
+ timestamp: Date.now(),
99
+ route: {
100
+ fromChainId,
101
+ toChainId,
102
+ fromToken: params.tokenIn,
103
+ toToken: params.tokenOut,
104
+ steps: [],
105
+ tags: [],
106
+ },
107
+ fallback: reason,
108
+ };
109
+ }
110
+ /**
111
+ * Build a fallback status payload when the LI.FI SDK is unavailable.
112
+ *
113
+ * @param txHash - The transaction hash being queried (may be `undefined`)
114
+ * @param reason - Fallback metadata describing why the fallback was triggered
115
+ * @returns A complete {@link LifiStatusPayload} with `provider: 'fallback'`
116
+ */
117
+ export function buildFallbackStatus(txHash, reason) {
118
+ return {
119
+ provider: 'fallback',
120
+ timestamp: Date.now(),
121
+ status: {
122
+ state: txHash ? 'UNKNOWN' : 'NOT_AVAILABLE',
123
+ txHash,
124
+ },
125
+ fallback: reason,
126
+ };
127
+ }
128
+ //# sourceMappingURL=fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../../src/lifi/fallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Barrel export for the LI.FI integration submodule.
3
+ *
4
+ * Re-exports all public types, classes, and functions from the lifi submodule
5
+ * so consumers can import from a single entry point.
6
+ *
7
+ * @module
8
+ */
9
+ // LifiProvider class and config
10
+ export { LifiProvider } from './lifi-provider.js';
11
+ // Chain resolution
12
+ export { resolveChain, getSupportedChains } from './chain-map.js';
13
+ // Token resolution
14
+ export { resolveToken, getSupportedTokens } from './token-map.js';
15
+ // Unit conversion utilities
16
+ export { toBaseUnits, fromBaseUnits } from './utils.js';
17
+ // Fallback provider
18
+ export { buildFallbackQuote, buildFallbackRoute, buildFallbackStatus, deterministicId, FALLBACK_RATES, } from './fallback.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lifi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAalD,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGlE,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGlE,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExD,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,eAAe,CAAC"}