@lifi/sdk 3.14.0 → 3.15.0-beta.0

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 (59) hide show
  1. package/package.json +1 -1
  2. package/src/_cjs/constants.js +2 -1
  3. package/src/_cjs/constants.js.map +1 -1
  4. package/src/_cjs/core/EVM/EVMStepExecutor.js +86 -17
  5. package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
  6. package/src/_cjs/core/EVM/typeguards.js +4 -0
  7. package/src/_cjs/core/EVM/typeguards.js.map +1 -1
  8. package/src/_cjs/core/utils.js +0 -5
  9. package/src/_cjs/core/utils.js.map +1 -1
  10. package/src/_cjs/index.js +11 -8
  11. package/src/_cjs/index.js.map +1 -1
  12. package/src/_cjs/services/api.js +12 -1
  13. package/src/_cjs/services/api.js.map +1 -1
  14. package/src/_cjs/utils/convertQuoteToRoute.js +73 -5
  15. package/src/_cjs/utils/convertQuoteToRoute.js.map +1 -1
  16. package/src/_cjs/version.js +1 -1
  17. package/src/_cjs/version.js.map +1 -1
  18. package/src/_esm/constants.js +1 -0
  19. package/src/_esm/constants.js.map +1 -1
  20. package/src/_esm/core/EVM/EVMStepExecutor.js +86 -10
  21. package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
  22. package/src/_esm/core/EVM/typeguards.js +3 -0
  23. package/src/_esm/core/EVM/typeguards.js.map +1 -1
  24. package/src/_esm/core/utils.js +0 -11
  25. package/src/_esm/core/utils.js.map +1 -1
  26. package/src/_esm/index.js +3 -2
  27. package/src/_esm/index.js.map +1 -1
  28. package/src/_esm/services/api.js +10 -0
  29. package/src/_esm/services/api.js.map +1 -1
  30. package/src/_esm/utils/convertQuoteToRoute.js +76 -7
  31. package/src/_esm/utils/convertQuoteToRoute.js.map +1 -1
  32. package/src/_esm/version.js +1 -1
  33. package/src/_esm/version.js.map +1 -1
  34. package/src/_types/constants.d.ts +1 -0
  35. package/src/_types/constants.d.ts.map +1 -1
  36. package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
  37. package/src/_types/core/EVM/typeguards.d.ts +1 -0
  38. package/src/_types/core/EVM/typeguards.d.ts.map +1 -1
  39. package/src/_types/core/types.d.ts +24 -1
  40. package/src/_types/core/types.d.ts.map +1 -1
  41. package/src/_types/core/utils.d.ts +1 -10
  42. package/src/_types/core/utils.d.ts.map +1 -1
  43. package/src/_types/index.d.ts +4 -3
  44. package/src/_types/index.d.ts.map +1 -1
  45. package/src/_types/services/api.d.ts +19 -0
  46. package/src/_types/services/api.d.ts.map +1 -1
  47. package/src/_types/utils/convertQuoteToRoute.d.ts +11 -3
  48. package/src/_types/utils/convertQuoteToRoute.d.ts.map +1 -1
  49. package/src/_types/version.d.ts +1 -1
  50. package/src/_types/version.d.ts.map +1 -1
  51. package/src/constants.ts +2 -0
  52. package/src/core/EVM/EVMStepExecutor.ts +111 -10
  53. package/src/core/EVM/typeguards.ts +4 -0
  54. package/src/core/types.ts +30 -0
  55. package/src/core/utils.ts +1 -13
  56. package/src/index.ts +7 -1
  57. package/src/services/api.ts +37 -0
  58. package/src/utils/convertQuoteToRoute.ts +117 -8
  59. package/src/version.ts +1 -1
@@ -1,4 +1,4 @@
1
- import type { ChainId, ChainType, CoinKey, FeeCost, GasCost, LiFiStep, Route, Step, Substatus, Token, TokenAmount } from '@lifi/types';
1
+ import type { ChainId, ChainType, CoinKey, ContractCall, FeeCost, GasCost, LiFiStep, Route, Step, Substatus, Token, TokenAmount } from '@lifi/types';
2
2
  import type { Client } from 'viem';
3
3
  export interface SDKProvider {
4
4
  readonly type: ChainType;
@@ -70,11 +70,34 @@ export interface ExchangeRateUpdateParams {
70
70
  newToAmount: string;
71
71
  }
72
72
  export type AcceptExchangeRateUpdateHook = (params: ExchangeRateUpdateParams) => Promise<boolean | undefined>;
73
+ export interface ContractCallParams {
74
+ fromChainId: number;
75
+ toChainId: number;
76
+ fromTokenAddress: string;
77
+ toTokenAddress: string;
78
+ fromAddress: string;
79
+ toAddress?: string;
80
+ fromAmount: bigint;
81
+ toAmount: bigint;
82
+ slippage?: number;
83
+ }
84
+ export interface ContractTool {
85
+ name: string;
86
+ logoURI: string;
87
+ }
88
+ export interface GetContractCallsResult {
89
+ contractCalls: ContractCall[];
90
+ patcher?: boolean;
91
+ contractTool?: ContractTool;
92
+ }
93
+ export type GetContractCallsHook = (params: ContractCallParams) => Promise<GetContractCallsResult>;
73
94
  export interface ExecutionOptions {
74
95
  acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook;
75
96
  switchChainHook?: SwitchChainHook;
76
97
  updateRouteHook?: UpdateRouteHook;
77
98
  updateTransactionRequestHook?: TransactionRequestUpdateHook;
99
+ getContractCalls?: GetContractCallsHook;
100
+ adjustZeroOutputFromPreviousStep?: boolean;
78
101
  executeInBackground?: boolean;
79
102
  disableMessageSigning?: boolean;
80
103
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../core/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { LiFiStep, Token } from '@lifi/types';
1
+ import type { LiFiStep } from '@lifi/types';
2
2
  /**
3
3
  * Used to check if changed exchange rate is in the range of slippage threshold.
4
4
  * We use a slippage value as a threshold to trigger the rate change hook.
@@ -8,13 +8,4 @@ import type { LiFiStep, Token } from '@lifi/types';
8
8
  * @returns Boolean
9
9
  */
10
10
  export declare function checkStepSlippageThreshold(oldStep: LiFiStep, newStep: LiFiStep): boolean;
11
- /**
12
- * Checks whether a given token is eligible for message signing.
13
- * Tokens with '₮' symbol in their name are disallowed,
14
- * since such tokens may have non-standard signing requirements or compatibility issues with hardware wallets.
15
- *
16
- * @param token - The token object to check.
17
- * @returns true if the token is allowed for message signing, false otherwise.
18
- */
19
- export declare const isTokenMessageSigningAllowed: (token: Token) => boolean;
20
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAKlD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,QAAQ,GAChB,OAAO,CAaT;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,KAAK,KAAG,OAE3D,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAK3C;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,QAAQ,GAChB,OAAO,CAaT"}
@@ -1,5 +1,6 @@
1
1
  export * from '@lifi/types';
2
2
  export { config } from './config.js';
3
+ export { PatcherMagicNumber } from './constants.js';
3
4
  export { checkPermitSupport } from './core/EVM/checkPermitSupport.js';
4
5
  export { EVM } from './core/EVM/EVM.js';
5
6
  export { getTokenAllowance, getTokenAllowanceMulticall, } from './core/EVM/getAllowance.js';
@@ -20,11 +21,10 @@ export { StatusManager } from './core/StatusManager.js';
20
21
  export { Sui } from './core/Sui/Sui.js';
21
22
  export type { SuiProvider, SuiProviderOptions } from './core/Sui/types.js';
22
23
  export { isSui } from './core/Sui/types.js';
23
- export type { AcceptExchangeRateUpdateHook, AcceptSlippageUpdateHook, AcceptSlippageUpdateHookParams, ExchangeRateUpdateParams, Execution, ExecutionOptions, ExecutionStatus, InteractionSettings, LiFiStepExtended, Process, ProcessStatus, ProcessType, RouteExecutionData, RouteExecutionDataDictionary, RouteExecutionDictionary, RouteExtended, SDKProvider, StepExecutor, StepExecutorOptions, StepExtended, SwitchChainHook, TransactionParameters, TransactionRequestParameters, TransactionRequestUpdateHook, UpdateRouteHook, } from './core/types.js';
24
+ export type { AcceptExchangeRateUpdateHook, AcceptSlippageUpdateHook, AcceptSlippageUpdateHookParams, ContractCallParams, ContractTool, ExchangeRateUpdateParams, Execution, ExecutionOptions, ExecutionStatus, GetContractCallsHook, GetContractCallsResult, InteractionSettings, LiFiStepExtended, Process, ProcessStatus, ProcessType, RouteExecutionData, RouteExecutionDataDictionary, RouteExecutionDictionary, RouteExtended, SDKProvider, StepExecutor, StepExecutorOptions, StepExtended, SwitchChainHook, TransactionParameters, TransactionRequestParameters, TransactionRequestUpdateHook, UpdateRouteHook, } from './core/types.js';
24
25
  export type { UTXOProvider, UTXOProviderOptions } from './core/UTXO/types.js';
25
26
  export { isUTXO } from './core/UTXO/types.js';
26
27
  export { UTXO } from './core/UTXO/UTXO.js';
27
- export { isTokenMessageSigningAllowed } from './core/utils.js';
28
28
  export { createConfig } from './createConfig.js';
29
29
  export { BaseError } from './errors/baseError.js';
30
30
  export type { ErrorCode } from './errors/constants.js';
@@ -32,7 +32,7 @@ export { ErrorMessage, ErrorName, LiFiErrorCode } from './errors/constants.js';
32
32
  export { BalanceError, ProviderError, RPCError, ServerError, TransactionError, UnknownError, ValidationError, } from './errors/errors.js';
33
33
  export { HTTPError } from './errors/httpError.js';
34
34
  export { SDKError } from './errors/SDKError.js';
35
- export { getChains, getConnections, getContractCallsQuote, getGasRecommendation, getQuote, getRelayedTransactionStatus, getRelayerQuote, getRoutes, getStatus, getStepTransaction, getToken, getTokens, getTools, getTransactionHistory, relayTransaction, } from './services/api.js';
35
+ export { getChains, getConnections, getContractCallsQuote, getGasRecommendation, getQuote, getRelayedTransactionStatus, getRelayerQuote, getRoutes, getStatus, getStepTransaction, getToken, getTokens, getTools, getTransactionHistory, patchContractCalls, relayTransaction, } from './services/api.js';
36
36
  export { getTokenBalance, getTokenBalances, getTokenBalancesByChain, getWalletBalances, } from './services/balance.js';
37
37
  export { getNameServiceAddress } from './services/getNameServiceAddress.js';
38
38
  export type { GetStatusRequestExtended, QuoteRequest, QuoteRequestFromAmount, QuoteRequestToAmount, } from './services/types.js';
@@ -40,4 +40,5 @@ export type { RequestInterceptor, RPCUrls, SDKBaseConfig, SDKConfig, } from './t
40
40
  export { checkPackageUpdates } from './utils/checkPackageUpdates.js';
41
41
  export { convertQuoteToRoute } from './utils/convertQuoteToRoute.js';
42
42
  export { fetchTxErrorDetails } from './utils/fetchTxErrorDetails.js';
43
+ export { isZeroAddress } from './utils/isZeroAddress.js';
43
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AACvE,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,aAAa,EACb,aAAa,GACd,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,YAAY,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,YAAY,EACV,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,4BAA4B,EAC5B,wBAAwB,EACxB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EACL,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,QAAQ,EACR,2BAA2B,EAC3B,eAAe,EACf,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,YAAY,EACV,wBAAwB,EACxB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -117,4 +117,23 @@ export declare const getGasRecommendation: (params: GasRecommendationRequest, op
117
117
  */
118
118
  export declare const getConnections: (connectionRequest: ConnectionsRequest, options?: RequestOptions) => Promise<ConnectionsResponse>;
119
119
  export declare const getTransactionHistory: ({ wallet, status, fromTimestamp, toTimestamp }: TransactionAnalyticsRequest, options?: RequestOptions) => Promise<TransactionAnalyticsResponse>;
120
+ export type PatchContractCallsRequest = {
121
+ chainId: ChainId;
122
+ fromTokenAddress: string;
123
+ targetContractAddress: string;
124
+ callDataToPatch: string;
125
+ patches: {
126
+ amountToReplace: string;
127
+ }[];
128
+ value?: string;
129
+ delegateCall?: boolean;
130
+ };
131
+ export interface PatchContractCallsResponse {
132
+ target: string;
133
+ value: bigint;
134
+ callData: string;
135
+ allowFailure: boolean;
136
+ isDelegateCall: boolean;
137
+ }
138
+ export declare const patchContractCalls: (params: PatchContractCallsRequest[], options?: RequestOptions) => Promise<PatchContractCallsResponse[]>;
120
139
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../services/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../services/api.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 txHash
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":["../../utils/convertQuoteToRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIlD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,QAAQ,KAAG,KAgCrD,CAAA"}
1
+ {"version":3,"file":"convertQuoteToRoute.d.ts","sourceRoot":"","sources":["../../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"}
@@ -1,3 +1,3 @@
1
1
  export declare const name = "@lifi/sdk";
2
- export declare const version = "3.14.0";
2
+ export declare const version = "3.15.0-beta.0";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,cAAc,CAAA;AAC/B,eAAO,MAAM,OAAO,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,cAAc,CAAA;AAC/B,eAAO,MAAM,OAAO,kBAAkB,CAAA"}
package/src/constants.ts CHANGED
@@ -8,3 +8,5 @@ export const MaxUint48 = BigInt('0xffffffffffff')
8
8
  export const MaxUint160 = BigInt('0xffffffffffffffffffffffffffffffffffffffff')
9
9
  export const MaxUint256 =
10
10
  BigInt(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn)
11
+
12
+ export const PatcherMagicNumber = 314159265359n
@@ -17,13 +17,17 @@ import {
17
17
  } from 'viem/actions'
18
18
  import { getAction, isHex } from 'viem/utils'
19
19
  import { config } from '../../config.js'
20
+ import { PatcherMagicNumber } from '../../constants.js'
20
21
  import { LiFiErrorCode } from '../../errors/constants.js'
21
22
  import { TransactionError } from '../../errors/errors.js'
22
23
  import {
24
+ getContractCallsQuote,
23
25
  getRelayerQuote,
24
26
  getStepTransaction,
27
+ patchContractCalls,
25
28
  relayTransaction,
26
29
  } from '../../services/api.js'
30
+ import { convertQuoteToRoute } from '../../utils/convertQuoteToRoute.js'
27
31
  import { isZeroAddress } from '../../utils/isZeroAddress.js'
28
32
  import { BaseStepExecutor } from '../BaseStepExecutor.js'
29
33
  import { checkBalance } from '../checkBalance.js'
@@ -35,7 +39,6 @@ import type {
35
39
  TransactionMethodType,
36
40
  TransactionParameters,
37
41
  } from '../types.js'
38
- import { isTokenMessageSigningAllowed } from '../utils.js'
39
42
  import { waitForDestinationChainTransaction } from '../waitForDestinationChainTransaction.js'
40
43
  import { checkAllowance } from './checkAllowance.js'
41
44
  import { getActionWithFallback } from './getActionWithFallback.js'
@@ -49,7 +52,11 @@ import { encodePermit2Data } from './permits/encodePermit2Data.js'
49
52
  import { isNativePermitValid } from './permits/isNativePermitValid.js'
50
53
  import { signPermit2Message } from './permits/signPermit2Message.js'
51
54
  import { switchChain } from './switchChain.js'
52
- import { isGaslessStep, isRelayerStep } from './typeguards.js'
55
+ import {
56
+ isContractCallStep,
57
+ isGaslessStep,
58
+ isRelayerStep,
59
+ } from './typeguards.js'
53
60
  import type { Call, WalletCallReceipt } from './types.js'
54
61
  import {
55
62
  convertExtendedChain,
@@ -230,8 +237,94 @@ export class EVMStepExecutor extends BaseStepExecutor {
230
237
  const { execution, ...stepBase } = step
231
238
  const relayerStep = isRelayerStep(step)
232
239
  const gaslessStep = isGaslessStep(step)
240
+ const contractCallStep = isContractCallStep(step)
233
241
  let updatedStep: LiFiStep
234
- if (relayerStep && gaslessStep) {
242
+ if (contractCallStep) {
243
+ const contractCallsResult =
244
+ await this.executionOptions?.getContractCalls?.({
245
+ fromAddress: stepBase.action.fromAddress!,
246
+ fromAmount: BigInt(stepBase.action.fromAmount),
247
+ fromChainId: stepBase.action.fromChainId,
248
+ fromTokenAddress: stepBase.action.fromToken.address,
249
+ slippage: stepBase.action.slippage,
250
+ toAddress: stepBase.action.toAddress,
251
+ toAmount: BigInt(stepBase.estimate.toAmount),
252
+ toChainId: stepBase.action.toChainId,
253
+ toTokenAddress: stepBase.action.toToken.address,
254
+ })
255
+
256
+ if (!contractCallsResult?.contractCalls?.length) {
257
+ throw new TransactionError(
258
+ LiFiErrorCode.TransactionUnprepared,
259
+ 'Unable to prepare transaction. Contract calls are not found.'
260
+ )
261
+ }
262
+
263
+ const patchedContractCalls = await patchContractCalls(
264
+ contractCallsResult.contractCalls.map((call) => ({
265
+ chainId: stepBase.action.toChainId,
266
+ fromTokenAddress: call.fromTokenAddress,
267
+ targetContractAddress: call.toContractAddress,
268
+ callDataToPatch: call.toContractCallData,
269
+ delegateCall: false,
270
+ patches: [
271
+ {
272
+ amountToReplace: PatcherMagicNumber.toString(),
273
+ },
274
+ ],
275
+ }))
276
+ )
277
+
278
+ contractCallsResult.contractCalls.forEach((call, index) => {
279
+ call.toContractAddress = patchedContractCalls[index].target
280
+ call.toContractCallData = patchedContractCalls[index].callData
281
+ })
282
+
283
+ /**
284
+ * Limitations of the retry logic for contract calls:
285
+ * - denyBridges and denyExchanges are not supported
286
+ * - allowBridges and allowExchanges are not supported
287
+ * - fee is not supported
288
+ * - toAmount is not supported
289
+ */
290
+ const contractCallQuote = await getContractCallsQuote({
291
+ // Contract calls are enabled only when fromAddress is set
292
+ fromAddress: stepBase.action.fromAddress!,
293
+ fromChain: stepBase.action.fromChainId,
294
+ fromToken: stepBase.action.fromToken.address,
295
+ fromAmount: stepBase.action.fromAmount,
296
+ toChain: stepBase.action.toChainId,
297
+ toToken: stepBase.action.toToken.address,
298
+ contractCalls: contractCallsResult.contractCalls,
299
+ toFallbackAddress: stepBase.action.toAddress,
300
+ slippage: stepBase.action.slippage,
301
+ })
302
+
303
+ contractCallQuote.action.toToken = stepBase.action.toToken
304
+
305
+ const customStep = contractCallQuote.includedSteps?.find(
306
+ (step) => step.type === 'custom'
307
+ )
308
+ if (customStep && contractCallsResult?.contractTool) {
309
+ const toolDetails = {
310
+ key: contractCallsResult.contractTool.name,
311
+ name: contractCallsResult.contractTool.name,
312
+ logoURI: contractCallsResult.contractTool.logoURI,
313
+ }
314
+ customStep.toolDetails = toolDetails
315
+ contractCallQuote.toolDetails = toolDetails
316
+ }
317
+
318
+ const route = convertQuoteToRoute(contractCallQuote, {
319
+ adjustZeroOutputFromPreviousStep:
320
+ this.executionOptions?.adjustZeroOutputFromPreviousStep,
321
+ })
322
+
323
+ updatedStep = {
324
+ ...route.steps[0],
325
+ id: stepBase.id,
326
+ }
327
+ } else if (relayerStep && gaslessStep) {
235
328
  const updatedRelayedStep = await getRelayerQuote({
236
329
  fromChain: stepBase.action.fromChainId,
237
330
  fromToken: stepBase.action.fromToken.address,
@@ -426,10 +519,7 @@ export class EVMStepExecutor extends BaseStepExecutor {
426
519
  // Check if message signing is disabled - useful for smart contract wallets
427
520
  // We also disable message signing for custom steps
428
521
  const disableMessageSigning =
429
- this.executionOptions?.disableMessageSigning ||
430
- step.type !== 'lifi' ||
431
- // We disable message signing for tokens with '₮' symbol
432
- !isTokenMessageSigningAllowed(step.action.fromToken)
522
+ this.executionOptions?.disableMessageSigning || step.type !== 'lifi'
433
523
 
434
524
  // Check if chain has Permit2 contract deployed. Permit2 should not be available for atomic batch.
435
525
  const permit2Supported =
@@ -533,9 +623,20 @@ export class EVMStepExecutor extends BaseStepExecutor {
533
623
  return step
534
624
  }
535
625
 
536
- // Try to prepare a new transaction request and update the step with typed data
537
- let { transactionRequest, isRelayerTransaction } =
538
- await this.prepareUpdatedStep(updatedClient, step, signedTypedData)
626
+ let transactionRequest = step.transactionRequest
627
+ ? structuredClone(step.transactionRequest as TransactionParameters)
628
+ : undefined
629
+ let isRelayerTransaction: boolean = false
630
+ if (!transactionRequest) {
631
+ // Try to prepare a new transaction request and update the step with typed data
632
+ const result = await this.prepareUpdatedStep(
633
+ updatedClient,
634
+ step,
635
+ signedTypedData
636
+ )
637
+ transactionRequest = result.transactionRequest
638
+ isRelayerTransaction = result.isRelayerTransaction
639
+ }
539
640
 
540
641
  process = this.statusManager.updateProcess(
541
642
  step,
@@ -24,3 +24,7 @@ export function isGaslessStep(
24
24
  )
25
25
  )
26
26
  }
27
+
28
+ export function isContractCallStep(step: LiFiStepExtended | LiFiStep): boolean {
29
+ return step.includedSteps.some((s) => s.type === 'custom')
30
+ }
package/src/core/types.ts CHANGED
@@ -2,6 +2,7 @@ import type {
2
2
  ChainId,
3
3
  ChainType,
4
4
  CoinKey,
5
+ ContractCall,
5
6
  FeeCost,
6
7
  GasCost,
7
8
  LiFiStep,
@@ -114,11 +115,40 @@ export type AcceptExchangeRateUpdateHook = (
114
115
  params: ExchangeRateUpdateParams
115
116
  ) => Promise<boolean | undefined>
116
117
 
118
+ export interface ContractCallParams {
119
+ fromChainId: number
120
+ toChainId: number
121
+ fromTokenAddress: string
122
+ toTokenAddress: string
123
+ fromAddress: string
124
+ toAddress?: string
125
+ fromAmount: bigint
126
+ toAmount: bigint
127
+ slippage?: number
128
+ }
129
+
130
+ export interface ContractTool {
131
+ name: string
132
+ logoURI: string
133
+ }
134
+
135
+ export interface GetContractCallsResult {
136
+ contractCalls: ContractCall[]
137
+ patcher?: boolean
138
+ contractTool?: ContractTool
139
+ }
140
+
141
+ export type GetContractCallsHook = (
142
+ params: ContractCallParams
143
+ ) => Promise<GetContractCallsResult>
144
+
117
145
  export interface ExecutionOptions {
118
146
  acceptExchangeRateUpdateHook?: AcceptExchangeRateUpdateHook
119
147
  switchChainHook?: SwitchChainHook
120
148
  updateRouteHook?: UpdateRouteHook
121
149
  updateTransactionRequestHook?: TransactionRequestUpdateHook
150
+ getContractCalls?: GetContractCallsHook
151
+ adjustZeroOutputFromPreviousStep?: boolean
122
152
  executeInBackground?: boolean
123
153
  disableMessageSigning?: boolean
124
154
  /**
package/src/core/utils.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { LiFiStep, Token } from '@lifi/types'
1
+ import type { LiFiStep } from '@lifi/types'
2
2
 
3
3
  // Standard threshold for destination amount difference (0.5%)
4
4
  const standardThreshold = 0.005
@@ -28,15 +28,3 @@ export function checkStepSlippageThreshold(
28
28
  }
29
29
  return actualSlippage <= setSlippage
30
30
  }
31
-
32
- /**
33
- * Checks whether a given token is eligible for message signing.
34
- * Tokens with '₮' symbol in their name are disallowed,
35
- * since such tokens may have non-standard signing requirements or compatibility issues with hardware wallets.
36
- *
37
- * @param token - The token object to check.
38
- * @returns true if the token is allowed for message signing, false otherwise.
39
- */
40
- export const isTokenMessageSigningAllowed = (token: Token): boolean => {
41
- return !token.name?.includes('₮') && !token.symbol?.includes('₮')
42
- }
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  // biome-ignore lint/performance/noReExportAll: types
3
3
  export * from '@lifi/types'
4
4
  export { config } from './config.js'
5
+ export { PatcherMagicNumber } from './constants.js'
5
6
  export { checkPermitSupport } from './core/EVM/checkPermitSupport.js'
6
7
  export { EVM } from './core/EVM/EVM.js'
7
8
  export {
@@ -57,10 +58,14 @@ export type {
57
58
  AcceptExchangeRateUpdateHook,
58
59
  AcceptSlippageUpdateHook,
59
60
  AcceptSlippageUpdateHookParams,
61
+ ContractCallParams,
62
+ ContractTool,
60
63
  ExchangeRateUpdateParams,
61
64
  Execution,
62
65
  ExecutionOptions,
63
66
  ExecutionStatus,
67
+ GetContractCallsHook,
68
+ GetContractCallsResult,
64
69
  InteractionSettings,
65
70
  LiFiStepExtended,
66
71
  Process,
@@ -83,7 +88,6 @@ export type {
83
88
  export type { UTXOProvider, UTXOProviderOptions } from './core/UTXO/types.js'
84
89
  export { isUTXO } from './core/UTXO/types.js'
85
90
  export { UTXO } from './core/UTXO/UTXO.js'
86
- export { isTokenMessageSigningAllowed } from './core/utils.js'
87
91
  export { createConfig } from './createConfig.js'
88
92
  export { BaseError } from './errors/baseError.js'
89
93
  export type { ErrorCode } from './errors/constants.js'
@@ -114,6 +118,7 @@ export {
114
118
  getTokens,
115
119
  getTools,
116
120
  getTransactionHistory,
121
+ patchContractCalls,
117
122
  relayTransaction,
118
123
  } from './services/api.js'
119
124
  export {
@@ -138,3 +143,4 @@ export type {
138
143
  export { checkPackageUpdates } from './utils/checkPackageUpdates.js'
139
144
  export { convertQuoteToRoute } from './utils/convertQuoteToRoute.js'
140
145
  export { fetchTxErrorDetails } from './utils/fetchTxErrorDetails.js'
146
+ export { isZeroAddress } from './utils/isZeroAddress.js'
@@ -718,3 +718,40 @@ export const getTransactionHistory = async (
718
718
 
719
719
  return await request<TransactionAnalyticsResponse>(url, options)
720
720
  }
721
+
722
+ export type PatchContractCallsRequest = {
723
+ chainId: ChainId
724
+ fromTokenAddress: string
725
+ targetContractAddress: string
726
+ callDataToPatch: string
727
+ patches: {
728
+ amountToReplace: string
729
+ }[]
730
+ value?: string
731
+ delegateCall?: boolean
732
+ }
733
+
734
+ export interface PatchContractCallsResponse {
735
+ target: string
736
+ value: bigint
737
+ callData: string
738
+ allowFailure: boolean
739
+ isDelegateCall: boolean
740
+ }
741
+
742
+ export const patchContractCalls = async (
743
+ params: PatchContractCallsRequest[],
744
+ options?: RequestOptions
745
+ ): Promise<PatchContractCallsResponse[]> => {
746
+ return await request<PatchContractCallsResponse[]>(
747
+ `${config.get().apiUrl}/patcher`,
748
+ {
749
+ method: 'POST',
750
+ headers: {
751
+ 'Content-Type': 'application/json',
752
+ },
753
+ body: JSON.stringify(params),
754
+ signal: options?.signal,
755
+ }
756
+ )
757
+ }