@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.
- package/README.md +128 -19
- package/dist/cjs/index.js +83 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lifi/chain-map.js +39 -0
- package/dist/cjs/lifi/chain-map.js.map +1 -0
- package/dist/cjs/lifi/fallback.js +135 -0
- package/dist/cjs/lifi/fallback.js.map +1 -0
- package/dist/cjs/lifi/index.js +34 -0
- package/dist/cjs/lifi/index.js.map +1 -0
- package/dist/cjs/lifi/lifi-provider.js +496 -0
- package/dist/cjs/lifi/lifi-provider.js.map +1 -0
- package/dist/cjs/lifi/token-map.js +75 -0
- package/dist/cjs/lifi/token-map.js.map +1 -0
- package/dist/cjs/lifi/types.js +3 -0
- package/dist/cjs/lifi/types.js.map +1 -0
- package/dist/cjs/lifi/utils.js +45 -0
- package/dist/cjs/lifi/utils.js.map +1 -0
- package/dist/esm/index.js +69 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lifi/chain-map.js +35 -0
- package/dist/esm/lifi/chain-map.js.map +1 -0
- package/dist/esm/lifi/fallback.js +128 -0
- package/dist/esm/lifi/fallback.js.map +1 -0
- package/dist/esm/lifi/index.js +19 -0
- package/dist/esm/lifi/index.js.map +1 -0
- package/dist/esm/lifi/lifi-provider.js +492 -0
- package/dist/esm/lifi/lifi-provider.js.map +1 -0
- package/dist/esm/lifi/token-map.js +71 -0
- package/dist/esm/lifi/token-map.js.map +1 -0
- package/dist/esm/lifi/types.js +2 -0
- package/dist/esm/lifi/types.js.map +1 -0
- package/dist/esm/lifi/utils.js +41 -0
- package/dist/esm/lifi/utils.js.map +1 -0
- package/dist/types/index.d.ts +58 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lifi/chain-map.d.ts +27 -0
- package/dist/types/lifi/chain-map.d.ts.map +1 -0
- package/dist/types/lifi/fallback.d.ts +58 -0
- package/dist/types/lifi/fallback.d.ts.map +1 -0
- package/dist/types/lifi/index.d.ts +18 -0
- package/dist/types/lifi/index.d.ts.map +1 -0
- package/dist/types/lifi/lifi-provider.d.ts +133 -0
- package/dist/types/lifi/lifi-provider.d.ts.map +1 -0
- package/dist/types/lifi/token-map.d.ts +34 -0
- package/dist/types/lifi/token-map.d.ts.map +1 -0
- package/dist/types/lifi/types.d.ts +52 -0
- package/dist/types/lifi/types.d.ts.map +1 -0
- package/dist/types/lifi/utils.d.ts +29 -0
- package/dist/types/lifi/utils.d.ts.map +1 -0
- 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
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA+BA,kBAAkB;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,8BAA8B;AAC9B,OAAO,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,oCAAoC;AACpC,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,iCAAiC;AACjC,OAAO,EACL,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAyBxF,0CAA0C;AAC1C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE1G,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,wDAAwD;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,8CAA8C;AAC9C,OAAO,EAAE,eAAe,EAAqD,MAAM,YAAY,CAAC;AAkBhG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,QAAQ;IACnB;;OAEG;IACa,OAAO,CAAgB;IAEvC;;OAEG;IACa,SAAS,CAAmB;IAE5C;;OAEG;IACa,KAAK,CAAc;IAEnC;;OAEG;IACa,KAAK,CAAa;IAElC;;;;;OAKG;IACa,MAAM,CAAkB;IAExC;;OAEG;IACc,MAAM,CAAa;IAEpC
|
|
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"}
|