@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,77 @@
|
|
|
1
|
+
import type { LiFiStep } from '@lifi/types'
|
|
2
|
+
import type { WalletClient } from 'viem'
|
|
3
|
+
import { LiFiErrorCode, ProviderError } from '../../utils/errors.js'
|
|
4
|
+
import type { StatusManager } from '../StatusManager.js'
|
|
5
|
+
import type { SwitchChainHook } from '../types.js'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This method checks whether the wallet client is configured for the correct chain.
|
|
9
|
+
* If yes it returns the wallet clien.
|
|
10
|
+
* If no and if user interaction is allowed it triggers the switchChainHook. If no user interaction is allowed it aborts.
|
|
11
|
+
*
|
|
12
|
+
* Account Type: local -
|
|
13
|
+
* We need to create and return a new WalletClient from the switchChainHook in order to continue execution on a new chain.
|
|
14
|
+
*
|
|
15
|
+
* Account Type: json-rpc -
|
|
16
|
+
* We can switch chain and return existing WalletClient from the switchChainHook in order to continue execution on a new chain.
|
|
17
|
+
* @param walletClient
|
|
18
|
+
* @param statusManager
|
|
19
|
+
* @param step
|
|
20
|
+
* @param switchChainHook
|
|
21
|
+
* @param allowUserInteraction
|
|
22
|
+
* @returns New WalletClient
|
|
23
|
+
*/
|
|
24
|
+
export const switchChain = async (
|
|
25
|
+
walletClient: WalletClient,
|
|
26
|
+
statusManager: StatusManager,
|
|
27
|
+
step: LiFiStep,
|
|
28
|
+
allowUserInteraction: boolean,
|
|
29
|
+
switchChainHook?: SwitchChainHook
|
|
30
|
+
): Promise<WalletClient | undefined> => {
|
|
31
|
+
// if we are already on the correct chain we can proceed directly
|
|
32
|
+
if ((await walletClient.getChainId()) === step.action.fromChainId) {
|
|
33
|
+
return walletClient
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// -> set status message
|
|
37
|
+
step.execution = statusManager.initExecutionObject(step)
|
|
38
|
+
statusManager.updateExecution(step, 'ACTION_REQUIRED')
|
|
39
|
+
|
|
40
|
+
let switchProcess = statusManager.findOrCreateProcess(
|
|
41
|
+
step,
|
|
42
|
+
'SWITCH_CHAIN',
|
|
43
|
+
'ACTION_REQUIRED'
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
if (!allowUserInteraction) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
const updatedWalletClient = await switchChainHook?.(step.action.fromChainId)
|
|
52
|
+
const updatedChainId = await updatedWalletClient?.getChainId()
|
|
53
|
+
if (updatedChainId !== step.action.fromChainId) {
|
|
54
|
+
throw new ProviderError(
|
|
55
|
+
LiFiErrorCode.ChainSwitchError,
|
|
56
|
+
'Chain switch required.'
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
switchProcess = statusManager.updateProcess(
|
|
61
|
+
step,
|
|
62
|
+
switchProcess.type,
|
|
63
|
+
'DONE'
|
|
64
|
+
)
|
|
65
|
+
statusManager.updateExecution(step, 'PENDING')
|
|
66
|
+
return updatedWalletClient
|
|
67
|
+
} catch (error: any) {
|
|
68
|
+
statusManager.updateProcess(step, switchProcess.type, 'FAILED', {
|
|
69
|
+
error: {
|
|
70
|
+
message: error.message,
|
|
71
|
+
code: LiFiErrorCode.ChainSwitchError,
|
|
72
|
+
},
|
|
73
|
+
})
|
|
74
|
+
statusManager.updateExecution(step, 'FAILED')
|
|
75
|
+
throw error
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ChainType, type ChainId, type Token } from '@lifi/types'
|
|
2
|
+
import type { Hash, WalletClient } from 'viem'
|
|
3
|
+
import type { SwitchChainHook } from '../types.js'
|
|
4
|
+
import { type SDKProvider } from '../types.js'
|
|
5
|
+
|
|
6
|
+
export interface EVMProviderOptions {
|
|
7
|
+
getWalletClient?: () => Promise<WalletClient>
|
|
8
|
+
switchChain?: SwitchChainHook
|
|
9
|
+
multicall?: Partial<Record<ChainId, string>>
|
|
10
|
+
multisig?: MultisigConfig
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface EVMProvider extends SDKProvider {
|
|
14
|
+
setOptions(options: EVMProviderOptions): void
|
|
15
|
+
multicall?: Partial<Record<ChainId, string>>
|
|
16
|
+
multisig?: MultisigConfig
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function isEVM(provider: SDKProvider): provider is EVMProvider {
|
|
20
|
+
return provider.type === ChainType.EVM
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type TokenSpender = {
|
|
24
|
+
token: Token
|
|
25
|
+
spenderAddress: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type TokenAllowance = {
|
|
29
|
+
token: Token
|
|
30
|
+
allowance?: bigint
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type TokenSpenderAllowance = {
|
|
34
|
+
token: Token
|
|
35
|
+
spenderAddress: string
|
|
36
|
+
allowance?: bigint
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface ApproveTokenRequest {
|
|
40
|
+
walletClient: WalletClient
|
|
41
|
+
token: Token
|
|
42
|
+
spenderAddress: string
|
|
43
|
+
amount: bigint
|
|
44
|
+
infiniteApproval?: boolean
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface RevokeApprovalRequest {
|
|
48
|
+
walletClient: WalletClient
|
|
49
|
+
token: Token
|
|
50
|
+
spenderAddress: string
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface MultisigTxDetails {
|
|
54
|
+
status: 'DONE' | 'FAILED' | 'PENDING' | 'CANCELLED'
|
|
55
|
+
txHash?: Hash
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface MultisigTransaction {
|
|
59
|
+
to: string
|
|
60
|
+
value?: bigint
|
|
61
|
+
data: string
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface MultisigConfig {
|
|
65
|
+
isMultisigWalletClient: boolean
|
|
66
|
+
getMultisigTransactionDetails: (
|
|
67
|
+
txHash: Hash,
|
|
68
|
+
fromChainId: number,
|
|
69
|
+
updateIntermediateStatus?: () => void
|
|
70
|
+
) => Promise<MultisigTxDetails>
|
|
71
|
+
sendBatchTransaction?: (
|
|
72
|
+
batchTransactions: MultisigTransaction[]
|
|
73
|
+
) => Promise<Hash>
|
|
74
|
+
shouldBatchTransactions?: boolean
|
|
75
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChainType, type ChainId } from '@lifi/types'
|
|
2
|
+
import type { PublicClient, Transaction } from 'viem'
|
|
3
|
+
import { median } from '../../utils/median.js'
|
|
4
|
+
import { getProvider } from '../provider.js'
|
|
5
|
+
import type { EVMProvider } from './types.js'
|
|
6
|
+
|
|
7
|
+
export const getMaxPriorityFeePerGas = async (
|
|
8
|
+
client: PublicClient
|
|
9
|
+
): Promise<bigint | undefined> => {
|
|
10
|
+
const block = await client.getBlock({
|
|
11
|
+
includeTransactions: true,
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const maxPriorityFeePerGasList = (block.transactions as Transaction[])
|
|
15
|
+
.filter((tx) => tx.maxPriorityFeePerGas)
|
|
16
|
+
.map((tx) => tx.maxPriorityFeePerGas) as bigint[]
|
|
17
|
+
|
|
18
|
+
if (!maxPriorityFeePerGasList.length) {
|
|
19
|
+
return
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const maxPriorityFeePerGasSum = maxPriorityFeePerGasList.reduce(
|
|
23
|
+
(acc, value) => (acc += value),
|
|
24
|
+
0n
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
const maxPriorityFeePerGasMedian = median(maxPriorityFeePerGasList) ?? 0n
|
|
28
|
+
|
|
29
|
+
const maxPriorityFeePerGasAvg =
|
|
30
|
+
maxPriorityFeePerGasSum / BigInt(maxPriorityFeePerGasList.length)
|
|
31
|
+
|
|
32
|
+
return maxPriorityFeePerGasMedian > maxPriorityFeePerGasAvg
|
|
33
|
+
? maxPriorityFeePerGasAvg
|
|
34
|
+
: maxPriorityFeePerGasMedian
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Multicall
|
|
38
|
+
export const getMulticallAddress = async (
|
|
39
|
+
chainId: ChainId
|
|
40
|
+
): Promise<string | undefined> => {
|
|
41
|
+
const provider = getProvider<EVMProvider>(ChainType.EVM)
|
|
42
|
+
return provider.multicall?.[chainId]
|
|
43
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/types'
|
|
2
|
+
import { PublicKey } from '@solana/web3.js'
|
|
3
|
+
import type { StepExecutorOptions } from '../types.js'
|
|
4
|
+
import { SolanaStepExecutor } from './SolanaStepExecutor.js'
|
|
5
|
+
import { getSolanaBalance } from './getSolanaBalance.js'
|
|
6
|
+
import type { SolanaProvider, SolanaProviderOptions } from './types.js'
|
|
7
|
+
|
|
8
|
+
export function Solana(options?: SolanaProviderOptions): SolanaProvider {
|
|
9
|
+
const _options: SolanaProviderOptions = options ?? {}
|
|
10
|
+
return {
|
|
11
|
+
get type() {
|
|
12
|
+
return ChainType.SVM
|
|
13
|
+
},
|
|
14
|
+
isAddress(address: string): boolean {
|
|
15
|
+
try {
|
|
16
|
+
new PublicKey(address)
|
|
17
|
+
return true
|
|
18
|
+
} catch (error) {
|
|
19
|
+
return false
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
getBalance: getSolanaBalance,
|
|
23
|
+
async getStepExecutor(
|
|
24
|
+
options: StepExecutorOptions
|
|
25
|
+
): Promise<SolanaStepExecutor> {
|
|
26
|
+
if (!_options.getWalletAdapter) {
|
|
27
|
+
throw new Error(`getWalletAdapter is not provided.`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const walletAdapter = await _options.getWalletAdapter()
|
|
31
|
+
|
|
32
|
+
const executor = new SolanaStepExecutor({
|
|
33
|
+
walletAdapter,
|
|
34
|
+
routeId: options.routeId,
|
|
35
|
+
executionOptions: {
|
|
36
|
+
...options.executionOptions,
|
|
37
|
+
},
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
return executor
|
|
41
|
+
},
|
|
42
|
+
setOptions(options: SolanaProviderOptions) {
|
|
43
|
+
Object.assign(_options, options)
|
|
44
|
+
},
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ExtendedTransactionInfo,
|
|
3
|
+
FullStatusData,
|
|
4
|
+
LiFiStep,
|
|
5
|
+
} from '@lifi/types'
|
|
6
|
+
import type { WalletAdapter } from '@solana/wallet-adapter-base'
|
|
7
|
+
import {
|
|
8
|
+
VersionedTransaction,
|
|
9
|
+
type TransactionConfirmationStrategy,
|
|
10
|
+
type TransactionSignature,
|
|
11
|
+
} from '@solana/web3.js'
|
|
12
|
+
import { config } from '../../config.js'
|
|
13
|
+
import { getStepTransaction } from '../../services/api.js'
|
|
14
|
+
import {
|
|
15
|
+
LiFiErrorCode,
|
|
16
|
+
TransactionError,
|
|
17
|
+
getTransactionFailedMessage,
|
|
18
|
+
parseError,
|
|
19
|
+
} from '../../utils/index.js'
|
|
20
|
+
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
21
|
+
import { checkBalance } from '../checkBalance.js'
|
|
22
|
+
import { stepComparison } from '../stepComparison.js'
|
|
23
|
+
import type { StepExecutorOptions, TransactionParameters } from '../types.js'
|
|
24
|
+
import { getSubstatusMessage } from '../utils.js'
|
|
25
|
+
import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
|
|
26
|
+
import { getSolanaConnection } from './connection.js'
|
|
27
|
+
|
|
28
|
+
export interface SolanaStepExecutorOptions extends StepExecutorOptions {
|
|
29
|
+
walletAdapter: WalletAdapter
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export class SolanaStepExecutor extends BaseStepExecutor {
|
|
33
|
+
private walletAdapter: WalletAdapter
|
|
34
|
+
|
|
35
|
+
constructor(options: SolanaStepExecutorOptions) {
|
|
36
|
+
super(options)
|
|
37
|
+
this.walletAdapter = options.walletAdapter
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
executeStep = async (step: LiFiStep): Promise<LiFiStep> => {
|
|
41
|
+
step.execution = this.statusManager.initExecutionObject(step)
|
|
42
|
+
|
|
43
|
+
const fromChain = await config.getChainById(step.action.fromChainId)
|
|
44
|
+
const toChain = await config.getChainById(step.action.toChainId)
|
|
45
|
+
|
|
46
|
+
const isBridgeExecution = fromChain.id !== toChain.id
|
|
47
|
+
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
48
|
+
|
|
49
|
+
// STEP 2: Get transaction
|
|
50
|
+
let process = this.statusManager.findOrCreateProcess(
|
|
51
|
+
step,
|
|
52
|
+
currentProcessType
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
if (process.status !== 'DONE') {
|
|
56
|
+
try {
|
|
57
|
+
const connection = await getSolanaConnection()
|
|
58
|
+
let txHash: TransactionSignature
|
|
59
|
+
if (process.txHash) {
|
|
60
|
+
txHash = process.txHash as TransactionSignature
|
|
61
|
+
} else {
|
|
62
|
+
process = this.statusManager.updateProcess(
|
|
63
|
+
step,
|
|
64
|
+
process.type,
|
|
65
|
+
'STARTED'
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
// Check balance
|
|
69
|
+
await checkBalance(this.walletAdapter.publicKey!.toString(), step)
|
|
70
|
+
|
|
71
|
+
// Create new transaction
|
|
72
|
+
if (!step.transactionRequest) {
|
|
73
|
+
const updatedStep = await getStepTransaction(step)
|
|
74
|
+
const comparedStep = await stepComparison(
|
|
75
|
+
this.statusManager,
|
|
76
|
+
step,
|
|
77
|
+
updatedStep,
|
|
78
|
+
this.allowUserInteraction,
|
|
79
|
+
this.executionOptions
|
|
80
|
+
)
|
|
81
|
+
step = {
|
|
82
|
+
...comparedStep,
|
|
83
|
+
execution: step.execution,
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (!step.transactionRequest?.data) {
|
|
88
|
+
throw new TransactionError(
|
|
89
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
90
|
+
'Unable to prepare transaction.'
|
|
91
|
+
)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
process = this.statusManager.updateProcess(
|
|
95
|
+
step,
|
|
96
|
+
process.type,
|
|
97
|
+
'ACTION_REQUIRED'
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
if (!this.allowUserInteraction) {
|
|
101
|
+
return step
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let transactionRequest: TransactionParameters = {
|
|
105
|
+
data: step.transactionRequest.data,
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (this.executionOptions?.updateTransactionRequestHook) {
|
|
109
|
+
const customizedTransactionRequest: TransactionParameters =
|
|
110
|
+
await this.executionOptions.updateTransactionRequestHook({
|
|
111
|
+
requestType: 'transaction',
|
|
112
|
+
...transactionRequest,
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
transactionRequest = {
|
|
116
|
+
...transactionRequest,
|
|
117
|
+
...customizedTransactionRequest,
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (!transactionRequest.data) {
|
|
122
|
+
throw new TransactionError(
|
|
123
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
124
|
+
'Unable to prepare transaction.'
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const versionedTransaction = VersionedTransaction.deserialize(
|
|
129
|
+
Uint8Array.from(atob(transactionRequest.data), (c) =>
|
|
130
|
+
c.charCodeAt(0)
|
|
131
|
+
)
|
|
132
|
+
)
|
|
133
|
+
txHash = await this.walletAdapter.sendTransaction(
|
|
134
|
+
versionedTransaction,
|
|
135
|
+
connection,
|
|
136
|
+
{
|
|
137
|
+
maxRetries: 5,
|
|
138
|
+
skipPreflight: true,
|
|
139
|
+
}
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
process = this.statusManager.updateProcess(
|
|
143
|
+
step,
|
|
144
|
+
process.type,
|
|
145
|
+
'PENDING',
|
|
146
|
+
{
|
|
147
|
+
txHash: txHash,
|
|
148
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
149
|
+
}
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const signatureResult = await connection.confirmTransaction(
|
|
154
|
+
{
|
|
155
|
+
signature: txHash,
|
|
156
|
+
} as TransactionConfirmationStrategy,
|
|
157
|
+
'confirmed'
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
if (signatureResult.value.err) {
|
|
161
|
+
throw new TransactionError(
|
|
162
|
+
LiFiErrorCode.TransactionFailed,
|
|
163
|
+
`Transaction failed: ${signatureResult.value.err}`
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (isBridgeExecution) {
|
|
168
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE')
|
|
169
|
+
}
|
|
170
|
+
} catch (e: any) {
|
|
171
|
+
const error = await parseError(e, step, process)
|
|
172
|
+
process = this.statusManager.updateProcess(
|
|
173
|
+
step,
|
|
174
|
+
process.type,
|
|
175
|
+
'FAILED',
|
|
176
|
+
{
|
|
177
|
+
error: {
|
|
178
|
+
message: error.message,
|
|
179
|
+
htmlMessage: error.htmlMessage,
|
|
180
|
+
code: error.code,
|
|
181
|
+
},
|
|
182
|
+
}
|
|
183
|
+
)
|
|
184
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
185
|
+
throw error
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// STEP 5: Wait for the receiving chain
|
|
190
|
+
const processTxHash = process.txHash
|
|
191
|
+
if (isBridgeExecution) {
|
|
192
|
+
process = this.statusManager.findOrCreateProcess(
|
|
193
|
+
step,
|
|
194
|
+
'RECEIVING_CHAIN',
|
|
195
|
+
'PENDING'
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
let statusResponse: FullStatusData
|
|
199
|
+
try {
|
|
200
|
+
if (!processTxHash) {
|
|
201
|
+
throw new Error('Transaction hash is undefined.')
|
|
202
|
+
}
|
|
203
|
+
statusResponse = (await waitForReceivingTransaction(
|
|
204
|
+
processTxHash,
|
|
205
|
+
this.statusManager,
|
|
206
|
+
process.type,
|
|
207
|
+
step
|
|
208
|
+
)) as FullStatusData
|
|
209
|
+
|
|
210
|
+
const statusReceiving =
|
|
211
|
+
statusResponse.receiving as ExtendedTransactionInfo
|
|
212
|
+
|
|
213
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE', {
|
|
214
|
+
substatus: statusResponse.substatus,
|
|
215
|
+
substatusMessage:
|
|
216
|
+
statusResponse.substatusMessage ||
|
|
217
|
+
getSubstatusMessage(statusResponse.status, statusResponse.substatus),
|
|
218
|
+
txHash: statusReceiving?.txHash,
|
|
219
|
+
txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
|
|
220
|
+
})
|
|
221
|
+
|
|
222
|
+
this.statusManager.updateExecution(step, 'DONE', {
|
|
223
|
+
fromAmount: statusResponse.sending.amount,
|
|
224
|
+
toAmount: statusReceiving?.amount,
|
|
225
|
+
toToken: statusReceiving?.token,
|
|
226
|
+
gasAmount: statusResponse.sending.gasAmount,
|
|
227
|
+
gasAmountUSD: statusResponse.sending.gasAmountUSD,
|
|
228
|
+
gasPrice: statusResponse.sending.gasPrice,
|
|
229
|
+
gasToken: statusResponse.sending.gasToken,
|
|
230
|
+
gasUsed: statusResponse.sending.gasUsed,
|
|
231
|
+
})
|
|
232
|
+
} catch (e: unknown) {
|
|
233
|
+
const htmlMessage = await getTransactionFailedMessage(
|
|
234
|
+
step,
|
|
235
|
+
process.txLink
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
239
|
+
error: {
|
|
240
|
+
code: LiFiErrorCode.TransactionFailed,
|
|
241
|
+
message: 'Failed while waiting for receiving chain.',
|
|
242
|
+
htmlMessage,
|
|
243
|
+
},
|
|
244
|
+
})
|
|
245
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
246
|
+
console.warn(e)
|
|
247
|
+
throw e
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// DONE
|
|
251
|
+
return step
|
|
252
|
+
}
|
|
253
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChainId } from '@lifi/types'
|
|
2
|
+
import { Connection } from '@solana/web3.js'
|
|
3
|
+
import { getRpcUrl } from '../utils.js'
|
|
4
|
+
|
|
5
|
+
const solanaChainProvider: Connection | undefined = undefined
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* getSolanaConnection is just a thin wrapper around getting the
|
|
9
|
+
* connection (rpc provider) for Solana
|
|
10
|
+
* @returns - Solana rpc connection
|
|
11
|
+
*/
|
|
12
|
+
export const getSolanaConnection = async (): Promise<Connection> => {
|
|
13
|
+
if (!solanaChainProvider) {
|
|
14
|
+
const rpcUrl = await getRpcUrl(ChainId.SOL)
|
|
15
|
+
return new Connection(rpcUrl)
|
|
16
|
+
} else {
|
|
17
|
+
return solanaChainProvider
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ChainId, Token, TokenAmount } from '@lifi/types'
|
|
2
|
+
import { PublicKey } from '@solana/web3.js'
|
|
3
|
+
import { getSolanaConnection } from './connection.js'
|
|
4
|
+
import { TokenProgramAddress } from './types.js'
|
|
5
|
+
|
|
6
|
+
export const getSolanaBalance = async (
|
|
7
|
+
walletAddress: string,
|
|
8
|
+
tokens: Token[]
|
|
9
|
+
): Promise<TokenAmount[]> => {
|
|
10
|
+
if (tokens.length === 0) {
|
|
11
|
+
return []
|
|
12
|
+
}
|
|
13
|
+
const { chainId } = tokens[0]
|
|
14
|
+
tokens.forEach((token) => {
|
|
15
|
+
if (token.chainId !== chainId) {
|
|
16
|
+
console.warn(`Requested tokens have to be on the same chain.`)
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
return getSolanaBalanceDefault(chainId, tokens, walletAddress)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const getSolanaBalanceDefault = async (
|
|
24
|
+
_chainId: ChainId,
|
|
25
|
+
tokens: Token[],
|
|
26
|
+
walletAddress: string
|
|
27
|
+
): Promise<TokenAmount[]> => {
|
|
28
|
+
const connection = await getSolanaConnection()
|
|
29
|
+
const blockNumber = await connection.getSlot()
|
|
30
|
+
const accountPublicKey = new PublicKey(walletAddress)
|
|
31
|
+
const tokenProgramPublicKey = new PublicKey(TokenProgramAddress)
|
|
32
|
+
const response = await connection.getParsedTokenAccountsByOwner(
|
|
33
|
+
accountPublicKey,
|
|
34
|
+
{
|
|
35
|
+
programId: tokenProgramPublicKey,
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
const walletTokenAmounts = response.value.reduce(
|
|
39
|
+
(tokenAmounts, value) => {
|
|
40
|
+
const amount = BigInt(value.account.data.parsed.info.tokenAmount.amount)
|
|
41
|
+
if (amount > 0n) {
|
|
42
|
+
tokenAmounts[value.account.data.parsed.info.mint] = amount
|
|
43
|
+
}
|
|
44
|
+
return tokenAmounts
|
|
45
|
+
},
|
|
46
|
+
{} as Record<string, bigint>
|
|
47
|
+
)
|
|
48
|
+
const tokenAmounts: TokenAmount[] = tokens.map((token) => {
|
|
49
|
+
if (walletTokenAmounts[token.address]) {
|
|
50
|
+
return {
|
|
51
|
+
...token,
|
|
52
|
+
amount: walletTokenAmounts[token.address],
|
|
53
|
+
blockNumber: BigInt(blockNumber),
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
...token,
|
|
58
|
+
blockNumber: BigInt(blockNumber),
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
return tokenAmounts
|
|
62
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ChainType, type ChainId } from '@lifi/types'
|
|
2
|
+
import type { WalletAdapter } from '@solana/wallet-adapter-base'
|
|
3
|
+
import { type SDKProvider } from '../types.js'
|
|
4
|
+
|
|
5
|
+
export interface SolanaProviderOptions {
|
|
6
|
+
getWalletAdapter?: () => Promise<WalletAdapter>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface SolanaProvider extends SDKProvider {
|
|
10
|
+
rpcUrls?: Record<ChainId, string[]>
|
|
11
|
+
setOptions(options: SolanaProviderOptions): void
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function isSolana(provider: SDKProvider): provider is SolanaProvider {
|
|
15
|
+
return provider.type === ChainType.SVM
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const TokenProgramAddress = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
|