@lifi/sdk 4.0.0-alpha.7 → 4.0.0-alpha.8
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/actions/index.d.ts +3 -1
- package/dist/cjs/actions/index.js +2 -0
- package/dist/cjs/actions/index.js.map +1 -1
- package/dist/cjs/actions/patchContractCalls.d.ts +10 -0
- package/dist/cjs/actions/patchContractCalls.js +16 -0
- package/dist/cjs/actions/patchContractCalls.js.map +1 -0
- package/dist/cjs/core/checkBalance.js +3 -3
- package/dist/cjs/core/checkBalance.js.map +1 -1
- package/dist/cjs/core/utils.d.ts +1 -0
- package/dist/cjs/errors/constants.d.ts +4 -2
- package/dist/cjs/errors/constants.js +2 -0
- package/dist/cjs/errors/constants.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.js +10 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/core.d.ts +24 -4
- package/dist/cjs/utils/convertQuoteToRoute.d.ts +6 -1
- package/dist/cjs/utils/convertQuoteToRoute.js +73 -5
- package/dist/cjs/utils/convertQuoteToRoute.js.map +1 -1
- package/dist/cjs/utils/formatUnits.d.ts +1 -0
- package/dist/cjs/utils/formatUnits.js +18 -0
- package/dist/cjs/utils/formatUnits.js.map +1 -0
- package/dist/cjs/utils/isHex.d.ts +4 -0
- package/dist/cjs/utils/isHex.js +13 -0
- package/dist/cjs/utils/isHex.js.map +1 -0
- package/dist/cjs/utils/parseUnits.d.ts +1 -0
- package/dist/cjs/utils/parseUnits.js +44 -0
- package/dist/cjs/utils/parseUnits.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/actions/index.d.ts +9 -1
- package/dist/esm/actions/index.js +2 -0
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/actions/patchContractCalls.d.ts +10 -0
- package/dist/esm/actions/patchContractCalls.js +12 -0
- package/dist/esm/actions/patchContractCalls.js.map +1 -0
- package/dist/esm/core/checkBalance.js +1 -1
- package/dist/esm/core/checkBalance.js.map +1 -1
- package/dist/esm/core/utils.d.ts +1 -0
- package/dist/esm/errors/constants.d.ts +4 -2
- package/dist/esm/errors/constants.js +2 -0
- package/dist/esm/errors/constants.js.map +1 -1
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/core.d.ts +24 -4
- package/dist/esm/utils/convertQuoteToRoute.d.ts +11 -3
- package/dist/esm/utils/convertQuoteToRoute.js +76 -7
- package/dist/esm/utils/convertQuoteToRoute.js.map +1 -1
- package/dist/esm/utils/formatUnits.d.ts +4 -0
- package/dist/esm/utils/formatUnits.js +18 -0
- package/dist/esm/utils/formatUnits.js.map +1 -0
- package/dist/esm/utils/isHex.d.ts +4 -0
- package/dist/esm/utils/isHex.js +10 -0
- package/dist/esm/utils/isHex.js.map +1 -0
- package/dist/esm/utils/parseUnits.d.ts +4 -0
- package/dist/esm/utils/parseUnits.js +46 -0
- package/dist/esm/utils/parseUnits.js.map +1 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/actions/index.d.ts +9 -1
- package/dist/types/actions/index.d.ts.map +1 -1
- package/dist/types/actions/patchContractCalls.d.ts +11 -0
- package/dist/types/actions/patchContractCalls.d.ts.map +1 -0
- package/dist/types/core/checkBalance.d.ts.map +1 -1
- package/dist/types/core/utils.d.ts +1 -0
- package/dist/types/core/utils.d.ts.map +1 -1
- package/dist/types/errors/constants.d.ts +4 -2
- package/dist/types/errors/constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/core.d.ts +24 -4
- package/dist/types/types/core.d.ts.map +1 -1
- package/dist/types/utils/convertQuoteToRoute.d.ts +11 -3
- package/dist/types/utils/convertQuoteToRoute.d.ts.map +1 -1
- package/dist/types/utils/formatUnits.d.ts +5 -0
- package/dist/types/utils/formatUnits.d.ts.map +1 -0
- package/dist/types/utils/isHex.d.ts +5 -0
- package/dist/types/utils/isHex.d.ts.map +1 -0
- package/dist/types/utils/parseUnits.d.ts +5 -0
- package/dist/types/utils/parseUnits.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -3
- package/src/actions/index.ts +18 -0
- package/src/actions/patchContractCalls.ts +30 -0
- package/src/core/checkBalance.ts +1 -1
- package/src/errors/constants.ts +2 -0
- package/src/index.ts +8 -3
- package/src/types/core.ts +30 -4
- package/src/utils/convertQuoteToRoute.ts +117 -8
- package/src/utils/formatUnits.ts +22 -0
- package/src/utils/isHex.ts +14 -0
- package/src/utils/parseUnits.ts +50 -0
- package/src/version.ts +1 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export * from '@lifi/types';
|
|
2
|
-
export type { Client } from 'viem';
|
|
3
|
-
export { formatUnits, isHex, parseUnits } from 'viem/utils';
|
|
4
2
|
export { getChains } from './actions/getChains.js';
|
|
5
3
|
export { getConnections } from './actions/getConnections.js';
|
|
6
4
|
export { getContractCallsQuote } from './actions/getContractCallsQuote.js';
|
|
@@ -21,6 +19,7 @@ export { getTools } from './actions/getTools.js';
|
|
|
21
19
|
export { getTransactionHistory } from './actions/getTransactionHistory.js';
|
|
22
20
|
export { getWalletBalances } from './actions/getWalletBalances.js';
|
|
23
21
|
export { actions } from './actions/index.js';
|
|
22
|
+
export { patchContractCalls } from './actions/patchContractCalls.js';
|
|
24
23
|
export { relayTransaction } from './actions/relayTransaction.js';
|
|
25
24
|
export { createClient } from './client/createClient.js';
|
|
26
25
|
export { BaseStepExecutor } from './core/BaseStepExecutor.js';
|
|
@@ -35,10 +34,13 @@ export { ErrorMessage, ErrorName, LiFiErrorCode } from './errors/constants.js';
|
|
|
35
34
|
export { BalanceError, ProviderError, RPCError, ServerError, TransactionError, UnknownError, ValidationError, } from './errors/errors.js';
|
|
36
35
|
export { HTTPError } from './errors/httpError.js';
|
|
37
36
|
export { SDKError } from './errors/SDKError.js';
|
|
38
|
-
export type { AcceptExchangeRateUpdateHook, AcceptSlippageUpdateHook, AcceptSlippageUpdateHookParams, ExchangeRateUpdateParams, Execution, ExecutionOptions, ExecutionStatus, InteractionSettings, LiFiStepExtended, Process, ProcessStatus, ProcessType, RequestInterceptor, RouteExecutionData, RouteExecutionDataDictionary, RouteExecutionDictionary, RouteExtended, RPCUrls, SDKBaseConfig, SDKClient, SDKConfig, SDKProvider, StepExecutor, StepExecutorOptions, StepExtended,
|
|
37
|
+
export type { AcceptExchangeRateUpdateHook, AcceptSlippageUpdateHook, AcceptSlippageUpdateHookParams, ContractCallParams, ContractTool, ExchangeRateUpdateParams, Execution, ExecutionOptions, ExecutionStatus, GetContractCallsHook, GetContractCallsResult, InteractionSettings, LiFiStepExtended, Process, ProcessStatus, ProcessType, RequestInterceptor, RouteExecutionData, RouteExecutionDataDictionary, RouteExecutionDictionary, RouteExtended, RPCUrls, SDKBaseConfig, SDKClient, SDKConfig, SDKProvider, StepExecutor, StepExecutorOptions, StepExtended, TransactionMethodType, TransactionParameters, TransactionRequestParameters, TransactionRequestUpdateHook, UpdateRouteHook, } from './types/core.js';
|
|
39
38
|
export { checkPackageUpdates } from './utils/checkPackageUpdates.js';
|
|
40
39
|
export { convertQuoteToRoute } from './utils/convertQuoteToRoute.js';
|
|
41
40
|
export { fetchTxErrorDetails } from './utils/fetchTxErrorDetails.js';
|
|
41
|
+
export { formatUnits } from './utils/formatUnits.js';
|
|
42
|
+
export { isHex } from './utils/isHex.js';
|
|
43
|
+
export { parseUnits } from './utils/parseUnits.js';
|
|
42
44
|
export { sleep } from './utils/sleep.js';
|
|
43
45
|
export { waitForResult } from './utils/waitForResult.js';
|
|
44
46
|
export { withDedupe } from './utils/withDedupe.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { ChainId, ChainType, CoinKey, ExtendedChain, FeeCost, GasCost, LiFiStep, Route, RouteOptions, Step, Substatus, Token, TokenAmount } from '@lifi/types';
|
|
2
|
-
import type { Client } from 'viem';
|
|
1
|
+
import type { ChainId, ChainType, CoinKey, ContractCall, ExtendedChain, FeeCost, GasCost, LiFiStep, Route, RouteOptions, Step, Substatus, Token, TokenAmount } from '@lifi/types';
|
|
3
2
|
import type { ExtendedRequestInit } from './request.js';
|
|
4
3
|
export type RequestInterceptor = (request: ExtendedRequestInit) => ExtendedRequestInit | Promise<ExtendedRequestInit>;
|
|
5
4
|
export interface SDKBaseConfig {
|
|
@@ -87,7 +86,6 @@ export interface TransactionRequestParameters extends TransactionParameters {
|
|
|
87
86
|
requestType: 'approve' | 'transaction';
|
|
88
87
|
}
|
|
89
88
|
export type TransactionRequestUpdateHook = (updatedTxRequest: TransactionRequestParameters) => Promise<TransactionParameters>;
|
|
90
|
-
export type SwitchChainHook = (chainId: number) => Promise<Client | undefined>;
|
|
91
89
|
export interface AcceptSlippageUpdateHookParams {
|
|
92
90
|
toToken: Token;
|
|
93
91
|
oldToAmount: string;
|
|
@@ -102,11 +100,33 @@ export interface ExchangeRateUpdateParams {
|
|
|
102
100
|
newToAmount: string;
|
|
103
101
|
}
|
|
104
102
|
export type AcceptExchangeRateUpdateHook = (params: ExchangeRateUpdateParams) => Promise<boolean | undefined>;
|
|
103
|
+
export interface ContractCallParams {
|
|
104
|
+
fromChainId: number;
|
|
105
|
+
toChainId: number;
|
|
106
|
+
fromTokenAddress: string;
|
|
107
|
+
toTokenAddress: string;
|
|
108
|
+
fromAddress: string;
|
|
109
|
+
toAddress?: string;
|
|
110
|
+
fromAmount: bigint;
|
|
111
|
+
toAmount: bigint;
|
|
112
|
+
slippage?: number;
|
|
113
|
+
}
|
|
114
|
+
export interface ContractTool {
|
|
115
|
+
name: string;
|
|
116
|
+
logoURI: string;
|
|
117
|
+
}
|
|
118
|
+
export interface GetContractCallsResult {
|
|
119
|
+
contractCalls: ContractCall[];
|
|
120
|
+
patcher?: boolean;
|
|
121
|
+
contractTool?: ContractTool;
|
|
122
|
+
}
|
|
123
|
+
export type GetContractCallsHook = (params: ContractCallParams) => Promise<GetContractCallsResult>;
|
|
105
124
|
export interface ExecutionOptions {
|
|
106
125
|
acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook;
|
|
107
|
-
switchChainHook?: SwitchChainHook;
|
|
108
126
|
updateRouteHook?: UpdateRouteHook;
|
|
109
127
|
updateTransactionRequestHook?: TransactionRequestUpdateHook;
|
|
128
|
+
getContractCalls?: GetContractCallsHook;
|
|
129
|
+
adjustZeroOutputFromPreviousStep?: boolean;
|
|
110
130
|
executeInBackground?: boolean;
|
|
111
131
|
disableMessageSigning?: boolean;
|
|
112
132
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,OAAO,EACP,aAAa,EACb,OAAO,EACP,OAAO,EACP,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,KAAK,EACL,WAAW,EACZ,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/types/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import type { LiFiStep, Route } from '@lifi/types';
|
|
2
|
+
interface ConvertQuoteToRouteOptions {
|
|
3
|
+
/**
|
|
4
|
+
* When true, if the quote has zero output values (toAmount, toAmountMin, toAmountUSD),
|
|
5
|
+
* use the values from the previous included step that has non-zero output.
|
|
6
|
+
*/
|
|
7
|
+
adjustZeroOutputFromPreviousStep?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function formatTokenPrice(amount?: string | bigint, price?: string, decimals?: number): number;
|
|
2
10
|
/**
|
|
3
11
|
* Converts a quote to Route
|
|
4
12
|
* @param quote - Step returned from the quote endpoint.
|
|
5
|
-
* @param
|
|
6
|
-
* @param chainId
|
|
13
|
+
* @param options - Optional configuration for handling edge cases.
|
|
7
14
|
* @returns - The route to be executed.
|
|
8
15
|
* @throws {BaseError} Throws a ValidationError if the step has missing values.
|
|
9
16
|
*/
|
|
10
|
-
export declare const convertQuoteToRoute: (quote: LiFiStep) => Route;
|
|
17
|
+
export declare const convertQuoteToRoute: (quote: LiFiStep, options?: ConvertQuoteToRouteOptions) => Route;
|
|
18
|
+
export {};
|
|
11
19
|
//# sourceMappingURL=convertQuoteToRoute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertQuoteToRoute.d.ts","sourceRoot":"","sources":["../../../src/utils/convertQuoteToRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"convertQuoteToRoute.d.ts","sourceRoot":"","sources":["../../../src/utils/convertQuoteToRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAQ,MAAM,aAAa,CAAA;AAKxD,UAAU,0BAA0B;IAClC;;;OAGG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAA;CAC3C;AAmDD,wBAAgB,gBAAgB,CAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EACxB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,UAelB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,QAAQ,EACf,UAAU,0BAA0B,KACnC,KA6DF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatUnits.d.ts","sourceRoot":"","sources":["../../../src/utils/formatUnits.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAkB1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isHex.d.ts","sourceRoot":"","sources":["../../../src/utils/isHex.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,EAAE,CAAA;AAE/B,wBAAgB,KAAK,CACnB,KAAK,EAAE,OAAO,EACd,EAAE,MAAa,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GACvD,KAAK,IAAI,GAAG,CAQd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseUnits.d.ts","sourceRoot":"","sources":["../../../src/utils/parseUnits.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UA8CzD"}
|
package/dist/types/version.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/sdk",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.8",
|
|
4
4
|
"description": "LI.FI SDK for Any-to-Any Cross-Chain-Swap",
|
|
5
5
|
"homepage": "https://github.com/lifinance/sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -28,8 +28,7 @@
|
|
|
28
28
|
"./package.json": "./package.json"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@lifi/types": "^17.
|
|
32
|
-
"viem": "^2.41.2"
|
|
31
|
+
"@lifi/types": "^17.56.0"
|
|
33
32
|
},
|
|
34
33
|
"publishConfig": {
|
|
35
34
|
"access": "public"
|
package/src/actions/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
GasRecommendationRequest,
|
|
11
11
|
GasRecommendationResponse,
|
|
12
12
|
LiFiStep,
|
|
13
|
+
PatchCallDataRequest,
|
|
13
14
|
RelayRequest,
|
|
14
15
|
RelayResponseData,
|
|
15
16
|
RelayStatusRequest,
|
|
@@ -55,6 +56,10 @@ import { getTokens } from './getTokens.js'
|
|
|
55
56
|
import { getTools } from './getTools.js'
|
|
56
57
|
import { getTransactionHistory } from './getTransactionHistory.js'
|
|
57
58
|
import { getWalletBalances } from './getWalletBalances.js'
|
|
59
|
+
import {
|
|
60
|
+
type PatchContractCallsResponse,
|
|
61
|
+
patchContractCalls,
|
|
62
|
+
} from './patchContractCalls.js'
|
|
58
63
|
import { relayTransaction } from './relayTransaction.js'
|
|
59
64
|
|
|
60
65
|
export type Actions = {
|
|
@@ -287,6 +292,17 @@ export type Actions = {
|
|
|
287
292
|
params: RelayRequest,
|
|
288
293
|
options?: RequestOptions
|
|
289
294
|
) => Promise<RelayResponseData>
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Patch contract calls
|
|
298
|
+
* @param params - The configuration for the patch contract calls request
|
|
299
|
+
* @param options - Request options
|
|
300
|
+
* @returns Patched contract calls
|
|
301
|
+
*/
|
|
302
|
+
patchContractCalls: (
|
|
303
|
+
params: PatchCallDataRequest,
|
|
304
|
+
options?: RequestOptions
|
|
305
|
+
) => Promise<PatchContractCallsResponse[]>
|
|
290
306
|
}
|
|
291
307
|
|
|
292
308
|
export function actions(client: SDKClient): Actions {
|
|
@@ -325,5 +341,7 @@ export function actions(client: SDKClient): Actions {
|
|
|
325
341
|
getWalletBalances(client, walletAddress, options),
|
|
326
342
|
relayTransaction: (params, options) =>
|
|
327
343
|
relayTransaction(client, params, options),
|
|
344
|
+
patchContractCalls: (params, options) =>
|
|
345
|
+
patchContractCalls(client, params, options),
|
|
328
346
|
}
|
|
329
347
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PatchCallDataRequest, RequestOptions } from '@lifi/types'
|
|
2
|
+
import type { SDKClient } from '../types/core.js'
|
|
3
|
+
import { request } from '../utils/request.js'
|
|
4
|
+
|
|
5
|
+
export interface PatchContractCallsResponse {
|
|
6
|
+
target: string
|
|
7
|
+
value: bigint
|
|
8
|
+
callData: string
|
|
9
|
+
allowFailure: boolean
|
|
10
|
+
isDelegateCall: boolean
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const patchContractCalls = async (
|
|
14
|
+
client: SDKClient,
|
|
15
|
+
params: PatchCallDataRequest,
|
|
16
|
+
options?: RequestOptions
|
|
17
|
+
): Promise<PatchContractCallsResponse[]> => {
|
|
18
|
+
return await request<PatchContractCallsResponse[]>(
|
|
19
|
+
client.config,
|
|
20
|
+
`${client.config.apiUrl}/patcher`,
|
|
21
|
+
{
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: {
|
|
24
|
+
'Content-Type': 'application/json',
|
|
25
|
+
},
|
|
26
|
+
body: JSON.stringify(params),
|
|
27
|
+
signal: options?.signal,
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
}
|
package/src/core/checkBalance.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { LiFiStep } from '@lifi/types'
|
|
2
|
-
import { formatUnits } from 'viem'
|
|
3
2
|
import { getTokenBalance } from '../actions/getTokenBalance.js'
|
|
4
3
|
import { BalanceError } from '../errors/errors.js'
|
|
5
4
|
import type { SDKClient } from '../types/core.js'
|
|
5
|
+
import { formatUnits } from '../utils/formatUnits.js'
|
|
6
6
|
import { sleep } from '../utils/sleep.js'
|
|
7
7
|
|
|
8
8
|
export const checkBalance = async (
|
package/src/errors/constants.ts
CHANGED
|
@@ -9,6 +9,7 @@ export enum ErrorName {
|
|
|
9
9
|
UnknownError = 'UnknownError',
|
|
10
10
|
SlippageError = 'SlippageError',
|
|
11
11
|
HTTPError = 'HTTPError',
|
|
12
|
+
ConfigError = 'ConfigError',
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export type ErrorCode = LiFiErrorCode
|
|
@@ -40,6 +41,7 @@ export enum LiFiErrorCode {
|
|
|
40
41
|
RateLimitExceeded = 1023,
|
|
41
42
|
ThirdPartyError = 1024,
|
|
42
43
|
InsufficientGas = 1025,
|
|
44
|
+
ConfigError = 1026,
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
export enum ErrorMessage {
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// biome-ignore lint/performance/noBarrelFile: module entrypoint
|
|
2
2
|
// biome-ignore lint/performance/noReExportAll: types
|
|
3
3
|
export * from '@lifi/types'
|
|
4
|
-
export type { Client } from 'viem'
|
|
5
|
-
export { formatUnits, isHex, parseUnits } from 'viem/utils'
|
|
6
4
|
export { getChains } from './actions/getChains.js'
|
|
7
5
|
export { getConnections } from './actions/getConnections.js'
|
|
8
6
|
export { getContractCallsQuote } from './actions/getContractCallsQuote.js'
|
|
@@ -23,6 +21,7 @@ export { getTools } from './actions/getTools.js'
|
|
|
23
21
|
export { getTransactionHistory } from './actions/getTransactionHistory.js'
|
|
24
22
|
export { getWalletBalances } from './actions/getWalletBalances.js'
|
|
25
23
|
export { actions } from './actions/index.js'
|
|
24
|
+
export { patchContractCalls } from './actions/patchContractCalls.js'
|
|
26
25
|
export { relayTransaction } from './actions/relayTransaction.js'
|
|
27
26
|
export { createClient } from './client/createClient.js'
|
|
28
27
|
export { BaseStepExecutor } from './core/BaseStepExecutor.js'
|
|
@@ -56,10 +55,14 @@ export type {
|
|
|
56
55
|
AcceptExchangeRateUpdateHook,
|
|
57
56
|
AcceptSlippageUpdateHook,
|
|
58
57
|
AcceptSlippageUpdateHookParams,
|
|
58
|
+
ContractCallParams,
|
|
59
|
+
ContractTool,
|
|
59
60
|
ExchangeRateUpdateParams,
|
|
60
61
|
Execution,
|
|
61
62
|
ExecutionOptions,
|
|
62
63
|
ExecutionStatus,
|
|
64
|
+
GetContractCallsHook,
|
|
65
|
+
GetContractCallsResult,
|
|
63
66
|
InteractionSettings,
|
|
64
67
|
LiFiStepExtended,
|
|
65
68
|
Process,
|
|
@@ -78,7 +81,6 @@ export type {
|
|
|
78
81
|
StepExecutor,
|
|
79
82
|
StepExecutorOptions,
|
|
80
83
|
StepExtended,
|
|
81
|
-
SwitchChainHook,
|
|
82
84
|
TransactionMethodType,
|
|
83
85
|
TransactionParameters,
|
|
84
86
|
TransactionRequestParameters,
|
|
@@ -88,6 +90,9 @@ export type {
|
|
|
88
90
|
export { checkPackageUpdates } from './utils/checkPackageUpdates.js'
|
|
89
91
|
export { convertQuoteToRoute } from './utils/convertQuoteToRoute.js'
|
|
90
92
|
export { fetchTxErrorDetails } from './utils/fetchTxErrorDetails.js'
|
|
93
|
+
export { formatUnits } from './utils/formatUnits.js'
|
|
94
|
+
export { isHex } from './utils/isHex.js'
|
|
95
|
+
export { parseUnits } from './utils/parseUnits.js'
|
|
91
96
|
export { sleep } from './utils/sleep.js'
|
|
92
97
|
export { waitForResult } from './utils/waitForResult.js'
|
|
93
98
|
export { withDedupe } from './utils/withDedupe.js'
|
package/src/types/core.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type {
|
|
|
2
2
|
ChainId,
|
|
3
3
|
ChainType,
|
|
4
4
|
CoinKey,
|
|
5
|
+
ContractCall,
|
|
5
6
|
ExtendedChain,
|
|
6
7
|
FeeCost,
|
|
7
8
|
GasCost,
|
|
@@ -13,7 +14,6 @@ import type {
|
|
|
13
14
|
Token,
|
|
14
15
|
TokenAmount,
|
|
15
16
|
} from '@lifi/types'
|
|
16
|
-
import type { Client } from 'viem'
|
|
17
17
|
import type { ExtendedRequestInit } from './request.js'
|
|
18
18
|
|
|
19
19
|
export type RequestInterceptor = (
|
|
@@ -139,8 +139,6 @@ export type TransactionRequestUpdateHook = (
|
|
|
139
139
|
updatedTxRequest: TransactionRequestParameters
|
|
140
140
|
) => Promise<TransactionParameters>
|
|
141
141
|
|
|
142
|
-
export type SwitchChainHook = (chainId: number) => Promise<Client | undefined>
|
|
143
|
-
|
|
144
142
|
export interface AcceptSlippageUpdateHookParams {
|
|
145
143
|
toToken: Token
|
|
146
144
|
oldToAmount: string
|
|
@@ -163,11 +161,39 @@ export type AcceptExchangeRateUpdateHook = (
|
|
|
163
161
|
params: ExchangeRateUpdateParams
|
|
164
162
|
) => Promise<boolean | undefined>
|
|
165
163
|
|
|
164
|
+
export interface ContractCallParams {
|
|
165
|
+
fromChainId: number
|
|
166
|
+
toChainId: number
|
|
167
|
+
fromTokenAddress: string
|
|
168
|
+
toTokenAddress: string
|
|
169
|
+
fromAddress: string
|
|
170
|
+
toAddress?: string
|
|
171
|
+
fromAmount: bigint
|
|
172
|
+
toAmount: bigint
|
|
173
|
+
slippage?: number
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface ContractTool {
|
|
177
|
+
name: string
|
|
178
|
+
logoURI: string
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface GetContractCallsResult {
|
|
182
|
+
contractCalls: ContractCall[]
|
|
183
|
+
patcher?: boolean
|
|
184
|
+
contractTool?: ContractTool
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export type GetContractCallsHook = (
|
|
188
|
+
params: ContractCallParams
|
|
189
|
+
) => Promise<GetContractCallsResult>
|
|
190
|
+
|
|
166
191
|
export interface ExecutionOptions {
|
|
167
192
|
acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook
|
|
168
|
-
switchChainHook?: SwitchChainHook
|
|
169
193
|
updateRouteHook?: UpdateRouteHook
|
|
170
194
|
updateTransactionRequestHook?: TransactionRequestUpdateHook
|
|
195
|
+
getContractCalls?: GetContractCallsHook
|
|
196
|
+
adjustZeroOutputFromPreviousStep?: boolean
|
|
171
197
|
executeInBackground?: boolean
|
|
172
198
|
disableMessageSigning?: boolean
|
|
173
199
|
/**
|
|
@@ -1,23 +1,132 @@
|
|
|
1
|
-
import type { LiFiStep, Route } from '@lifi/types'
|
|
1
|
+
import type { LiFiStep, Route, Step } from '@lifi/types'
|
|
2
2
|
import { ValidationError } from '../errors/errors.js'
|
|
3
3
|
import { SDKError } from '../errors/SDKError.js'
|
|
4
|
+
import { formatUnits } from './formatUnits.js'
|
|
5
|
+
|
|
6
|
+
interface ConvertQuoteToRouteOptions {
|
|
7
|
+
/**
|
|
8
|
+
* When true, if the quote has zero output values (toAmount, toAmountMin, toAmountUSD),
|
|
9
|
+
* use the values from the previous included step that has non-zero output.
|
|
10
|
+
*/
|
|
11
|
+
adjustZeroOutputFromPreviousStep?: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const parseBigInt = (value: string | undefined): bigint => {
|
|
15
|
+
if (!value) {
|
|
16
|
+
return 0n
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
return BigInt(value)
|
|
20
|
+
} catch {
|
|
21
|
+
return 0n
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const parseNumber = (value: string | undefined): number => {
|
|
26
|
+
if (!value) {
|
|
27
|
+
return 0
|
|
28
|
+
}
|
|
29
|
+
const parsed = Number(value)
|
|
30
|
+
return Number.isNaN(parsed) ? 0 : parsed
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const isZeroOutput = (
|
|
34
|
+
toAmount: string,
|
|
35
|
+
toAmountMin: string,
|
|
36
|
+
toAmountUSD?: string
|
|
37
|
+
): boolean => {
|
|
38
|
+
return (
|
|
39
|
+
!parseBigInt(toAmount) &&
|
|
40
|
+
!parseBigInt(toAmountMin) &&
|
|
41
|
+
!parseNumber(toAmountUSD)
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const hasNonZeroOutput = (step: Step): boolean => {
|
|
46
|
+
return (
|
|
47
|
+
!!parseBigInt(step.estimate.toAmount) ||
|
|
48
|
+
!!parseBigInt(step.estimate.toAmountMin)
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const findPreviousNonZeroStep = (steps: Step[]): Step | undefined => {
|
|
53
|
+
// Find the last step that has non-zero output (the step before the zero output step)
|
|
54
|
+
for (let i = steps.length - 1; i >= 0; i--) {
|
|
55
|
+
const step = steps[i]
|
|
56
|
+
if (hasNonZeroOutput(step)) {
|
|
57
|
+
return step
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return undefined
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function formatTokenPrice(
|
|
64
|
+
amount?: string | bigint,
|
|
65
|
+
price?: string,
|
|
66
|
+
decimals?: number
|
|
67
|
+
) {
|
|
68
|
+
if (!amount || !price) {
|
|
69
|
+
return 0
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const formattedAmount =
|
|
73
|
+
typeof amount === 'bigint' && decimals !== undefined
|
|
74
|
+
? formatUnits(amount, decimals)
|
|
75
|
+
: amount.toString()
|
|
76
|
+
|
|
77
|
+
if (Number.isNaN(Number(formattedAmount)) || Number.isNaN(Number(price))) {
|
|
78
|
+
return 0
|
|
79
|
+
}
|
|
80
|
+
return Number.parseFloat(formattedAmount) * Number.parseFloat(price)
|
|
81
|
+
}
|
|
4
82
|
|
|
5
83
|
/**
|
|
6
84
|
* Converts a quote to Route
|
|
7
85
|
* @param quote - Step returned from the quote endpoint.
|
|
8
|
-
* @param
|
|
9
|
-
* @param chainId
|
|
86
|
+
* @param options - Optional configuration for handling edge cases.
|
|
10
87
|
* @returns - The route to be executed.
|
|
11
88
|
* @throws {BaseError} Throws a ValidationError if the step has missing values.
|
|
12
89
|
*/
|
|
13
|
-
export const convertQuoteToRoute = (
|
|
90
|
+
export const convertQuoteToRoute = (
|
|
91
|
+
quote: LiFiStep,
|
|
92
|
+
options?: ConvertQuoteToRouteOptions
|
|
93
|
+
): Route => {
|
|
94
|
+
let toAmount = quote.estimate.toAmount
|
|
95
|
+
let toAmountMin = quote.estimate.toAmountMin
|
|
96
|
+
let toAmountUSD = quote.estimate.toAmountUSD
|
|
97
|
+
|
|
98
|
+
// Handle zero output values by looking at previous included step
|
|
99
|
+
if (
|
|
100
|
+
options?.adjustZeroOutputFromPreviousStep &&
|
|
101
|
+
quote.includedSteps?.length &&
|
|
102
|
+
isZeroOutput(toAmount, toAmountMin, toAmountUSD)
|
|
103
|
+
) {
|
|
104
|
+
const previousStep = findPreviousNonZeroStep(quote.includedSteps)
|
|
105
|
+
if (previousStep) {
|
|
106
|
+
toAmount = previousStep.estimate.toAmount
|
|
107
|
+
toAmountMin = previousStep.estimate.toAmountMin
|
|
108
|
+
toAmountUSD = formatTokenPrice(
|
|
109
|
+
parseBigInt(toAmount),
|
|
110
|
+
previousStep.action.toToken.priceUSD,
|
|
111
|
+
previousStep.action.toToken.decimals
|
|
112
|
+
).toFixed(2)
|
|
113
|
+
|
|
114
|
+
// Update the last included step's estimate with the adjusted values
|
|
115
|
+
const lastStep = quote.includedSteps[quote.includedSteps.length - 1]
|
|
116
|
+
if (lastStep && !hasNonZeroOutput(lastStep)) {
|
|
117
|
+
lastStep.estimate.toAmount = toAmount
|
|
118
|
+
lastStep.estimate.toAmountMin = toAmountMin
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
14
123
|
if (!quote.estimate.fromAmountUSD) {
|
|
15
124
|
throw new SDKError(
|
|
16
125
|
new ValidationError("Missing 'fromAmountUSD' in step estimate.")
|
|
17
126
|
)
|
|
18
127
|
}
|
|
19
128
|
|
|
20
|
-
if (!
|
|
129
|
+
if (!toAmountUSD) {
|
|
21
130
|
throw new SDKError(
|
|
22
131
|
new ValidationError("Missing 'toAmountUSD' in step estimate.")
|
|
23
132
|
)
|
|
@@ -32,9 +141,9 @@ export const convertQuoteToRoute = (quote: LiFiStep): Route => {
|
|
|
32
141
|
fromAddress: quote.action.fromAddress,
|
|
33
142
|
toChainId: quote.action.toToken.chainId,
|
|
34
143
|
toToken: quote.action.toToken,
|
|
35
|
-
toAmount
|
|
36
|
-
toAmountMin
|
|
37
|
-
toAmountUSD
|
|
144
|
+
toAmount,
|
|
145
|
+
toAmountMin,
|
|
146
|
+
toAmountUSD,
|
|
38
147
|
toAddress: quote.action.toAddress || quote.action.fromAddress,
|
|
39
148
|
gasCostUSD: quote.estimate.gasCosts?.[0]?.amountUSD || '0',
|
|
40
149
|
steps: [quote],
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number.
|
|
3
|
+
*/
|
|
4
|
+
export function formatUnits(value: bigint, decimals: number) {
|
|
5
|
+
let display = value.toString()
|
|
6
|
+
|
|
7
|
+
const negative = display.startsWith('-')
|
|
8
|
+
if (negative) {
|
|
9
|
+
display = display.slice(1)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
display = display.padStart(decimals, '0')
|
|
13
|
+
|
|
14
|
+
let [integer, fraction] = [
|
|
15
|
+
display.slice(0, display.length - decimals),
|
|
16
|
+
display.slice(display.length - decimals),
|
|
17
|
+
]
|
|
18
|
+
fraction = fraction.replace(/(0+)$/, '')
|
|
19
|
+
return `${negative ? '-' : ''}${integer || '0'}${
|
|
20
|
+
fraction ? `.${fraction}` : ''
|
|
21
|
+
}`
|
|
22
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type Hex = `0x${string}`
|
|
2
|
+
|
|
3
|
+
export function isHex(
|
|
4
|
+
value: unknown,
|
|
5
|
+
{ strict = true }: { strict?: boolean | undefined } = {}
|
|
6
|
+
): value is Hex {
|
|
7
|
+
if (!value) {
|
|
8
|
+
return false
|
|
9
|
+
}
|
|
10
|
+
if (typeof value !== 'string') {
|
|
11
|
+
return false
|
|
12
|
+
}
|
|
13
|
+
return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')
|
|
14
|
+
}
|