@lifi/sdk 3.0.0-alpha.1 → 3.0.0-alpha.11
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/LiFi.js +222 -261
- package/dist/cjs/LiFi.js.map +1 -0
- package/dist/cjs/allowance/getAllowance.js +13 -16
- package/dist/cjs/allowance/getAllowance.js.map +1 -0
- package/dist/cjs/allowance/index.js +5 -17
- package/dist/cjs/allowance/index.js.map +1 -0
- package/dist/cjs/allowance/setAllowance.js +33 -18
- package/dist/cjs/allowance/setAllowance.js.map +1 -0
- package/dist/cjs/allowance/types.js +1 -0
- package/dist/cjs/allowance/types.js.map +1 -0
- package/dist/cjs/balance/getBalance.js +14 -14
- package/dist/cjs/balance/getBalance.js.map +1 -0
- package/dist/cjs/balance/getTokenBalance.js +3 -3
- package/dist/cjs/balance/getTokenBalance.js.map +1 -0
- package/dist/cjs/balance/index.js +4 -16
- package/dist/cjs/balance/index.js.map +1 -0
- package/dist/cjs/connectors.js +7 -35
- package/dist/cjs/connectors.js.map +1 -0
- package/dist/cjs/constants.js +2 -4
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/execution/BaseStepExecutor.js +54 -0
- package/dist/cjs/execution/BaseStepExecutor.js.map +1 -0
- package/dist/cjs/execution/EVMStepExecutor.js +271 -0
- package/dist/cjs/execution/EVMStepExecutor.js.map +1 -0
- package/dist/cjs/execution/RouteExecutionManager.js +196 -179
- package/dist/cjs/execution/RouteExecutionManager.js.map +1 -0
- package/dist/cjs/execution/StatusManager.js +142 -135
- package/dist/cjs/execution/StatusManager.js.map +1 -0
- package/dist/cjs/execution/StepExecutionManager.js +223 -229
- package/dist/cjs/execution/StepExecutionManager.js.map +1 -0
- package/dist/cjs/execution/checkAllowance.js +9 -10
- package/dist/cjs/execution/checkAllowance.js.map +1 -0
- package/dist/cjs/execution/checkBalance.js +5 -5
- package/dist/cjs/execution/checkBalance.js.map +1 -0
- package/dist/cjs/execution/index.js +4 -15
- package/dist/cjs/execution/index.js.map +1 -0
- package/dist/cjs/execution/multisig.js +6 -8
- package/dist/cjs/execution/multisig.js.map +1 -0
- package/dist/cjs/execution/prepareRestart.js +2 -44
- package/dist/cjs/execution/prepareRestart.js.map +1 -0
- package/dist/cjs/execution/stepComparison.js +5 -17
- package/dist/cjs/execution/stepComparison.js.map +1 -0
- package/dist/cjs/execution/switchChain.js +4 -21
- package/dist/cjs/execution/switchChain.js.map +1 -0
- package/dist/cjs/{types/internal.types.js → execution/types.js} +1 -0
- package/dist/cjs/execution/types.js.map +1 -0
- package/dist/cjs/execution/utils.js +1 -9
- package/dist/cjs/execution/utils.js.map +1 -0
- package/dist/cjs/execution/waitForReceivingTransaction.js +9 -11
- package/dist/cjs/execution/waitForReceivingTransaction.js.map +1 -0
- package/dist/cjs/helpers.js +11 -25
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.js +16 -22
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/providers/EVM.js +35 -0
- package/dist/cjs/providers/EVM.js.map +1 -0
- package/dist/cjs/providers/Solana.js +38 -0
- package/dist/cjs/providers/Solana.js.map +1 -0
- package/dist/cjs/providers/index.js +5 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/providers/types.js +9 -0
- package/dist/cjs/providers/types.js.map +1 -0
- package/dist/cjs/request.js +19 -16
- package/dist/cjs/request.js.map +1 -0
- package/dist/cjs/services/ApiService.js +72 -90
- package/dist/cjs/services/ApiService.js.map +1 -0
- package/dist/cjs/services/ChainsService.js +19 -9
- package/dist/cjs/services/ChainsService.js.map +1 -0
- package/dist/cjs/services/ConfigService.js +94 -65
- package/dist/cjs/services/ConfigService.js.map +1 -0
- package/dist/cjs/typeguards.js +1 -0
- package/dist/cjs/typeguards.js.map +1 -0
- package/dist/cjs/types/abi.js +1 -0
- package/dist/cjs/types/abi.js.map +1 -0
- package/dist/cjs/types/index.js +4 -20
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/internal.js +3 -0
- package/dist/cjs/types/internal.js.map +1 -0
- package/dist/cjs/utils/errors.js +25 -3
- package/dist/cjs/utils/errors.js.map +1 -0
- package/dist/cjs/utils/getMaxPriorityFeePerGas.js +3 -2
- package/dist/cjs/utils/getMaxPriorityFeePerGas.js.map +1 -0
- package/dist/cjs/utils/index.js +7 -19
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/median.js +1 -0
- package/dist/cjs/utils/median.js.map +1 -0
- package/dist/cjs/utils/parseError.js +39 -79
- package/dist/cjs/utils/parseError.js.map +1 -0
- package/dist/cjs/utils/utils.js +5 -11
- package/dist/cjs/utils/utils.js.map +1 -0
- package/dist/cjs/version.js +2 -1
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/LiFi.js +375 -0
- package/dist/esm/LiFi.js.map +1 -0
- package/dist/{allowance → esm/allowance}/getAllowance.js +5 -4
- package/dist/esm/allowance/getAllowance.js.map +1 -0
- package/dist/esm/allowance/index.js +4 -0
- package/dist/esm/allowance/index.js.map +1 -0
- package/dist/{allowance → esm/allowance}/setAllowance.js +28 -11
- package/dist/esm/allowance/setAllowance.js.map +1 -0
- package/dist/esm/allowance/types.js +2 -0
- package/dist/esm/allowance/types.js.map +1 -0
- package/dist/{balance → esm/balance}/getBalance.js +5 -5
- package/dist/esm/balance/getBalance.js.map +1 -0
- package/dist/{balance → esm/balance}/getTokenBalance.js +2 -1
- package/dist/esm/balance/getTokenBalance.js.map +1 -0
- package/dist/esm/balance/index.js +3 -0
- package/dist/esm/balance/index.js.map +1 -0
- package/dist/{connectors.js → esm/connectors.js} +3 -2
- package/dist/esm/connectors.js.map +1 -0
- package/dist/{constants.js → esm/constants.js} +1 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/execution/BaseStepExecutor.js +51 -0
- package/dist/esm/execution/BaseStepExecutor.js.map +1 -0
- package/dist/esm/execution/EVMStepExecutor.js +299 -0
- package/dist/esm/execution/EVMStepExecutor.js.map +1 -0
- package/dist/esm/execution/RouteExecutionManager.js +268 -0
- package/dist/esm/execution/RouteExecutionManager.js.map +1 -0
- package/dist/esm/execution/StatusManager.js +216 -0
- package/dist/esm/execution/StatusManager.js.map +1 -0
- package/dist/esm/execution/StepExecutionManager.js +280 -0
- package/dist/esm/execution/StepExecutionManager.js.map +1 -0
- package/dist/{execution → esm/execution}/checkAllowance.js +5 -4
- package/dist/esm/execution/checkAllowance.js.map +1 -0
- package/dist/{execution → esm/execution}/checkBalance.js +3 -2
- package/dist/esm/execution/checkBalance.js.map +1 -0
- package/dist/esm/execution/index.js +3 -0
- package/dist/esm/execution/index.js.map +1 -0
- package/dist/{execution → esm/execution}/multisig.js +3 -2
- package/dist/esm/execution/multisig.js.map +1 -0
- package/dist/esm/execution/prepareRestart.js +64 -0
- package/dist/esm/execution/prepareRestart.js.map +1 -0
- package/dist/{execution → esm/execution}/stepComparison.js +4 -3
- package/dist/esm/execution/stepComparison.js.map +1 -0
- package/dist/{execution → esm/execution}/switchChain.js +3 -1
- package/dist/esm/execution/switchChain.js.map +1 -0
- package/dist/esm/execution/types.js +2 -0
- package/dist/esm/execution/types.js.map +1 -0
- package/dist/{execution → esm/execution}/utils.js +1 -0
- package/dist/esm/execution/utils.js.map +1 -0
- package/dist/{execution → esm/execution}/waitForReceivingTransaction.js +5 -4
- package/dist/esm/execution/waitForReceivingTransaction.js.map +1 -0
- package/dist/{helpers.js → esm/helpers.js} +4 -3
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/providers/EVM.js +30 -0
- package/dist/esm/providers/EVM.js.map +1 -0
- package/dist/esm/providers/Solana.js +34 -0
- package/dist/esm/providers/Solana.js.map +1 -0
- package/dist/esm/providers/index.js +2 -0
- package/dist/esm/providers/index.js.map +1 -0
- package/dist/esm/providers/types.js +6 -0
- package/dist/esm/providers/types.js.map +1 -0
- package/dist/{request.js → esm/request.js} +16 -9
- package/dist/esm/request.js.map +1 -0
- package/dist/{services → esm/services}/ApiService.js +29 -28
- package/dist/esm/services/ApiService.js.map +1 -0
- package/dist/{services → esm/services}/ChainsService.js +16 -4
- package/dist/esm/services/ChainsService.js.map +1 -0
- package/dist/esm/services/ConfigService.js +143 -0
- package/dist/esm/services/ConfigService.js.map +1 -0
- package/dist/{typeguards.js → esm/typeguards.js} +1 -0
- package/dist/esm/typeguards.js.map +1 -0
- package/dist/{types → esm/types}/abi.js +1 -0
- package/dist/esm/types/abi.js.map +1 -0
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/internal.js +2 -0
- package/dist/esm/types/internal.js.map +1 -0
- package/dist/{utils → esm/utils}/errors.js +25 -0
- package/dist/esm/utils/errors.js.map +1 -0
- package/dist/{utils → esm/utils}/getMaxPriorityFeePerGas.js +2 -1
- package/dist/esm/utils/getMaxPriorityFeePerGas.js.map +1 -0
- package/dist/esm/utils/index.js +6 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/{utils → esm/utils}/median.js +1 -0
- package/dist/esm/utils/median.js.map +1 -0
- package/dist/{utils → esm/utils}/parseError.js +4 -3
- package/dist/esm/utils/parseError.js.map +1 -0
- package/dist/{utils → esm/utils}/utils.js +2 -1
- package/dist/esm/utils/utils.js.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/{LiFi.d.ts → types/LiFi.d.ts} +29 -21
- package/dist/types/LiFi.d.ts.map +1 -0
- package/dist/{cjs → types}/allowance/getAllowance.d.ts +2 -1
- package/dist/types/allowance/getAllowance.d.ts.map +1 -0
- package/dist/types/allowance/index.d.ts +4 -0
- package/dist/types/allowance/index.d.ts.map +1 -0
- package/dist/types/allowance/setAllowance.d.ts +7 -0
- package/dist/types/allowance/setAllowance.d.ts.map +1 -0
- package/dist/{allowance → types/allowance}/types.d.ts +1 -0
- package/dist/types/allowance/types.d.ts.map +1 -0
- package/dist/{balance → types/balance}/getBalance.d.ts +1 -0
- package/dist/types/balance/getBalance.d.ts.map +1 -0
- package/dist/{balance → types/balance}/getTokenBalance.d.ts +1 -0
- package/dist/types/balance/getTokenBalance.d.ts.map +1 -0
- package/dist/types/balance/index.d.ts +3 -0
- package/dist/types/balance/index.d.ts.map +1 -0
- package/dist/{cjs → types}/connectors.d.ts +2 -1
- package/dist/types/connectors.d.ts.map +1 -0
- package/dist/{cjs → types}/constants.d.ts +1 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/execution/BaseStepExecutor.d.ts +13 -0
- package/dist/types/execution/BaseStepExecutor.d.ts.map +1 -0
- package/dist/types/execution/EVMStepExecutor.d.ts +14 -0
- package/dist/types/execution/EVMStepExecutor.d.ts.map +1 -0
- package/dist/{cjs → types}/execution/RouteExecutionManager.d.ts +10 -8
- package/dist/types/execution/RouteExecutionManager.d.ts.map +1 -0
- package/dist/{execution → types/execution}/StatusManager.d.ts +9 -7
- package/dist/types/execution/StatusManager.d.ts.map +1 -0
- package/dist/{execution → types/execution}/StepExecutionManager.d.ts +4 -3
- package/dist/types/execution/StepExecutionManager.d.ts.map +1 -0
- package/dist/types/execution/checkAllowance.d.ts +6 -0
- package/dist/types/execution/checkAllowance.d.ts.map +1 -0
- package/dist/types/execution/checkBalance.d.ts +3 -0
- package/dist/types/execution/checkBalance.d.ts.map +1 -0
- package/dist/types/execution/index.d.ts +3 -0
- package/dist/types/execution/index.d.ts.map +1 -0
- package/dist/types/execution/multisig.d.ts +5 -0
- package/dist/types/execution/multisig.d.ts.map +1 -0
- package/dist/types/execution/prepareRestart.d.ts +3 -0
- package/dist/types/execution/prepareRestart.d.ts.map +1 -0
- package/dist/{cjs → types}/execution/stepComparison.d.ts +6 -4
- package/dist/types/execution/stepComparison.d.ts.map +1 -0
- package/dist/{cjs → types}/execution/switchChain.d.ts +6 -4
- package/dist/types/execution/switchChain.d.ts.map +1 -0
- package/dist/types/{internal.types.d.ts → execution/types.d.ts} +38 -98
- package/dist/types/execution/types.d.ts.map +1 -0
- package/dist/{execution → types/execution}/utils.d.ts +3 -2
- package/dist/types/execution/utils.d.ts.map +1 -0
- package/dist/types/execution/waitForReceivingTransaction.d.ts +4 -0
- package/dist/types/execution/waitForReceivingTransaction.d.ts.map +1 -0
- package/dist/{helpers.d.ts → types/helpers.d.ts} +4 -3
- package/dist/types/helpers.d.ts.map +1 -0
- package/dist/types/index.d.ts +9 -3
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/providers/EVM.d.ts +11 -0
- package/dist/types/providers/EVM.d.ts.map +1 -0
- package/dist/types/providers/Solana.d.ts +10 -0
- package/dist/types/providers/Solana.d.ts.map +1 -0
- package/dist/types/providers/index.d.ts +2 -0
- package/dist/types/providers/index.d.ts.map +1 -0
- package/dist/types/providers/types.d.ts +13 -0
- package/dist/types/providers/types.d.ts.map +1 -0
- package/dist/{request.d.ts → types/request.d.ts} +1 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/{services → types/services}/ApiService.d.ts +5 -5
- package/dist/types/services/ApiService.d.ts.map +1 -0
- package/dist/{cjs → types}/services/ChainsService.d.ts +2 -1
- package/dist/types/services/ChainsService.d.ts.map +1 -0
- package/dist/{services → types/services}/ConfigService.d.ts +10 -6
- package/dist/types/services/ConfigService.d.ts.map +1 -0
- package/dist/{cjs → types}/typeguards.d.ts +3 -2
- package/dist/types/typeguards.d.ts.map +1 -0
- package/dist/{cjs → types}/types/abi.d.ts +1 -0
- package/dist/types/types/abi.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/internal.d.ts +61 -0
- package/dist/types/types/internal.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/errors.d.ts +1 -0
- package/dist/types/utils/errors.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/getMaxPriorityFeePerGas.d.ts +1 -0
- package/dist/types/utils/getMaxPriorityFeePerGas.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +6 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/median.d.ts +1 -0
- package/dist/types/utils/median.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/parseError.d.ts +6 -5
- package/dist/types/utils/parseError.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/utils.d.ts +1 -0
- package/dist/types/utils/utils.d.ts.map +1 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +37 -96
- package/dist/LiFi.js +0 -246
- package/dist/allowance/getAllowance.d.ts +0 -6
- package/dist/allowance/index.d.ts +0 -3
- package/dist/allowance/index.js +0 -3
- package/dist/allowance/setAllowance.d.ts +0 -5
- package/dist/allowance/types.js +0 -1
- package/dist/balance/index.d.ts +0 -2
- package/dist/balance/index.js +0 -2
- package/dist/cjs/LiFi.d.ts +0 -171
- package/dist/cjs/allowance/index.d.ts +0 -3
- package/dist/cjs/allowance/setAllowance.d.ts +0 -5
- package/dist/cjs/allowance/types.d.ts +0 -27
- package/dist/cjs/balance/getBalance.d.ts +0 -2
- package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
- package/dist/cjs/balance/index.d.ts +0 -2
- package/dist/cjs/execution/StatusManager.d.ts +0 -67
- package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
- package/dist/cjs/execution/StepExecutor.d.ts +0 -15
- package/dist/cjs/execution/StepExecutor.js +0 -62
- package/dist/cjs/execution/checkAllowance.d.ts +0 -4
- package/dist/cjs/execution/checkBalance.d.ts +0 -2
- package/dist/cjs/execution/index.d.ts +0 -1
- package/dist/cjs/execution/multisig.d.ts +0 -4
- package/dist/cjs/execution/prepareRestart.d.ts +0 -3
- package/dist/cjs/execution/utils.d.ts +0 -12
- package/dist/cjs/execution/waitForReceivingTransaction.d.ts +0 -3
- package/dist/cjs/helpers.d.ts +0 -18
- package/dist/cjs/index.d.ts +0 -5
- package/dist/cjs/request.d.ts +0 -9
- package/dist/cjs/services/ApiService.d.ts +0 -17
- package/dist/cjs/services/ConfigService.d.ts +0 -23
- package/dist/cjs/types/index.d.ts +0 -4
- package/dist/cjs/types/internal.types.d.ts +0 -143
- package/dist/cjs/utils/index.d.ts +0 -5
- package/dist/cjs/version.d.ts +0 -2
- package/dist/connectors.d.ts +0 -8
- package/dist/constants.d.ts +0 -6
- package/dist/execution/RouteExecutionManager.d.ts +0 -59
- package/dist/execution/RouteExecutionManager.js +0 -195
- package/dist/execution/StatusManager.js +0 -167
- package/dist/execution/StepExecutionManager.js +0 -260
- package/dist/execution/StepExecutor.d.ts +0 -15
- package/dist/execution/StepExecutor.js +0 -58
- package/dist/execution/checkAllowance.d.ts +0 -4
- package/dist/execution/checkBalance.d.ts +0 -2
- package/dist/execution/index.d.ts +0 -1
- package/dist/execution/index.js +0 -1
- package/dist/execution/multisig.d.ts +0 -4
- package/dist/execution/prepareRestart.d.ts +0 -3
- package/dist/execution/prepareRestart.js +0 -61
- package/dist/execution/stepComparison.d.ts +0 -14
- package/dist/execution/switchChain.d.ts +0 -21
- package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -6
- package/dist/services/ChainsService.d.ts +0 -11
- package/dist/services/ConfigService.js +0 -99
- package/dist/typeguards.d.ts +0 -4
- package/dist/types/abi.d.ts +0 -5
- package/dist/types/index.js +0 -4
- package/dist/types/internal.types.js +0 -1
- package/dist/utils/errors.d.ts +0 -107
- package/dist/utils/getMaxPriorityFeePerGas.d.ts +0 -2
- package/dist/utils/index.d.ts +0 -5
- package/dist/utils/index.js +0 -5
- package/dist/utils/median.d.ts +0 -1
- package/dist/utils/parseError.d.ts +0 -37
- package/dist/utils/utils.d.ts +0 -10
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -2
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { publicActions } from 'viem';
|
|
2
|
-
import ApiService from '../services/ApiService';
|
|
3
|
-
import ChainsService from '../services/ChainsService';
|
|
4
|
-
import ConfigService from '../services/ConfigService';
|
|
5
|
-
import { getMaxPriorityFeePerGas } from '../utils';
|
|
6
|
-
import { LiFiErrorCode, TransactionError, ValidationError, } from '../utils/errors';
|
|
7
|
-
import { getTransactionFailedMessage, parseError } from '../utils/parseError';
|
|
8
|
-
import { isZeroAddress } from '../utils/utils';
|
|
9
|
-
import { checkAllowance } from './checkAllowance';
|
|
10
|
-
import { checkBalance } from './checkBalance';
|
|
11
|
-
import { updateMultisigRouteProcess } from './multisig';
|
|
12
|
-
import { stepComparison } from './stepComparison';
|
|
13
|
-
import { switchChain } from './switchChain';
|
|
14
|
-
import { getSubstatusMessage } from './utils';
|
|
15
|
-
import { waitForReceivingTransaction } from './waitForReceivingTransaction';
|
|
16
|
-
export class StepExecutionManager {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.allowUserInteraction = true;
|
|
19
|
-
this.allowInteraction = (value) => {
|
|
20
|
-
this.allowUserInteraction = value;
|
|
21
|
-
};
|
|
22
|
-
this.execute = async ({ walletClient, step, statusManager, settings, }) => {
|
|
23
|
-
const client = walletClient.extend(publicActions);
|
|
24
|
-
const config = ConfigService.getInstance().getConfig();
|
|
25
|
-
const isMultisigWalletClient = !!config.multisig?.isMultisigWalletClient;
|
|
26
|
-
const multisigBatchTransactions = [];
|
|
27
|
-
const shouldBatchTransactions = config.multisig?.shouldBatchTransactions &&
|
|
28
|
-
!!config.multisig.sendBatchTransaction;
|
|
29
|
-
step.execution = statusManager.initExecutionObject(step);
|
|
30
|
-
const chainsService = ChainsService.getInstance();
|
|
31
|
-
const fromChain = await chainsService.getChainById(step.action.fromChainId);
|
|
32
|
-
const toChain = await chainsService.getChainById(step.action.toChainId);
|
|
33
|
-
const isBridgeExecution = fromChain.id !== toChain.id;
|
|
34
|
-
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP';
|
|
35
|
-
// STEP 1: Check allowance
|
|
36
|
-
const existingProcess = step.execution.process.find((p) => p.type === currentProcessType);
|
|
37
|
-
// Check token approval only if fromToken is not the native token => no approval needed in that case
|
|
38
|
-
const checkForAllowance = !existingProcess?.txHash &&
|
|
39
|
-
!isZeroAddress(step.action.fromToken.address) &&
|
|
40
|
-
(shouldBatchTransactions || !isMultisigWalletClient);
|
|
41
|
-
if (checkForAllowance) {
|
|
42
|
-
const data = await checkAllowance(client, step, statusManager, settings, fromChain, this.allowUserInteraction, shouldBatchTransactions);
|
|
43
|
-
if (data) {
|
|
44
|
-
// allowance doesn't need value
|
|
45
|
-
const baseTransaction = {
|
|
46
|
-
to: step.action.fromToken.address,
|
|
47
|
-
data,
|
|
48
|
-
};
|
|
49
|
-
multisigBatchTransactions.push(baseTransaction);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// STEP 2: Get transaction
|
|
53
|
-
let process = statusManager.findOrCreateProcess(step, currentProcessType);
|
|
54
|
-
if (process.status !== 'DONE') {
|
|
55
|
-
const multisigProcess = step.execution.process.find((p) => !!p.multisigTxHash);
|
|
56
|
-
try {
|
|
57
|
-
if (isMultisigWalletClient && multisigProcess) {
|
|
58
|
-
const multisigTxHash = multisigProcess.multisigTxHash;
|
|
59
|
-
if (!multisigTxHash) {
|
|
60
|
-
throw new ValidationError('Multisig internal transaction hash is undefined.');
|
|
61
|
-
}
|
|
62
|
-
await updateMultisigRouteProcess(multisigTxHash, step, statusManager, process.type, fromChain);
|
|
63
|
-
}
|
|
64
|
-
let txHash;
|
|
65
|
-
if (process.txHash) {
|
|
66
|
-
// Make sure that the chain is still correct
|
|
67
|
-
const updatedWalletClient = await switchChain(walletClient, statusManager, step, settings.switchChainHook, this.allowUserInteraction);
|
|
68
|
-
if (!updatedWalletClient) {
|
|
69
|
-
// Chain switch was not successful, stop execution here
|
|
70
|
-
return step.execution;
|
|
71
|
-
}
|
|
72
|
-
walletClient = updatedWalletClient;
|
|
73
|
-
// Load exiting transaction
|
|
74
|
-
txHash = process.txHash;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
process = statusManager.updateProcess(step, process.type, 'STARTED');
|
|
78
|
-
// Check balance
|
|
79
|
-
await checkBalance(client.account.address, step);
|
|
80
|
-
// Create new transaction
|
|
81
|
-
if (!step.transactionRequest) {
|
|
82
|
-
const updatedStep = await ApiService.getStepTransaction(step);
|
|
83
|
-
const comparedStep = await stepComparison(statusManager, step, updatedStep, settings, this.allowUserInteraction);
|
|
84
|
-
step = {
|
|
85
|
-
...comparedStep,
|
|
86
|
-
execution: step.execution,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
let transactionRequest = {
|
|
90
|
-
to: step.transactionRequest?.to,
|
|
91
|
-
from: step.transactionRequest?.from,
|
|
92
|
-
data: step.transactionRequest?.data,
|
|
93
|
-
value: step.transactionRequest?.value
|
|
94
|
-
? BigInt(step.transactionRequest.value)
|
|
95
|
-
: undefined,
|
|
96
|
-
maxPriorityFeePerGas: walletClient.account?.type === 'local'
|
|
97
|
-
? await getMaxPriorityFeePerGas(client)
|
|
98
|
-
: undefined,
|
|
99
|
-
// gas: step.transactionRequest?.gasLimit
|
|
100
|
-
// ? BigInt(step.transactionRequest.gasLimit as string)
|
|
101
|
-
// : undefined,
|
|
102
|
-
// gasPrice: step.transactionRequest?.gasPrice
|
|
103
|
-
// ? BigInt(step.transactionRequest.gasPrice as string)
|
|
104
|
-
// : undefined,
|
|
105
|
-
// maxFeePerGas: step.transactionRequest?.maxFeePerGas
|
|
106
|
-
// ? BigInt(step.transactionRequest.maxFeePerGas as string)
|
|
107
|
-
// : undefined,
|
|
108
|
-
// maxPriorityFeePerGas: step.transactionRequest?.maxPriorityFeePerGas
|
|
109
|
-
// ? BigInt(step.transactionRequest.maxPriorityFeePerGas as string)
|
|
110
|
-
// : undefined,
|
|
111
|
-
};
|
|
112
|
-
if (!transactionRequest) {
|
|
113
|
-
throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
|
|
114
|
-
}
|
|
115
|
-
// STEP 3: Send the transaction
|
|
116
|
-
// Make sure that the chain is still correct
|
|
117
|
-
const updatedWalletClient = await switchChain(walletClient, statusManager, step, settings.switchChainHook, this.allowUserInteraction);
|
|
118
|
-
if (!updatedWalletClient) {
|
|
119
|
-
// Chain switch was not successful, stop execution here
|
|
120
|
-
return step.execution;
|
|
121
|
-
}
|
|
122
|
-
walletClient = updatedWalletClient;
|
|
123
|
-
process = statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED');
|
|
124
|
-
if (!this.allowUserInteraction) {
|
|
125
|
-
return step.execution;
|
|
126
|
-
}
|
|
127
|
-
if (settings.updateTransactionRequestHook) {
|
|
128
|
-
const customizedTransactionRequest = await settings.updateTransactionRequestHook(transactionRequest);
|
|
129
|
-
transactionRequest = {
|
|
130
|
-
...transactionRequest,
|
|
131
|
-
...customizedTransactionRequest,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
if (shouldBatchTransactions &&
|
|
135
|
-
config.multisig?.sendBatchTransaction) {
|
|
136
|
-
if (transactionRequest.to && transactionRequest.data) {
|
|
137
|
-
const populatedTransaction = {
|
|
138
|
-
value: transactionRequest.value,
|
|
139
|
-
to: transactionRequest.to,
|
|
140
|
-
data: transactionRequest.data,
|
|
141
|
-
};
|
|
142
|
-
multisigBatchTransactions.push(populatedTransaction);
|
|
143
|
-
txHash = await config.multisig?.sendBatchTransaction(multisigBatchTransactions);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
throw new TransactionError(LiFiErrorCode.TransactionUnprepared, 'Unable to prepare transaction.');
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
txHash = await walletClient.sendTransaction({
|
|
151
|
-
to: transactionRequest.to,
|
|
152
|
-
account: walletClient.account,
|
|
153
|
-
data: transactionRequest.data,
|
|
154
|
-
maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
|
|
155
|
-
chain: null,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
// STEP 4: Wait for the transaction
|
|
159
|
-
if (isMultisigWalletClient) {
|
|
160
|
-
process = statusManager.updateProcess(step, process.type, 'ACTION_REQUIRED', {
|
|
161
|
-
multisigTxHash: txHash,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
process = statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
166
|
-
txHash: txHash,
|
|
167
|
-
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
let replacementReason;
|
|
172
|
-
const transactionReceipt = await client.waitForTransactionReceipt({
|
|
173
|
-
hash: txHash,
|
|
174
|
-
onReplaced(response) {
|
|
175
|
-
replacementReason = response.reason;
|
|
176
|
-
statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
177
|
-
txHash: response.transaction.hash,
|
|
178
|
-
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
|
|
179
|
-
});
|
|
180
|
-
},
|
|
181
|
-
});
|
|
182
|
-
if (replacementReason === 'cancelled') {
|
|
183
|
-
throw new TransactionError(LiFiErrorCode.TransactionCanceled, 'User canceled transaction.');
|
|
184
|
-
}
|
|
185
|
-
// if it's multisig wallet client and the process is in ACTION_REQUIRED
|
|
186
|
-
// then signatures are still needed
|
|
187
|
-
if (isMultisigWalletClient && process.status === 'ACTION_REQUIRED') {
|
|
188
|
-
await updateMultisigRouteProcess(transactionReceipt.transactionHash, step, statusManager, process.type, fromChain);
|
|
189
|
-
}
|
|
190
|
-
if (!isMultisigWalletClient) {
|
|
191
|
-
process = statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
192
|
-
txHash: transactionReceipt.transactionHash,
|
|
193
|
-
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
if (isBridgeExecution) {
|
|
197
|
-
process = statusManager.updateProcess(step, process.type, 'DONE');
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
catch (e) {
|
|
201
|
-
const error = await parseError(e, step, process);
|
|
202
|
-
process = statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
203
|
-
error: {
|
|
204
|
-
message: error.message,
|
|
205
|
-
htmlMessage: error.htmlMessage,
|
|
206
|
-
code: error.code,
|
|
207
|
-
},
|
|
208
|
-
});
|
|
209
|
-
statusManager.updateExecution(step, 'FAILED');
|
|
210
|
-
throw error;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// STEP 5: Wait for the receiving chain
|
|
214
|
-
const processTxHash = process.txHash;
|
|
215
|
-
if (isBridgeExecution) {
|
|
216
|
-
process = statusManager.findOrCreateProcess(step, 'RECEIVING_CHAIN', 'PENDING');
|
|
217
|
-
}
|
|
218
|
-
let statusResponse;
|
|
219
|
-
try {
|
|
220
|
-
if (!processTxHash) {
|
|
221
|
-
throw new Error('Transaction hash is undefined.');
|
|
222
|
-
}
|
|
223
|
-
statusResponse = (await waitForReceivingTransaction(processTxHash, statusManager, process.type, step));
|
|
224
|
-
const statusReceiving = statusResponse.receiving;
|
|
225
|
-
process = statusManager.updateProcess(step, process.type, 'DONE', {
|
|
226
|
-
substatus: statusResponse.substatus,
|
|
227
|
-
substatusMessage: statusResponse.substatusMessage ||
|
|
228
|
-
getSubstatusMessage(statusResponse.status, statusResponse.substatus),
|
|
229
|
-
txHash: statusReceiving?.txHash,
|
|
230
|
-
txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
|
|
231
|
-
});
|
|
232
|
-
statusManager.updateExecution(step, 'DONE', {
|
|
233
|
-
fromAmount: statusResponse.sending.amount,
|
|
234
|
-
toAmount: statusReceiving?.amount,
|
|
235
|
-
toToken: statusReceiving?.token,
|
|
236
|
-
gasAmount: statusResponse.sending.gasAmount,
|
|
237
|
-
gasAmountUSD: statusResponse.sending.gasAmountUSD,
|
|
238
|
-
gasPrice: statusResponse.sending.gasPrice,
|
|
239
|
-
gasToken: statusResponse.sending.gasToken,
|
|
240
|
-
gasUsed: statusResponse.sending.gasUsed,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
catch (e) {
|
|
244
|
-
const htmlMessage = await getTransactionFailedMessage(step, process.txLink);
|
|
245
|
-
process = statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
246
|
-
error: {
|
|
247
|
-
code: LiFiErrorCode.TransactionFailed,
|
|
248
|
-
message: 'Failed while waiting for receiving chain.',
|
|
249
|
-
htmlMessage,
|
|
250
|
-
},
|
|
251
|
-
});
|
|
252
|
-
statusManager.updateExecution(step, 'FAILED');
|
|
253
|
-
console.warn(e);
|
|
254
|
-
throw e;
|
|
255
|
-
}
|
|
256
|
-
// DONE
|
|
257
|
-
return step.execution;
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { WalletClient } from 'viem';
|
|
2
|
-
import type { InteractionSettings, InternalExecutionSettings, LifiStep } from '../types';
|
|
3
|
-
import type { StatusManager } from './StatusManager';
|
|
4
|
-
import { StepExecutionManager } from './StepExecutionManager';
|
|
5
|
-
export declare class StepExecutor {
|
|
6
|
-
stepExecutionManager: StepExecutionManager;
|
|
7
|
-
statusManager: StatusManager;
|
|
8
|
-
settings: InternalExecutionSettings;
|
|
9
|
-
allowUserInteraction: boolean;
|
|
10
|
-
executionStopped: boolean;
|
|
11
|
-
constructor(statusManager: StatusManager, settings: InternalExecutionSettings);
|
|
12
|
-
setInteraction: (settings?: InteractionSettings) => void;
|
|
13
|
-
checkChain: () => never;
|
|
14
|
-
executeStep: (walletClient: WalletClient, step: LifiStep) => Promise<LifiStep>;
|
|
15
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { StepExecutionManager } from './StepExecutionManager';
|
|
2
|
-
import { switchChain } from './switchChain';
|
|
3
|
-
// Please be careful when changing the defaults as it may break the behavior (e.g., background execution)
|
|
4
|
-
const defaultInteractionSettings = {
|
|
5
|
-
allowInteraction: true,
|
|
6
|
-
allowUpdates: true,
|
|
7
|
-
stopExecution: false,
|
|
8
|
-
};
|
|
9
|
-
export class StepExecutor {
|
|
10
|
-
constructor(statusManager, settings) {
|
|
11
|
-
this.allowUserInteraction = true;
|
|
12
|
-
this.executionStopped = false;
|
|
13
|
-
this.setInteraction = (settings) => {
|
|
14
|
-
const interactionSettings = {
|
|
15
|
-
...defaultInteractionSettings,
|
|
16
|
-
...settings,
|
|
17
|
-
};
|
|
18
|
-
this.allowUserInteraction = interactionSettings.allowInteraction;
|
|
19
|
-
this.stepExecutionManager.allowInteraction(interactionSettings.allowInteraction);
|
|
20
|
-
this.statusManager.allowUpdates(interactionSettings.allowUpdates);
|
|
21
|
-
this.executionStopped = interactionSettings.stopExecution;
|
|
22
|
-
};
|
|
23
|
-
// TODO: add checkChain method and update wallet client inside executors
|
|
24
|
-
// This can come in handy when we execute multiple routes simultaneously and
|
|
25
|
-
// should be sure that we are on the right chain when waiting for transactions.
|
|
26
|
-
this.checkChain = () => {
|
|
27
|
-
throw new Error('checkChain is not implemented.');
|
|
28
|
-
};
|
|
29
|
-
this.executeStep = async (walletClient, step) => {
|
|
30
|
-
// Make sure that the chain is still correct
|
|
31
|
-
// Find if it's bridging and the step is waiting for a transaction on the receiving chain
|
|
32
|
-
const recievingChainProcess = step.execution?.process.find((process) => process.type === 'RECEIVING_CHAIN');
|
|
33
|
-
// If the step is waiting for a transaction on the receiving chain, we do not switch the chain
|
|
34
|
-
// All changes are already done from the source chain
|
|
35
|
-
// Return the step
|
|
36
|
-
if (recievingChainProcess?.substatus !== 'WAIT_DESTINATION_TRANSACTION' ||
|
|
37
|
-
!recievingChainProcess) {
|
|
38
|
-
const updatedWalletClient = await switchChain(walletClient, this.statusManager, step, this.settings.switchChainHook, this.allowUserInteraction);
|
|
39
|
-
if (!updatedWalletClient) {
|
|
40
|
-
// Chain switch was not successful, stop execution here
|
|
41
|
-
return step;
|
|
42
|
-
}
|
|
43
|
-
walletClient = updatedWalletClient;
|
|
44
|
-
}
|
|
45
|
-
const parameters = {
|
|
46
|
-
walletClient,
|
|
47
|
-
step,
|
|
48
|
-
settings: this.settings,
|
|
49
|
-
statusManager: this.statusManager,
|
|
50
|
-
};
|
|
51
|
-
await this.stepExecutionManager.execute(parameters);
|
|
52
|
-
return step;
|
|
53
|
-
};
|
|
54
|
-
this.stepExecutionManager = new StepExecutionManager();
|
|
55
|
-
this.statusManager = statusManager;
|
|
56
|
-
this.settings = settings;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Hash, WalletClient } from 'viem';
|
|
2
|
-
import type { StatusManager } from '../execution/StatusManager';
|
|
3
|
-
import type { Chain, InternalExecutionSettings, LifiStep } from '../types';
|
|
4
|
-
export declare const checkAllowance: (walletClient: WalletClient, step: LifiStep, statusManager: StatusManager, settings: InternalExecutionSettings, chain: Chain, allowUserInteraction?: boolean, shouldBatchTransactions?: boolean) => Promise<Hash | void>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './StatusManager';
|
package/dist/execution/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './StatusManager';
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ExtendedChain, LifiStep, ProcessType } from '@lifi/types';
|
|
2
|
-
import type { Hash } from 'viem';
|
|
3
|
-
import type { StatusManager } from '.';
|
|
4
|
-
export declare const updateMultisigRouteProcess: (internalTxHash: Hash, step: LifiStep, statusManager: StatusManager, processType: ProcessType, fromChain: ExtendedChain) => Promise<void>;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { publicActions } from 'viem';
|
|
2
|
-
import { LiFiErrorCode } from '../utils/errors';
|
|
3
|
-
export const prepareRestart = async (route, walletClient) => {
|
|
4
|
-
for (let index = 0; index < route.steps.length; index++) {
|
|
5
|
-
const step = route.steps[index];
|
|
6
|
-
const stepHasFailed = step.execution?.status === 'FAILED';
|
|
7
|
-
if (stepHasFailed) {
|
|
8
|
-
await handleErrorType(walletClient, step);
|
|
9
|
-
deleteFailedProcesses(step);
|
|
10
|
-
deleteTransactionData(step);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
const handleErrorType = async (walletClient, step) => {
|
|
15
|
-
const client = walletClient.extend(publicActions);
|
|
16
|
-
const isGasLimitError = step.execution?.process.some((p) => p.error?.code === LiFiErrorCode.GasLimitError);
|
|
17
|
-
const isGasPriceError = step.execution?.process.some((p) => p.error?.code === LiFiErrorCode.TransactionUnderpriced);
|
|
18
|
-
const { transactionRequest } = step;
|
|
19
|
-
// if (isGasLimitError) {
|
|
20
|
-
// if (transactionRequest) {
|
|
21
|
-
// let gasLimit = transactionRequest.gasLimit
|
|
22
|
-
// try {
|
|
23
|
-
// gasLimit = await client.estimateGas(transactionRequest)
|
|
24
|
-
// } catch (error) {}
|
|
25
|
-
// if (gasLimit) {
|
|
26
|
-
// transactionRequest.gasLimit = BigNumber.from(
|
|
27
|
-
// `${(BigInt(gasLimit.toString()) * 125n) / 100n}`
|
|
28
|
-
// )
|
|
29
|
-
// }
|
|
30
|
-
// }
|
|
31
|
-
// step.estimate.gasCosts?.forEach(
|
|
32
|
-
// (gasCost) =>
|
|
33
|
-
// (gasCost.limit = `${Math.round(Number(gasCost.limit) * 1.25)}`)
|
|
34
|
-
// )
|
|
35
|
-
// }
|
|
36
|
-
// if (isGasPriceError) {
|
|
37
|
-
// if (transactionRequest) {
|
|
38
|
-
// let gasPrice = transactionRequest.gasPrice
|
|
39
|
-
// try {
|
|
40
|
-
// gasPrice = await client.getGasPrice()
|
|
41
|
-
// } catch (error) {}
|
|
42
|
-
// if (gasPrice) {
|
|
43
|
-
// transactionRequest.gasPrice = BigNumber.from(
|
|
44
|
-
// `${(BigInt(gasPrice.toString()) * 125n) / 100n}`
|
|
45
|
-
// )
|
|
46
|
-
// }
|
|
47
|
-
// }
|
|
48
|
-
// step.estimate.gasCosts?.forEach(
|
|
49
|
-
// (gasCost) =>
|
|
50
|
-
// (gasCost.price = `${Math.round(Number(gasCost.price) * 1.25)}`)
|
|
51
|
-
// )
|
|
52
|
-
// }
|
|
53
|
-
};
|
|
54
|
-
const deleteFailedProcesses = (step) => {
|
|
55
|
-
if (step.execution) {
|
|
56
|
-
step.execution.process = step.execution.process.filter((process) => process.status === 'DONE');
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
const deleteTransactionData = (step) => {
|
|
60
|
-
step.transactionRequest = undefined;
|
|
61
|
-
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { StatusManager } from '.';
|
|
2
|
-
import type { InternalExecutionSettings, LifiStep } from '../types';
|
|
3
|
-
/**
|
|
4
|
-
* This method checks whether the new and updated Step meets the required exchange rate conditions.
|
|
5
|
-
* If yes it returns the updated Step.
|
|
6
|
-
* If no and if user interaction is allowed it triggers the acceptExchangeRateUpdateHook. If no user interaction is allowed it aborts.
|
|
7
|
-
* @param statusManager
|
|
8
|
-
* @param oldStep
|
|
9
|
-
* @param newStep
|
|
10
|
-
* @param settings
|
|
11
|
-
* @param allowUserInteraction
|
|
12
|
-
* @returns Return LifiStep
|
|
13
|
-
*/
|
|
14
|
-
export declare const stepComparison: (statusManager: StatusManager, oldStep: LifiStep, newStep: LifiStep, settings: InternalExecutionSettings, allowUserInteraction: boolean) => Promise<LifiStep>;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { LifiStep } from '@lifi/types';
|
|
2
|
-
import type { WalletClient } from 'viem';
|
|
3
|
-
import type { SwitchChainHook } from '../types';
|
|
4
|
-
import type { StatusManager } from './StatusManager';
|
|
5
|
-
/**
|
|
6
|
-
* This method checks whether the wallet client is configured for the correct chain.
|
|
7
|
-
* If yes it returns the wallet clien.
|
|
8
|
-
* If no and if user interaction is allowed it triggers the switchChainHook. If no user interaction is allowed it aborts.
|
|
9
|
-
*
|
|
10
|
-
* Account Type: local -
|
|
11
|
-
* We need to create and return a new WalletClient from the switchChainHook in order to continue execution on a new chain.
|
|
12
|
-
*
|
|
13
|
-
* Account Type: json-rpc -
|
|
14
|
-
* We can switch chain and return existing WalletClient from the switchChainHook in order to continue execution on a new chain.
|
|
15
|
-
* @param walletClient
|
|
16
|
-
* @param statusManager
|
|
17
|
-
* @param step
|
|
18
|
-
* @param switchChainHook
|
|
19
|
-
* @param allowUserInteraction
|
|
20
|
-
*/
|
|
21
|
-
export declare const switchChain: (walletClient: WalletClient, statusManager: StatusManager, step: LifiStep, switchChainHook: SwitchChainHook, allowUserInteraction: boolean) => Promise<WalletClient | undefined>;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { LifiStep, ProcessType, StatusResponse } from '@lifi/types';
|
|
2
|
-
import type { StatusManager } from '..';
|
|
3
|
-
export declare function waitForReceivingTransaction(txHash: string, statusManager: StatusManager, processType: ProcessType, step: LifiStep): Promise<StatusResponse>;
|
package/dist/index.d.ts
DELETED
package/dist/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ChainId, ExtendedChain } from '@lifi/types';
|
|
2
|
-
export default class ChainsService {
|
|
3
|
-
private static instance;
|
|
4
|
-
private readonly loadingPromise;
|
|
5
|
-
private chains;
|
|
6
|
-
constructor();
|
|
7
|
-
private loadAvailableChains;
|
|
8
|
-
static getInstance(): ChainsService;
|
|
9
|
-
getChainById(chainId: ChainId): Promise<ExtendedChain>;
|
|
10
|
-
getChains(): Promise<ExtendedChain[]>;
|
|
11
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { ChainId } from '../types';
|
|
2
|
-
const DefaultExecutionSettings = {
|
|
3
|
-
/* eslint-disable-next-line @typescript-eslint/no-empty-function */
|
|
4
|
-
updateRouteHook: () => { },
|
|
5
|
-
switchChainHook: () => Promise.resolve(undefined),
|
|
6
|
-
acceptExchangeRateUpdateHook: () => Promise.resolve(undefined),
|
|
7
|
-
infiniteApproval: false,
|
|
8
|
-
executeInBackground: false,
|
|
9
|
-
};
|
|
10
|
-
class ConfigService {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.resolveSetupPromise = undefined;
|
|
13
|
-
/**
|
|
14
|
-
* This call immediately returns the current config. It does not make sure that all chain data is already loaded
|
|
15
|
-
* Use this if you need access to basic information like API urls or settings
|
|
16
|
-
*/
|
|
17
|
-
this.getConfig = () => {
|
|
18
|
-
return this.config;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* This call waits for all setup promises to be done.
|
|
22
|
-
* Use this if you need access to chain data (RPCs or multicalls)
|
|
23
|
-
*/
|
|
24
|
-
this.getConfigAsync = async () => {
|
|
25
|
-
await this.setupPromise;
|
|
26
|
-
return this.config;
|
|
27
|
-
};
|
|
28
|
-
this.updateConfig = (configUpdate) => {
|
|
29
|
-
// API
|
|
30
|
-
this.config.apiUrl = configUpdate.apiUrl || this.config.apiUrl;
|
|
31
|
-
// RPCS
|
|
32
|
-
this.config.rpcs = Object.assign(this.config.rpcs, configUpdate.rpcs);
|
|
33
|
-
// MULTICALL
|
|
34
|
-
this.config.multicallAddresses = Object.assign(this.config.multicallAddresses, configUpdate.multicallAddresses);
|
|
35
|
-
// SETTINGS
|
|
36
|
-
this.config.defaultExecutionSettings = Object.assign(this.config.defaultExecutionSettings, configUpdate.defaultExecutionSettings);
|
|
37
|
-
// OPTIONS
|
|
38
|
-
this.config.defaultRouteOptions = Object.assign(this.config.defaultRouteOptions, configUpdate.defaultRouteOptions);
|
|
39
|
-
this.config.userId = configUpdate.userId || this.config.userId;
|
|
40
|
-
this.config.integrator = configUpdate.integrator || this.config.integrator;
|
|
41
|
-
this.config.defaultRouteOptions.integrator =
|
|
42
|
-
configUpdate.integrator ||
|
|
43
|
-
configUpdate.defaultRouteOptions?.integrator ||
|
|
44
|
-
this.config.integrator;
|
|
45
|
-
this.config.widgetVersion =
|
|
46
|
-
configUpdate.widgetVersion || this.config.widgetVersion;
|
|
47
|
-
this.config.multisig = configUpdate.multisigConfig || this.config.multisig;
|
|
48
|
-
return this.config;
|
|
49
|
-
};
|
|
50
|
-
this.updateChains = (chains) => {
|
|
51
|
-
for (const chain of chains) {
|
|
52
|
-
const chainId = chain.id;
|
|
53
|
-
// set RPCs if they were not configured by the user before
|
|
54
|
-
if (!this.config.rpcs[chainId]?.length) {
|
|
55
|
-
this.config.rpcs[chainId] = chain.metamask.rpcUrls;
|
|
56
|
-
}
|
|
57
|
-
// set multicall addresses if they exist and were not configured by the user before
|
|
58
|
-
if (chain.multicallAddress && !this.config.multicallAddresses[chainId]) {
|
|
59
|
-
this.config.multicallAddresses[chainId] = chain.multicallAddress;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
this.resolveSetupPromise?.();
|
|
63
|
-
return this.config;
|
|
64
|
-
};
|
|
65
|
-
this.config = ConfigService.getDefaultConfig();
|
|
66
|
-
this.setupPromise = new Promise((resolve) => {
|
|
67
|
-
this.resolveSetupPromise = resolve;
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
static chainIdToObject(val) {
|
|
71
|
-
const result = {};
|
|
72
|
-
const values = Object.values(ChainId);
|
|
73
|
-
values.forEach((chainId) => {
|
|
74
|
-
if (typeof chainId !== 'string') {
|
|
75
|
-
result[chainId] = val ? JSON.parse(JSON.stringify(val)) : val;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
static getInstance() {
|
|
81
|
-
if (!this.instance) {
|
|
82
|
-
this.instance = new ConfigService();
|
|
83
|
-
}
|
|
84
|
-
return this.instance;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
ConfigService.getDefaultConfig = () => {
|
|
88
|
-
return {
|
|
89
|
-
apiUrl: 'https://li.quest/v1',
|
|
90
|
-
rpcs: ConfigService.chainIdToObject([]),
|
|
91
|
-
multicallAddresses: ConfigService.chainIdToObject(undefined),
|
|
92
|
-
defaultExecutionSettings: DefaultExecutionSettings,
|
|
93
|
-
defaultRouteOptions: {
|
|
94
|
-
integrator: 'lifi-sdk',
|
|
95
|
-
},
|
|
96
|
-
integrator: 'lifi-sdk',
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
export default ConfigService;
|
package/dist/typeguards.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { LifiStep, RoutesRequest, StaticToken } from './types';
|
|
2
|
-
export declare const isRoutesRequest: (routesRequest: RoutesRequest) => routesRequest is RoutesRequest;
|
|
3
|
-
export declare const isStep: (step: LifiStep) => step is LifiStep;
|
|
4
|
-
export declare const isToken: (token: StaticToken) => token is StaticToken;
|
package/dist/types/abi.d.ts
DELETED
package/dist/types/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|