@lifi/sdk 3.0.0-alpha.6 → 3.0.0-alpha.61
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/package.json +40 -88
- package/src/_cjs/config.js +90 -0
- package/src/_cjs/config.js.map +1 -0
- package/{dist/cjs → src/_cjs}/constants.js +3 -5
- package/src/_cjs/constants.js.map +1 -0
- package/src/_cjs/core/BaseStepExecutor.js +55 -0
- package/src/_cjs/core/BaseStepExecutor.js.map +1 -0
- package/src/_cjs/core/EVM/EVM.js +43 -0
- package/src/_cjs/core/EVM/EVM.js.map +1 -0
- package/src/_cjs/core/EVM/EVMStepExecutor.js +304 -0
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -0
- package/{dist/cjs/types → src/_cjs/core/EVM}/abi.js +1 -0
- package/src/_cjs/core/EVM/abi.js.map +1 -0
- package/{dist/cjs/execution → src/_cjs/core/EVM}/checkAllowance.js +19 -12
- package/src/_cjs/core/EVM/checkAllowance.js.map +1 -0
- package/{dist/cjs/allowance → src/_cjs/core/EVM}/getAllowance.js +13 -17
- package/src/_cjs/core/EVM/getAllowance.js.map +1 -0
- package/src/_cjs/core/EVM/getENSAddress.js +20 -0
- package/src/_cjs/core/EVM/getENSAddress.js.map +1 -0
- package/{dist/cjs/balance/getBalance.js → src/_cjs/core/EVM/getEVMBalance.js} +20 -22
- package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -0
- package/{dist/cjs/execution → src/_cjs/core/EVM}/multisig.js +7 -11
- package/src/_cjs/core/EVM/multisig.js.map +1 -0
- package/src/_cjs/core/EVM/publicClient.js +43 -0
- package/src/_cjs/core/EVM/publicClient.js.map +1 -0
- package/{dist/cjs/allowance → src/_cjs/core/EVM}/setAllowance.js +11 -12
- package/src/_cjs/core/EVM/setAllowance.js.map +1 -0
- package/src/_cjs/core/EVM/switchChain.js +38 -0
- package/src/_cjs/core/EVM/switchChain.js.map +1 -0
- package/src/_cjs/core/EVM/types.js +9 -0
- package/src/_cjs/core/EVM/types.js.map +1 -0
- package/{dist/cjs/utils/getMaxPriorityFeePerGas.js → src/_cjs/core/EVM/utils.js} +13 -3
- package/src/_cjs/core/EVM/utils.js.map +1 -0
- package/src/_cjs/core/Solana/Solana.js +38 -0
- package/src/_cjs/core/Solana/Solana.js.map +1 -0
- package/src/_cjs/core/Solana/SolanaStepExecutor.js +174 -0
- package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -0
- package/src/_cjs/core/Solana/connection.js +19 -0
- package/src/_cjs/core/Solana/connection.js.map +1 -0
- package/src/_cjs/core/Solana/getSNSAddress.js +26 -0
- package/src/_cjs/core/Solana/getSNSAddress.js.map +1 -0
- package/src/_cjs/core/Solana/getSolanaBalance.js +60 -0
- package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -0
- package/src/_cjs/core/Solana/isAddress.js +15 -0
- package/src/_cjs/core/Solana/isAddress.js.map +1 -0
- package/src/_cjs/core/Solana/types.js +10 -0
- package/src/_cjs/core/Solana/types.js.map +1 -0
- package/src/_cjs/core/StatusManager.js +167 -0
- package/src/_cjs/core/StatusManager.js.map +1 -0
- package/{dist/cjs/execution → src/_cjs/core}/checkBalance.js +6 -6
- package/src/_cjs/core/checkBalance.js.map +1 -0
- package/src/_cjs/core/execution.js +138 -0
- package/src/_cjs/core/execution.js.map +1 -0
- package/src/_cjs/core/executionState.js +29 -0
- package/src/_cjs/core/executionState.js.map +1 -0
- package/src/_cjs/core/index.js +7 -0
- package/src/_cjs/core/index.js.map +1 -0
- package/src/_cjs/core/prepareRestart.js +23 -0
- package/src/_cjs/core/prepareRestart.js.map +1 -0
- package/src/_cjs/core/provider.js +15 -0
- package/src/_cjs/core/provider.js.map +1 -0
- package/src/_cjs/core/rpc.js +18 -0
- package/src/_cjs/core/rpc.js.map +1 -0
- package/src/_cjs/core/stepComparison.js +25 -0
- package/src/_cjs/core/stepComparison.js.map +1 -0
- package/{dist/cjs/allowance → src/_cjs/core}/types.js +1 -0
- package/src/_cjs/core/types.js.map +1 -0
- package/{dist/cjs/execution → src/_cjs/core}/utils.js +2 -11
- package/src/_cjs/core/utils.js.map +1 -0
- package/{dist/cjs/execution → src/_cjs/core}/waitForReceivingTransaction.js +13 -14
- package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -0
- package/src/_cjs/createConfig.js +32 -0
- package/src/_cjs/createConfig.js.map +1 -0
- package/src/_cjs/helpers.js +57 -0
- package/src/_cjs/helpers.js.map +1 -0
- package/src/_cjs/index.js +23 -0
- package/src/_cjs/index.js.map +1 -0
- package/src/_cjs/package.json +1 -0
- package/src/_cjs/request.js +66 -0
- package/src/_cjs/request.js.map +1 -0
- package/src/_cjs/services/api.js +309 -0
- package/src/_cjs/services/api.js.map +1 -0
- package/src/_cjs/services/balance.js +49 -0
- package/src/_cjs/services/balance.js.map +1 -0
- package/src/_cjs/services/getNameServiceAddress.js +29 -0
- package/src/_cjs/services/getNameServiceAddress.js.map +1 -0
- package/{dist/cjs → src/_cjs}/typeguards.js +1 -0
- package/src/_cjs/typeguards.js.map +1 -0
- package/src/_cjs/types/index.js +5 -0
- package/src/_cjs/types/index.js.map +1 -0
- package/{dist/cjs/types/internal.types.js → src/_cjs/types/internal.js} +1 -0
- package/src/_cjs/types/internal.js.map +1 -0
- package/{dist/cjs → src/_cjs}/utils/errors.js +26 -3
- package/src/_cjs/utils/errors.js.map +1 -0
- package/src/_cjs/utils/getTransactionMessage.js +31 -0
- package/src/_cjs/utils/getTransactionMessage.js.map +1 -0
- package/src/_cjs/utils/index.js +9 -0
- package/src/_cjs/utils/index.js.map +1 -0
- package/{dist/cjs → src/_cjs}/utils/median.js +1 -0
- package/src/_cjs/utils/median.js.map +1 -0
- package/src/_cjs/utils/parseBackendError.js +27 -0
- package/src/_cjs/utils/parseBackendError.js.map +1 -0
- package/src/_cjs/utils/parseError.js +69 -0
- package/src/_cjs/utils/parseError.js.map +1 -0
- package/{dist/cjs → src/_cjs}/utils/utils.js +5 -11
- package/src/_cjs/utils/utils.js.map +1 -0
- package/{dist/cjs → src/_cjs}/version.js +2 -1
- package/src/_cjs/version.js.map +1 -0
- package/src/_esm/config.js +87 -0
- package/src/_esm/config.js.map +1 -0
- package/{dist → src/_esm}/constants.js +2 -4
- package/src/_esm/constants.js.map +1 -0
- package/src/_esm/core/BaseStepExecutor.js +52 -0
- package/src/_esm/core/BaseStepExecutor.js.map +1 -0
- package/src/_esm/core/EVM/EVM.js +39 -0
- package/src/_esm/core/EVM/EVM.js.map +1 -0
- package/src/_esm/core/EVM/EVMStepExecutor.js +329 -0
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -0
- package/{dist/types → src/_esm/core/EVM}/abi.js +1 -0
- package/src/_esm/core/EVM/abi.js.map +1 -0
- package/{dist/execution → src/_esm/core/EVM}/checkAllowance.js +14 -5
- package/src/_esm/core/EVM/checkAllowance.js.map +1 -0
- package/{dist/allowance → src/_esm/core/EVM}/getAllowance.js +19 -6
- package/src/_esm/core/EVM/getAllowance.js.map +1 -0
- package/src/_esm/core/EVM/getENSAddress.js +17 -0
- package/src/_esm/core/EVM/getENSAddress.js.map +1 -0
- package/{dist/balance/getBalance.js → src/_esm/core/EVM/getEVMBalance.js} +10 -12
- package/src/_esm/core/EVM/getEVMBalance.js.map +1 -0
- package/{dist/execution → src/_esm/core/EVM}/multisig.js +5 -6
- package/src/_esm/core/EVM/multisig.js.map +1 -0
- package/src/_esm/core/EVM/publicClient.js +46 -0
- package/src/_esm/core/EVM/publicClient.js.map +1 -0
- package/{dist/allowance → src/_esm/core/EVM}/setAllowance.js +23 -4
- package/src/_esm/core/EVM/setAllowance.js.map +1 -0
- package/{dist/execution → src/_esm/core/EVM}/switchChain.js +7 -4
- package/src/_esm/core/EVM/switchChain.js.map +1 -0
- package/src/_esm/core/EVM/types.js +6 -0
- package/src/_esm/core/EVM/types.js.map +1 -0
- package/{dist/utils/getMaxPriorityFeePerGas.js → src/_esm/core/EVM/utils.js} +12 -1
- package/src/_esm/core/EVM/utils.js.map +1 -0
- package/src/_esm/core/Solana/Solana.js +34 -0
- package/src/_esm/core/Solana/Solana.js.map +1 -0
- package/src/_esm/core/Solana/SolanaStepExecutor.js +176 -0
- package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -0
- package/src/_esm/core/Solana/connection.js +20 -0
- package/src/_esm/core/Solana/connection.js.map +1 -0
- package/src/_esm/core/Solana/getSNSAddress.js +26 -0
- package/src/_esm/core/Solana/getSNSAddress.js.map +1 -0
- package/src/_esm/core/Solana/getSolanaBalance.js +56 -0
- package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -0
- package/src/_esm/core/Solana/isAddress.js +11 -0
- package/src/_esm/core/Solana/isAddress.js.map +1 -0
- package/src/_esm/core/Solana/types.js +7 -0
- package/src/_esm/core/Solana/types.js.map +1 -0
- package/src/_esm/core/StatusManager.js +203 -0
- package/src/_esm/core/StatusManager.js.map +1 -0
- package/{dist/execution → src/_esm/core}/checkBalance.js +4 -3
- package/src/_esm/core/checkBalance.js.map +1 -0
- package/src/_esm/core/execution.js +176 -0
- package/src/_esm/core/execution.js.map +1 -0
- package/src/_esm/core/executionState.js +26 -0
- package/src/_esm/core/executionState.js.map +1 -0
- package/src/_esm/core/index.js +4 -0
- package/src/_esm/core/index.js.map +1 -0
- package/src/_esm/core/prepareRestart.js +64 -0
- package/src/_esm/core/prepareRestart.js.map +1 -0
- package/src/_esm/core/provider.js +11 -0
- package/src/_esm/core/provider.js.map +1 -0
- package/src/_esm/core/rpc.js +14 -0
- package/src/_esm/core/rpc.js.map +1 -0
- package/{dist/execution → src/_esm/core}/stepComparison.js +7 -5
- package/src/_esm/core/stepComparison.js.map +1 -0
- package/src/_esm/core/types.js +2 -0
- package/src/_esm/core/types.js.map +1 -0
- package/{dist/execution → src/_esm/core}/utils.js +4 -3
- package/src/_esm/core/utils.js.map +1 -0
- package/{dist/execution → src/_esm/core}/waitForReceivingTransaction.js +11 -9
- package/src/_esm/core/waitForReceivingTransaction.js.map +1 -0
- package/src/_esm/createConfig.js +28 -0
- package/src/_esm/createConfig.js.map +1 -0
- package/{dist → src/_esm}/helpers.js +5 -17
- package/src/_esm/helpers.js.map +1 -0
- package/src/_esm/index.js +14 -0
- package/src/_esm/index.js.map +1 -0
- package/src/_esm/package.json +1 -0
- package/{dist → src/_esm}/request.js +23 -13
- package/src/_esm/request.js.map +1 -0
- package/src/_esm/services/api.js +378 -0
- package/src/_esm/services/api.js.map +1 -0
- package/src/_esm/services/balance.js +65 -0
- package/src/_esm/services/balance.js.map +1 -0
- package/src/_esm/services/getNameServiceAddress.js +25 -0
- package/src/_esm/services/getNameServiceAddress.js.map +1 -0
- package/{dist → src/_esm}/typeguards.js +1 -0
- package/src/_esm/typeguards.js.map +1 -0
- package/src/_esm/types/index.js +2 -0
- package/src/_esm/types/index.js.map +1 -0
- package/src/_esm/types/internal.js +2 -0
- package/src/_esm/types/internal.js.map +1 -0
- package/{dist → src/_esm}/utils/errors.js +26 -0
- package/src/_esm/utils/errors.js.map +1 -0
- package/src/_esm/utils/getTransactionMessage.js +28 -0
- package/src/_esm/utils/getTransactionMessage.js.map +1 -0
- package/src/_esm/utils/index.js +6 -0
- package/src/_esm/utils/index.js.map +1 -0
- package/{dist → src/_esm}/utils/median.js +1 -0
- package/src/_esm/utils/median.js.map +1 -0
- package/src/_esm/utils/parseBackendError.js +24 -0
- package/src/_esm/utils/parseBackendError.js.map +1 -0
- package/{dist → src/_esm}/utils/parseError.js +6 -53
- package/src/_esm/utils/parseError.js.map +1 -0
- package/{dist → src/_esm}/utils/utils.js +2 -1
- package/src/_esm/utils/utils.js.map +1 -0
- package/src/_esm/version.js +3 -0
- package/src/_esm/version.js.map +1 -0
- package/src/_types/config.d.ts +15 -0
- package/src/_types/config.d.ts.map +1 -0
- package/{dist/cjs → src/_types}/constants.d.ts +2 -4
- package/src/_types/constants.d.ts.map +1 -0
- package/src/_types/core/BaseStepExecutor.d.ts +13 -0
- package/src/_types/core/BaseStepExecutor.d.ts.map +1 -0
- package/src/_types/core/EVM/EVM.d.ts +3 -0
- package/src/_types/core/EVM/EVM.d.ts.map +1 -0
- package/src/_types/core/EVM/EVMStepExecutor.d.ts +17 -0
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -0
- package/{dist/cjs/types → src/_types/core/EVM}/abi.d.ts +1 -0
- package/src/_types/core/EVM/abi.d.ts.map +1 -0
- package/src/_types/core/EVM/checkAllowance.d.ts +6 -0
- package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -0
- package/{dist/cjs/allowance → src/_types/core/EVM}/getAllowance.d.ts +15 -1
- package/src/_types/core/EVM/getAllowance.d.ts.map +1 -0
- package/src/_types/core/EVM/getENSAddress.d.ts +2 -0
- package/src/_types/core/EVM/getENSAddress.d.ts.map +1 -0
- package/src/_types/core/EVM/getEVMBalance.d.ts +3 -0
- package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -0
- package/src/_types/core/EVM/multisig.d.ts +6 -0
- package/src/_types/core/EVM/multisig.d.ts.map +1 -0
- package/src/_types/core/EVM/publicClient.d.ts +8 -0
- package/src/_types/core/EVM/publicClient.d.ts.map +1 -0
- package/src/_types/core/EVM/setAllowance.d.ts +25 -0
- package/src/_types/core/EVM/setAllowance.d.ts.map +1 -0
- package/{dist/cjs/execution → src/_types/core/EVM}/switchChain.d.ts +5 -4
- package/src/_types/core/EVM/switchChain.d.ts.map +1 -0
- package/src/_types/core/EVM/types.d.ts +55 -0
- package/src/_types/core/EVM/types.d.ts.map +1 -0
- package/src/_types/core/EVM/utils.d.ts +10 -0
- package/src/_types/core/EVM/utils.d.ts.map +1 -0
- package/src/_types/core/Solana/Solana.d.ts +3 -0
- package/src/_types/core/Solana/Solana.d.ts.map +1 -0
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts +13 -0
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -0
- package/src/_types/core/Solana/connection.d.ts +8 -0
- package/src/_types/core/Solana/connection.d.ts.map +1 -0
- package/src/_types/core/Solana/getSNSAddress.d.ts +2 -0
- package/src/_types/core/Solana/getSNSAddress.d.ts.map +1 -0
- package/src/_types/core/Solana/getSolanaBalance.d.ts +3 -0
- package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -0
- package/src/_types/core/Solana/isAddress.d.ts +2 -0
- package/src/_types/core/Solana/isAddress.d.ts.map +1 -0
- package/src/_types/core/Solana/types.d.ts +13 -0
- package/src/_types/core/Solana/types.d.ts.map +1 -0
- package/{dist/cjs/execution → src/_types/core}/StatusManager.d.ts +15 -28
- package/src/_types/core/StatusManager.d.ts.map +1 -0
- package/src/_types/core/checkBalance.d.ts +3 -0
- package/src/_types/core/checkBalance.d.ts.map +1 -0
- package/src/_types/core/execution.d.ts +42 -0
- package/src/_types/core/execution.d.ts.map +1 -0
- package/src/_types/core/executionState.d.ts +17 -0
- package/src/_types/core/executionState.d.ts.map +1 -0
- package/src/_types/core/index.d.ts +4 -0
- package/src/_types/core/index.d.ts.map +1 -0
- package/src/_types/core/prepareRestart.d.ts +3 -0
- package/src/_types/core/prepareRestart.d.ts.map +1 -0
- package/src/_types/core/provider.d.ts +3 -0
- package/src/_types/core/provider.d.ts.map +1 -0
- package/src/_types/core/rpc.d.ts +4 -0
- package/src/_types/core/rpc.d.ts.map +1 -0
- package/{dist/execution → src/_types/core}/stepComparison.d.ts +7 -4
- package/src/_types/core/stepComparison.d.ts.map +1 -0
- package/src/_types/core/types.d.ts +81 -0
- package/src/_types/core/types.d.ts.map +1 -0
- package/{dist/execution → src/_types/core}/utils.d.ts +3 -2
- package/src/_types/core/utils.d.ts.map +1 -0
- package/src/_types/core/waitForReceivingTransaction.d.ts +4 -0
- package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -0
- package/src/_types/createConfig.d.ts +4 -0
- package/src/_types/createConfig.d.ts.map +1 -0
- package/{dist → src/_types}/helpers.d.ts +4 -3
- package/src/_types/helpers.d.ts.map +1 -0
- package/src/_types/index.d.ts +15 -0
- package/src/_types/index.d.ts.map +1 -0
- package/{dist → src/_types}/request.d.ts +1 -0
- package/src/_types/request.d.ts.map +1 -0
- package/src/_types/services/api.d.ts +89 -0
- package/src/_types/services/api.d.ts.map +1 -0
- package/src/_types/services/balance.d.ts +30 -0
- package/src/_types/services/balance.d.ts.map +1 -0
- package/src/_types/services/getNameServiceAddress.d.ts +3 -0
- package/src/_types/services/getNameServiceAddress.d.ts.map +1 -0
- package/{dist/cjs → src/_types}/typeguards.d.ts +3 -2
- package/src/_types/typeguards.d.ts.map +1 -0
- package/src/_types/types/index.d.ts +2 -0
- package/src/_types/types/index.d.ts.map +1 -0
- package/src/_types/types/internal.d.ts +59 -0
- package/src/_types/types/internal.d.ts.map +1 -0
- package/{dist → src/_types}/utils/errors.d.ts +3 -1
- package/src/_types/utils/errors.d.ts.map +1 -0
- package/src/_types/utils/getTransactionMessage.d.ts +4 -0
- package/src/_types/utils/getTransactionMessage.d.ts.map +1 -0
- package/src/_types/utils/index.d.ts +6 -0
- package/src/_types/utils/index.d.ts.map +1 -0
- package/{dist/cjs → src/_types}/utils/median.d.ts +1 -0
- package/src/_types/utils/median.d.ts.map +1 -0
- package/src/_types/utils/parseBackendError.d.ts +3 -0
- package/src/_types/utils/parseBackendError.d.ts.map +1 -0
- package/{dist → src/_types}/utils/parseError.d.ts +4 -6
- package/src/_types/utils/parseError.d.ts.map +1 -0
- package/{dist → src/_types}/utils/utils.d.ts +1 -0
- package/src/_types/utils/utils.d.ts.map +1 -0
- package/src/_types/version.d.ts +3 -0
- package/src/_types/version.d.ts.map +1 -0
- package/src/config.ts +91 -0
- package/src/constants.ts +4 -0
- package/src/core/BaseStepExecutor.ts +40 -0
- package/src/core/EVM/EVM.ts +47 -0
- package/src/core/EVM/EVMStepExecutor.ts +503 -0
- package/src/core/EVM/abi.ts +47 -0
- package/src/core/EVM/checkAllowance.ts +168 -0
- package/src/core/EVM/getAllowance.ts +144 -0
- package/src/core/EVM/getENSAddress.ts +18 -0
- package/src/core/EVM/getEVMBalance.ts +118 -0
- package/src/core/EVM/multisig.ts +53 -0
- package/src/core/EVM/publicClient.ts +54 -0
- package/src/core/EVM/setAllowance.ts +144 -0
- package/src/core/EVM/switchChain.ts +77 -0
- package/src/core/EVM/types.ts +73 -0
- package/src/core/EVM/utils.ts +48 -0
- package/src/core/Solana/Solana.ts +41 -0
- package/src/core/Solana/SolanaStepExecutor.ts +272 -0
- package/src/core/Solana/connection.ts +20 -0
- package/src/core/Solana/getSNSAddress.ts +33 -0
- package/src/core/Solana/getSolanaBalance.ts +72 -0
- package/src/core/Solana/isAddress.ts +10 -0
- package/src/core/Solana/types.ts +18 -0
- package/src/core/StatusManager.ts +231 -0
- package/src/core/checkBalance.ts +48 -0
- package/src/core/execution.ts +214 -0
- package/src/core/executionState.ts +44 -0
- package/src/core/index.ts +3 -0
- package/src/core/prepareRestart.ts +82 -0
- package/src/core/provider.ts +12 -0
- package/src/core/rpc.ts +15 -0
- package/src/core/stepComparison.ts +51 -0
- package/src/core/types.ts +118 -0
- package/src/core/utils.ts +105 -0
- package/src/core/waitForReceivingTransaction.ts +74 -0
- package/src/createConfig.ts +33 -0
- package/src/helpers.ts +83 -0
- package/src/index.ts +18 -0
- package/src/request.ts +79 -0
- package/src/services/api.ts +509 -0
- package/src/services/balance.ts +93 -0
- package/src/services/getNameServiceAddress.ts +30 -0
- package/src/typeguards.ts +89 -0
- package/src/types/index.ts +1 -0
- package/src/types/internal.ts +62 -0
- package/src/utils/errors.ts +232 -0
- package/src/utils/getTransactionMessage.ts +46 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/median.ts +11 -0
- package/src/utils/parseBackendError.ts +50 -0
- package/src/utils/parseError.ts +210 -0
- package/src/utils/utils.ts +48 -0
- package/src/version.ts +2 -0
- package/dist/LiFi.d.ts +0 -175
- package/dist/LiFi.js +0 -250
- 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 -6
- 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 -175
- package/dist/cjs/LiFi.js +0 -280
- 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 -6
- 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 -272
- 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.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/helpers.js +0 -84
- 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/request.js +0 -60
- 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 -145
- 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 -265
- 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/switchChain.d.ts +0 -21
- package/dist/execution/waitForReceivingTransaction.d.ts +0 -3
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -6
- package/dist/services/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 -145
- 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 { WalletClient } from 'viem'
|
|
2
|
+
import { LiFiErrorCode, ProviderError } from '../../utils/errors.js'
|
|
3
|
+
import type { StatusManager } from '../StatusManager.js'
|
|
4
|
+
import type { LiFiStepExtended, SwitchChainHook } from '../types.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This method checks whether the wallet client is configured for the correct chain.
|
|
8
|
+
* If yes it returns the wallet clien.
|
|
9
|
+
* If no and if user interaction is allowed it triggers the switchChainHook. If no user interaction is allowed it aborts.
|
|
10
|
+
*
|
|
11
|
+
* Account Type: local -
|
|
12
|
+
* We need to create and return a new WalletClient from the switchChainHook in order to continue execution on a new chain.
|
|
13
|
+
*
|
|
14
|
+
* Account Type: json-rpc -
|
|
15
|
+
* We can switch chain and return existing WalletClient from the switchChainHook in order to continue execution on a new chain.
|
|
16
|
+
* @param walletClient
|
|
17
|
+
* @param statusManager
|
|
18
|
+
* @param step
|
|
19
|
+
* @param switchChainHook
|
|
20
|
+
* @param allowUserInteraction
|
|
21
|
+
* @returns New WalletClient
|
|
22
|
+
*/
|
|
23
|
+
export const switchChain = async (
|
|
24
|
+
walletClient: WalletClient,
|
|
25
|
+
statusManager: StatusManager,
|
|
26
|
+
step: LiFiStepExtended,
|
|
27
|
+
allowUserInteraction: boolean,
|
|
28
|
+
switchChainHook?: SwitchChainHook
|
|
29
|
+
): Promise<WalletClient | undefined> => {
|
|
30
|
+
// if we are already on the correct chain we can proceed directly
|
|
31
|
+
const currentChainId = await walletClient.getChainId()
|
|
32
|
+
if (currentChainId === 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,73 @@
|
|
|
1
|
+
import { ChainType, 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
|
+
multisig?: MultisigConfig
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface EVMProvider extends SDKProvider {
|
|
13
|
+
setOptions(options: EVMProviderOptions): void
|
|
14
|
+
multisig?: MultisigConfig
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function isEVM(provider: SDKProvider): provider is EVMProvider {
|
|
18
|
+
return provider.type === ChainType.EVM
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type TokenSpender = {
|
|
22
|
+
token: Token
|
|
23
|
+
spenderAddress: string
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type TokenAllowance = {
|
|
27
|
+
token: Token
|
|
28
|
+
allowance?: bigint
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type TokenSpenderAllowance = {
|
|
32
|
+
token: Token
|
|
33
|
+
spenderAddress: string
|
|
34
|
+
allowance?: bigint
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface ApproveTokenRequest {
|
|
38
|
+
walletClient: WalletClient
|
|
39
|
+
token: Token
|
|
40
|
+
spenderAddress: string
|
|
41
|
+
amount: bigint
|
|
42
|
+
infiniteApproval?: boolean
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface RevokeApprovalRequest {
|
|
46
|
+
walletClient: WalletClient
|
|
47
|
+
token: Token
|
|
48
|
+
spenderAddress: string
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface MultisigTxDetails {
|
|
52
|
+
status: 'DONE' | 'FAILED' | 'PENDING' | 'CANCELLED'
|
|
53
|
+
txHash?: Hash
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface MultisigTransaction {
|
|
57
|
+
to: string
|
|
58
|
+
value?: bigint
|
|
59
|
+
data: string
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface MultisigConfig {
|
|
63
|
+
isMultisigWalletClient: boolean
|
|
64
|
+
getMultisigTransactionDetails: (
|
|
65
|
+
txHash: Hash,
|
|
66
|
+
fromChainId: number,
|
|
67
|
+
updateIntermediateStatus?: () => void
|
|
68
|
+
) => Promise<MultisigTxDetails>
|
|
69
|
+
sendBatchTransaction?: (
|
|
70
|
+
batchTransactions: MultisigTransaction[]
|
|
71
|
+
) => Promise<Hash>
|
|
72
|
+
shouldBatchTransactions?: boolean
|
|
73
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type ChainId } from '@lifi/types'
|
|
2
|
+
import type { PublicClient, Transaction } from 'viem'
|
|
3
|
+
import { config } from '../../config.js'
|
|
4
|
+
import { median } from '../../utils/median.js'
|
|
5
|
+
|
|
6
|
+
export const getMaxPriorityFeePerGas = async (
|
|
7
|
+
client: PublicClient
|
|
8
|
+
): Promise<bigint | undefined> => {
|
|
9
|
+
const block = await client.getBlock({
|
|
10
|
+
includeTransactions: true,
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
const maxPriorityFeePerGasList = (block.transactions as Transaction[])
|
|
14
|
+
.filter((tx) => tx.maxPriorityFeePerGas)
|
|
15
|
+
.map((tx) => tx.maxPriorityFeePerGas) as bigint[]
|
|
16
|
+
|
|
17
|
+
if (!maxPriorityFeePerGasList.length) {
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const maxPriorityFeePerGasSum = maxPriorityFeePerGasList.reduce(
|
|
22
|
+
(acc, value) => (acc += value),
|
|
23
|
+
0n
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
const maxPriorityFeePerGasMedian = median(maxPriorityFeePerGasList) ?? 0n
|
|
27
|
+
|
|
28
|
+
const maxPriorityFeePerGasAvg =
|
|
29
|
+
maxPriorityFeePerGasSum / BigInt(maxPriorityFeePerGasList.length)
|
|
30
|
+
|
|
31
|
+
return maxPriorityFeePerGasMedian > maxPriorityFeePerGasAvg
|
|
32
|
+
? maxPriorityFeePerGasAvg
|
|
33
|
+
: maxPriorityFeePerGasMedian
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Multicall
|
|
37
|
+
export const getMulticallAddress = async (
|
|
38
|
+
chainId: ChainId
|
|
39
|
+
): Promise<string | undefined> => {
|
|
40
|
+
const chains = await config.getChains()
|
|
41
|
+
return chains.find((chain) => chain.id === chainId)?.multicallAddress
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Modified viem retryDelay exponential backoff function.
|
|
45
|
+
export const retryDelay = ({ count }: { count: number; error: Error }) =>
|
|
46
|
+
Math.min(~~(1 << count) * 200, 3000)
|
|
47
|
+
|
|
48
|
+
export const retryCount = 20
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/types'
|
|
2
|
+
import type { StepExecutorOptions } from '../types.js'
|
|
3
|
+
import { SolanaStepExecutor } from './SolanaStepExecutor.js'
|
|
4
|
+
import { getSNSAddress } from './getSNSAddress.js'
|
|
5
|
+
import { getSolanaBalance } from './getSolanaBalance.js'
|
|
6
|
+
import { isAddress } from './isAddress.js'
|
|
7
|
+
import type { SolanaProvider, SolanaProviderOptions } from './types.js'
|
|
8
|
+
|
|
9
|
+
export function Solana(options?: SolanaProviderOptions): SolanaProvider {
|
|
10
|
+
const _options: SolanaProviderOptions = options ?? {}
|
|
11
|
+
return {
|
|
12
|
+
get type() {
|
|
13
|
+
return ChainType.SVM
|
|
14
|
+
},
|
|
15
|
+
isAddress,
|
|
16
|
+
resolveAddress: getSNSAddress,
|
|
17
|
+
getBalance: getSolanaBalance,
|
|
18
|
+
async getStepExecutor(
|
|
19
|
+
options: StepExecutorOptions
|
|
20
|
+
): Promise<SolanaStepExecutor> {
|
|
21
|
+
if (!_options.getWalletAdapter) {
|
|
22
|
+
throw new Error(`getWalletAdapter is not provided.`)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const walletAdapter = await _options.getWalletAdapter()
|
|
26
|
+
|
|
27
|
+
const executor = new SolanaStepExecutor({
|
|
28
|
+
walletAdapter,
|
|
29
|
+
routeId: options.routeId,
|
|
30
|
+
executionOptions: {
|
|
31
|
+
...options.executionOptions,
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
return executor
|
|
36
|
+
},
|
|
37
|
+
setOptions(options: SolanaProviderOptions) {
|
|
38
|
+
Object.assign(_options, options)
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import type { ExtendedTransactionInfo, FullStatusData } from '@lifi/types'
|
|
2
|
+
import type { Adapter } from '@solana/wallet-adapter-base'
|
|
3
|
+
import {
|
|
4
|
+
VersionedTransaction,
|
|
5
|
+
type TransactionConfirmationStrategy,
|
|
6
|
+
type TransactionSignature,
|
|
7
|
+
} from '@solana/web3.js'
|
|
8
|
+
import { config } from '../../config.js'
|
|
9
|
+
import { getStepTransaction } from '../../services/api.js'
|
|
10
|
+
import {
|
|
11
|
+
LiFiErrorCode,
|
|
12
|
+
TransactionError,
|
|
13
|
+
getTransactionFailedMessage,
|
|
14
|
+
parseError,
|
|
15
|
+
} from '../../utils/index.js'
|
|
16
|
+
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
17
|
+
import { checkBalance } from '../checkBalance.js'
|
|
18
|
+
import { stepComparison } from '../stepComparison.js'
|
|
19
|
+
import type {
|
|
20
|
+
LiFiStepExtended,
|
|
21
|
+
StepExecutorOptions,
|
|
22
|
+
TransactionParameters,
|
|
23
|
+
} 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: Adapter
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export class SolanaStepExecutor extends BaseStepExecutor {
|
|
33
|
+
private walletAdapter: Adapter
|
|
34
|
+
|
|
35
|
+
constructor(options: SolanaStepExecutorOptions) {
|
|
36
|
+
super(options)
|
|
37
|
+
this.walletAdapter = options.walletAdapter
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
checkWalletAdapter = (step: LiFiStepExtended) => {
|
|
41
|
+
// Prevent execution of the quote by wallet different from the one which requested the quote
|
|
42
|
+
if (this.walletAdapter.publicKey!.toString() !== step.action.fromAddress) {
|
|
43
|
+
throw new TransactionError(
|
|
44
|
+
LiFiErrorCode.WalletChangedDuringExecution,
|
|
45
|
+
'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.'
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
executeStep = async (step: LiFiStepExtended): Promise<LiFiStepExtended> => {
|
|
51
|
+
step.execution = this.statusManager.initExecutionObject(step)
|
|
52
|
+
|
|
53
|
+
const fromChain = await config.getChainById(step.action.fromChainId)
|
|
54
|
+
const toChain = await config.getChainById(step.action.toChainId)
|
|
55
|
+
|
|
56
|
+
const isBridgeExecution = fromChain.id !== toChain.id
|
|
57
|
+
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
58
|
+
|
|
59
|
+
// STEP 2: Get transaction
|
|
60
|
+
let process = this.statusManager.findOrCreateProcess(
|
|
61
|
+
step,
|
|
62
|
+
currentProcessType
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
if (process.status !== 'DONE') {
|
|
66
|
+
try {
|
|
67
|
+
const connection = await getSolanaConnection()
|
|
68
|
+
let txHash: TransactionSignature
|
|
69
|
+
if (process.txHash) {
|
|
70
|
+
txHash = process.txHash as TransactionSignature
|
|
71
|
+
} else {
|
|
72
|
+
process = this.statusManager.updateProcess(
|
|
73
|
+
step,
|
|
74
|
+
process.type,
|
|
75
|
+
'STARTED'
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
// Check balance
|
|
79
|
+
await checkBalance(this.walletAdapter.publicKey!.toString(), step)
|
|
80
|
+
|
|
81
|
+
// Create new transaction
|
|
82
|
+
if (!step.transactionRequest) {
|
|
83
|
+
const updatedStep = await getStepTransaction(step)
|
|
84
|
+
const comparedStep = await stepComparison(
|
|
85
|
+
this.statusManager,
|
|
86
|
+
step,
|
|
87
|
+
updatedStep,
|
|
88
|
+
this.allowUserInteraction,
|
|
89
|
+
this.executionOptions
|
|
90
|
+
)
|
|
91
|
+
step = {
|
|
92
|
+
...comparedStep,
|
|
93
|
+
execution: step.execution,
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (!step.transactionRequest?.data) {
|
|
98
|
+
throw new TransactionError(
|
|
99
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
100
|
+
'Unable to prepare transaction.'
|
|
101
|
+
)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
process = this.statusManager.updateProcess(
|
|
105
|
+
step,
|
|
106
|
+
process.type,
|
|
107
|
+
'ACTION_REQUIRED'
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
if (!this.allowUserInteraction) {
|
|
111
|
+
return step
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let transactionRequest: TransactionParameters = {
|
|
115
|
+
data: step.transactionRequest.data,
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (this.executionOptions?.updateTransactionRequestHook) {
|
|
119
|
+
const customizedTransactionRequest: TransactionParameters =
|
|
120
|
+
await this.executionOptions.updateTransactionRequestHook({
|
|
121
|
+
requestType: 'transaction',
|
|
122
|
+
...transactionRequest,
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
transactionRequest = {
|
|
126
|
+
...transactionRequest,
|
|
127
|
+
...customizedTransactionRequest,
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (!transactionRequest.data) {
|
|
132
|
+
throw new TransactionError(
|
|
133
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
134
|
+
'Unable to prepare transaction.'
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const versionedTransaction = VersionedTransaction.deserialize(
|
|
139
|
+
Uint8Array.from(atob(transactionRequest.data), (c) =>
|
|
140
|
+
c.charCodeAt(0)
|
|
141
|
+
)
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
this.checkWalletAdapter(step)
|
|
145
|
+
|
|
146
|
+
txHash = await this.walletAdapter.sendTransaction(
|
|
147
|
+
versionedTransaction,
|
|
148
|
+
connection,
|
|
149
|
+
{
|
|
150
|
+
maxRetries: 5,
|
|
151
|
+
skipPreflight: true,
|
|
152
|
+
}
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
process = this.statusManager.updateProcess(
|
|
156
|
+
step,
|
|
157
|
+
process.type,
|
|
158
|
+
'PENDING',
|
|
159
|
+
{
|
|
160
|
+
txHash: txHash,
|
|
161
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
162
|
+
}
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const signatureResult = await connection.confirmTransaction(
|
|
167
|
+
{
|
|
168
|
+
signature: txHash,
|
|
169
|
+
} as TransactionConfirmationStrategy,
|
|
170
|
+
'confirmed'
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
if (signatureResult.value.err) {
|
|
174
|
+
throw new TransactionError(
|
|
175
|
+
LiFiErrorCode.TransactionFailed,
|
|
176
|
+
`Transaction failed: ${signatureResult.value.err}`
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (isBridgeExecution) {
|
|
181
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE')
|
|
182
|
+
}
|
|
183
|
+
} catch (e: any) {
|
|
184
|
+
const error = await parseError(e, step, process)
|
|
185
|
+
process = this.statusManager.updateProcess(
|
|
186
|
+
step,
|
|
187
|
+
process.type,
|
|
188
|
+
'FAILED',
|
|
189
|
+
{
|
|
190
|
+
error: {
|
|
191
|
+
message: error.message,
|
|
192
|
+
htmlMessage: error.htmlMessage,
|
|
193
|
+
code: error.code,
|
|
194
|
+
},
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
198
|
+
throw error
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// STEP 5: Wait for the receiving chain
|
|
203
|
+
const processTxHash = process.txHash
|
|
204
|
+
if (isBridgeExecution) {
|
|
205
|
+
process = this.statusManager.findOrCreateProcess(
|
|
206
|
+
step,
|
|
207
|
+
'RECEIVING_CHAIN',
|
|
208
|
+
'PENDING'
|
|
209
|
+
)
|
|
210
|
+
}
|
|
211
|
+
let statusResponse: FullStatusData
|
|
212
|
+
try {
|
|
213
|
+
if (!processTxHash) {
|
|
214
|
+
throw new Error('Transaction hash is undefined.')
|
|
215
|
+
}
|
|
216
|
+
statusResponse = (await waitForReceivingTransaction(
|
|
217
|
+
processTxHash,
|
|
218
|
+
this.statusManager,
|
|
219
|
+
process.type,
|
|
220
|
+
step
|
|
221
|
+
)) as FullStatusData
|
|
222
|
+
|
|
223
|
+
const statusReceiving =
|
|
224
|
+
statusResponse.receiving as ExtendedTransactionInfo
|
|
225
|
+
|
|
226
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE', {
|
|
227
|
+
substatus: statusResponse.substatus,
|
|
228
|
+
substatusMessage:
|
|
229
|
+
statusResponse.substatusMessage ||
|
|
230
|
+
getSubstatusMessage(statusResponse.status, statusResponse.substatus),
|
|
231
|
+
txHash: statusReceiving?.txHash,
|
|
232
|
+
txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
this.statusManager.updateExecution(step, 'DONE', {
|
|
236
|
+
fromAmount: statusResponse.sending.amount,
|
|
237
|
+
toAmount: statusReceiving?.amount,
|
|
238
|
+
toToken: statusReceiving?.token,
|
|
239
|
+
gasCosts: [
|
|
240
|
+
{
|
|
241
|
+
amount: statusResponse.sending.gasAmount,
|
|
242
|
+
amountUSD: statusResponse.sending.gasAmountUSD,
|
|
243
|
+
token: statusResponse.sending.gasToken,
|
|
244
|
+
estimate: statusResponse.sending.gasUsed,
|
|
245
|
+
limit: statusResponse.sending.gasUsed,
|
|
246
|
+
price: statusResponse.sending.gasPrice,
|
|
247
|
+
type: 'SEND',
|
|
248
|
+
},
|
|
249
|
+
],
|
|
250
|
+
})
|
|
251
|
+
} catch (e: unknown) {
|
|
252
|
+
const htmlMessage = await getTransactionFailedMessage(
|
|
253
|
+
step,
|
|
254
|
+
process.txLink
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
258
|
+
error: {
|
|
259
|
+
code: LiFiErrorCode.TransactionFailed,
|
|
260
|
+
message: 'Failed while waiting for receiving chain.',
|
|
261
|
+
htmlMessage,
|
|
262
|
+
},
|
|
263
|
+
})
|
|
264
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
265
|
+
console.warn(e)
|
|
266
|
+
throw e
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// DONE
|
|
270
|
+
return step
|
|
271
|
+
}
|
|
272
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChainId } from '@lifi/types'
|
|
2
|
+
import { Connection } from '@solana/web3.js'
|
|
3
|
+
import { getRpcUrl } from '../rpc.js'
|
|
4
|
+
|
|
5
|
+
let connection: 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 (!connection) {
|
|
14
|
+
const rpcUrl = await getRpcUrl(ChainId.SOL)
|
|
15
|
+
connection = new Connection(rpcUrl)
|
|
16
|
+
return connection
|
|
17
|
+
} else {
|
|
18
|
+
return connection
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { isAddress } from './isAddress.js'
|
|
2
|
+
|
|
3
|
+
interface SNSResult {
|
|
4
|
+
s: 'ok' | 'error'
|
|
5
|
+
result: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// Subject to change
|
|
9
|
+
// https://github.com/Bonfida/sns-sdk?tab=readme-ov-file#sdk-proxy
|
|
10
|
+
export const getSNSAddress = async (name: string) => {
|
|
11
|
+
try {
|
|
12
|
+
if (!name.endsWith('.sol')) {
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
// const rpcUrl = await getRpcUrl(ChainId.SOL)
|
|
16
|
+
const snsWorkerUrl = `https://sns-sdk-proxy.bonfida.workers.dev/resolve/${name}`
|
|
17
|
+
const response: Response = await fetch(snsWorkerUrl)
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
return
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const data: SNSResult = await response.json()
|
|
23
|
+
|
|
24
|
+
if (!isAddress(data.result)) {
|
|
25
|
+
return
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return data.result
|
|
29
|
+
} catch (_) {
|
|
30
|
+
// ignore
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ChainId, Token, TokenAmount } from '@lifi/types'
|
|
2
|
+
import { PublicKey } from '@solana/web3.js'
|
|
3
|
+
import { wrappedSolAddress } from '../../constants.js'
|
|
4
|
+
import { getSolanaConnection } from './connection.js'
|
|
5
|
+
import { TokenProgramAddress } from './types.js'
|
|
6
|
+
|
|
7
|
+
export const getSolanaBalance = async (
|
|
8
|
+
walletAddress: string,
|
|
9
|
+
tokens: Token[]
|
|
10
|
+
): Promise<TokenAmount[]> => {
|
|
11
|
+
if (tokens.length === 0) {
|
|
12
|
+
return []
|
|
13
|
+
}
|
|
14
|
+
const { chainId } = tokens[0]
|
|
15
|
+
tokens.forEach((token) => {
|
|
16
|
+
if (token.chainId !== chainId) {
|
|
17
|
+
console.warn(`Requested tokens have to be on the same chain.`)
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
return getSolanaBalanceDefault(chainId, tokens, walletAddress)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const getSolanaBalanceDefault = async (
|
|
25
|
+
_chainId: ChainId,
|
|
26
|
+
tokens: Token[],
|
|
27
|
+
walletAddress: string
|
|
28
|
+
): Promise<TokenAmount[]> => {
|
|
29
|
+
const connection = await getSolanaConnection()
|
|
30
|
+
const accountPublicKey = new PublicKey(walletAddress)
|
|
31
|
+
const tokenProgramPublicKey = new PublicKey(TokenProgramAddress)
|
|
32
|
+
const [slot, balance, tokenAccountsByOwner] = await Promise.allSettled([
|
|
33
|
+
connection.getSlot(),
|
|
34
|
+
connection.getBalance(accountPublicKey),
|
|
35
|
+
connection.getParsedTokenAccountsByOwner(accountPublicKey, {
|
|
36
|
+
programId: tokenProgramPublicKey,
|
|
37
|
+
}),
|
|
38
|
+
])
|
|
39
|
+
const blockNumber = slot.status === 'fulfilled' ? BigInt(slot.value) : 0n
|
|
40
|
+
const solBalance = balance.status === 'fulfilled' ? BigInt(balance.value) : 0n
|
|
41
|
+
const walletTokenAmounts =
|
|
42
|
+
tokenAccountsByOwner.status === 'fulfilled'
|
|
43
|
+
? tokenAccountsByOwner.value.value.reduce(
|
|
44
|
+
(tokenAmounts, value) => {
|
|
45
|
+
const amount = BigInt(
|
|
46
|
+
value.account.data.parsed.info.tokenAmount.amount
|
|
47
|
+
)
|
|
48
|
+
if (amount > 0n) {
|
|
49
|
+
tokenAmounts[value.account.data.parsed.info.mint] = amount
|
|
50
|
+
}
|
|
51
|
+
return tokenAmounts
|
|
52
|
+
},
|
|
53
|
+
{} as Record<string, bigint>
|
|
54
|
+
)
|
|
55
|
+
: {}
|
|
56
|
+
walletTokenAmounts[wrappedSolAddress] ??= 0n
|
|
57
|
+
walletTokenAmounts[wrappedSolAddress] += solBalance
|
|
58
|
+
const tokenAmounts: TokenAmount[] = tokens.map((token) => {
|
|
59
|
+
if (walletTokenAmounts[token.address]) {
|
|
60
|
+
return {
|
|
61
|
+
...token,
|
|
62
|
+
amount: walletTokenAmounts[token.address],
|
|
63
|
+
blockNumber,
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
...token,
|
|
68
|
+
blockNumber,
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
return tokenAmounts
|
|
72
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ChainType, type ChainId } from '@lifi/types'
|
|
2
|
+
import type { Adapter } from '@solana/wallet-adapter-base'
|
|
3
|
+
import { type SDKProvider } from '../types.js'
|
|
4
|
+
|
|
5
|
+
export interface SolanaProviderOptions {
|
|
6
|
+
getWalletAdapter?: () => Promise<Adapter>
|
|
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'
|