@lifi/sdk 3.3.0-alpha.3 → 3.3.0-beta.1
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/README.md +2 -2
- package/package.json +5 -8
- package/src/_cjs/config.js +4 -1
- package/src/_cjs/config.js.map +1 -1
- package/src/_cjs/core/EVM/EVM.js +1 -1
- package/src/_cjs/core/EVM/EVMStepExecutor.js +19 -7
- package/src/_cjs/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_cjs/core/EVM/checkAllowance.js +5 -1
- package/src/_cjs/core/EVM/checkAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/getAllowance.js +3 -3
- package/src/_cjs/core/EVM/getAllowance.js.map +1 -1
- package/src/_cjs/core/EVM/getEVMBalance.js +4 -6
- package/src/_cjs/core/EVM/getEVMBalance.js.map +1 -1
- package/src/_cjs/core/EVM/parseEVMErrors.js +3 -3
- package/src/_cjs/core/EVM/parseEVMErrors.js.map +1 -1
- package/src/_cjs/core/EVM/switchChain.js +5 -1
- package/src/_cjs/core/EVM/switchChain.js.map +1 -1
- package/src/_cjs/core/EVM/utils.js +4 -1
- package/src/_cjs/core/EVM/utils.js.map +1 -1
- package/src/_cjs/core/EVM/waitForTransactionReceipt.js +5 -4
- package/src/_cjs/core/EVM/waitForTransactionReceipt.js.map +1 -1
- package/src/_cjs/core/Solana/Solana.js +1 -1
- package/src/_cjs/core/Solana/SolanaStepExecutor.js +14 -6
- package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_cjs/core/Solana/connection.js +1 -3
- package/src/_cjs/core/Solana/connection.js.map +1 -1
- package/src/_cjs/core/Solana/getSolanaBalance.js +3 -3
- package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -1
- package/src/_cjs/core/Solana/isSVMAddress.js +1 -1
- package/src/_cjs/core/Solana/isSVMAddress.js.map +1 -1
- package/src/_cjs/core/Solana/parseSolanaErrors.js +1 -1
- package/src/_cjs/core/Solana/parseSolanaErrors.js.map +1 -1
- package/src/_cjs/core/StatusManager.js +4 -3
- package/src/_cjs/core/StatusManager.js.map +1 -1
- package/src/_cjs/core/UTXO/UTXO.js +1 -1
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js +43 -21
- package/src/_cjs/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_cjs/core/UTXO/getUTXOBalance.js +3 -3
- package/src/_cjs/core/UTXO/getUTXOBalance.js.map +1 -1
- package/src/_cjs/core/UTXO/getUTXOPublicClient.js +1 -0
- package/src/_cjs/core/UTXO/getUTXOPublicClient.js.map +1 -1
- package/src/_cjs/core/UTXO/isUTXOAddress.js +7 -7
- package/src/_cjs/core/UTXO/isUTXOAddress.js.map +1 -1
- package/src/_cjs/core/UTXO/parseUTXOErrors.js +5 -1
- package/src/_cjs/core/UTXO/parseUTXOErrors.js.map +1 -1
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js +31 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js +27 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -9
- package/src/_cjs/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
- package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js +185 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js +45 -0
- package/src/_cjs/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -1
- package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js +3 -0
- package/src/_cjs/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js +51 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js +50 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js +48 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js +30 -0
- package/src/_cjs/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
- package/src/_cjs/core/checkBalance.js +2 -7
- package/src/_cjs/core/checkBalance.js.map +1 -1
- package/src/_cjs/core/execution.js.map +1 -1
- package/src/_cjs/core/stepComparison.js +1 -1
- package/src/_cjs/core/waitForReceivingTransaction.js +36 -41
- package/src/_cjs/core/waitForReceivingTransaction.js.map +1 -1
- package/src/_cjs/createConfig.js.map +1 -1
- package/src/_cjs/errors/baseError.js +1 -1
- package/src/_cjs/errors/baseError.js.map +1 -1
- package/src/_cjs/errors/constants.js +1 -0
- package/src/_cjs/errors/constants.js.map +1 -1
- package/src/_cjs/errors/errors.js +1 -1
- package/src/_cjs/errors/errors.js.map +1 -1
- package/src/_cjs/errors/httpError.js +1 -1
- package/src/_cjs/errors/httpError.js.map +1 -1
- package/src/_cjs/helpers.js +3 -3
- package/src/_cjs/helpers.js.map +1 -1
- package/src/_cjs/index.js +67 -11
- package/src/_cjs/index.js.map +1 -1
- package/src/_cjs/request.js +1 -1
- package/src/_cjs/request.js.map +1 -1
- package/src/_cjs/services/api.js +30 -18
- package/src/_cjs/services/api.js.map +1 -1
- package/src/_cjs/services/balance.js +11 -4
- package/src/_cjs/services/balance.js.map +1 -1
- package/src/_cjs/utils/getTransactionMessage.js +3 -4
- package/src/_cjs/utils/getTransactionMessage.js.map +1 -1
- package/src/_cjs/utils/withDedupe.js.map +1 -1
- package/src/_cjs/version.js +1 -1
- package/src/_cjs/version.js.map +1 -1
- package/src/_esm/config.js +4 -1
- package/src/_esm/config.js.map +1 -1
- package/src/_esm/core/EVM/EVM.js +1 -1
- package/src/_esm/core/EVM/EVMStepExecutor.js +18 -6
- package/src/_esm/core/EVM/EVMStepExecutor.js.map +1 -1
- package/src/_esm/core/EVM/checkAllowance.js +5 -1
- package/src/_esm/core/EVM/checkAllowance.js.map +1 -1
- package/src/_esm/core/EVM/getAllowance.js +3 -3
- package/src/_esm/core/EVM/getAllowance.js.map +1 -1
- package/src/_esm/core/EVM/getEVMBalance.js +4 -6
- package/src/_esm/core/EVM/getEVMBalance.js.map +1 -1
- package/src/_esm/core/EVM/parseEVMErrors.js +2 -3
- package/src/_esm/core/EVM/parseEVMErrors.js.map +1 -1
- package/src/_esm/core/EVM/publicClient.js +1 -1
- package/src/_esm/core/EVM/publicClient.js.map +1 -1
- package/src/_esm/core/EVM/switchChain.js +5 -1
- package/src/_esm/core/EVM/switchChain.js.map +1 -1
- package/src/_esm/core/EVM/types.js +0 -1
- package/src/_esm/core/EVM/types.js.map +1 -1
- package/src/_esm/core/EVM/utils.js +4 -2
- package/src/_esm/core/EVM/utils.js.map +1 -1
- package/src/_esm/core/EVM/waitForTransactionReceipt.js +3 -2
- package/src/_esm/core/EVM/waitForTransactionReceipt.js.map +1 -1
- package/src/_esm/core/Solana/Solana.js +1 -1
- package/src/_esm/core/Solana/SolanaStepExecutor.js +13 -6
- package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
- package/src/_esm/core/Solana/connection.js +1 -3
- package/src/_esm/core/Solana/connection.js.map +1 -1
- package/src/_esm/core/Solana/getSolanaBalance.js +3 -3
- package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -1
- package/src/_esm/core/Solana/isSVMAddress.js +1 -1
- package/src/_esm/core/Solana/isSVMAddress.js.map +1 -1
- package/src/_esm/core/Solana/parseSolanaErrors.js +1 -1
- package/src/_esm/core/Solana/parseSolanaErrors.js.map +1 -1
- package/src/_esm/core/Solana/types.js +0 -1
- package/src/_esm/core/Solana/types.js.map +1 -1
- package/src/_esm/core/StatusManager.js +13 -6
- package/src/_esm/core/StatusManager.js.map +1 -1
- package/src/_esm/core/UTXO/UTXO.js +1 -1
- package/src/_esm/core/UTXO/UTXOStepExecutor.js +44 -38
- package/src/_esm/core/UTXO/UTXOStepExecutor.js.map +1 -1
- package/src/_esm/core/UTXO/getUTXOAPIPublicClient.js.map +1 -1
- package/src/_esm/core/UTXO/getUTXOBalance.js +3 -3
- package/src/_esm/core/UTXO/getUTXOBalance.js.map +1 -1
- package/src/_esm/core/UTXO/getUTXOPublicClient.js +2 -1
- package/src/_esm/core/UTXO/getUTXOPublicClient.js.map +1 -1
- package/src/_esm/core/UTXO/isUTXOAddress.js +7 -7
- package/src/_esm/core/UTXO/isUTXOAddress.js.map +1 -1
- package/src/_esm/core/UTXO/parseUTXOErrors.js +6 -1
- package/src/_esm/core/UTXO/parseUTXOErrors.js.map +1 -1
- package/src/_esm/core/UTXO/types.js +0 -1
- package/src/_esm/core/UTXO/types.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js +0 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/getBalance.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js +28 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlock.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js +0 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockCount.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js +24 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getBlockStats.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js +18 -10
- package/src/_esm/core/UTXO/utxo-stack/actions/getUTXOTransaction.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js +0 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/sendUTXOTransaction.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js +0 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/signPsbt.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js +230 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/waitForTransaction.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js +58 -0
- package/src/_esm/core/UTXO/utxo-stack/actions/watchBlockNumber.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOAPIActions.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/decorators/UTXOActions.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js +1 -1
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js +1 -1
- package/src/_esm/core/UTXO/utxo-stack/transports/utxo/utxo.js.map +1 -1
- package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js +2 -0
- package/src/_esm/core/UTXO/utxo-stack/types/blockStats.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js +55 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/cancelTransaction.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js +53 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/modifyFee.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/observe.js +51 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/observe.js.map +1 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/poll.js +30 -0
- package/src/_esm/core/UTXO/utxo-stack/utils/poll.js.map +1 -0
- package/src/_esm/core/checkBalance.js +2 -7
- package/src/_esm/core/checkBalance.js.map +1 -1
- package/src/_esm/core/execution.js.map +1 -1
- package/src/_esm/core/processMessages.js +0 -1
- package/src/_esm/core/processMessages.js.map +1 -1
- package/src/_esm/core/rpc.js +0 -1
- package/src/_esm/core/rpc.js.map +1 -1
- package/src/_esm/core/stepComparison.js +1 -1
- package/src/_esm/core/utils.js +0 -1
- package/src/_esm/core/utils.js.map +1 -1
- package/src/_esm/core/waitForReceivingTransaction.js +36 -41
- package/src/_esm/core/waitForReceivingTransaction.js.map +1 -1
- package/src/_esm/createConfig.js +0 -1
- package/src/_esm/createConfig.js.map +1 -1
- package/src/_esm/errors/SDKError.js +0 -1
- package/src/_esm/errors/SDKError.js.map +1 -1
- package/src/_esm/errors/baseError.js +2 -2
- package/src/_esm/errors/baseError.js.map +1 -1
- package/src/_esm/errors/constants.js +1 -0
- package/src/_esm/errors/constants.js.map +1 -1
- package/src/_esm/errors/errors.js +1 -1
- package/src/_esm/errors/errors.js.map +1 -1
- package/src/_esm/errors/httpError.js +2 -2
- package/src/_esm/errors/httpError.js.map +1 -1
- package/src/_esm/helpers.js +4 -6
- package/src/_esm/helpers.js.map +1 -1
- package/src/_esm/index.js +13 -9
- package/src/_esm/index.js.map +1 -1
- package/src/_esm/request.js +1 -1
- package/src/_esm/request.js.map +1 -1
- package/src/_esm/services/api.js +30 -19
- package/src/_esm/services/api.js.map +1 -1
- package/src/_esm/services/balance.js +11 -4
- package/src/_esm/services/balance.js.map +1 -1
- package/src/_esm/utils/getTransactionMessage.js +3 -4
- package/src/_esm/utils/getTransactionMessage.js.map +1 -1
- package/src/_esm/utils/withDedupe.js +0 -1
- package/src/_esm/utils/withDedupe.js.map +1 -1
- package/src/_esm/version.js +1 -1
- package/src/_esm/version.js.map +1 -1
- package/src/_types/config.d.ts.map +1 -1
- package/src/_types/core/EVM/EVMStepExecutor.d.ts.map +1 -1
- package/src/_types/core/EVM/checkAllowance.d.ts.map +1 -1
- package/src/_types/core/EVM/getEVMBalance.d.ts.map +1 -1
- package/src/_types/core/EVM/parseEVMErrors.d.ts +1 -1
- package/src/_types/core/EVM/parseEVMErrors.d.ts.map +1 -1
- package/src/_types/core/EVM/types.d.ts +1 -1
- package/src/_types/core/EVM/types.d.ts.map +1 -1
- package/src/_types/core/EVM/utils.d.ts +1 -1
- package/src/_types/core/EVM/utils.d.ts.map +1 -1
- package/src/_types/core/EVM/waitForTransactionReceipt.d.ts.map +1 -1
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts +1 -1
- package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
- package/src/_types/core/Solana/connection.d.ts.map +1 -1
- package/src/_types/core/Solana/parseSolanaErrors.d.ts.map +1 -1
- package/src/_types/core/Solana/types.d.ts +1 -1
- package/src/_types/core/Solana/types.d.ts.map +1 -1
- package/src/_types/core/StatusManager.d.ts +18 -8
- package/src/_types/core/StatusManager.d.ts.map +1 -1
- package/src/_types/core/UTXO/UTXOStepExecutor.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOAPIPublicClient.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOBalance.d.ts.map +1 -1
- package/src/_types/core/UTXO/getUTXOPublicClient.d.ts.map +1 -1
- package/src/_types/core/UTXO/isUTXOAddress.d.ts.map +1 -1
- package/src/_types/core/UTXO/parseUTXOErrors.d.ts.map +1 -1
- package/src/_types/core/UTXO/types.d.ts +1 -1
- package/src/_types/core/UTXO/types.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/getBalance.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts +13 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlock.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockCount.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts +15 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getBlockStats.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts +2 -2
- package/src/_types/core/UTXO/utxo-stack/actions/getUTXOTransaction.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts +2 -2
- package/src/_types/core/UTXO/utxo-stack/actions/sendUTXOTransaction.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/signPsbt.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts +76 -0
- package/src/_types/core/UTXO/utxo-stack/actions/waitForTransaction.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts +26 -0
- package/src/_types/core/UTXO/utxo-stack/actions/watchBlockNumber.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/decorators/UTXOAPIActions.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/decorators/UTXOActions.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts +16 -0
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/types.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/transports/utxo/utxo.d.ts.map +1 -1
- package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts +35 -0
- package/src/_types/core/UTXO/utxo-stack/types/blockStats.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/utils/cancelTransaction.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts +3 -0
- package/src/_types/core/UTXO/utxo-stack/utils/modifyFee.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts +19 -0
- package/src/_types/core/UTXO/utxo-stack/utils/observe.d.ts.map +1 -0
- package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts +13 -0
- package/src/_types/core/UTXO/utxo-stack/utils/poll.d.ts.map +1 -0
- package/src/_types/core/checkBalance.d.ts.map +1 -1
- package/src/_types/core/execution.d.ts.map +1 -1
- package/src/_types/core/processMessages.d.ts +1 -1
- package/src/_types/core/processMessages.d.ts.map +1 -1
- package/src/_types/core/rpc.d.ts +1 -1
- package/src/_types/core/rpc.d.ts.map +1 -1
- package/src/_types/core/utils.d.ts +1 -1
- package/src/_types/core/utils.d.ts.map +1 -1
- package/src/_types/core/waitForReceivingTransaction.d.ts.map +1 -1
- package/src/_types/createConfig.d.ts +1 -1
- package/src/_types/createConfig.d.ts.map +1 -1
- package/src/_types/errors/SDKError.d.ts +1 -1
- package/src/_types/errors/SDKError.d.ts.map +1 -1
- package/src/_types/errors/constants.d.ts +2 -1
- package/src/_types/errors/constants.d.ts.map +1 -1
- package/src/_types/errors/errors.d.ts +1 -1
- package/src/_types/errors/errors.d.ts.map +1 -1
- package/src/_types/errors/httpError.d.ts +1 -1
- package/src/_types/errors/httpError.d.ts.map +1 -1
- package/src/_types/helpers.d.ts +1 -1
- package/src/_types/helpers.d.ts.map +1 -1
- package/src/_types/index.d.ts +15 -9
- package/src/_types/index.d.ts.map +1 -1
- package/src/_types/services/api.d.ts.map +1 -1
- package/src/_types/services/balance.d.ts.map +1 -1
- package/src/_types/types/internal.d.ts +1 -39
- package/src/_types/types/internal.d.ts.map +1 -1
- package/src/_types/utils/getTransactionMessage.d.ts.map +1 -1
- package/src/_types/utils/withDedupe.d.ts.map +1 -1
- package/src/_types/version.d.ts +1 -1
- package/src/_types/version.d.ts.map +1 -1
- package/src/config.ts +4 -1
- package/src/core/EVM/EVM.ts +1 -1
- package/src/core/EVM/EVMStepExecutor.ts +15 -13
- package/src/core/EVM/checkAllowance.ts +4 -3
- package/src/core/EVM/getAllowance.ts +3 -3
- package/src/core/EVM/getEVMBalance.ts +4 -5
- package/src/core/EVM/parseEVMErrors.ts +3 -3
- package/src/core/EVM/publicClient.ts +2 -2
- package/src/core/EVM/switchChain.ts +5 -5
- package/src/core/EVM/types.ts +2 -2
- package/src/core/EVM/utils.ts +5 -5
- package/src/core/EVM/waitForTransactionReceipt.ts +3 -2
- package/src/core/Solana/Solana.ts +1 -1
- package/src/core/Solana/SolanaStepExecutor.ts +13 -12
- package/src/core/Solana/connection.ts +1 -2
- package/src/core/Solana/getSolanaBalance.ts +3 -3
- package/src/core/Solana/isSVMAddress.ts +1 -1
- package/src/core/Solana/parseSolanaErrors.ts +1 -1
- package/src/core/Solana/types.ts +1 -1
- package/src/core/StatusManager.ts +26 -28
- package/src/core/UTXO/UTXO.ts +1 -1
- package/src/core/UTXO/UTXOStepExecutor.ts +59 -56
- package/src/core/UTXO/getUTXOAPIPublicClient.ts +3 -3
- package/src/core/UTXO/getUTXOBalance.ts +3 -4
- package/src/core/UTXO/getUTXOPublicClient.ts +4 -3
- package/src/core/UTXO/isUTXOAddress.ts +10 -11
- package/src/core/UTXO/parseUTXOErrors.ts +12 -1
- package/src/core/UTXO/types.ts +1 -1
- package/src/core/UTXO/utxo-stack/actions/getBalance.ts +1 -1
- package/src/core/UTXO/utxo-stack/actions/getBlock.ts +58 -0
- package/src/core/UTXO/utxo-stack/actions/getBlockCount.ts +1 -1
- package/src/core/UTXO/utxo-stack/actions/getBlockStats.ts +55 -0
- package/src/core/UTXO/utxo-stack/actions/getUTXOTransaction.ts +24 -11
- package/src/core/UTXO/utxo-stack/actions/sendUTXOTransaction.ts +2 -2
- package/src/core/UTXO/utxo-stack/actions/signPsbt.ts +1 -1
- package/src/core/UTXO/utxo-stack/actions/waitForTransaction.ts +387 -0
- package/src/core/UTXO/utxo-stack/actions/watchBlockNumber.ts +105 -0
- package/src/core/UTXO/utxo-stack/decorators/UTXOAPIActions.ts +1 -2
- package/src/core/UTXO/utxo-stack/decorators/UTXOActions.ts +3 -3
- package/src/core/UTXO/utxo-stack/transports/utxo/getHttpRpcClient.ts +1 -1
- package/src/core/UTXO/utxo-stack/transports/utxo/types.ts +16 -0
- package/src/core/UTXO/utxo-stack/transports/utxo/utxo.ts +3 -3
- package/src/core/UTXO/utxo-stack/types/blockStats.ts +35 -0
- package/src/core/UTXO/utxo-stack/utils/cancelTransaction.ts +75 -0
- package/src/core/UTXO/utxo-stack/utils/modifyFee.ts +78 -0
- package/src/core/UTXO/utxo-stack/utils/observe.ts +81 -0
- package/src/core/UTXO/utxo-stack/utils/poll.ts +48 -0
- package/src/core/checkBalance.ts +2 -8
- package/src/core/execution.ts +0 -1
- package/src/core/processMessages.ts +5 -5
- package/src/core/rpc.ts +1 -1
- package/src/core/stepComparison.ts +1 -1
- package/src/core/utils.ts +1 -1
- package/src/core/waitForReceivingTransaction.ts +42 -46
- package/src/createConfig.ts +1 -2
- package/src/errors/SDKError.ts +1 -1
- package/src/errors/baseError.ts +2 -2
- package/src/errors/constants.ts +1 -0
- package/src/errors/errors.ts +1 -1
- package/src/errors/httpError.ts +3 -3
- package/src/helpers.ts +4 -5
- package/src/index.ts +84 -9
- package/src/request.ts +1 -1
- package/src/services/api.ts +29 -33
- package/src/services/balance.ts +13 -4
- package/src/types/internal.ts +1 -40
- package/src/utils/getTransactionMessage.ts +3 -4
- package/src/utils/withDedupe.ts +0 -1
- package/src/version.ts +1 -1
- package/src/_cjs/core/UTXO/blockchairApi.js +0 -169
- package/src/_cjs/core/UTXO/blockchairApi.js.map +0 -1
- package/src/_cjs/core/UTXO/blockchairApiTypes.js +0 -26
- package/src/_cjs/core/UTXO/blockchairApiTypes.js.map +0 -1
- package/src/_cjs/core/UTXO/requestClient.js +0 -63
- package/src/_cjs/core/UTXO/requestClient.js.map +0 -1
- package/src/_cjs/core/index.js +0 -7
- package/src/_cjs/core/index.js.map +0 -1
- package/src/_cjs/errors/index.js +0 -11
- package/src/_cjs/errors/index.js.map +0 -1
- package/src/_cjs/types/index.js +0 -5
- package/src/_cjs/types/index.js.map +0 -1
- package/src/_cjs/utils/index.js +0 -8
- package/src/_cjs/utils/index.js.map +0 -1
- package/src/_esm/core/UTXO/blockchairApi.js +0 -167
- package/src/_esm/core/UTXO/blockchairApi.js.map +0 -1
- package/src/_esm/core/UTXO/blockchairApiTypes.js +0 -23
- package/src/_esm/core/UTXO/blockchairApiTypes.js.map +0 -1
- package/src/_esm/core/UTXO/requestClient.js +0 -59
- package/src/_esm/core/UTXO/requestClient.js.map +0 -1
- package/src/_esm/core/index.js +0 -4
- package/src/_esm/core/index.js.map +0 -1
- package/src/_esm/errors/index.js +0 -8
- package/src/_esm/errors/index.js.map +0 -1
- package/src/_esm/types/index.js +0 -2
- package/src/_esm/types/index.js.map +0 -1
- package/src/_esm/utils/index.js +0 -5
- package/src/_esm/utils/index.js.map +0 -1
- package/src/_types/core/UTXO/blockchairApi.d.ts +0 -37
- package/src/_types/core/UTXO/blockchairApi.d.ts.map +0 -1
- package/src/_types/core/UTXO/blockchairApiTypes.d.ts +0 -229
- package/src/_types/core/UTXO/blockchairApiTypes.d.ts.map +0 -1
- package/src/_types/core/UTXO/requestClient.d.ts +0 -22
- package/src/_types/core/UTXO/requestClient.d.ts.map +0 -1
- package/src/_types/core/index.d.ts +0 -4
- package/src/_types/core/index.d.ts.map +0 -1
- package/src/_types/errors/index.d.ts +0 -8
- package/src/_types/errors/index.d.ts.map +0 -1
- package/src/_types/types/index.d.ts +0 -2
- package/src/_types/types/index.d.ts.map +0 -1
- package/src/_types/utils/index.d.ts +0 -5
- package/src/_types/utils/index.d.ts.map +0 -1
- package/src/core/UTXO/blockchairApi.ts +0 -273
- package/src/core/UTXO/blockchairApiTypes.ts +0 -253
- package/src/core/UTXO/requestClient.ts +0 -84
- package/src/core/index.ts +0 -3
- package/src/errors/index.ts +0 -7
- package/src/types/index.ts +0 -1
- package/src/utils/index.ts +0 -4
|
@@ -19,11 +19,11 @@ export const getEVMBalance = async (
|
|
|
19
19
|
return []
|
|
20
20
|
}
|
|
21
21
|
const { chainId } = tokens[0]
|
|
22
|
-
|
|
22
|
+
for (const token of tokens) {
|
|
23
23
|
if (token.chainId !== chainId) {
|
|
24
|
-
console.warn(
|
|
24
|
+
console.warn('Requested tokens have to be on the same chain.')
|
|
25
25
|
}
|
|
26
|
-
}
|
|
26
|
+
}
|
|
27
27
|
|
|
28
28
|
const multicallAddress = await getMulticallAddress(chainId)
|
|
29
29
|
|
|
@@ -34,9 +34,8 @@ export const getEVMBalance = async (
|
|
|
34
34
|
walletAddress,
|
|
35
35
|
multicallAddress
|
|
36
36
|
)
|
|
37
|
-
} else {
|
|
38
|
-
return getEVMBalanceDefault(chainId, tokens, walletAddress)
|
|
39
37
|
}
|
|
38
|
+
return getEVMBalanceDefault(chainId, tokens, walletAddress)
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
const getEVMBalanceMulticall = async (
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TransactionError, UnknownError } from '../../errors/errors.js'
|
|
1
|
+
import type { LiFiStep, Process } from '@lifi/types'
|
|
3
2
|
import { SDKError } from '../../errors/SDKError.js'
|
|
3
|
+
import { BaseError } from '../../errors/baseError.js'
|
|
4
4
|
import { ErrorMessage, LiFiErrorCode } from '../../errors/constants.js'
|
|
5
|
-
import {
|
|
5
|
+
import { TransactionError, UnknownError } from '../../errors/errors.js'
|
|
6
6
|
import { fetchTxErrorDetails } from '../../helpers.js'
|
|
7
7
|
|
|
8
8
|
export const parseEVMErrors = async (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainId } from '@lifi/types'
|
|
2
2
|
import type { Client } from 'viem'
|
|
3
|
-
import { createClient, fallback,
|
|
4
|
-
import {
|
|
3
|
+
import { http, createClient, fallback, webSocket } from 'viem'
|
|
4
|
+
import { type Chain, mainnet } from 'viem/chains'
|
|
5
5
|
import { config } from '../../config.js'
|
|
6
6
|
import { getRpcUrls } from '../rpc.js'
|
|
7
7
|
|
|
@@ -39,11 +39,11 @@ export const switchChain = async (
|
|
|
39
39
|
step.execution = statusManager.initExecutionObject(step)
|
|
40
40
|
statusManager.updateExecution(step, 'ACTION_REQUIRED')
|
|
41
41
|
|
|
42
|
-
let switchProcess = statusManager.findOrCreateProcess(
|
|
42
|
+
let switchProcess = statusManager.findOrCreateProcess({
|
|
43
43
|
step,
|
|
44
|
-
'SWITCH_CHAIN',
|
|
45
|
-
'ACTION_REQUIRED'
|
|
46
|
-
)
|
|
44
|
+
type: 'SWITCH_CHAIN',
|
|
45
|
+
status: 'ACTION_REQUIRED',
|
|
46
|
+
})
|
|
47
47
|
|
|
48
48
|
if (!allowUserInteraction) {
|
|
49
49
|
return
|
|
@@ -51,7 +51,7 @@ export const switchChain = async (
|
|
|
51
51
|
|
|
52
52
|
try {
|
|
53
53
|
const updatedClient = await switchChainHook?.(step.action.fromChainId)
|
|
54
|
-
let updatedChainId
|
|
54
|
+
let updatedChainId: number | undefined
|
|
55
55
|
if (updatedClient) {
|
|
56
56
|
updatedChainId = await getChainId(updatedClient)
|
|
57
57
|
}
|
package/src/core/EVM/types.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type BaseToken, ChainType } from '@lifi/types'
|
|
2
2
|
import type { Client, Hash } from 'viem'
|
|
3
3
|
import type { SwitchChainHook } from '../types.js'
|
|
4
|
-
import {
|
|
4
|
+
import type { SDKProvider } from '../types.js'
|
|
5
5
|
|
|
6
6
|
export interface EVMProviderOptions {
|
|
7
7
|
getWalletClient?: () => Promise<Client>
|
package/src/core/EVM/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ChainId } from '@lifi/types'
|
|
2
2
|
import type { Client, Transaction } from 'viem'
|
|
3
3
|
import { getBlock } from 'viem/actions'
|
|
4
4
|
import { config } from '../../config.js'
|
|
@@ -19,10 +19,10 @@ export const getMaxPriorityFeePerGas = async (
|
|
|
19
19
|
return
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
let maxPriorityFeePerGasSum = 0n
|
|
23
|
+
for (const value of maxPriorityFeePerGasList) {
|
|
24
|
+
maxPriorityFeePerGasSum += value
|
|
25
|
+
}
|
|
26
26
|
|
|
27
27
|
const maxPriorityFeePerGasMedian = median(maxPriorityFeePerGasList) ?? 0n
|
|
28
28
|
|
|
@@ -8,7 +8,8 @@ import type {
|
|
|
8
8
|
TransactionReceipt,
|
|
9
9
|
} from 'viem'
|
|
10
10
|
import { waitForTransactionReceipt as waitForTransactionReceiptInternal } from 'viem/actions'
|
|
11
|
-
import { LiFiErrorCode
|
|
11
|
+
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
12
|
+
import { TransactionError } from '../../errors/errors.js'
|
|
12
13
|
import { getPublicClient } from './publicClient.js'
|
|
13
14
|
import { retryCount, retryDelay } from './utils.js'
|
|
14
15
|
|
|
@@ -75,7 +76,7 @@ async function waitForReceipt(
|
|
|
75
76
|
retryCount,
|
|
76
77
|
retryDelay,
|
|
77
78
|
})
|
|
78
|
-
} catch
|
|
79
|
+
} catch {
|
|
79
80
|
// We can ignore errors from waitForTransactionReceipt as we have a status check fallback
|
|
80
81
|
}
|
|
81
82
|
|
|
@@ -19,7 +19,7 @@ export function Solana(options?: SolanaProviderOptions): SolanaProvider {
|
|
|
19
19
|
options: StepExecutorOptions
|
|
20
20
|
): Promise<SolanaStepExecutor> {
|
|
21
21
|
if (!_options.getWalletAdapter) {
|
|
22
|
-
throw new Error(
|
|
22
|
+
throw new Error('getWalletAdapter is not provided.')
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
const walletAdapter = await _options.getWalletAdapter()
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ExtendedTransactionInfo, FullStatusData } from '@lifi/types'
|
|
2
|
-
import {
|
|
2
|
+
import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
|
|
3
3
|
import {
|
|
4
|
-
VersionedTransaction,
|
|
5
4
|
type SendOptions,
|
|
6
5
|
type SignatureResult,
|
|
6
|
+
VersionedTransaction,
|
|
7
7
|
} from '@solana/web3.js'
|
|
8
8
|
import bs58 from 'bs58'
|
|
9
9
|
import { withTimeout } from 'viem'
|
|
@@ -12,7 +12,7 @@ import { LiFiErrorCode } from '../../errors/constants.js'
|
|
|
12
12
|
import { TransactionError } from '../../errors/errors.js'
|
|
13
13
|
import { getStepTransaction } from '../../services/api.js'
|
|
14
14
|
import { base64ToUint8Array } from '../../utils/base64ToUint8Array.js'
|
|
15
|
-
import { getTransactionFailedMessage } from '../../utils/
|
|
15
|
+
import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js'
|
|
16
16
|
import { sleep } from '../../utils/sleep.js'
|
|
17
17
|
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
18
18
|
import { checkBalance } from '../checkBalance.js'
|
|
@@ -59,10 +59,10 @@ export class SolanaStepExecutor extends BaseStepExecutor {
|
|
|
59
59
|
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
60
60
|
|
|
61
61
|
// STEP 2: Get transaction
|
|
62
|
-
let process = this.statusManager.findOrCreateProcess(
|
|
62
|
+
let process = this.statusManager.findOrCreateProcess({
|
|
63
63
|
step,
|
|
64
|
-
currentProcessType
|
|
65
|
-
)
|
|
64
|
+
type: currentProcessType,
|
|
65
|
+
})
|
|
66
66
|
|
|
67
67
|
if (process.status !== 'DONE') {
|
|
68
68
|
try {
|
|
@@ -88,10 +88,10 @@ export class SolanaStepExecutor extends BaseStepExecutor {
|
|
|
88
88
|
this.allowUserInteraction,
|
|
89
89
|
this.executionOptions
|
|
90
90
|
)
|
|
91
|
-
step
|
|
91
|
+
Object.assign(step, {
|
|
92
92
|
...comparedStep,
|
|
93
93
|
execution: step.execution,
|
|
94
|
-
}
|
|
94
|
+
})
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
if (!step.transactionRequest?.data) {
|
|
@@ -294,11 +294,12 @@ export class SolanaStepExecutor extends BaseStepExecutor {
|
|
|
294
294
|
// STEP 5: Wait for the receiving chain
|
|
295
295
|
const processTxHash = process.txHash
|
|
296
296
|
if (isBridgeExecution) {
|
|
297
|
-
process = this.statusManager.findOrCreateProcess(
|
|
297
|
+
process = this.statusManager.findOrCreateProcess({
|
|
298
298
|
step,
|
|
299
|
-
'RECEIVING_CHAIN',
|
|
300
|
-
'PENDING'
|
|
301
|
-
|
|
299
|
+
type: 'RECEIVING_CHAIN',
|
|
300
|
+
status: 'PENDING',
|
|
301
|
+
chainId: toChain.id,
|
|
302
|
+
})
|
|
302
303
|
}
|
|
303
304
|
let statusResponse: FullStatusData
|
|
304
305
|
try {
|
|
@@ -12,11 +12,11 @@ export const getSolanaBalance = async (
|
|
|
12
12
|
return []
|
|
13
13
|
}
|
|
14
14
|
const { chainId } = tokens[0]
|
|
15
|
-
|
|
15
|
+
for (const token of tokens) {
|
|
16
16
|
if (token.chainId !== chainId) {
|
|
17
|
-
console.warn(
|
|
17
|
+
console.warn('Requested tokens have to be on the same chain.')
|
|
18
18
|
}
|
|
19
|
-
}
|
|
19
|
+
}
|
|
20
20
|
|
|
21
21
|
return getSolanaBalanceDefault(chainId, tokens, walletAddress)
|
|
22
22
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { LiFiStep, Process } from '@lifi/types'
|
|
2
|
+
import { SDKError } from '../../errors/SDKError.js'
|
|
2
3
|
import { BaseError } from '../../errors/baseError.js'
|
|
3
4
|
import { ErrorMessage, LiFiErrorCode } from '../../errors/constants.js'
|
|
4
5
|
import { TransactionError, UnknownError } from '../../errors/errors.js'
|
|
5
|
-
import { SDKError } from '../../errors/SDKError.js'
|
|
6
6
|
|
|
7
7
|
export const parseSolanaErrors = async (
|
|
8
8
|
e: Error,
|
package/src/core/Solana/types.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChainType } from '@lifi/types'
|
|
2
2
|
import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
|
|
3
|
-
import {
|
|
3
|
+
import type { SDKProvider } from '../types.js'
|
|
4
4
|
|
|
5
5
|
export interface SolanaProviderOptions {
|
|
6
6
|
getWalletAdapter?: () => Promise<SignerWalletAdapter>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
ChainId,
|
|
2
3
|
Execution,
|
|
3
4
|
ExecutionStatus,
|
|
4
5
|
LiFiStep,
|
|
@@ -10,19 +11,12 @@ import { executionState } from './executionState.js'
|
|
|
10
11
|
import { getProcessMessage } from './processMessages.js'
|
|
11
12
|
import type { LiFiStepExtended } from './types.js'
|
|
12
13
|
|
|
13
|
-
type
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
| 'txLink'
|
|
20
|
-
| 'error'
|
|
21
|
-
| 'substatus'
|
|
22
|
-
| 'substatusMessage'
|
|
23
|
-
| 'multisigTxHash'
|
|
24
|
-
>
|
|
25
|
-
>
|
|
14
|
+
export type FindOrCreateProcessProps = {
|
|
15
|
+
step: LiFiStepExtended
|
|
16
|
+
type: ProcessType
|
|
17
|
+
chainId?: ChainId
|
|
18
|
+
status?: ProcessStatus
|
|
19
|
+
}
|
|
26
20
|
|
|
27
21
|
/**
|
|
28
22
|
* Manages status updates of a route and provides various functions for tracking processes
|
|
@@ -88,16 +82,23 @@ export class StatusManager {
|
|
|
88
82
|
|
|
89
83
|
/**
|
|
90
84
|
* Create and push a new process into the execution.
|
|
91
|
-
* @param step The step that should contain the new process.
|
|
92
|
-
* @param type Type of the process. Used to identify already existing processes.
|
|
93
|
-
* @param
|
|
85
|
+
* @param step.step The step that should contain the new process.
|
|
86
|
+
* @param step.type Type of the process. Used to identify already existing processes.
|
|
87
|
+
* @param step.chainId Chain Id of the process.
|
|
88
|
+
* @param step.status By default created procces is set to the STARTED status. We can override new process with the needed status.
|
|
89
|
+
* @param root0
|
|
90
|
+
* @param root0.step
|
|
91
|
+
* @param root0.type
|
|
92
|
+
* @param root0.chainId
|
|
93
|
+
* @param root0.status
|
|
94
94
|
* @returns Returns process.
|
|
95
95
|
*/
|
|
96
|
-
findOrCreateProcess = (
|
|
97
|
-
step
|
|
98
|
-
type
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
findOrCreateProcess = ({
|
|
97
|
+
step,
|
|
98
|
+
type,
|
|
99
|
+
chainId,
|
|
100
|
+
status,
|
|
101
|
+
}: FindOrCreateProcessProps): Process => {
|
|
101
102
|
if (!step.execution?.process) {
|
|
102
103
|
throw new Error("Execution hasn't been initialized.")
|
|
103
104
|
}
|
|
@@ -117,6 +118,7 @@ export class StatusManager {
|
|
|
117
118
|
startedAt: Date.now(),
|
|
118
119
|
message: getProcessMessage(type, status ?? 'STARTED'),
|
|
119
120
|
status: status ?? 'STARTED',
|
|
121
|
+
chainId: chainId,
|
|
120
122
|
}
|
|
121
123
|
|
|
122
124
|
step.execution.process.push(newProcess)
|
|
@@ -136,7 +138,7 @@ export class StatusManager {
|
|
|
136
138
|
step: LiFiStepExtended,
|
|
137
139
|
type: ProcessType,
|
|
138
140
|
status: ProcessStatus,
|
|
139
|
-
params?:
|
|
141
|
+
params?: Partial<Process>
|
|
140
142
|
): Process => {
|
|
141
143
|
if (!step.execution) {
|
|
142
144
|
throw new Error("Can't update an empty step execution.")
|
|
@@ -178,12 +180,8 @@ export class StatusManager {
|
|
|
178
180
|
}
|
|
179
181
|
// Sort processes, the ones with DONE status go first
|
|
180
182
|
step.execution.process = [
|
|
181
|
-
...step
|
|
182
|
-
|
|
183
|
-
),
|
|
184
|
-
...step?.execution?.process.filter(
|
|
185
|
-
(process) => process.status !== 'DONE'
|
|
186
|
-
),
|
|
183
|
+
...step.execution.process.filter((process) => process.status === 'DONE'),
|
|
184
|
+
...step.execution.process.filter((process) => process.status !== 'DONE'),
|
|
187
185
|
]
|
|
188
186
|
this.updateStepInRoute(step) // updates the step in the route
|
|
189
187
|
return currentProcess
|
package/src/core/UTXO/UTXO.ts
CHANGED
|
@@ -21,7 +21,7 @@ export function UTXO(options?: UTXOProviderOptions): UTXOProvider {
|
|
|
21
21
|
options: StepExecutorOptions
|
|
22
22
|
): Promise<UTXOStepExecutor> {
|
|
23
23
|
if (!_options.getWalletClient) {
|
|
24
|
-
throw new Error(
|
|
24
|
+
throw new Error('Client is not provided.')
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const walletClient = await _options.getWalletClient()
|
|
@@ -3,16 +3,13 @@ import {
|
|
|
3
3
|
type ExtendedTransactionInfo,
|
|
4
4
|
type FullStatusData,
|
|
5
5
|
} from '@lifi/types'
|
|
6
|
-
import { address, networks
|
|
7
|
-
import {
|
|
6
|
+
import { Psbt, address, networks } from 'bitcoinjs-lib'
|
|
7
|
+
import { type Client, withTimeout } from 'viem'
|
|
8
8
|
import { config } from '../../config.js'
|
|
9
9
|
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
10
10
|
import { TransactionError } from '../../errors/errors.js'
|
|
11
11
|
import { getStepTransaction } from '../../services/api.js'
|
|
12
|
-
import {
|
|
13
|
-
getTransactionFailedMessage,
|
|
14
|
-
waitForResult,
|
|
15
|
-
} from '../../utils/index.js'
|
|
12
|
+
import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js'
|
|
16
13
|
import { BaseStepExecutor } from '../BaseStepExecutor.js'
|
|
17
14
|
import { checkBalance } from '../checkBalance.js'
|
|
18
15
|
import { getSubstatusMessage } from '../processMessages.js'
|
|
@@ -26,6 +23,10 @@ import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js'
|
|
|
26
23
|
import { getUTXOPublicClient } from './getUTXOPublicClient.js'
|
|
27
24
|
import { parseUTXOErrors } from './parseUTXOErrors.js'
|
|
28
25
|
import { signPsbt } from './utxo-stack/actions/signPsbt.js'
|
|
26
|
+
import {
|
|
27
|
+
type ReplacementReason,
|
|
28
|
+
waitForTransaction,
|
|
29
|
+
} from './utxo-stack/actions/waitForTransaction.js'
|
|
29
30
|
|
|
30
31
|
export interface UTXOStepExecutorOptions extends StepExecutorOptions {
|
|
31
32
|
client: Client
|
|
@@ -60,22 +61,25 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
60
61
|
const currentProcessType = isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
61
62
|
|
|
62
63
|
// STEP 2: Get transaction
|
|
63
|
-
let process = this.statusManager.findOrCreateProcess(
|
|
64
|
+
let process = this.statusManager.findOrCreateProcess({
|
|
64
65
|
step,
|
|
65
|
-
currentProcessType
|
|
66
|
-
|
|
66
|
+
type: currentProcessType,
|
|
67
|
+
chainId: fromChain.id,
|
|
68
|
+
})
|
|
67
69
|
|
|
68
70
|
const publicClient = await getUTXOPublicClient(ChainId.BTC)
|
|
69
71
|
|
|
70
72
|
if (process.status !== 'DONE') {
|
|
71
73
|
try {
|
|
72
74
|
let txHash: string
|
|
75
|
+
let txHex: string
|
|
73
76
|
if (process.txHash) {
|
|
74
77
|
// Make sure that the chain is still correct
|
|
75
78
|
this.checkClient(step)
|
|
76
79
|
|
|
77
80
|
// Wait for exiting transaction
|
|
78
81
|
txHash = process.txHash
|
|
82
|
+
txHex = process.txHex
|
|
79
83
|
} else {
|
|
80
84
|
process = this.statusManager.updateProcess(
|
|
81
85
|
step,
|
|
@@ -97,10 +101,10 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
97
101
|
this.allowUserInteraction,
|
|
98
102
|
this.executionOptions
|
|
99
103
|
)
|
|
100
|
-
step
|
|
104
|
+
Object.assign(step, {
|
|
101
105
|
...comparedStep,
|
|
102
106
|
execution: step.execution,
|
|
103
|
-
}
|
|
107
|
+
})
|
|
104
108
|
}
|
|
105
109
|
|
|
106
110
|
if (!step.transactionRequest?.data) {
|
|
@@ -146,24 +150,7 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
146
150
|
|
|
147
151
|
this.checkClient(step)
|
|
148
152
|
|
|
149
|
-
|
|
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()
|
|
153
|
+
const psbtHex = transactionRequest.data
|
|
167
154
|
|
|
168
155
|
const psbt = Psbt.fromHex(psbtHex, { network: networks.bitcoin })
|
|
169
156
|
|
|
@@ -190,8 +177,6 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
190
177
|
.values()
|
|
191
178
|
)
|
|
192
179
|
|
|
193
|
-
psbtHex = psbt.toHex()
|
|
194
|
-
|
|
195
180
|
// We give users 10 minutes to sign the transaction or it should be considered expired
|
|
196
181
|
const signedPsbtHex = await withTimeout(
|
|
197
182
|
() =>
|
|
@@ -211,10 +196,10 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
211
196
|
|
|
212
197
|
const signedPsbt = Psbt.fromHex(signedPsbtHex).finalizeAllInputs()
|
|
213
198
|
|
|
214
|
-
|
|
199
|
+
txHex = signedPsbt.extractTransaction().toHex()
|
|
215
200
|
|
|
216
201
|
txHash = await publicClient.sendUTXOTransaction({
|
|
217
|
-
hex:
|
|
202
|
+
hex: txHex,
|
|
218
203
|
})
|
|
219
204
|
|
|
220
205
|
process = this.statusManager.updateProcess(
|
|
@@ -224,31 +209,48 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
224
209
|
{
|
|
225
210
|
txHash: txHash,
|
|
226
211
|
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txHash}`,
|
|
212
|
+
txHex,
|
|
227
213
|
}
|
|
228
214
|
)
|
|
229
215
|
}
|
|
230
216
|
|
|
231
|
-
|
|
232
|
-
await
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
return tx
|
|
244
|
-
},
|
|
217
|
+
let replacementReason: ReplacementReason | undefined
|
|
218
|
+
const transaction = await waitForTransaction(publicClient, {
|
|
219
|
+
txId: txHash,
|
|
220
|
+
txHex,
|
|
221
|
+
senderAddress: this.client.account?.address,
|
|
222
|
+
onReplaced: (response) => {
|
|
223
|
+
replacementReason = response.reason
|
|
224
|
+
process = this.statusManager.updateProcess(
|
|
225
|
+
step,
|
|
226
|
+
process.type,
|
|
227
|
+
'PENDING',
|
|
245
228
|
{
|
|
246
|
-
|
|
247
|
-
|
|
229
|
+
txHash: response.transaction.txid,
|
|
230
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${response.transaction.txid}`,
|
|
248
231
|
}
|
|
249
|
-
)
|
|
250
|
-
|
|
251
|
-
)
|
|
232
|
+
)
|
|
233
|
+
},
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
if (replacementReason === 'cancelled') {
|
|
237
|
+
throw new TransactionError(
|
|
238
|
+
LiFiErrorCode.TransactionCanceled,
|
|
239
|
+
'User canceled transaction.'
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (transaction.txid !== txHash) {
|
|
244
|
+
process = this.statusManager.updateProcess(
|
|
245
|
+
step,
|
|
246
|
+
process.type,
|
|
247
|
+
'PENDING',
|
|
248
|
+
{
|
|
249
|
+
txHash: transaction.txid,
|
|
250
|
+
txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${transaction.txid}`,
|
|
251
|
+
}
|
|
252
|
+
)
|
|
253
|
+
}
|
|
252
254
|
|
|
253
255
|
if (isBridgeExecution) {
|
|
254
256
|
process = this.statusManager.updateProcess(step, process.type, 'DONE')
|
|
@@ -274,11 +276,12 @@ export class UTXOStepExecutor extends BaseStepExecutor {
|
|
|
274
276
|
// STEP 5: Wait for the receiving chain
|
|
275
277
|
const processTxHash = process.txHash
|
|
276
278
|
if (isBridgeExecution) {
|
|
277
|
-
process = this.statusManager.findOrCreateProcess(
|
|
279
|
+
process = this.statusManager.findOrCreateProcess({
|
|
278
280
|
step,
|
|
279
|
-
'RECEIVING_CHAIN',
|
|
280
|
-
'PENDING'
|
|
281
|
-
|
|
281
|
+
type: 'RECEIVING_CHAIN',
|
|
282
|
+
status: 'PENDING',
|
|
283
|
+
chainId: toChain.id,
|
|
284
|
+
})
|
|
282
285
|
}
|
|
283
286
|
let statusResponse: FullStatusData
|
|
284
287
|
try {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
-
createClient,
|
|
3
|
-
fallback,
|
|
4
|
-
rpcSchema,
|
|
5
2
|
type Chain,
|
|
6
3
|
type Client,
|
|
7
4
|
type FallbackTransport,
|
|
8
5
|
type HttpTransport,
|
|
6
|
+
createClient,
|
|
7
|
+
fallback,
|
|
8
|
+
rpcSchema,
|
|
9
9
|
} from 'viem'
|
|
10
10
|
import { config } from '../../config.js'
|
|
11
11
|
import { UTXOAPIActions } from './utxo-stack/decorators/UTXOAPIActions.js'
|
|
@@ -10,12 +10,11 @@ export const getUTXOBalance = async (
|
|
|
10
10
|
return []
|
|
11
11
|
}
|
|
12
12
|
const { chainId } = tokens[0]
|
|
13
|
-
|
|
13
|
+
for (const token of tokens) {
|
|
14
14
|
if (token.chainId !== chainId) {
|
|
15
|
-
console.warn(
|
|
15
|
+
console.warn('Requested tokens have to be on the same chain.')
|
|
16
16
|
}
|
|
17
|
-
}
|
|
18
|
-
|
|
17
|
+
}
|
|
19
18
|
const apiClient = await getUTXOAPIPublicClient(ChainId.BTC)
|
|
20
19
|
const client = await getUTXOPublicClient(ChainId.BTC)
|
|
21
20
|
const [balance, blockCount] = await Promise.all([
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
createClient,
|
|
3
|
-
fallback,
|
|
4
2
|
http,
|
|
5
|
-
rpcSchema,
|
|
6
3
|
type Chain,
|
|
7
4
|
type Client,
|
|
8
5
|
type FallbackTransport,
|
|
9
6
|
type HttpTransport,
|
|
7
|
+
createClient,
|
|
8
|
+
fallback,
|
|
9
|
+
rpcSchema,
|
|
10
10
|
} from 'viem'
|
|
11
11
|
import { config } from '../../config.js'
|
|
12
12
|
import { getRpcUrls } from '../rpc.js'
|
|
@@ -48,6 +48,7 @@ export const getUTXOPublicClient = async (chainId: number) => {
|
|
|
48
48
|
chain,
|
|
49
49
|
rpcSchema: rpcSchema<UTXOSchema>(),
|
|
50
50
|
transport: fallback(fallbackTransports),
|
|
51
|
+
pollingInterval: 10_000,
|
|
51
52
|
}).extend(UTXOActions)
|
|
52
53
|
publicClients[chainId] = client
|
|
53
54
|
}
|