@lifi/sdk 3.2.0 → 3.3.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -2
- package/src/_cjs/core/EVM/EVMStepExecutor.js +2 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/getAllowance.js +5 -5
- package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/getEVMBalance.js +5 -5
- package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
- package/src/_cjs/core/EVM/setAllowance.js +5 -5
- package/src/_cjs/core/EVM/setAllowance.js.map +1 -1
- package/src/_cjs/core/Solana/Solana.js +2 -2
- package/src/_cjs/core/Solana/Solana.js.map +1 -1
- package/src/_cjs/core/Solana/SolanaStepExecutor.js +7 -10
- package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_cjs/core/Solana/getSNSAddress.js +2 -2
- package/src/_cjs/core/Solana/getSNSAddress.js.map +1 -1
- package/src/_cjs/core/Solana/{isAddress.js → isSVMAddress.js} +3 -3
- package/src/_cjs/core/Solana/isSVMAddress.js.map +1 -0
- package/src/_cjs/core/UTXO/UTXO.js +38 -0
- package/src/_cjs/core/UTXO/UTXO.js.map +1 -0
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js +219 -0
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -0
- package/src/_cjs/core/UTXO/blockchairApi.js +169 -0
- package/src/_cjs/core/UTXO/blockchairApi.js.map +1 -0
- package/src/_cjs/core/UTXO/blockchairApiTypes.js +26 -0
- package/src/_cjs/core/UTXO/blockchairApiTypes.js.map +1 -0
- package/src/_cjs/core/UTXO/getUTXOAPIPublicClient.js +48 -0
- package/src/_cjs/core/UTXO/getUTXOAPIPublicClient.js.map +1 -0
- package/src/_cjs/core/UTXO/getUTXOBalance.js +30 -0
- package/src/_cjs/core/UTXO/getUTXOBalance.js.map +1 -0
- package/src/_cjs/core/UTXO/getUTXOPublicClient.js +36 -0
- package/src/_cjs/core/UTXO/getUTXOPublicClient.js.map +1 -0
- package/src/_cjs/core/UTXO/isUTXOAddress.js +133 -0
- package/src/_cjs/core/UTXO/isUTXOAddress.js.map +1 -0
- package/src/_cjs/core/UTXO/parseUTXOErrors.js +30 -0
- package/src/_cjs/core/UTXO/parseUTXOErrors.js.map +1 -0
- package/src/_cjs/core/UTXO/requestClient.js +63 -0
- package/src/_cjs/core/UTXO/requestClient.js.map +1 -0
- package/src/_cjs/core/UTXO/types.js +8 -0
- package/src/_cjs/core/UTXO/types.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBalance.js +11 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockCount.js +11 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +15 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +15 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/signPsbt.js +11 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/clients/types.js +3 -0
- package/src/_cjs/core/UTXO/utxo-stack/clients/types.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js +10 -0
- package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOActions.js +14 -0
- package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/ankr.js +21 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/ankr.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockchair.js +24 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockchair.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockcypher.js +21 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/blockcypher.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +77 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js +22 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/mempool.js +17 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/mempool.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/types.js +3 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/types.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/utxo.js +56 -0
- package/src/_cjs/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/types/transaction.js +3 -0
- package/src/_cjs/core/UTXO/utxo-stack/types/transaction.js.map +1 -0
- package/src/_cjs/core/checkBalance.js +3 -3
- package/src/_cjs/core/checkBalance.js.map +1 -1
- package/src/_cjs/core/utils.js +0 -6
- package/src/_cjs/core/utils.js.map +1 -1
- package/src/_cjs/core/waitForReceivingTransaction.js +4 -4
- package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -1
- package/src/_cjs/createConfig.js +3 -1
- package/src/_cjs/createConfig.js.map +1 -1
- package/src/_cjs/index.js +10 -3
- package/src/_cjs/index.js.map +1 -1
- package/src/_cjs/request.js +3 -3
- package/src/_cjs/request.js.map +1 -1
- package/src/_cjs/services/api.js +8 -4
- package/src/_cjs/services/api.js.map +1 -1
- package/src/_cjs/services/balance.js +7 -3
- package/src/_cjs/services/balance.js.map +1 -1
- package/src/_cjs/utils/index.js +1 -1
- package/src/_cjs/utils/index.js.map +1 -1
- package/src/_cjs/utils/{utils.js → isZeroAddress.js} +2 -19
- package/src/_cjs/utils/isZeroAddress.js.map +1 -0
- package/src/_cjs/utils/sleep.js +9 -0
- package/src/_cjs/utils/sleep.js.map +1 -0
- package/src/_cjs/utils/waitForResult.js +16 -0
- package/src/_cjs/utils/waitForResult.js.map +1 -0
- package/src/_cjs/utils/withDedupe.js +37 -0
- package/src/_cjs/utils/withDedupe.js.map +1 -0
- package/src/_cjs/version.js +1 -1
- package/src/_cjs/version.js.map +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +2 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/getAllowance.js +1 -1
- package/src/_esm/core/EVM/getAllowance.js.map +1 -1
- package/src/_esm/core/EVM/getEVMBalance.js +1 -1
- package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
- package/src/_esm/core/EVM/setAllowance.js +1 -1
- package/src/_esm/core/EVM/setAllowance.js.map +1 -1
- package/src/_esm/core/Solana/Solana.js +2 -2
- package/src/_esm/core/Solana/Solana.js.map +1 -1
- package/src/_esm/core/Solana/SolanaStepExecutor.js +6 -9
- package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_esm/core/Solana/getSNSAddress.js +2 -2
- package/src/_esm/core/Solana/getSNSAddress.js.map +1 -1
- package/src/_esm/core/Solana/{isAddress.js → isSVMAddress.js} +2 -2
- package/src/_esm/core/Solana/isSVMAddress.js.map +1 -0
- package/src/_esm/core/UTXO/UTXO.js +36 -0
- package/src/_esm/core/UTXO/UTXO.js.map +1 -0
- package/src/_esm/core/UTXO/UTXOStepExecutor.js +243 -0
- package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -0
- package/src/_esm/core/UTXO/blockchairApi.js +167 -0
- package/src/_esm/core/UTXO/blockchairApi.js.map +1 -0
- package/src/_esm/core/UTXO/blockchairApiTypes.js +23 -0
- package/src/_esm/core/UTXO/blockchairApiTypes.js.map +1 -0
- package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js +50 -0
- package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js.map +1 -0
- package/src/_esm/core/UTXO/getUTXOBalance.js +26 -0
- package/src/_esm/core/UTXO/getUTXOBalance.js.map +1 -0
- package/src/_esm/core/UTXO/getUTXOPublicClient.js +38 -0
- package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -0
- package/src/_esm/core/UTXO/isUTXOAddress.js +128 -0
- package/src/_esm/core/UTXO/isUTXOAddress.js.map +1 -0
- package/src/_esm/core/UTXO/parseUTXOErrors.js +26 -0
- package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -0
- package/src/_esm/core/UTXO/requestClient.js +59 -0
- package/src/_esm/core/UTXO/requestClient.js.map +1 -0
- package/src/_esm/core/UTXO/types.js +6 -0
- package/src/_esm/core/UTXO/types.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js +9 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js +9 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +13 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +13 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js +9 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/clients/types.js +2 -0
- package/src/_esm/core/UTXO/utxo-stack/clients/types.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js +7 -0
- package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js +11 -0
- package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/ankr.js +18 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/ankr.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockchair.js +21 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockchair.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockcypher.js +18 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/blockcypher.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +74 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js +19 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/mempool.js +14 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/mempool.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/types.js +2 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/types.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js +53 -0
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/types/transaction.js +2 -0
- package/src/_esm/core/UTXO/utxo-stack/types/transaction.js.map +1 -0
- package/src/_esm/core/checkBalance.js +2 -2
- package/src/_esm/core/checkBalance.js.map +1 -1
- package/src/_esm/core/utils.js +0 -5
- package/src/_esm/core/utils.js.map +1 -1
- package/src/_esm/core/waitForReceivingTransaction.js +4 -4
- package/src/_esm/core/waitForReceivingTransaction.js.map +1 -1
- package/src/_esm/createConfig.js +3 -1
- package/src/_esm/createConfig.js.map +1 -1
- package/src/_esm/index.js +7 -3
- package/src/_esm/index.js.map +1 -1
- package/src/_esm/request.js +3 -3
- package/src/_esm/request.js.map +1 -1
- package/src/_esm/services/api.js +8 -4
- package/src/_esm/services/api.js.map +1 -1
- package/src/_esm/services/balance.js +9 -5
- package/src/_esm/services/balance.js.map +1 -1
- package/src/_esm/utils/index.js +1 -1
- package/src/_esm/utils/index.js.map +1 -1
- package/src/_esm/utils/isZeroAddress.js +17 -0
- package/src/_esm/utils/isZeroAddress.js.map +1 -0
- package/src/_esm/utils/sleep.js +6 -0
- package/src/_esm/utils/sleep.js.map +1 -0
- package/src/_esm/utils/waitForResult.js +18 -0
- package/src/_esm/utils/waitForResult.js.map +1 -0
- package/src/_esm/utils/withDedupe.js +40 -0
- package/src/_esm/utils/withDedupe.js.map +1 -0
- package/src/_esm/version.js +1 -1
- package/src/_esm/version.js.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
- package/src/_types/core/Solana/isSVMAddress.d.ts +2 -0
- package/src/_types/core/Solana/isSVMAddress.d.ts.map +1 -0
- package/src/_types/core/UTXO/UTXO.d.ts +3 -0
- package/src/_types/core/UTXO/UTXO.d.ts.map +1 -0
- package/src/_types/core/UTXO/UTXOStepExecutor.d.ts +13 -0
- package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -0
- package/src/_types/core/UTXO/blockchairApi.d.ts +37 -0
- package/src/_types/core/UTXO/blockchairApi.d.ts.map +1 -0
- package/src/_types/core/UTXO/blockchairApiTypes.d.ts +229 -0
- package/src/_types/core/UTXO/blockchairApiTypes.d.ts.map +1 -0
- package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts +10 -0
- package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts.map +1 -0
- package/src/_types/core/UTXO/getUTXOBalance.d.ts +3 -0
- package/src/_types/core/UTXO/getUTXOBalance.d.ts.map +1 -0
- package/src/_types/core/UTXO/getUTXOPublicClient.d.ts +10 -0
- package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -0
- package/src/_types/core/UTXO/isUTXOAddress.d.ts +21 -0
- package/src/_types/core/UTXO/isUTXOAddress.d.ts.map +1 -0
- package/src/_types/core/UTXO/parseUTXOErrors.d.ts +4 -0
- package/src/_types/core/UTXO/parseUTXOErrors.d.ts.map +1 -0
- package/src/_types/core/UTXO/requestClient.d.ts +22 -0
- package/src/_types/core/UTXO/requestClient.d.ts.map +1 -0
- package/src/_types/core/UTXO/types.d.ts +10 -0
- package/src/_types/core/UTXO/types.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts +9 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts +5 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts +12 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts +11 -0
- package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts +4 -0
- package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/clients/types.d.ts +44 -0
- package/src/_types/core/UTXO/utxo-stack/clients/types.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/decorators/UTXOAPIActions.d.ts +7 -0
- package/src/_types/core/UTXO/utxo-stack/decorators/UTXOAPIActions.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/decorators/UTXOActions.d.ts +11 -0
- package/src/_types/core/UTXO/utxo-stack/decorators/UTXOActions.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/ankr.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/ankr.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockchair.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockchair.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockcypher.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/blockcypher.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.d.ts +25 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/mempool.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/mempool.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts +45 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/utxo.d.ts +7 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/utxo.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/types/transaction.d.ts +42 -0
- package/src/_types/core/UTXO/utxo-stack/types/transaction.d.ts.map +1 -0
- package/src/_types/core/utils.d.ts +0 -1
- package/src/_types/core/utils.d.ts.map +1 -1
- package/src/_types/core/waitForReceivingTransaction.d.ts +1 -1
- package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -1
- package/src/_types/createConfig.d.ts.map +1 -1
- package/src/_types/index.d.ts +7 -3
- package/src/_types/index.d.ts.map +1 -1
- package/src/_types/request.d.ts.map +1 -1
- package/src/_types/services/api.d.ts.map +1 -1
- package/src/_types/services/balance.d.ts +3 -3
- package/src/_types/services/balance.d.ts.map +1 -1
- package/src/_types/utils/index.d.ts +1 -1
- package/src/_types/utils/index.d.ts.map +1 -1
- package/src/_types/utils/isZeroAddress.d.ts +3 -0
- package/src/_types/utils/isZeroAddress.d.ts.map +1 -0
- package/src/_types/utils/sleep.d.ts +2 -0
- package/src/_types/utils/sleep.d.ts.map +1 -0
- package/src/_types/utils/waitForResult.d.ts +8 -0
- package/src/_types/utils/waitForResult.d.ts.map +1 -0
- package/src/_types/utils/withDedupe.d.ts +20 -0
- package/src/_types/utils/withDedupe.d.ts.map +1 -0
- package/src/_types/version.d.ts +1 -1
- package/src/_types/version.d.ts.map +1 -1
- package/src/core/EVM/EVMStepExecutor.ts +2 -4
- package/src/core/EVM/getAllowance.ts +1 -1
- package/src/core/EVM/getEVMBalance.ts +1 -1
- package/src/core/EVM/setAllowance.ts +1 -1
- package/src/core/Solana/Solana.ts +2 -2
- package/src/core/Solana/SolanaStepExecutor.ts +14 -17
- package/src/core/Solana/getSNSAddress.ts +2 -2
- package/src/core/Solana/{isAddress.ts → isSVMAddress.ts} +1 -1
- package/src/core/UTXO/UTXO.ts +43 -0
- package/src/core/UTXO/UTXOStepExecutor.ts +351 -0
- package/src/core/UTXO/blockchairApi.ts +273 -0
- package/src/core/UTXO/blockchairApiTypes.ts +253 -0
- package/src/core/UTXO/getUTXOAPIPublicClient.ts +71 -0
- package/src/core/UTXO/getUTXOBalance.ts +31 -0
- package/src/core/UTXO/getUTXOPublicClient.ts +60 -0
- package/src/core/UTXO/isUTXOAddress.ts +166 -0
- package/src/core/UTXO/parseUTXOErrors.ts +36 -0
- package/src/core/UTXO/requestClient.ts +84 -0
- package/src/core/UTXO/types.ts +15 -0
- package/src/core/UTXO/utxo-stack/actions/getBalance.ts +26 -0
- package/src/core/UTXO/utxo-stack/actions/getBlockCount.ts +20 -0
- package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +30 -0
- package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +29 -0
- package/src/core/UTXO/utxo-stack/actions/signPsbt.ts +23 -0
- package/src/core/UTXO/utxo-stack/clients/types.ts +48 -0
- package/src/core/UTXO/utxo-stack/decorators/UTXOAPIActions.ts +21 -0
- package/src/core/UTXO/utxo-stack/decorators/UTXOActions.ts +37 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/ankr.ts +30 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/blockchair.ts +27 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/blockcypher.ts +32 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.ts +122 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/getRpcProviderMethods.ts +22 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/mempool.ts +34 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +55 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/utxo.ts +84 -0
- package/src/core/UTXO/utxo-stack/types/transaction.ts +43 -0
- package/src/core/checkBalance.ts +2 -2
- package/src/core/utils.ts +0 -6
- package/src/core/waitForReceivingTransaction.ts +5 -4
- package/src/createConfig.ts +3 -1
- package/src/index.ts +7 -3
- package/src/request.ts +3 -3
- package/src/services/api.ts +26 -16
- package/src/services/balance.ts +11 -6
- package/src/utils/index.ts +1 -1
- package/src/utils/isZeroAddress.ts +20 -0
- package/src/utils/sleep.ts +5 -0
- package/src/utils/waitForResult.ts +21 -0
- package/src/utils/withDedupe.ts +46 -0
- package/src/version.ts +1 -1
- package/src/_cjs/core/Solana/isAddress.js.map +0 -1
- package/src/_cjs/utils/utils.js.map +0 -1
- package/src/_esm/core/Solana/isAddress.js.map +0 -1
- package/src/_esm/utils/utils.js +0 -38
- package/src/_esm/utils/utils.js.map +0 -1
- package/src/_types/core/Solana/isAddress.d.ts +0 -2
- package/src/_types/core/Solana/isAddress.d.ts.map +0 -1
- package/src/_types/utils/utils.d.ts +0 -11
- package/src/_types/utils/utils.d.ts.map +0 -1
- package/src/utils/utils.ts +0 -48
|
@@ -6,12 +6,14 @@ import {
|
|
|
6
6
|
type SignatureResult,
|
|
7
7
|
} from '@solana/web3.js'
|
|
8
8
|
import bs58 from 'bs58'
|
|
9
|
+
import { withTimeout } from 'viem'
|
|
9
10
|
import { config } from '../../config.js'
|
|
10
11
|
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
11
12
|
import { TransactionError } from '../../errors/errors.js'
|
|
12
13
|
import { getStepTransaction } from '../../services/api.js'
|
|
13
14
|
import { base64ToUint8Array } from '../../utils/base64ToUint8Array.js'
|
|
14
15
|
import { getTransactionFailedMessage } from '../../utils/index.js'
|
|
16
|
+
import { sleep } from '../../utils/sleep.js'
|
|
15
17
|
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
16
18
|
import { checkBalance } from '../checkBalance.js'
|
|
17
19
|
import { getSubstatusMessage } from '../processMessages.js'
|
|
@@ -21,7 +23,6 @@ import type {
|
|
|
21
23
|
StepExecutorOptions,
|
|
22
24
|
TransactionParameters,
|
|
23
25
|
} from '../types.js'
|
|
24
|
-
import { sleep } from '../utils.js'
|
|
25
26
|
import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
|
|
26
27
|
import { getSolanaConnection } from './connection.js'
|
|
27
28
|
import { parseSolanaErrors } from './parseSolanaErrors.js'
|
|
@@ -144,23 +145,19 @@ export class SolanaStepExecutor extends BaseStepExecutor {
|
|
|
144
145
|
|
|
145
146
|
this.checkWalletAdapter(step)
|
|
146
147
|
|
|
147
|
-
const signedTxPromise =
|
|
148
|
-
this.walletAdapter.signTransaction(versionedTransaction)
|
|
149
|
-
|
|
150
148
|
// We give users 2 minutes to sign the transaction or it should be considered expired
|
|
151
|
-
const signedTx = await
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
149
|
+
const signedTx = await withTimeout<VersionedTransaction>(
|
|
150
|
+
() => this.walletAdapter.signTransaction(versionedTransaction),
|
|
151
|
+
{
|
|
152
|
+
// https://solana.com/docs/advanced/confirmation#transaction-expiration
|
|
153
|
+
// Use 2 minutes to account for fluctuations
|
|
154
|
+
timeout: 120_000,
|
|
155
|
+
errorInstance: new TransactionError(
|
|
156
|
+
LiFiErrorCode.TransactionExpired,
|
|
157
|
+
'Transaction has expired: blockhash is no longer recent enough.'
|
|
158
|
+
),
|
|
159
|
+
}
|
|
160
|
+
)
|
|
164
161
|
|
|
165
162
|
process = this.statusManager.updateProcess(
|
|
166
163
|
step,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isSVMAddress } from './isSVMAddress.js'
|
|
2
2
|
|
|
3
3
|
interface SNSResult {
|
|
4
4
|
s: 'ok' | 'error'
|
|
@@ -21,7 +21,7 @@ export const getSNSAddress = async (name: string) => {
|
|
|
21
21
|
|
|
22
22
|
const data: SNSResult = await response.json()
|
|
23
23
|
|
|
24
|
-
if (!
|
|
24
|
+
if (!isSVMAddress(data.result)) {
|
|
25
25
|
return
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/types'
|
|
2
|
+
import type { StepExecutorOptions } from '../types.js'
|
|
3
|
+
import { UTXOStepExecutor } from './UTXOStepExecutor.js'
|
|
4
|
+
import { getUTXOBalance } from './getUTXOBalance.js'
|
|
5
|
+
import { isUTXOAddress } from './isUTXOAddress.js'
|
|
6
|
+
import type { UTXOProvider, UTXOProviderOptions } from './types.js'
|
|
7
|
+
|
|
8
|
+
export function UTXO(options?: UTXOProviderOptions): UTXOProvider {
|
|
9
|
+
const _options: UTXOProviderOptions = options ?? {}
|
|
10
|
+
return {
|
|
11
|
+
get type() {
|
|
12
|
+
return ChainType.UTXO
|
|
13
|
+
},
|
|
14
|
+
isAddress: isUTXOAddress,
|
|
15
|
+
async resolveAddress(name) {
|
|
16
|
+
// Not supported on UTXO yet
|
|
17
|
+
return name
|
|
18
|
+
},
|
|
19
|
+
getBalance: getUTXOBalance,
|
|
20
|
+
async getStepExecutor(
|
|
21
|
+
options: StepExecutorOptions
|
|
22
|
+
): Promise<UTXOStepExecutor> {
|
|
23
|
+
if (!_options.getWalletClient) {
|
|
24
|
+
throw new Error(`Client is not provided.`)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const walletClient = await _options.getWalletClient()
|
|
28
|
+
|
|
29
|
+
const executor = new UTXOStepExecutor({
|
|
30
|
+
client: walletClient,
|
|
31
|
+
routeId: options.routeId,
|
|
32
|
+
executionOptions: {
|
|
33
|
+
...options.executionOptions,
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
return executor
|
|
38
|
+
},
|
|
39
|
+
setOptions(options: UTXOProviderOptions) {
|
|
40
|
+
Object.assign(_options, options)
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChainId,
|
|
3
|
+
type ExtendedTransactionInfo,
|
|
4
|
+
type FullStatusData,
|
|
5
|
+
} from '@lifi/types'
|
|
6
|
+
import { address, networks, Psbt } from 'bitcoinjs-lib'
|
|
7
|
+
import { withRetry, withTimeout, type Client } from 'viem'
|
|
8
|
+
import { config } from '../../config.js'
|
|
9
|
+
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
10
|
+
import { TransactionError } from '../../errors/errors.js'
|
|
11
|
+
import { getStepTransaction } from '../../services/api.js'
|
|
12
|
+
import {
|
|
13
|
+
getTransactionFailedMessage,
|
|
14
|
+
waitForResult,
|
|
15
|
+
} from '../../utils/index.js'
|
|
16
|
+
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
17
|
+
import { checkBalance } from '../checkBalance.js'
|
|
18
|
+
import { getSubstatusMessage } from '../processMessages.js'
|
|
19
|
+
import { stepComparison } from '../stepComparison.js'
|
|
20
|
+
import type {
|
|
21
|
+
LiFiStepExtended,
|
|
22
|
+
StepExecutorOptions,
|
|
23
|
+
TransactionParameters,
|
|
24
|
+
} from '../types.js'
|
|
25
|
+
import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
|
|
26
|
+
import { getUTXOPublicClient } from './getUTXOPublicClient.js'
|
|
27
|
+
import { parseUTXOErrors } from './parseUTXOErrors.js'
|
|
28
|
+
import { signPsbt } from './utxo-stack/actions/signPsbt.js'
|
|
29
|
+
|
|
30
|
+
export interface UTXOStepExecutorOptions extends StepExecutorOptions {
|
|
31
|
+
client: Client
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export class UTXOStepExecutor extends BaseStepExecutor {
|
|
35
|
+
private client: Client
|
|
36
|
+
|
|
37
|
+
constructor(options: UTXOStepExecutorOptions) {
|
|
38
|
+
super(options)
|
|
39
|
+
this.client = options.client
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
checkClient = (step: LiFiStepExtended) => {
|
|
43
|
+
// TODO: check chain and possibly implement chain switch?
|
|
44
|
+
// Prevent execution of the quote by wallet different from the one which requested the quote
|
|
45
|
+
if (this.client.account?.address !== step.action.fromAddress) {
|
|
46
|
+
throw new TransactionError(
|
|
47
|
+
LiFiErrorCode.WalletChangedDuringExecution,
|
|
48
|
+
'The wallet address that requested the quote does not match the wallet address attempting to sign the transaction.'
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
executeStep = async (step: LiFiStepExtended): Promise<LiFiStepExtended> => {
|
|
54
|
+
step.execution = this.statusManager.initExecutionObject(step)
|
|
55
|
+
|
|
56
|
+
const fromChain = await config.getChainById(step.action.fromChainId)
|
|
57
|
+
const toChain = await config.getChainById(step.action.toChainId)
|
|
58
|
+
|
|
59
|
+
const isBridgeExecution = fromChain.id !== toChain.id
|
|
60
|
+
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
61
|
+
|
|
62
|
+
// STEP 2: Get transaction
|
|
63
|
+
let process = this.statusManager.findOrCreateProcess(
|
|
64
|
+
step,
|
|
65
|
+
currentProcessType
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
const publicClient = await getUTXOPublicClient(ChainId.BTC)
|
|
69
|
+
|
|
70
|
+
if (process.status !== 'DONE') {
|
|
71
|
+
try {
|
|
72
|
+
let txHash: string
|
|
73
|
+
if (process.txHash) {
|
|
74
|
+
// Make sure that the chain is still correct
|
|
75
|
+
this.checkClient(step)
|
|
76
|
+
|
|
77
|
+
// Wait for exiting transaction
|
|
78
|
+
txHash = process.txHash
|
|
79
|
+
} else {
|
|
80
|
+
process = this.statusManager.updateProcess(
|
|
81
|
+
step,
|
|
82
|
+
process.type,
|
|
83
|
+
'STARTED'
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
// Check balance
|
|
87
|
+
await checkBalance(this.client.account!.address, step)
|
|
88
|
+
|
|
89
|
+
// Create new transaction
|
|
90
|
+
if (!step.transactionRequest) {
|
|
91
|
+
const { execution, ...stepBase } = step
|
|
92
|
+
const updatedStep = await getStepTransaction(stepBase)
|
|
93
|
+
const comparedStep = await stepComparison(
|
|
94
|
+
this.statusManager,
|
|
95
|
+
step,
|
|
96
|
+
updatedStep,
|
|
97
|
+
this.allowUserInteraction,
|
|
98
|
+
this.executionOptions
|
|
99
|
+
)
|
|
100
|
+
step = {
|
|
101
|
+
...comparedStep,
|
|
102
|
+
execution: step.execution,
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (!step.transactionRequest?.data) {
|
|
107
|
+
throw new TransactionError(
|
|
108
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
109
|
+
'Unable to prepare transaction.'
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
process = this.statusManager.updateProcess(
|
|
114
|
+
step,
|
|
115
|
+
process.type,
|
|
116
|
+
'ACTION_REQUIRED'
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
if (!this.allowUserInteraction) {
|
|
120
|
+
return step
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
let transactionRequest: TransactionParameters = {
|
|
124
|
+
data: step.transactionRequest.data,
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (this.executionOptions?.updateTransactionRequestHook) {
|
|
128
|
+
const customizedTransactionRequest: TransactionParameters =
|
|
129
|
+
await this.executionOptions.updateTransactionRequestHook({
|
|
130
|
+
requestType: 'transaction',
|
|
131
|
+
...transactionRequest,
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
transactionRequest = {
|
|
135
|
+
...transactionRequest,
|
|
136
|
+
...customizedTransactionRequest,
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (!transactionRequest.data) {
|
|
141
|
+
throw new TransactionError(
|
|
142
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
143
|
+
'Unable to prepare transaction.'
|
|
144
|
+
)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
this.checkClient(step)
|
|
148
|
+
|
|
149
|
+
// const toolbox = getToolboxByChain('BTC')({})
|
|
150
|
+
|
|
151
|
+
// const apiClient = blockchairApi({ chain: Chain.Bitcoin })
|
|
152
|
+
// const txFeeRate = await apiClient.getSuggestedTxFee()
|
|
153
|
+
|
|
154
|
+
// const tx = await toolbox.buildTx({
|
|
155
|
+
// assetValue: {
|
|
156
|
+
// bigIntValue: step.transactionRequest.value,
|
|
157
|
+
// },
|
|
158
|
+
// recipient: step.transactionRequest.to,
|
|
159
|
+
// memo: step.transactionRequest.data,
|
|
160
|
+
// sender: this.client.account?.address,
|
|
161
|
+
// chain: 'BTC',
|
|
162
|
+
// apiClient: blockchairApi({ chain: Chain.Bitcoin }),
|
|
163
|
+
// feeRate: txFeeRate,
|
|
164
|
+
// })
|
|
165
|
+
|
|
166
|
+
let psbtHex = transactionRequest.data // tx.psbt.toHex()
|
|
167
|
+
|
|
168
|
+
const psbt = Psbt.fromHex(psbtHex, { network: networks.bitcoin })
|
|
169
|
+
|
|
170
|
+
const inputsToSign = Array.from(
|
|
171
|
+
psbt.data.inputs
|
|
172
|
+
.reduce((map, input, index) => {
|
|
173
|
+
const accountAddress = input.witnessUtxo
|
|
174
|
+
? address.fromOutputScript(
|
|
175
|
+
input.witnessUtxo.script,
|
|
176
|
+
networks.bitcoin
|
|
177
|
+
)
|
|
178
|
+
: (this.client.account?.address as string)
|
|
179
|
+
if (map.has(accountAddress)) {
|
|
180
|
+
map.get(accountAddress).signingIndexes.push(index)
|
|
181
|
+
} else {
|
|
182
|
+
map.set(accountAddress, {
|
|
183
|
+
address: accountAddress,
|
|
184
|
+
sigHash: 1, // Default to Transaction.SIGHASH_ALL - 1
|
|
185
|
+
signingIndexes: [index],
|
|
186
|
+
})
|
|
187
|
+
}
|
|
188
|
+
return map
|
|
189
|
+
}, new Map())
|
|
190
|
+
.values()
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
// Modify the input sequence number to enable RBF
|
|
194
|
+
psbt.txInputs.forEach((_, index) => {
|
|
195
|
+
// Set sequence number to less than 0xfffffffe, e.g., 0xfffffffd
|
|
196
|
+
psbt.setInputSequence(index, 0xfffffffd)
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
psbtHex = psbt.toHex()
|
|
200
|
+
|
|
201
|
+
// We give users 10 minutes to sign the transaction or it should be considered expired
|
|
202
|
+
const signedPsbtHex = await withTimeout(
|
|
203
|
+
() =>
|
|
204
|
+
signPsbt(this.client, {
|
|
205
|
+
psbt: psbtHex,
|
|
206
|
+
inputsToSign: inputsToSign,
|
|
207
|
+
finalize: false,
|
|
208
|
+
}),
|
|
209
|
+
{
|
|
210
|
+
timeout: 600_000,
|
|
211
|
+
errorInstance: new TransactionError(
|
|
212
|
+
LiFiErrorCode.TransactionExpired,
|
|
213
|
+
'Transaction has expired.'
|
|
214
|
+
),
|
|
215
|
+
}
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
const signedPsbt = Psbt.fromHex(signedPsbtHex).finalizeAllInputs()
|
|
219
|
+
|
|
220
|
+
const transactionHex = signedPsbt.extractTransaction().toHex()
|
|
221
|
+
|
|
222
|
+
txHash = await publicClient.sendUTXOTransaction({
|
|
223
|
+
hex: transactionHex,
|
|
224
|
+
})
|
|
225
|
+
|
|
226
|
+
process = this.statusManager.updateProcess(
|
|
227
|
+
step,
|
|
228
|
+
process.type,
|
|
229
|
+
'PENDING',
|
|
230
|
+
{
|
|
231
|
+
txHash: txHash,
|
|
232
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// TODO: improve logic to detect RBF transactions
|
|
238
|
+
await waitForResult(
|
|
239
|
+
() =>
|
|
240
|
+
withRetry(
|
|
241
|
+
async () => {
|
|
242
|
+
const tx = await publicClient.getUTXOTransaction({
|
|
243
|
+
txId: txHash,
|
|
244
|
+
})
|
|
245
|
+
// If there are no confirmations, it means the transaction is still in the mempool
|
|
246
|
+
if (!tx.confirmations) {
|
|
247
|
+
return
|
|
248
|
+
}
|
|
249
|
+
return tx
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
retryCount: 10,
|
|
253
|
+
delay: 1000,
|
|
254
|
+
}
|
|
255
|
+
),
|
|
256
|
+
10_000
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
if (isBridgeExecution) {
|
|
260
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE')
|
|
261
|
+
}
|
|
262
|
+
} catch (e: any) {
|
|
263
|
+
const error = await parseUTXOErrors(e, step, process)
|
|
264
|
+
process = this.statusManager.updateProcess(
|
|
265
|
+
step,
|
|
266
|
+
process.type,
|
|
267
|
+
'FAILED',
|
|
268
|
+
{
|
|
269
|
+
error: {
|
|
270
|
+
message: error.cause.message,
|
|
271
|
+
code: error.code,
|
|
272
|
+
},
|
|
273
|
+
}
|
|
274
|
+
)
|
|
275
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
276
|
+
throw error
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// STEP 5: Wait for the receiving chain
|
|
281
|
+
const processTxHash = process.txHash
|
|
282
|
+
if (isBridgeExecution) {
|
|
283
|
+
process = this.statusManager.findOrCreateProcess(
|
|
284
|
+
step,
|
|
285
|
+
'RECEIVING_CHAIN',
|
|
286
|
+
'PENDING'
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
let statusResponse: FullStatusData
|
|
290
|
+
try {
|
|
291
|
+
if (!processTxHash) {
|
|
292
|
+
throw new Error('Transaction hash is undefined.')
|
|
293
|
+
}
|
|
294
|
+
statusResponse = (await waitForReceivingTransaction(
|
|
295
|
+
processTxHash,
|
|
296
|
+
this.statusManager,
|
|
297
|
+
process.type,
|
|
298
|
+
step,
|
|
299
|
+
10_000
|
|
300
|
+
)) as FullStatusData
|
|
301
|
+
|
|
302
|
+
const statusReceiving =
|
|
303
|
+
statusResponse.receiving as ExtendedTransactionInfo
|
|
304
|
+
|
|
305
|
+
process = this.statusManager.updateProcess(step, process.type, 'DONE', {
|
|
306
|
+
substatus: statusResponse.substatus,
|
|
307
|
+
substatusMessage:
|
|
308
|
+
statusResponse.substatusMessage ||
|
|
309
|
+
getSubstatusMessage(statusResponse.status, statusResponse.substatus),
|
|
310
|
+
txHash: statusReceiving?.txHash,
|
|
311
|
+
txLink: `${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
|
|
312
|
+
})
|
|
313
|
+
|
|
314
|
+
this.statusManager.updateExecution(step, 'DONE', {
|
|
315
|
+
fromAmount: statusResponse.sending.amount,
|
|
316
|
+
toAmount: statusReceiving?.amount,
|
|
317
|
+
toToken: statusReceiving?.token,
|
|
318
|
+
gasCosts: [
|
|
319
|
+
{
|
|
320
|
+
amount: statusResponse.sending.gasAmount,
|
|
321
|
+
amountUSD: statusResponse.sending.gasAmountUSD,
|
|
322
|
+
token: statusResponse.sending.gasToken,
|
|
323
|
+
estimate: statusResponse.sending.gasUsed,
|
|
324
|
+
limit: statusResponse.sending.gasUsed,
|
|
325
|
+
price: statusResponse.sending.gasPrice,
|
|
326
|
+
type: 'SEND',
|
|
327
|
+
},
|
|
328
|
+
],
|
|
329
|
+
})
|
|
330
|
+
} catch (e: unknown) {
|
|
331
|
+
const htmlMessage = await getTransactionFailedMessage(
|
|
332
|
+
step,
|
|
333
|
+
process.txLink
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
process = this.statusManager.updateProcess(step, process.type, 'FAILED', {
|
|
337
|
+
error: {
|
|
338
|
+
code: LiFiErrorCode.TransactionFailed,
|
|
339
|
+
message: 'Failed while waiting for receiving chain.',
|
|
340
|
+
htmlMessage,
|
|
341
|
+
},
|
|
342
|
+
})
|
|
343
|
+
this.statusManager.updateExecution(step, 'FAILED')
|
|
344
|
+
console.warn(e)
|
|
345
|
+
throw e
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// DONE
|
|
349
|
+
return step
|
|
350
|
+
}
|
|
351
|
+
}
|