@jack-kernel/sdk 1.1.0 → 1.2.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.
- 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/cjs/index.js
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
17
|
exports.JACK_SDK = exports.inferMapping = exports.mapStateIntent = exports.mapChannelStatus = exports.mapYellowEvent = exports.extractRevertReason = exports.mapErrorToReasonCode = exports.NitroliteClient = exports.YellowProvider = exports.JackClient = exports.AgentUtils = exports.CostTracker = exports.ExecutionTracker = exports.IntentManager = exports.validateIntentParams = exports.parseIntentParams = exports.serializeIntentParams = exports.getTypedData = exports.RetryError = exports.TimeoutError = exports.ValidationError = exports.APIError = exports.NetworkError = exports.JackError = exports.ExecutionStatus = void 0;
|
|
4
18
|
// Re-export enums
|
|
@@ -57,6 +71,8 @@ const costs_js_2 = require("./costs.js");
|
|
|
57
71
|
const agent_js_2 = require("./agent.js");
|
|
58
72
|
// Import Yellow provider and config for SDK integration
|
|
59
73
|
const yellow_provider_js_4 = require("./yellow/yellow-provider.js");
|
|
74
|
+
// Import LI.FI provider and types
|
|
75
|
+
const lifi_provider_js_1 = require("./lifi/lifi-provider.js");
|
|
60
76
|
// Import types and enums for use in this file
|
|
61
77
|
const types_js_2 = require("./types.js");
|
|
62
78
|
/**
|
|
@@ -111,6 +127,10 @@ class JACK_SDK {
|
|
|
111
127
|
* **Validates: Requirements 1.6, 1.7**
|
|
112
128
|
*/
|
|
113
129
|
yellow;
|
|
130
|
+
/**
|
|
131
|
+
* LI.FI provider - cross-chain quote and route discovery (optional)
|
|
132
|
+
*/
|
|
133
|
+
lifi;
|
|
114
134
|
/**
|
|
115
135
|
* Internal HTTP client (exposed for advanced use cases)
|
|
116
136
|
*/
|
|
@@ -123,7 +143,8 @@ class JACK_SDK {
|
|
|
123
143
|
* caching, and custom headers.
|
|
124
144
|
*
|
|
125
145
|
* @param config - Client configuration (baseUrl required, other options optional). Optionally includes
|
|
126
|
-
* a `yellow` field with YellowSDKConfig to enable Yellow Network integration
|
|
146
|
+
* a `yellow` field with YellowSDKConfig to enable Yellow Network integration, and/or a `lifi` field
|
|
147
|
+
* with LifiConfig to enable LI.FI integration.
|
|
127
148
|
* @throws ValidationError if configuration is invalid
|
|
128
149
|
* @throws Error if YellowProvider initialization fails when yellow config is provided
|
|
129
150
|
*
|
|
@@ -153,6 +174,13 @@ class JACK_SDK {
|
|
|
153
174
|
* }
|
|
154
175
|
* });
|
|
155
176
|
* console.log(sdk.yellow); // YellowProvider instance
|
|
177
|
+
*
|
|
178
|
+
* // With LI.FI integration
|
|
179
|
+
* const sdk = new JACK_SDK({
|
|
180
|
+
* baseUrl: 'https://api.jack.example',
|
|
181
|
+
* lifi: { integrator: 'jackkernel' }
|
|
182
|
+
* });
|
|
183
|
+
* console.log(sdk.lifi); // LifiProvider instance
|
|
156
184
|
* ```
|
|
157
185
|
*/
|
|
158
186
|
constructor(config) {
|
|
@@ -167,6 +195,10 @@ class JACK_SDK {
|
|
|
167
195
|
if (config.yellow !== undefined) {
|
|
168
196
|
this.yellow = new yellow_provider_js_4.YellowProvider(config.yellow, config.yellow.walletClient);
|
|
169
197
|
}
|
|
198
|
+
// Conditionally initialize LI.FI provider
|
|
199
|
+
if (config.lifi !== undefined) {
|
|
200
|
+
this.lifi = new lifi_provider_js_1.LifiProvider(config.lifi);
|
|
201
|
+
}
|
|
170
202
|
}
|
|
171
203
|
/**
|
|
172
204
|
* Convenience method: Submit a signed intent
|
|
@@ -292,6 +324,56 @@ class JACK_SDK {
|
|
|
292
324
|
getIntentTypedData(params) {
|
|
293
325
|
return this.intents.getTypedData(params);
|
|
294
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Convenience method: Get a LI.FI quote for intent params
|
|
329
|
+
*
|
|
330
|
+
* Delegates to LifiProvider.fetchQuote(). Throws if the SDK was not
|
|
331
|
+
* initialized with a LI.FI configuration.
|
|
332
|
+
*
|
|
333
|
+
* @param params - Intent parameters
|
|
334
|
+
* @returns Promise resolving to a normalized LifiQuotePayload
|
|
335
|
+
* @throws Error if LI.FI is not configured
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* ```typescript
|
|
339
|
+
* const sdk = new JACK_SDK({ baseUrl: '...', lifi: {} });
|
|
340
|
+
* const quote = await sdk.getLifiQuote(params);
|
|
341
|
+
* console.log('Quote:', quote.quote.amountOut);
|
|
342
|
+
* ```
|
|
343
|
+
*
|
|
344
|
+
* **Validates: Requirements 1.6, 1.7**
|
|
345
|
+
*/
|
|
346
|
+
async getLifiQuote(params) {
|
|
347
|
+
if (!this.lifi)
|
|
348
|
+
throw new Error('LI.FI not configured');
|
|
349
|
+
return this.lifi.fetchQuote(params);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Convenience method: Get a LI.FI route for intent params
|
|
353
|
+
*
|
|
354
|
+
* Delegates to LifiProvider.fetchRoute(). Throws if the SDK was not
|
|
355
|
+
* initialized with a LI.FI configuration.
|
|
356
|
+
*
|
|
357
|
+
* @param params - Intent parameters
|
|
358
|
+
* @returns Promise resolving to a normalized LifiRoutePayload
|
|
359
|
+
* @throws Error if LI.FI is not configured
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* const sdk = new JACK_SDK({ baseUrl: '...', lifi: {} });
|
|
364
|
+
* const route = await sdk.getLifiRoute(params);
|
|
365
|
+
* console.log('Route:', route.route?.steps);
|
|
366
|
+
* ```
|
|
367
|
+
*
|
|
368
|
+
* **Validates: Requirements 1.6, 1.7**
|
|
369
|
+
*/
|
|
370
|
+
async getLifiRoute(params) {
|
|
371
|
+
if (!this.lifi)
|
|
372
|
+
throw new Error('LI.FI not configured');
|
|
373
|
+
return this.lifi.fetchRoute(params);
|
|
374
|
+
}
|
|
295
375
|
}
|
|
296
376
|
exports.JACK_SDK = JACK_SDK;
|
|
377
|
+
// LI.FI integration
|
|
378
|
+
__exportStar(require("./lifi/index.js"), exports);
|
|
297
379
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ChainMap — pure mapping module for chain name → chain ID resolution.
|
|
4
|
+
*
|
|
5
|
+
* Lookups are case-insensitive via `name.toLowerCase()`.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveChain = resolveChain;
|
|
9
|
+
exports.getSupportedChains = getSupportedChains;
|
|
10
|
+
/** Default chain name → chain ID mappings. */
|
|
11
|
+
const CHAIN_MAP = {
|
|
12
|
+
arbitrum: 42161,
|
|
13
|
+
optimism: 10,
|
|
14
|
+
base: 8453,
|
|
15
|
+
polygon: 137,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a human-readable chain name to its numeric chain ID.
|
|
19
|
+
*
|
|
20
|
+
* @param name - Chain name (case-insensitive), e.g. "Arbitrum", "OPTIMISM"
|
|
21
|
+
* @returns A discriminated union: `{ ok: true, chainId }` on success,
|
|
22
|
+
* `{ ok: false, reason }` when the chain is not supported.
|
|
23
|
+
*/
|
|
24
|
+
function resolveChain(name) {
|
|
25
|
+
const chainId = CHAIN_MAP[name.toLowerCase()];
|
|
26
|
+
if (chainId !== undefined) {
|
|
27
|
+
return { ok: true, chainId };
|
|
28
|
+
}
|
|
29
|
+
return { ok: false, reason: `Unsupported chain: ${name}` };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Return a copy of the supported chain mappings.
|
|
33
|
+
*
|
|
34
|
+
* @returns A new `Record<string, number>` with all supported chain entries.
|
|
35
|
+
*/
|
|
36
|
+
function getSupportedChains() {
|
|
37
|
+
return { ...CHAIN_MAP };
|
|
38
|
+
}
|
|
39
|
+
//# 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;;AAqBH,oCAMC;AAOD,gDAEC;AA9BD,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,SAAgB,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,SAAgB,kBAAkB;IAChC,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FallbackProvider — generates estimated quotes, routes, and statuses when
|
|
4
|
+
* the LI.FI SDK is unavailable or returns errors.
|
|
5
|
+
*
|
|
6
|
+
* Ported from `apps/dashboard/src/lib/lifi.ts` for reuse across the SDK.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.FALLBACK_RATES = void 0;
|
|
12
|
+
exports.deterministicId = deterministicId;
|
|
13
|
+
exports.buildFallbackQuote = buildFallbackQuote;
|
|
14
|
+
exports.buildFallbackRoute = buildFallbackRoute;
|
|
15
|
+
exports.buildFallbackStatus = buildFallbackStatus;
|
|
16
|
+
const chain_map_js_1 = require("./chain-map.js");
|
|
17
|
+
/**
|
|
18
|
+
* Static exchange rates used when the LI.FI SDK is unavailable.
|
|
19
|
+
* Keys are formatted as `TOKENA:TOKENB` (upper-case).
|
|
20
|
+
*/
|
|
21
|
+
exports.FALLBACK_RATES = {
|
|
22
|
+
'USDC:WETH': 0.0004,
|
|
23
|
+
'USDC:ETH': 0.0004,
|
|
24
|
+
'ETH:USDC': 2500,
|
|
25
|
+
'WETH:USDC': 2500,
|
|
26
|
+
'ETH:WETH': 1,
|
|
27
|
+
'WETH:ETH': 1,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Produce a deterministic, human-readable ID from a seed string using the
|
|
31
|
+
* DJB2 hash algorithm.
|
|
32
|
+
*
|
|
33
|
+
* The result has the form `JK-LIFI-{hash}` where `{hash}` is the unsigned
|
|
34
|
+
* 32-bit DJB2 value encoded in upper-case base-36.
|
|
35
|
+
*
|
|
36
|
+
* @param seed - Arbitrary string to hash
|
|
37
|
+
* @returns A deterministic ID of the form `JK-LIFI-[A-Z0-9]+`
|
|
38
|
+
*/
|
|
39
|
+
function deterministicId(seed) {
|
|
40
|
+
let hash = 5381;
|
|
41
|
+
for (let i = 0; i < seed.length; i += 1) {
|
|
42
|
+
hash = (hash * 33) ^ seed.charCodeAt(i);
|
|
43
|
+
}
|
|
44
|
+
return `JK-LIFI-${(hash >>> 0).toString(36).toUpperCase()}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build a fallback quote payload when the LI.FI SDK is unavailable.
|
|
48
|
+
*
|
|
49
|
+
* Uses static exchange rates from {@link FALLBACK_RATES} to estimate the
|
|
50
|
+
* output amount. If the token pair is not in the static table the rate
|
|
51
|
+
* defaults to `1`.
|
|
52
|
+
*
|
|
53
|
+
* @param params - The original intent parameters
|
|
54
|
+
* @param reason - Fallback metadata describing why the fallback was triggered
|
|
55
|
+
* @returns A complete {@link LifiQuotePayload} with `provider: 'fallback'`
|
|
56
|
+
*/
|
|
57
|
+
function buildFallbackQuote(params, reason) {
|
|
58
|
+
const fromChainRes = (0, chain_map_js_1.resolveChain)(params.sourceChain ?? '');
|
|
59
|
+
const toChainRes = (0, chain_map_js_1.resolveChain)(params.destinationChain ?? '');
|
|
60
|
+
const fromChainId = fromChainRes.ok ? fromChainRes.chainId : 0;
|
|
61
|
+
const toChainId = toChainRes.ok ? toChainRes.chainId : 0;
|
|
62
|
+
const rateKey = `${params.tokenIn}:${params.tokenOut}`.toUpperCase();
|
|
63
|
+
const rate = exports.FALLBACK_RATES[rateKey] ?? 1;
|
|
64
|
+
const amountInNum = Number(params.amountIn || '0');
|
|
65
|
+
const amountOut = Number.isFinite(amountInNum)
|
|
66
|
+
? (amountInNum * rate).toFixed(6)
|
|
67
|
+
: params.amountIn;
|
|
68
|
+
const seed = `${params.sourceChain}-${params.destinationChain}-${params.tokenIn}-${params.tokenOut}-${params.amountIn}`;
|
|
69
|
+
return {
|
|
70
|
+
provider: 'fallback',
|
|
71
|
+
routeId: deterministicId(seed),
|
|
72
|
+
timestamp: Date.now(),
|
|
73
|
+
quote: {
|
|
74
|
+
amountIn: params.amountIn,
|
|
75
|
+
amountOut,
|
|
76
|
+
minAmountOut: params.minAmountOut,
|
|
77
|
+
fromChainId,
|
|
78
|
+
toChainId,
|
|
79
|
+
fromToken: params.tokenIn,
|
|
80
|
+
toToken: params.tokenOut,
|
|
81
|
+
estimatedGasUsd: '0',
|
|
82
|
+
},
|
|
83
|
+
fallback: reason,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build a fallback route payload when the LI.FI SDK is unavailable.
|
|
88
|
+
*
|
|
89
|
+
* The route payload contains no execution steps but preserves the chain and
|
|
90
|
+
* token metadata so callers can still display useful information.
|
|
91
|
+
*
|
|
92
|
+
* @param params - The original intent parameters
|
|
93
|
+
* @param reason - Fallback metadata describing why the fallback was triggered
|
|
94
|
+
* @returns A complete {@link LifiRoutePayload} with `provider: 'fallback'`
|
|
95
|
+
*/
|
|
96
|
+
function buildFallbackRoute(params, reason) {
|
|
97
|
+
const fromChainRes = (0, chain_map_js_1.resolveChain)(params.sourceChain ?? '');
|
|
98
|
+
const toChainRes = (0, chain_map_js_1.resolveChain)(params.destinationChain ?? '');
|
|
99
|
+
const fromChainId = fromChainRes.ok ? fromChainRes.chainId : 0;
|
|
100
|
+
const toChainId = toChainRes.ok ? toChainRes.chainId : 0;
|
|
101
|
+
const seed = `${params.sourceChain}-${params.destinationChain}-${params.tokenIn}-${params.tokenOut}-${params.amountIn}`;
|
|
102
|
+
return {
|
|
103
|
+
provider: 'fallback',
|
|
104
|
+
routeId: deterministicId(seed),
|
|
105
|
+
timestamp: Date.now(),
|
|
106
|
+
route: {
|
|
107
|
+
fromChainId,
|
|
108
|
+
toChainId,
|
|
109
|
+
fromToken: params.tokenIn,
|
|
110
|
+
toToken: params.tokenOut,
|
|
111
|
+
steps: [],
|
|
112
|
+
tags: [],
|
|
113
|
+
},
|
|
114
|
+
fallback: reason,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Build a fallback status payload when the LI.FI SDK is unavailable.
|
|
119
|
+
*
|
|
120
|
+
* @param txHash - The transaction hash being queried (may be `undefined`)
|
|
121
|
+
* @param reason - Fallback metadata describing why the fallback was triggered
|
|
122
|
+
* @returns A complete {@link LifiStatusPayload} with `provider: 'fallback'`
|
|
123
|
+
*/
|
|
124
|
+
function buildFallbackStatus(txHash, reason) {
|
|
125
|
+
return {
|
|
126
|
+
provider: 'fallback',
|
|
127
|
+
timestamp: Date.now(),
|
|
128
|
+
status: {
|
|
129
|
+
state: txHash ? 'UNKNOWN' : 'NOT_AVAILABLE',
|
|
130
|
+
txHash,
|
|
131
|
+
},
|
|
132
|
+
fallback: reason,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# 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,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Barrel export for the LI.FI integration submodule.
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all public types, classes, and functions from the lifi submodule
|
|
6
|
+
* so consumers can import from a single entry point.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.FALLBACK_RATES = exports.deterministicId = exports.buildFallbackStatus = exports.buildFallbackRoute = exports.buildFallbackQuote = exports.fromBaseUnits = exports.toBaseUnits = exports.getSupportedTokens = exports.resolveToken = exports.getSupportedChains = exports.resolveChain = exports.LifiProvider = void 0;
|
|
12
|
+
// LifiProvider class and config
|
|
13
|
+
var lifi_provider_js_1 = require("./lifi-provider.js");
|
|
14
|
+
Object.defineProperty(exports, "LifiProvider", { enumerable: true, get: function () { return lifi_provider_js_1.LifiProvider; } });
|
|
15
|
+
// Chain resolution
|
|
16
|
+
var chain_map_js_1 = require("./chain-map.js");
|
|
17
|
+
Object.defineProperty(exports, "resolveChain", { enumerable: true, get: function () { return chain_map_js_1.resolveChain; } });
|
|
18
|
+
Object.defineProperty(exports, "getSupportedChains", { enumerable: true, get: function () { return chain_map_js_1.getSupportedChains; } });
|
|
19
|
+
// Token resolution
|
|
20
|
+
var token_map_js_1 = require("./token-map.js");
|
|
21
|
+
Object.defineProperty(exports, "resolveToken", { enumerable: true, get: function () { return token_map_js_1.resolveToken; } });
|
|
22
|
+
Object.defineProperty(exports, "getSupportedTokens", { enumerable: true, get: function () { return token_map_js_1.getSupportedTokens; } });
|
|
23
|
+
// Unit conversion utilities
|
|
24
|
+
var utils_js_1 = require("./utils.js");
|
|
25
|
+
Object.defineProperty(exports, "toBaseUnits", { enumerable: true, get: function () { return utils_js_1.toBaseUnits; } });
|
|
26
|
+
Object.defineProperty(exports, "fromBaseUnits", { enumerable: true, get: function () { return utils_js_1.fromBaseUnits; } });
|
|
27
|
+
// Fallback provider
|
|
28
|
+
var fallback_js_1 = require("./fallback.js");
|
|
29
|
+
Object.defineProperty(exports, "buildFallbackQuote", { enumerable: true, get: function () { return fallback_js_1.buildFallbackQuote; } });
|
|
30
|
+
Object.defineProperty(exports, "buildFallbackRoute", { enumerable: true, get: function () { return fallback_js_1.buildFallbackRoute; } });
|
|
31
|
+
Object.defineProperty(exports, "buildFallbackStatus", { enumerable: true, get: function () { return fallback_js_1.buildFallbackStatus; } });
|
|
32
|
+
Object.defineProperty(exports, "deterministicId", { enumerable: true, get: function () { return fallback_js_1.deterministicId; } });
|
|
33
|
+
Object.defineProperty(exports, "FALLBACK_RATES", { enumerable: true, get: function () { return fallback_js_1.FALLBACK_RATES; } });
|
|
34
|
+
//# 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,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AAarB,mBAAmB;AACnB,+CAAkE;AAAzD,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAGzC,mBAAmB;AACnB,+CAAkE;AAAzD,4GAAA,YAAY,OAAA;AAAE,kHAAA,kBAAkB,OAAA;AAGzC,4BAA4B;AAC5B,uCAAwD;AAA/C,uGAAA,WAAW,OAAA;AAAE,yGAAA,aAAa,OAAA;AAEnC,oBAAoB;AACpB,6CAMuB;AALrB,iHAAA,kBAAkB,OAAA;AAClB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,8GAAA,eAAe,OAAA;AACf,6GAAA,cAAc,OAAA"}
|