@lifi/sdk 3.0.0-alpha.2 → 3.0.0-alpha.21
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/config.js +48 -0
- package/dist/_cjs/config.js.map +1 -0
- package/dist/{cjs → _cjs}/constants.js +2 -4
- package/dist/_cjs/constants.js.map +1 -0
- package/dist/_cjs/core/BaseStepExecutor.js +55 -0
- package/dist/_cjs/core/BaseStepExecutor.js.map +1 -0
- package/dist/_cjs/core/EVM/EVM.js +46 -0
- package/dist/_cjs/core/EVM/EVM.js.map +1 -0
- package/dist/_cjs/core/EVM/EVMStepExecutor.js +276 -0
- package/dist/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
- package/dist/{cjs/types → _cjs/core/EVM}/abi.js +1 -0
- package/dist/_cjs/core/EVM/abi.js.map +1 -0
- package/dist/{cjs/execution → _cjs/core/EVM}/checkAllowance.js +12 -12
- package/dist/_cjs/core/EVM/checkAllowance.js.map +1 -0
- package/dist/{cjs/allowance → _cjs/core/EVM}/getAllowance.js +15 -17
- package/dist/_cjs/core/EVM/getAllowance.js.map +1 -0
- package/dist/{cjs/balance/getBalance.js → _cjs/core/EVM/getEVMBalance.js} +22 -22
- package/dist/_cjs/core/EVM/getEVMBalance.js.map +1 -0
- package/dist/{cjs/execution → _cjs/core/EVM}/multisig.js +7 -11
- package/dist/_cjs/core/EVM/multisig.js.map +1 -0
- package/dist/_cjs/core/EVM/publicClient.js +35 -0
- package/dist/_cjs/core/EVM/publicClient.js.map +1 -0
- package/dist/_cjs/core/EVM/setAllowance.js +71 -0
- package/dist/_cjs/core/EVM/setAllowance.js.map +1 -0
- package/dist/_cjs/core/EVM/switchChain.js +37 -0
- package/dist/_cjs/core/EVM/switchChain.js.map +1 -0
- package/dist/_cjs/core/EVM/types.js +9 -0
- package/dist/_cjs/core/EVM/types.js.map +1 -0
- package/dist/{cjs/utils/getMaxPriorityFeePerGas.js → _cjs/core/EVM/utils.js} +11 -3
- package/dist/_cjs/core/EVM/utils.js.map +1 -0
- package/dist/_cjs/core/Solana/Solana.js +44 -0
- package/dist/_cjs/core/Solana/Solana.js.map +1 -0
- package/dist/_cjs/core/Solana/SolanaStepExecutor.js +157 -0
- package/dist/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
- package/dist/_cjs/core/Solana/connection.js +18 -0
- package/dist/_cjs/core/Solana/connection.js.map +1 -0
- package/dist/_cjs/core/Solana/getSolanaBalance.js +50 -0
- package/dist/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
- package/dist/_cjs/core/Solana/types.js +10 -0
- package/dist/_cjs/core/Solana/types.js.map +1 -0
- package/dist/_cjs/core/StatusManager.js +167 -0
- package/dist/_cjs/core/StatusManager.js.map +1 -0
- package/dist/{cjs/execution → _cjs/core}/checkBalance.js +5 -5
- package/dist/_cjs/core/checkBalance.js.map +1 -0
- package/dist/_cjs/core/execution.js +134 -0
- package/dist/_cjs/core/execution.js.map +1 -0
- package/dist/_cjs/core/executionState.js +23 -0
- package/dist/_cjs/core/executionState.js.map +1 -0
- package/dist/_cjs/core/index.js +7 -0
- package/dist/_cjs/core/index.js.map +1 -0
- package/dist/_cjs/core/prepareRestart.js +23 -0
- package/dist/_cjs/core/prepareRestart.js.map +1 -0
- package/dist/_cjs/core/provider.js +15 -0
- package/dist/_cjs/core/provider.js.map +1 -0
- package/dist/_cjs/core/stepComparison.js +25 -0
- package/dist/_cjs/core/stepComparison.js.map +1 -0
- package/dist/{cjs/allowance → _cjs/core}/types.js +1 -0
- package/dist/_cjs/core/types.js.map +1 -0
- package/dist/{cjs/execution → _cjs/core}/utils.js +16 -10
- package/dist/_cjs/core/utils.js.map +1 -0
- package/dist/{cjs/execution → _cjs/core}/waitForReceivingTransaction.js +10 -12
- package/dist/_cjs/core/waitForReceivingTransaction.js.map +1 -0
- package/dist/_cjs/createConfig.js +48 -0
- package/dist/_cjs/createConfig.js.map +1 -0
- package/dist/{cjs → _cjs}/helpers.js +11 -25
- package/dist/_cjs/helpers.js.map +1 -0
- package/dist/_cjs/index.js +20 -0
- package/dist/_cjs/index.js.map +1 -0
- package/dist/_cjs/package.json +1 -0
- package/dist/{cjs → _cjs}/request.js +22 -16
- package/dist/_cjs/request.js.map +1 -0
- package/dist/_cjs/services/api.js +284 -0
- package/dist/_cjs/services/api.js.map +1 -0
- package/dist/_cjs/services/balance.js +49 -0
- package/dist/_cjs/services/balance.js.map +1 -0
- package/dist/{cjs → _cjs}/typeguards.js +1 -0
- package/dist/_cjs/typeguards.js.map +1 -0
- package/dist/_cjs/types/index.js +5 -0
- package/dist/_cjs/types/index.js.map +1 -0
- package/dist/{cjs/types/internal.types.js → _cjs/types/internal.js} +1 -0
- package/dist/_cjs/types/internal.js.map +1 -0
- package/dist/{cjs → _cjs}/utils/errors.js +25 -3
- package/dist/_cjs/utils/errors.js.map +1 -0
- package/dist/_cjs/utils/getTransactionMessage.js +31 -0
- package/dist/_cjs/utils/getTransactionMessage.js.map +1 -0
- package/dist/_cjs/utils/index.js +9 -0
- package/dist/_cjs/utils/index.js.map +1 -0
- package/dist/{cjs → _cjs}/utils/median.js +1 -0
- package/dist/_cjs/utils/median.js.map +1 -0
- package/dist/_cjs/utils/parseBackendError.js +27 -0
- package/dist/_cjs/utils/parseBackendError.js.map +1 -0
- package/dist/_cjs/utils/parseError.js +67 -0
- package/dist/_cjs/utils/parseError.js.map +1 -0
- package/dist/{cjs → _cjs}/utils/utils.js +5 -11
- package/dist/_cjs/utils/utils.js.map +1 -0
- package/dist/{cjs → _cjs}/version.js +2 -1
- package/dist/_cjs/version.js.map +1 -0
- package/dist/_esm/config.js +45 -0
- package/dist/_esm/config.js.map +1 -0
- package/dist/{constants.js → _esm/constants.js} +1 -0
- package/dist/_esm/constants.js.map +1 -0
- package/dist/_esm/core/BaseStepExecutor.js +52 -0
- package/dist/_esm/core/BaseStepExecutor.js.map +1 -0
- package/dist/_esm/core/EVM/EVM.js +42 -0
- package/dist/_esm/core/EVM/EVM.js.map +1 -0
- package/dist/_esm/core/EVM/EVMStepExecutor.js +304 -0
- package/dist/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
- package/dist/{types → _esm/core/EVM}/abi.js +1 -0
- package/dist/_esm/core/EVM/abi.js.map +1 -0
- package/dist/{execution → _esm/core/EVM}/checkAllowance.js +8 -6
- package/dist/_esm/core/EVM/checkAllowance.js.map +1 -0
- package/dist/{allowance → _esm/core/EVM}/getAllowance.js +20 -5
- package/dist/_esm/core/EVM/getAllowance.js.map +1 -0
- package/dist/{balance/getBalance.js → _esm/core/EVM/getEVMBalance.js} +11 -11
- package/dist/_esm/core/EVM/getEVMBalance.js.map +1 -0
- package/dist/{execution → _esm/core/EVM}/multisig.js +5 -6
- package/dist/_esm/core/EVM/multisig.js.map +1 -0
- package/dist/_esm/core/EVM/publicClient.js +37 -0
- package/dist/_esm/core/EVM/publicClient.js.map +1 -0
- package/dist/{allowance → _esm/core/EVM}/setAllowance.js +46 -11
- package/dist/_esm/core/EVM/setAllowance.js.map +1 -0
- package/dist/{execution → _esm/core/EVM}/switchChain.js +5 -3
- package/dist/_esm/core/EVM/switchChain.js.map +1 -0
- package/dist/_esm/core/EVM/types.js +6 -0
- package/dist/_esm/core/EVM/types.js.map +1 -0
- package/dist/{utils/getMaxPriorityFeePerGas.js → _esm/core/EVM/utils.js} +9 -1
- package/dist/_esm/core/EVM/utils.js.map +1 -0
- package/dist/_esm/core/Solana/Solana.js +40 -0
- package/dist/_esm/core/Solana/Solana.js.map +1 -0
- package/dist/_esm/core/Solana/SolanaStepExecutor.js +158 -0
- package/dist/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
- package/dist/_esm/core/Solana/connection.js +19 -0
- package/dist/_esm/core/Solana/connection.js.map +1 -0
- package/dist/_esm/core/Solana/getSolanaBalance.js +46 -0
- package/dist/_esm/core/Solana/getSolanaBalance.js.map +1 -0
- package/dist/_esm/core/Solana/types.js +7 -0
- package/dist/_esm/core/Solana/types.js.map +1 -0
- package/dist/_esm/core/StatusManager.js +203 -0
- package/dist/_esm/core/StatusManager.js.map +1 -0
- package/dist/{execution → _esm/core}/checkBalance.js +3 -2
- package/dist/_esm/core/checkBalance.js.map +1 -0
- package/dist/_esm/core/execution.js +173 -0
- package/dist/_esm/core/execution.js.map +1 -0
- package/dist/_esm/core/executionState.js +20 -0
- package/dist/_esm/core/executionState.js.map +1 -0
- package/dist/_esm/core/index.js +4 -0
- package/dist/_esm/core/index.js.map +1 -0
- package/dist/_esm/core/prepareRestart.js +64 -0
- package/dist/_esm/core/prepareRestart.js.map +1 -0
- package/dist/_esm/core/provider.js +11 -0
- package/dist/_esm/core/provider.js.map +1 -0
- package/dist/{execution → _esm/core}/stepComparison.js +7 -5
- package/dist/_esm/core/stepComparison.js.map +1 -0
- package/dist/_esm/core/types.js +2 -0
- package/dist/_esm/core/types.js.map +1 -0
- package/dist/{execution → _esm/core}/utils.js +14 -0
- package/dist/_esm/core/utils.js.map +1 -0
- package/dist/{execution → _esm/core}/waitForReceivingTransaction.js +8 -7
- package/dist/_esm/core/waitForReceivingTransaction.js.map +1 -0
- package/dist/_esm/createConfig.js +45 -0
- package/dist/_esm/createConfig.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 +12 -0
- package/dist/_esm/index.js.map +1 -0
- package/dist/_esm/package.json +1 -0
- package/dist/{request.js → _esm/request.js} +19 -9
- package/dist/_esm/request.js.map +1 -0
- package/dist/_esm/services/api.js +353 -0
- package/dist/_esm/services/api.js.map +1 -0
- package/dist/_esm/services/balance.js +65 -0
- package/dist/_esm/services/balance.js.map +1 -0
- package/dist/{typeguards.js → _esm/typeguards.js} +1 -0
- package/dist/_esm/typeguards.js.map +1 -0
- package/dist/_esm/types/index.js +2 -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/_esm/utils/getTransactionMessage.js +28 -0
- package/dist/_esm/utils/getTransactionMessage.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/_esm/utils/parseBackendError.js +24 -0
- package/dist/_esm/utils/parseBackendError.js.map +1 -0
- package/dist/{utils → _esm/utils}/parseError.js +4 -53
- 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/_types/config.d.ts +11 -0
- package/dist/_types/config.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/core/BaseStepExecutor.d.ts +13 -0
- package/dist/_types/core/BaseStepExecutor.d.ts.map +1 -0
- package/dist/_types/core/EVM/EVM.d.ts +3 -0
- package/dist/_types/core/EVM/EVM.d.ts.map +1 -0
- package/dist/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
- package/dist/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
- package/dist/{cjs/types → _types/core/EVM}/abi.d.ts +1 -0
- package/dist/_types/core/EVM/abi.d.ts.map +1 -0
- package/dist/_types/core/EVM/checkAllowance.d.ts +6 -0
- package/dist/_types/core/EVM/checkAllowance.d.ts.map +1 -0
- package/dist/{cjs/allowance → _types/core/EVM}/getAllowance.d.ts +15 -1
- package/dist/_types/core/EVM/getAllowance.d.ts.map +1 -0
- package/dist/_types/core/EVM/getEVMBalance.d.ts +3 -0
- package/dist/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
- package/dist/_types/core/EVM/multisig.d.ts +6 -0
- package/dist/_types/core/EVM/multisig.d.ts.map +1 -0
- package/dist/_types/core/EVM/publicClient.d.ts +8 -0
- package/dist/_types/core/EVM/publicClient.d.ts.map +1 -0
- package/dist/_types/core/EVM/setAllowance.d.ts +25 -0
- package/dist/_types/core/EVM/setAllowance.d.ts.map +1 -0
- package/dist/{execution → _types/core/EVM}/switchChain.d.ts +6 -4
- package/dist/_types/core/EVM/switchChain.d.ts.map +1 -0
- package/dist/_types/core/EVM/types.d.ts +57 -0
- package/dist/_types/core/EVM/types.d.ts.map +1 -0
- package/dist/_types/core/EVM/utils.d.ts +5 -0
- package/dist/_types/core/EVM/utils.d.ts.map +1 -0
- package/dist/_types/core/Solana/Solana.d.ts +3 -0
- package/dist/_types/core/Solana/Solana.d.ts.map +1 -0
- package/dist/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
- package/dist/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
- package/dist/_types/core/Solana/connection.d.ts +8 -0
- package/dist/_types/core/Solana/connection.d.ts.map +1 -0
- package/dist/_types/core/Solana/getSolanaBalance.d.ts +3 -0
- package/dist/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
- package/dist/_types/core/Solana/types.d.ts +13 -0
- package/dist/_types/core/Solana/types.d.ts.map +1 -0
- package/dist/{cjs/execution → _types/core}/StatusManager.d.ts +12 -16
- package/dist/_types/core/StatusManager.d.ts.map +1 -0
- package/dist/_types/core/checkBalance.d.ts +3 -0
- package/dist/_types/core/checkBalance.d.ts.map +1 -0
- package/dist/_types/core/execution.d.ts +42 -0
- package/dist/_types/core/execution.d.ts.map +1 -0
- package/dist/_types/core/executionState.d.ts +16 -0
- package/dist/_types/core/executionState.d.ts.map +1 -0
- package/dist/_types/core/index.d.ts +4 -0
- package/dist/_types/core/index.d.ts.map +1 -0
- package/dist/_types/core/prepareRestart.d.ts +3 -0
- package/dist/_types/core/prepareRestart.d.ts.map +1 -0
- package/dist/_types/core/provider.d.ts +3 -0
- package/dist/_types/core/provider.d.ts.map +1 -0
- package/dist/{execution → _types/core}/stepComparison.d.ts +7 -4
- package/dist/_types/core/stepComparison.d.ts.map +1 -0
- package/dist/_types/core/types.d.ts +71 -0
- package/dist/_types/core/types.d.ts.map +1 -0
- package/dist/{execution → _types/core}/utils.d.ts +5 -2
- package/dist/_types/core/utils.d.ts.map +1 -0
- package/dist/_types/core/waitForReceivingTransaction.d.ts +4 -0
- package/dist/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
- package/dist/_types/createConfig.d.ts +7 -0
- package/dist/_types/createConfig.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 +12 -0
- package/dist/_types/index.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/_types/services/api.d.ts +87 -0
- package/dist/_types/services/api.d.ts.map +1 -0
- package/dist/_types/services/balance.d.ts +30 -0
- package/dist/_types/services/balance.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/_types/types/index.d.ts +2 -0
- package/dist/_types/types/index.d.ts.map +1 -0
- package/dist/_types/types/internal.d.ts +56 -0
- package/dist/_types/types/internal.d.ts.map +1 -0
- package/dist/{utils → _types/utils}/errors.d.ts +1 -0
- package/dist/_types/utils/errors.d.ts.map +1 -0
- package/dist/_types/utils/getTransactionMessage.d.ts +4 -0
- package/dist/_types/utils/getTransactionMessage.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/_types/utils/parseBackendError.d.ts +3 -0
- package/dist/_types/utils/parseBackendError.d.ts.map +1 -0
- package/dist/{utils → _types/utils}/parseError.d.ts +4 -6
- package/dist/_types/utils/parseError.d.ts.map +1 -0
- package/dist/{utils → _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/dist/config.ts +47 -0
- package/dist/constants.ts +7 -0
- package/dist/core/BaseStepExecutor.ts +40 -0
- package/dist/core/EVM/EVM.ts +50 -0
- package/dist/core/EVM/EVMStepExecutor.ts +472 -0
- package/dist/core/EVM/abi.ts +47 -0
- package/dist/core/EVM/checkAllowance.ts +152 -0
- package/dist/core/EVM/getAllowance.ts +146 -0
- package/dist/core/EVM/getEVMBalance.ts +120 -0
- package/dist/core/EVM/multisig.ts +53 -0
- package/dist/core/EVM/publicClient.ts +46 -0
- package/dist/core/EVM/setAllowance.ts +144 -0
- package/dist/core/EVM/switchChain.ts +77 -0
- package/dist/core/EVM/types.ts +75 -0
- package/dist/core/EVM/utils.ts +43 -0
- package/dist/core/Solana/Solana.ts +46 -0
- package/dist/core/Solana/SolanaStepExecutor.ts +253 -0
- package/dist/core/Solana/connection.ts +19 -0
- package/dist/core/Solana/getSolanaBalance.ts +62 -0
- package/dist/core/Solana/types.ts +18 -0
- package/dist/core/StatusManager.ts +238 -0
- package/dist/core/checkBalance.ts +48 -0
- package/dist/core/execution.ts +218 -0
- package/dist/core/executionState.ts +40 -0
- package/dist/core/index.ts +3 -0
- package/dist/core/prepareRestart.ts +81 -0
- package/dist/core/provider.ts +12 -0
- package/dist/core/stepComparison.ts +51 -0
- package/dist/core/types.ts +103 -0
- package/dist/core/utils.ts +122 -0
- package/dist/core/waitForReceivingTransaction.ts +73 -0
- package/dist/createConfig.ts +54 -0
- package/dist/helpers.ts +97 -0
- package/dist/index.ts +11 -0
- package/dist/request.ts +79 -0
- package/dist/services/api.ts +472 -0
- package/dist/services/balance.ts +93 -0
- package/dist/typeguards.ts +89 -0
- package/dist/types/index.ts +1 -0
- package/dist/types/internal.ts +58 -0
- package/dist/utils/errors.ts +231 -0
- package/dist/utils/getTransactionMessage.ts +46 -0
- package/dist/utils/index.ts +5 -0
- package/dist/utils/median.ts +11 -0
- package/dist/utils/parseBackendError.ts +50 -0
- package/dist/utils/parseError.ts +204 -0
- package/dist/utils/utils.ts +48 -0
- package/dist/version.ts +2 -0
- package/package.json +27 -86
- package/dist/LiFi.d.ts +0 -171
- 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.d.ts +0 -27
- package/dist/allowance/types.js +0 -1
- package/dist/balance/getBalance.d.ts +0 -2
- package/dist/balance/getTokenBalance.d.ts +0 -8
- package/dist/balance/getTokenBalance.js +0 -27
- 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/LiFi.js +0 -276
- package/dist/cjs/allowance/index.d.ts +0 -3
- package/dist/cjs/allowance/index.js +0 -19
- package/dist/cjs/allowance/setAllowance.d.ts +0 -5
- package/dist/cjs/allowance/setAllowance.js +0 -56
- 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/getTokenBalance.js +0 -33
- package/dist/cjs/balance/index.d.ts +0 -2
- package/dist/cjs/balance/index.js +0 -18
- package/dist/cjs/connectors.d.ts +0 -8
- package/dist/cjs/connectors.js +0 -75
- package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -59
- package/dist/cjs/execution/RouteExecutionManager.js +0 -202
- package/dist/cjs/execution/StatusManager.js +0 -171
- package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
- package/dist/cjs/execution/StepExecutionManager.js +0 -267
- 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/index.js +0 -17
- package/dist/cjs/execution/multisig.d.ts +0 -4
- package/dist/cjs/execution/prepareRestart.d.ts +0 -3
- package/dist/cjs/execution/prepareRestart.js +0 -65
- package/dist/cjs/execution/stepComparison.d.ts +0 -14
- package/dist/cjs/execution/stepComparison.js +0 -37
- package/dist/cjs/execution/switchChain.d.ts +0 -21
- package/dist/cjs/execution/switchChain.js +0 -54
- 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/index.js +0 -24
- package/dist/cjs/request.d.ts +0 -9
- package/dist/cjs/services/ApiService.d.ts +0 -17
- package/dist/cjs/services/ApiService.js +0 -326
- package/dist/cjs/services/ChainsService.d.ts +0 -11
- package/dist/cjs/services/ChainsService.js +0 -39
- package/dist/cjs/services/ConfigService.d.ts +0 -23
- package/dist/cjs/services/ConfigService.js +0 -101
- package/dist/cjs/types/index.d.ts +0 -4
- package/dist/cjs/types/index.js +0 -22
- package/dist/cjs/types/internal.types.d.ts +0 -142
- package/dist/cjs/utils/errors.d.ts +0 -107
- package/dist/cjs/utils/getMaxPriorityFeePerGas.d.ts +0 -2
- package/dist/cjs/utils/index.d.ts +0 -5
- package/dist/cjs/utils/index.js +0 -21
- package/dist/cjs/utils/parseError.d.ts +0 -37
- package/dist/cjs/utils/parseError.js +0 -157
- package/dist/cjs/utils/utils.d.ts +0 -10
- package/dist/cjs/version.d.ts +0 -2
- package/dist/connectors.d.ts +0 -8
- package/dist/connectors.js +0 -41
- 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.d.ts +0 -67
- package/dist/execution/StatusManager.js +0 -167
- package/dist/execution/StepExecutionManager.d.ts +0 -7
- 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/waitForReceivingTransaction.d.ts +0 -3
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -6
- package/dist/services/ApiService.d.ts +0 -17
- package/dist/services/ApiService.js +0 -321
- package/dist/services/ChainsService.d.ts +0 -11
- package/dist/services/ChainsService.js +0 -33
- package/dist/services/ConfigService.d.ts +0 -23
- 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.d.ts +0 -4
- package/dist/types/index.js +0 -4
- package/dist/types/internal.types.d.ts +0 -142
- package/dist/types/internal.types.js +0 -1
- 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/version.d.ts +0 -2
- package/dist/version.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"./dist/","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"median.d.ts","sourceRoot":"./dist/","sources":["utils/median.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,QAAS,MAAM,EAAE,KAAG,MAAM,GAAG,SAU/C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseBackendError.d.ts","sourceRoot":"./dist/","sources":["utils/parseBackendError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAS5C,eAAO,MAAM,iBAAiB,MAAa,GAAG,KAAG,QAAQ,SAAS,CAwCjE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { LiFiError } from './errors';
|
|
1
|
+
import type { LiFiStep, Process } from '@lifi/types';
|
|
2
|
+
import { LiFiError } from './errors.js';
|
|
3
3
|
/**
|
|
4
4
|
* Available MetaMask error codes:
|
|
5
5
|
*
|
|
@@ -31,7 +31,5 @@ import { LiFiError } from './errors';
|
|
|
31
31
|
* https://eips.ethereum.org/EIPS/eip-1474#error-codes
|
|
32
32
|
* https://eips.ethereum.org/EIPS/eip-1193#provider-errors
|
|
33
33
|
*/
|
|
34
|
-
export declare const
|
|
35
|
-
|
|
36
|
-
export declare const parseError: (e: any, step?: LifiStep, process?: Process) => Promise<LiFiError>;
|
|
37
|
-
export declare const parseBackendError: (e: any) => Promise<LiFiError>;
|
|
34
|
+
export declare const parseError: (e: any, step?: LiFiStep, process?: Process) => Promise<LiFiError>;
|
|
35
|
+
//# sourceMappingURL=parseError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseError.d.ts","sourceRoot":"./dist/","sources":["utils/parseError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAMpD,OAAO,EAIL,SAAS,EAOV,MAAM,aAAa,CAAA;AAGpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,eAAO,MAAM,UAAU,MAClB,GAAG,SACC,QAAQ,YACL,OAAO,KAChB,QAAQ,SAAS,CAmJnB,CAAA"}
|
|
@@ -8,3 +8,4 @@ export declare const wait: (ms: number) => Promise<undefined>;
|
|
|
8
8
|
export declare const repeatUntilDone: <T>(toRepeat: () => Promise<T | undefined>, timeout?: number) => Promise<T>;
|
|
9
9
|
export declare const isZeroAddress: (address: string) => boolean;
|
|
10
10
|
export declare const isNativeTokenAddress: (address: string) => boolean;
|
|
11
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"./dist/","sources":["utils/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,OAAQ,MAAM,KAAG,QAAQ,SAAS,CAIlD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,6EAc3B,CAAA;AAED,eAAO,MAAM,aAAa,YAAa,MAAM,KAAG,OAK/C,CAAA;AAED,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,OAUtD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"./dist/","sources":["version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,cAAc,CAAA;AAC/B,eAAO,MAAM,OAAO,mBAAmB,CAAA"}
|
package/dist/config.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ChainId, ExtendedChain } from '@lifi/types'
|
|
2
|
+
import type { SDKConfig, SDKOptions } from './types/index.js'
|
|
3
|
+
|
|
4
|
+
export const config = (() => {
|
|
5
|
+
const _config: SDKConfig = {
|
|
6
|
+
integrator: 'lifi-sdk',
|
|
7
|
+
apiUrl: 'https://li.quest/v1',
|
|
8
|
+
rpcUrls: {},
|
|
9
|
+
}
|
|
10
|
+
let _chains: ExtendedChain[]
|
|
11
|
+
let _loading: Promise<void> | undefined
|
|
12
|
+
return {
|
|
13
|
+
get chains() {
|
|
14
|
+
return _chains
|
|
15
|
+
},
|
|
16
|
+
set chains(chains: ExtendedChain[]) {
|
|
17
|
+
_chains = chains
|
|
18
|
+
_loading = undefined
|
|
19
|
+
},
|
|
20
|
+
set loading(loading: Promise<void>) {
|
|
21
|
+
_loading = loading
|
|
22
|
+
},
|
|
23
|
+
async getRPCUrls() {
|
|
24
|
+
if (_loading) {
|
|
25
|
+
await _loading
|
|
26
|
+
}
|
|
27
|
+
return _config.rpcUrls
|
|
28
|
+
},
|
|
29
|
+
async getChainById(chainId: ChainId) {
|
|
30
|
+
if (_loading) {
|
|
31
|
+
await _loading
|
|
32
|
+
}
|
|
33
|
+
const chain = this.chains?.find((chain) => chain.id === chainId)
|
|
34
|
+
if (!chain) {
|
|
35
|
+
throw new Error(`ChainId ${chainId} not found`)
|
|
36
|
+
}
|
|
37
|
+
return chain
|
|
38
|
+
},
|
|
39
|
+
set(options: SDKOptions) {
|
|
40
|
+
Object.assign(_config, options)
|
|
41
|
+
return _config
|
|
42
|
+
},
|
|
43
|
+
get() {
|
|
44
|
+
return _config
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
})()
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const AddressZero = '0x0000000000000000000000000000000000000000'
|
|
2
|
+
export const AlternativeAddressZero =
|
|
3
|
+
'0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
|
|
4
|
+
/**
|
|
5
|
+
* Cronos require bigger multicall chunks than default 1024 (1 KB)
|
|
6
|
+
*/
|
|
7
|
+
export const MulticallBatchSize = 16_384 // 16 Kilobytes (KB)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { LiFiStep } from '@lifi/types'
|
|
2
|
+
import { StatusManager } from './StatusManager.js'
|
|
3
|
+
import type {
|
|
4
|
+
ExecutionOptions,
|
|
5
|
+
InteractionSettings,
|
|
6
|
+
StepExecutor,
|
|
7
|
+
StepExecutorOptions,
|
|
8
|
+
} from './types.js'
|
|
9
|
+
|
|
10
|
+
// Please be careful when changing the defaults as it may break the behavior (e.g., background execution)
|
|
11
|
+
const defaultInteractionSettings = {
|
|
12
|
+
allowInteraction: true,
|
|
13
|
+
allowUpdates: true,
|
|
14
|
+
allowExecution: true,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export abstract class BaseStepExecutor implements StepExecutor {
|
|
18
|
+
protected executionOptions?: ExecutionOptions
|
|
19
|
+
protected statusManager: StatusManager
|
|
20
|
+
|
|
21
|
+
public allowUserInteraction = true
|
|
22
|
+
public allowExecution = true
|
|
23
|
+
|
|
24
|
+
constructor(options: StepExecutorOptions) {
|
|
25
|
+
this.statusManager = new StatusManager(options.routeId)
|
|
26
|
+
this.executionOptions = options.executionOptions
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
setInteraction = (settings?: InteractionSettings): void => {
|
|
30
|
+
const interactionSettings = {
|
|
31
|
+
...defaultInteractionSettings,
|
|
32
|
+
...settings,
|
|
33
|
+
}
|
|
34
|
+
this.allowUserInteraction = interactionSettings.allowInteraction
|
|
35
|
+
this.statusManager.allowUpdates(interactionSettings.allowUpdates)
|
|
36
|
+
this.allowExecution = interactionSettings.allowExecution
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
abstract executeStep(step: LiFiStep): Promise<LiFiStep>
|
|
40
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/types'
|
|
2
|
+
import { isAddress } from 'viem'
|
|
3
|
+
import type { StepExecutorOptions } from '../types.js'
|
|
4
|
+
import { EVMStepExecutor } from './EVMStepExecutor.js'
|
|
5
|
+
import { getEVMBalance } from './getEVMBalance.js'
|
|
6
|
+
import type { EVMProvider, EVMProviderOptions } from './types.js'
|
|
7
|
+
|
|
8
|
+
export function EVM(options?: EVMProviderOptions): EVMProvider {
|
|
9
|
+
const _options: EVMProviderOptions = options ?? {}
|
|
10
|
+
return {
|
|
11
|
+
get type() {
|
|
12
|
+
return ChainType.EVM
|
|
13
|
+
},
|
|
14
|
+
get multicall() {
|
|
15
|
+
return _options.multicall
|
|
16
|
+
},
|
|
17
|
+
get multisig() {
|
|
18
|
+
return _options.multisig
|
|
19
|
+
},
|
|
20
|
+
isAddress(address: string): boolean {
|
|
21
|
+
return isAddress(address)
|
|
22
|
+
},
|
|
23
|
+
getBalance: getEVMBalance,
|
|
24
|
+
async getStepExecutor(
|
|
25
|
+
options: StepExecutorOptions
|
|
26
|
+
): Promise<EVMStepExecutor> {
|
|
27
|
+
if (!_options.getWalletClient) {
|
|
28
|
+
throw new Error(`getWalletClient is not provided.`)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const walletClient = await _options.getWalletClient()
|
|
32
|
+
|
|
33
|
+
const executor = new EVMStepExecutor({
|
|
34
|
+
walletClient,
|
|
35
|
+
multisig: _options.multisig,
|
|
36
|
+
routeId: options.routeId,
|
|
37
|
+
executionOptions: {
|
|
38
|
+
...options.executionOptions,
|
|
39
|
+
switchChainHook:
|
|
40
|
+
_options.switchChain ?? options.executionOptions?.switchChainHook,
|
|
41
|
+
},
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
return executor
|
|
45
|
+
},
|
|
46
|
+
setOptions(options: EVMProviderOptions) {
|
|
47
|
+
Object.assign(_options, options)
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ExtendedTransactionInfo,
|
|
3
|
+
FullStatusData,
|
|
4
|
+
LiFiStep,
|
|
5
|
+
} from '@lifi/types'
|
|
6
|
+
import type {
|
|
7
|
+
Address,
|
|
8
|
+
Hash,
|
|
9
|
+
PublicClient,
|
|
10
|
+
ReplacementReason,
|
|
11
|
+
SendTransactionParameters,
|
|
12
|
+
WalletClient,
|
|
13
|
+
} from 'viem'
|
|
14
|
+
import { publicActions } from 'viem'
|
|
15
|
+
import { config } from '../../config.js'
|
|
16
|
+
import { getStepTransaction } from '../../services/api.js'
|
|
17
|
+
import {
|
|
18
|
+
LiFiErrorCode,
|
|
19
|
+
TransactionError,
|
|
20
|
+
ValidationError,
|
|
21
|
+
getTransactionFailedMessage,
|
|
22
|
+
isZeroAddress,
|
|
23
|
+
parseError,
|
|
24
|
+
} from '../../utils/index.js'
|
|
25
|
+
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
26
|
+
import { checkBalance } from '../checkBalance.js'
|
|
27
|
+
import { stepComparison } from '../stepComparison.js'
|
|
28
|
+
import type { StepExecutorOptions, TransactionParameters } from '../types.js'
|
|
29
|
+
import { getSubstatusMessage } from '../utils.js'
|
|
30
|
+
import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
|
|
31
|
+
import { checkAllowance } from './checkAllowance.js'
|
|
32
|
+
import { updateMultisigRouteProcess } from './multisig.js'
|
|
33
|
+
import { switchChain } from './switchChain.js'
|
|
34
|
+
import type { MultisigConfig, MultisigTransaction } from './types.js'
|
|
35
|
+
import { getMaxPriorityFeePerGas } from './utils.js'
|
|
36
|
+
|
|
37
|
+
export interface EVMStepExecutorOptions extends StepExecutorOptions {
|
|
38
|
+
walletClient: WalletClient
|
|
39
|
+
multisig?: MultisigConfig
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export class EVMStepExecutor extends BaseStepExecutor {
|
|
43
|
+
private walletClient: WalletClient
|
|
44
|
+
private multisig?: MultisigConfig
|
|
45
|
+
|
|
46
|
+
constructor(options: EVMStepExecutorOptions) {
|
|
47
|
+
super(options)
|
|
48
|
+
this.walletClient = options.walletClient
|
|
49
|
+
this.multisig = options.multisig
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// TODO: add checkChain method and update wallet client inside executors
|
|
53
|
+
// This can come in handy when we execute multiple routes simultaneously and
|
|
54
|
+
// should be sure that we are on the right chain when waiting for transactions.
|
|
55
|
+
checkChain = () => {
|
|
56
|
+
throw new Error('checkChain is not implemented.')
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
executeStep = async (step: LiFiStep): Promise<LiFiStep> => {
|
|
60
|
+
// Make sure that the chain is still correct
|
|
61
|
+
|
|
62
|
+
// Find if it's bridging and the step is waiting for a transaction on the receiving chain
|
|
63
|
+
const recievingChainProcess = step.execution?.process.find(
|
|
64
|
+
(process) => process.type === 'RECEIVING_CHAIN'
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
// If the step is waiting for a transaction on the receiving chain, we do not switch the chain
|
|
68
|
+
// All changes are already done from the source chain
|
|
69
|
+
// Return the step
|
|
70
|
+
if (
|
|
71
|
+
recievingChainProcess?.substatus !== 'WAIT_DESTINATION_TRANSACTION' ||
|
|
72
|
+
!recievingChainProcess
|
|
73
|
+
) {
|
|
74
|
+
const updatedWalletClient = await switchChain(
|
|
75
|
+
this.walletClient,
|
|
76
|
+
this.statusManager,
|
|
77
|
+
step,
|
|
78
|
+
this.allowUserInteraction,
|
|
79
|
+
this.executionOptions?.switchChainHook
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
if (!updatedWalletClient) {
|
|
83
|
+
// Chain switch was not successful, stop execution here
|
|
84
|
+
return step
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
this.walletClient = updatedWalletClient
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const client = this.walletClient.extend(publicActions)
|
|
91
|
+
|
|
92
|
+
const isMultisigWalletClient = !!this.multisig?.isMultisigWalletClient
|
|
93
|
+
const multisigBatchTransactions: MultisigTransaction[] = []
|
|
94
|
+
|
|
95
|
+
const shouldBatchTransactions =
|
|
96
|
+
this.multisig?.shouldBatchTransactions &&
|
|
97
|
+
!!this.multisig.sendBatchTransaction
|
|
98
|
+
|
|
99
|
+
step.execution = this.statusManager.initExecutionObject(step)
|
|
100
|
+
|
|
101
|
+
const fromChain = await config.getChainById(step.action.fromChainId)
|
|
102
|
+
const toChain = await config.getChainById(step.action.toChainId)
|
|
103
|
+
|
|
104
|
+
const isBridgeExecution = fromChain.id !== toChain.id
|
|
105
|
+
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
106
|
+
|
|
107
|
+
// STEP 1: Check allowance
|
|
108
|
+
const existingProcess = step.execution.process.find(
|
|
109
|
+
(p) => p.type === currentProcessType
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
// Check token approval only if fromToken is not the native token => no approval needed in that case
|
|
113
|
+
|
|
114
|
+
const checkForAllowance =
|
|
115
|
+
!existingProcess?.txHash &&
|
|
116
|
+
!isZeroAddress(step.action.fromToken.address) &&
|
|
117
|
+
(shouldBatchTransactions || !isMultisigWalletClient)
|
|
118
|
+
|
|
119
|
+
if (checkForAllowance) {
|
|
120
|
+
const data = await checkAllowance(
|
|
121
|
+
fromChain,
|
|
122
|
+
step,
|
|
123
|
+
client,
|
|
124
|
+
this.statusManager,
|
|
125
|
+
this.executionOptions,
|
|
126
|
+
this.allowUserInteraction,
|
|
127
|
+
shouldBatchTransactions
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
if (data) {
|
|
131
|
+
// allowance doesn't need value
|
|
132
|
+
const baseTransaction: MultisigTransaction = {
|
|
133
|
+
to: step.action.fromToken.address,
|
|
134
|
+
data,
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
multisigBatchTransactions.push(baseTransaction)
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// STEP 2: Get transaction
|
|
142
|
+
let process = this.statusManager.findOrCreateProcess(
|
|
143
|
+
step,
|
|
144
|
+
currentProcessType
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
if (process.status !== 'DONE') {
|
|
148
|
+
const multisigProcess = step.execution.process.find(
|
|
149
|
+
(p) => !!p.multisigTxHash
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
try {
|
|
153
|
+
if (isMultisigWalletClient && multisigProcess) {
|
|
154
|
+
const multisigTxHash = multisigProcess.multisigTxHash as Hash
|
|
155
|
+
if (!multisigTxHash) {
|
|
156
|
+
throw new ValidationError(
|
|
157
|
+
'Multisig internal transaction hash is undefined.'
|
|
158
|
+
)
|
|
159
|
+
}
|
|
160
|
+
await updateMultisigRouteProcess(
|
|
161
|
+
multisigTxHash,
|
|
162
|
+
step,
|
|
163
|
+
process.type,
|
|
164
|
+
fromChain,
|
|
165
|
+
this.statusManager,
|
|
166
|
+
this.multisig
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
let txHash: Hash
|
|
171
|
+
if (process.txHash) {
|
|
172
|
+
// Make sure that the chain is still correct
|
|
173
|
+
const updatedWalletClient = await switchChain(
|
|
174
|
+
this.walletClient,
|
|
175
|
+
this.statusManager,
|
|
176
|
+
step,
|
|
177
|
+
this.allowUserInteraction,
|
|
178
|
+
this.executionOptions?.switchChainHook
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
if (!updatedWalletClient) {
|
|
182
|
+
// Chain switch was not successful, stop execution here
|
|
183
|
+
return step
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
this.walletClient = updatedWalletClient
|
|
187
|
+
|
|
188
|
+
// Load exiting transaction
|
|
189
|
+
txHash = process.txHash as Hash
|
|
190
|
+
} else {
|
|
191
|
+
process = this.statusManager.updateProcess(
|
|
192
|
+
step,
|
|
193
|
+
process.type,
|
|
194
|
+
'STARTED'
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
// Check balance
|
|
198
|
+
await checkBalance(client.account!.address, step)
|
|
199
|
+
|
|
200
|
+
// Create new transaction
|
|
201
|
+
if (!step.transactionRequest) {
|
|
202
|
+
const { execution, ...stepBase } = step
|
|
203
|
+
const updatedStep = await getStepTransaction(stepBase)
|
|
204
|
+
const comparedStep = await stepComparison(
|
|
205
|
+
this.statusManager,
|
|
206
|
+
step,
|
|
207
|
+
updatedStep,
|
|
208
|
+
this.allowUserInteraction,
|
|
209
|
+
this.executionOptions
|
|
210
|
+
)
|
|
211
|
+
step = {
|
|
212
|
+
...comparedStep,
|
|
213
|
+
execution: step.execution,
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (!step.transactionRequest) {
|
|
218
|
+
throw new TransactionError(
|
|
219
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
220
|
+
'Unable to prepare transaction.'
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// STEP 3: Send the transaction
|
|
225
|
+
// Make sure that the chain is still correct
|
|
226
|
+
const updatedWalletClient = await switchChain(
|
|
227
|
+
this.walletClient,
|
|
228
|
+
this.statusManager,
|
|
229
|
+
step,
|
|
230
|
+
this.allowUserInteraction,
|
|
231
|
+
this.executionOptions?.switchChainHook
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
if (!updatedWalletClient) {
|
|
235
|
+
// Chain switch was not successful, stop execution here
|
|
236
|
+
return step
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
this.walletClient = updatedWalletClient
|
|
240
|
+
|
|
241
|
+
process = this.statusManager.updateProcess(
|
|
242
|
+
step,
|
|
243
|
+
process.type,
|
|
244
|
+
'ACTION_REQUIRED'
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
if (!this.allowUserInteraction) {
|
|
248
|
+
return step
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
let transactionRequest: TransactionParameters = {
|
|
252
|
+
to: step.transactionRequest.to as Hash,
|
|
253
|
+
from: step.transactionRequest.from as Hash,
|
|
254
|
+
data: step.transactionRequest.data as Hash,
|
|
255
|
+
value: step.transactionRequest.value
|
|
256
|
+
? BigInt(step.transactionRequest.value as string)
|
|
257
|
+
: undefined,
|
|
258
|
+
gas: step.transactionRequest.gasLimit
|
|
259
|
+
? BigInt(step.transactionRequest.gasLimit as string)
|
|
260
|
+
: undefined,
|
|
261
|
+
// gasPrice: step.transactionRequest.gasPrice
|
|
262
|
+
// ? BigInt(step.transactionRequest.gasPrice as string)
|
|
263
|
+
// : undefined,
|
|
264
|
+
// maxFeePerGas: step.transactionRequest.maxFeePerGas
|
|
265
|
+
// ? BigInt(step.transactionRequest.maxFeePerGas as string)
|
|
266
|
+
// : undefined,
|
|
267
|
+
maxPriorityFeePerGas:
|
|
268
|
+
this.walletClient.account?.type === 'local'
|
|
269
|
+
? await getMaxPriorityFeePerGas(client as PublicClient)
|
|
270
|
+
: step.transactionRequest.maxPriorityFeePerGas
|
|
271
|
+
? BigInt(step.transactionRequest.maxPriorityFeePerGas as string)
|
|
272
|
+
: undefined,
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if (this.executionOptions?.updateTransactionRequestHook) {
|
|
276
|
+
const customizedTransactionRequest: TransactionParameters =
|
|
277
|
+
await this.executionOptions.updateTransactionRequestHook({
|
|
278
|
+
requestType: 'transaction',
|
|
279
|
+
...transactionRequest,
|
|
280
|
+
})
|
|
281
|
+
|
|
282
|
+
transactionRequest = {
|
|
283
|
+
...transactionRequest,
|
|
284
|
+
...customizedTransactionRequest,
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (shouldBatchTransactions && this.multisig?.sendBatchTransaction) {
|
|
289
|
+
if (transactionRequest.to && transactionRequest.data) {
|
|
290
|
+
const populatedTransaction: MultisigTransaction = {
|
|
291
|
+
value: transactionRequest.value,
|
|
292
|
+
to: transactionRequest.to,
|
|
293
|
+
data: transactionRequest.data,
|
|
294
|
+
}
|
|
295
|
+
multisigBatchTransactions.push(populatedTransaction)
|
|
296
|
+
|
|
297
|
+
txHash = await this.multisig?.sendBatchTransaction(
|
|
298
|
+
multisigBatchTransactions
|
|
299
|
+
)
|
|
300
|
+
} else {
|
|
301
|
+
throw new TransactionError(
|
|
302
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
303
|
+
'Unable to prepare transaction.'
|
|
304
|
+
)
|
|
305
|
+
}
|
|
306
|
+
} else {
|
|
307
|
+
txHash = await this.walletClient.sendTransaction({
|
|
308
|
+
to: transactionRequest.to as Address,
|
|
309
|
+
account: this.walletClient.account!,
|
|
310
|
+
data: transactionRequest.data,
|
|
311
|
+
gas: transactionRequest.gas,
|
|
312
|
+
gasPrice: transactionRequest.gasPrice,
|
|
313
|
+
maxFeePerGas: transactionRequest.maxFeePerGas,
|
|
314
|
+
maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
|
|
315
|
+
chain: null,
|
|
316
|
+
} as SendTransactionParameters)
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// STEP 4: Wait for the transaction
|
|
320
|
+
if (isMultisigWalletClient) {
|
|
321
|
+
process = this.statusManager.updateProcess(
|
|
322
|
+
step,
|
|
323
|
+
process.type,
|
|
324
|
+
'ACTION_REQUIRED',
|
|
325
|
+
{
|
|
326
|
+
multisigTxHash: txHash,
|
|
327
|
+
}
|
|
328
|
+
)
|
|
329
|
+
} else {
|
|
330
|
+
process = this.statusManager.updateProcess(
|
|
331
|
+
step,
|
|
332
|
+
process.type,
|
|
333
|
+
'PENDING',
|
|
334
|
+
{
|
|
335
|
+
txHash: txHash,
|
|
336
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
337
|
+
}
|
|
338
|
+
)
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
let replacementReason: ReplacementReason | undefined
|
|
343
|
+
const transactionReceipt = await client.waitForTransactionReceipt({
|
|
344
|
+
hash: txHash,
|
|
345
|
+
onReplaced: (response) => {
|
|
346
|
+
replacementReason = response.reason
|
|
347
|
+
this.statusManager.updateProcess(step, process.type, 'PENDING', {
|
|
348
|
+
txHash: response.transaction.hash,
|
|
349
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.hash}`,
|
|
350
|
+
})
|
|
351
|
+
},
|
|
352
|
+
})
|
|
353
|
+
|
|
354
|
+
if (replacementReason === 'cancelled') {
|
|
355
|
+
throw new TransactionError(
|
|
356
|
+
LiFiErrorCode.TransactionCanceled,
|
|
357
|
+
'User canceled transaction.'
|
|
358
|
+
)
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// if it's multisig wallet client and the process is in ACTION_REQUIRED
|
|
362
|
+
// then signatures are still needed
|
|
363
|
+
if (isMultisigWalletClient && process.status === 'ACTION_REQUIRED') {
|
|
364
|
+
await updateMultisigRouteProcess(
|
|
365
|
+
transactionReceipt.transactionHash,
|
|
366
|
+
step,
|
|
367
|
+
process.type,
|
|
368
|
+
fromChain,
|
|
369
|
+
this.statusManager,
|
|
370
|
+
this.multisig
|
|
371
|
+
)
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (!isMultisigWalletClient) {
|
|
375
|
+
process = this.statusManager.updateProcess(
|
|
376
|
+
step,
|
|
377
|
+
process.type,
|
|
378
|
+
'PENDING',
|
|
379
|
+
{
|
|
380
|
+
txHash: transactionReceipt.transactionHash,
|
|
381
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transactionReceipt.transactionHash}`,
|
|
382
|
+
}
|
|
383
|
+
)
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
if (isBridgeExecution) {
|
|
387
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE')
|
|
388
|
+
}
|
|
389
|
+
} catch (e: any) {
|
|
390
|
+
const error = await parseError(e, step, process)
|
|
391
|
+
process = this.statusManager.updateProcess(
|
|
392
|
+
step,
|
|
393
|
+
process.type,
|
|
394
|
+
'FAILED',
|
|
395
|
+
{
|
|
396
|
+
error: {
|
|
397
|
+
message: error.message,
|
|
398
|
+
htmlMessage: error.htmlMessage,
|
|
399
|
+
code: error.code,
|
|
400
|
+
},
|
|
401
|
+
}
|
|
402
|
+
)
|
|
403
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
404
|
+
throw error
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// STEP 5: Wait for the receiving chain
|
|
409
|
+
const processTxHash = process.txHash
|
|
410
|
+
if (isBridgeExecution) {
|
|
411
|
+
process = this.statusManager.findOrCreateProcess(
|
|
412
|
+
step,
|
|
413
|
+
'RECEIVING_CHAIN',
|
|
414
|
+
'PENDING'
|
|
415
|
+
)
|
|
416
|
+
}
|
|
417
|
+
let statusResponse: FullStatusData
|
|
418
|
+
try {
|
|
419
|
+
if (!processTxHash) {
|
|
420
|
+
throw new Error('Transaction hash is undefined.')
|
|
421
|
+
}
|
|
422
|
+
statusResponse = (await waitForReceivingTransaction(
|
|
423
|
+
processTxHash,
|
|
424
|
+
this.statusManager,
|
|
425
|
+
process.type,
|
|
426
|
+
step
|
|
427
|
+
)) as FullStatusData
|
|
428
|
+
|
|
429
|
+
const statusReceiving =
|
|
430
|
+
statusResponse.receiving as ExtendedTransactionInfo
|
|
431
|
+
|
|
432
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE', {
|
|
433
|
+
substatus: statusResponse.substatus,
|
|
434
|
+
substatusMessage:
|
|
435
|
+
statusResponse.substatusMessage ||
|
|
436
|
+
getSubstatusMessage(statusResponse.status, statusResponse.substatus),
|
|
437
|
+
txHash: statusReceiving?.txHash,
|
|
438
|
+
txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
|
|
439
|
+
})
|
|
440
|
+
|
|
441
|
+
this.statusManager.updateExecution(step, 'DONE', {
|
|
442
|
+
fromAmount: statusResponse.sending.amount,
|
|
443
|
+
toAmount: statusReceiving?.amount,
|
|
444
|
+
toToken: statusReceiving?.token,
|
|
445
|
+
gasAmount: statusResponse.sending.gasAmount,
|
|
446
|
+
gasAmountUSD: statusResponse.sending.gasAmountUSD,
|
|
447
|
+
gasPrice: statusResponse.sending.gasPrice,
|
|
448
|
+
gasToken: statusResponse.sending.gasToken,
|
|
449
|
+
gasUsed: statusResponse.sending.gasUsed,
|
|
450
|
+
})
|
|
451
|
+
} catch (e: unknown) {
|
|
452
|
+
const htmlMessage = await getTransactionFailedMessage(
|
|
453
|
+
step,
|
|
454
|
+
process.txLink
|
|
455
|
+
)
|
|
456
|
+
|
|
457
|
+
process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
458
|
+
error: {
|
|
459
|
+
code: LiFiErrorCode.TransactionFailed,
|
|
460
|
+
message: 'Failed while waiting for receiving chain.',
|
|
461
|
+
htmlMessage,
|
|
462
|
+
},
|
|
463
|
+
})
|
|
464
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
465
|
+
console.warn(e)
|
|
466
|
+
throw e
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// DONE
|
|
470
|
+
return step
|
|
471
|
+
}
|
|
472
|
+
}
|