@lifi/sdk 0.0.0-preview-f5cf9f8
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/CHANGELOG.md +1213 -0
- package/LICENSE +201 -0
- package/README.md +79 -0
- package/dist/cjs/actions/getChains.d.ts +17 -0
- package/dist/cjs/actions/getChains.js +28 -0
- package/dist/cjs/actions/getChains.js.map +1 -0
- package/dist/cjs/actions/getConnections.d.ts +15 -0
- package/dist/cjs/actions/getConnections.js +34 -0
- package/dist/cjs/actions/getConnections.js.map +1 -0
- package/dist/cjs/actions/getContractCallsQuote.d.ts +16 -0
- package/dist/cjs/actions/getContractCallsQuote.js +45 -0
- package/dist/cjs/actions/getContractCallsQuote.js.map +1 -0
- package/dist/cjs/actions/getGasRecommendation.d.ts +16 -0
- package/dist/cjs/actions/getGasRecommendation.js +24 -0
- package/dist/cjs/actions/getGasRecommendation.js.map +1 -0
- package/dist/cjs/actions/getNameServiceAddress.d.ts +15 -0
- package/dist/cjs/actions/getNameServiceAddress.js +29 -0
- package/dist/cjs/actions/getNameServiceAddress.js.map +1 -0
- package/dist/cjs/actions/getQuote.d.ts +18 -0
- package/dist/cjs/actions/getQuote.js +35 -0
- package/dist/cjs/actions/getQuote.js.map +1 -0
- package/dist/cjs/actions/getRelayedTransactionStatus.d.ts +16 -0
- package/dist/cjs/actions/getRelayedTransactionStatus.js +30 -0
- package/dist/cjs/actions/getRelayedTransactionStatus.js.map +1 -0
- package/dist/cjs/actions/getRelayerQuote.d.ts +17 -0
- package/dist/cjs/actions/getRelayerQuote.js +44 -0
- package/dist/cjs/actions/getRelayerQuote.js.map +1 -0
- package/dist/cjs/actions/getRoutes.d.ts +16 -0
- package/dist/cjs/actions/getRoutes.js +32 -0
- package/dist/cjs/actions/getRoutes.js.map +1 -0
- package/dist/cjs/actions/getStatus.d.ts +17 -0
- package/dist/cjs/actions/getStatus.js +22 -0
- package/dist/cjs/actions/getStatus.js.map +1 -0
- package/dist/cjs/actions/getStepTransaction.d.ts +16 -0
- package/dist/cjs/actions/getStepTransaction.js +36 -0
- package/dist/cjs/actions/getStepTransaction.js.map +1 -0
- package/dist/cjs/actions/getToken.d.ts +17 -0
- package/dist/cjs/actions/getToken.js +26 -0
- package/dist/cjs/actions/getToken.js.map +1 -0
- package/dist/cjs/actions/getTokenBalance.d.ts +17 -0
- package/dist/cjs/actions/getTokenBalance.js +20 -0
- package/dist/cjs/actions/getTokenBalance.js.map +1 -0
- package/dist/cjs/actions/getTokenBalances.d.ts +17 -0
- package/dist/cjs/actions/getTokenBalances.js +15 -0
- package/dist/cjs/actions/getTokenBalances.js.map +1 -0
- package/dist/cjs/actions/getTokenBalancesByChain.d.ts +21 -0
- package/dist/cjs/actions/getTokenBalancesByChain.js +25 -0
- package/dist/cjs/actions/getTokenBalancesByChain.js.map +1 -0
- package/dist/cjs/actions/getTokens.d.ts +20 -0
- package/dist/cjs/actions/getTokens.js +17 -0
- package/dist/cjs/actions/getTokens.js.map +1 -0
- package/dist/cjs/actions/getTools.d.ts +15 -0
- package/dist/cjs/actions/getTools.js +21 -0
- package/dist/cjs/actions/getTools.js.map +1 -0
- package/dist/cjs/actions/getTransactionHistory.d.ts +26 -0
- package/dist/cjs/actions/getTransactionHistory.js +31 -0
- package/dist/cjs/actions/getTransactionHistory.js.map +1 -0
- package/dist/cjs/actions/getWalletBalances.d.ts +16 -0
- package/dist/cjs/actions/getWalletBalances.js +20 -0
- package/dist/cjs/actions/getWalletBalances.js.map +1 -0
- package/dist/cjs/actions/index.d.ts +172 -0
- package/dist/cjs/actions/index.js +52 -0
- package/dist/cjs/actions/index.js.map +1 -0
- package/dist/cjs/actions/patchContractCalls.d.ts +15 -0
- package/dist/cjs/actions/patchContractCalls.js +15 -0
- package/dist/cjs/actions/patchContractCalls.js.map +1 -0
- package/dist/cjs/actions/relayTransaction.d.ts +16 -0
- package/dist/cjs/actions/relayTransaction.js +34 -0
- package/dist/cjs/actions/relayTransaction.js.map +1 -0
- package/dist/cjs/client/createClient.d.ts +7 -0
- package/dist/cjs/client/createClient.js +70 -0
- package/dist/cjs/client/createClient.js.map +1 -0
- package/dist/cjs/client/getClientStorage.d.ts +14 -0
- package/dist/cjs/client/getClientStorage.js +48 -0
- package/dist/cjs/client/getClientStorage.js.map +1 -0
- package/dist/cjs/core/BaseStepExecutionTask.d.ts +10 -0
- package/dist/cjs/core/BaseStepExecutionTask.js +11 -0
- package/dist/cjs/core/BaseStepExecutionTask.js.map +1 -0
- package/dist/cjs/core/BaseStepExecutor.d.ts +24 -0
- package/dist/cjs/core/BaseStepExecutor.js +71 -0
- package/dist/cjs/core/BaseStepExecutor.js.map +1 -0
- package/dist/cjs/core/StatusManager.d.ts +83 -0
- package/dist/cjs/core/StatusManager.js +160 -0
- package/dist/cjs/core/StatusManager.js.map +1 -0
- package/dist/cjs/core/TaskPipeline.d.ts +12 -0
- package/dist/cjs/core/TaskPipeline.js +21 -0
- package/dist/cjs/core/TaskPipeline.js.map +1 -0
- package/dist/cjs/core/actionMessages.d.ts +9 -0
- package/dist/cjs/core/actionMessages.js +81 -0
- package/dist/cjs/core/actionMessages.js.map +1 -0
- package/dist/cjs/core/execution.d.ts +48 -0
- package/dist/cjs/core/execution.js +147 -0
- package/dist/cjs/core/execution.js.map +1 -0
- package/dist/cjs/core/executionState.d.ts +21 -0
- package/dist/cjs/core/executionState.js +29 -0
- package/dist/cjs/core/executionState.js.map +1 -0
- package/dist/cjs/core/prepareRestart.d.ts +7 -0
- package/dist/cjs/core/prepareRestart.js +21 -0
- package/dist/cjs/core/prepareRestart.js.map +1 -0
- package/dist/cjs/core/storage.d.ts +21 -0
- package/dist/cjs/core/storage.js +35 -0
- package/dist/cjs/core/storage.js.map +1 -0
- package/dist/cjs/core/tasks/CheckBalanceTask.d.ts +19 -0
- package/dist/cjs/core/tasks/CheckBalanceTask.js +35 -0
- package/dist/cjs/core/tasks/CheckBalanceTask.js.map +1 -0
- package/dist/cjs/core/tasks/PrepareTransactionTask.d.ts +10 -0
- package/dist/cjs/core/tasks/PrepareTransactionTask.js +30 -0
- package/dist/cjs/core/tasks/PrepareTransactionTask.js.map +1 -0
- package/dist/cjs/core/tasks/WaitForTransactionStatusTask.d.ts +13 -0
- package/dist/cjs/core/tasks/WaitForTransactionStatusTask.js +63 -0
- package/dist/cjs/core/tasks/WaitForTransactionStatusTask.js.map +1 -0
- package/dist/cjs/core/tasks/helpers/checkBalance.d.ts +30 -0
- package/dist/cjs/core/tasks/helpers/checkBalance.js +108 -0
- package/dist/cjs/core/tasks/helpers/checkBalance.js.map +1 -0
- package/dist/cjs/core/tasks/helpers/getTransactionRequestData.d.ts +7 -0
- package/dist/cjs/core/tasks/helpers/getTransactionRequestData.js +25 -0
- package/dist/cjs/core/tasks/helpers/getTransactionRequestData.js.map +1 -0
- package/dist/cjs/core/tasks/helpers/stepComparison.d.ts +21 -0
- package/dist/cjs/core/tasks/helpers/stepComparison.js +32 -0
- package/dist/cjs/core/tasks/helpers/stepComparison.js.map +1 -0
- package/dist/cjs/core/tasks/helpers/waitForTransactionStatus.d.ts +9 -0
- package/dist/cjs/core/tasks/helpers/waitForTransactionStatus.js +48 -0
- package/dist/cjs/core/tasks/helpers/waitForTransactionStatus.js.map +1 -0
- package/dist/cjs/core/utils.d.ts +17 -0
- package/dist/cjs/core/utils.js +42 -0
- package/dist/cjs/core/utils.js.map +1 -0
- package/dist/cjs/errors/SDKError.d.ts +17 -0
- package/dist/cjs/errors/SDKError.js +24 -0
- package/dist/cjs/errors/SDKError.js.map +1 -0
- package/dist/cjs/errors/baseError.d.ts +11 -0
- package/dist/cjs/errors/baseError.js +19 -0
- package/dist/cjs/errors/baseError.js.map +1 -0
- package/dist/cjs/errors/constants.d.ts +55 -0
- package/dist/cjs/errors/constants.js +61 -0
- package/dist/cjs/errors/constants.js.map +1 -0
- package/dist/cjs/errors/errors.d.ts +38 -0
- package/dist/cjs/errors/errors.js +62 -0
- package/dist/cjs/errors/errors.js.map +1 -0
- package/dist/cjs/errors/httpError.d.ts +24 -0
- package/dist/cjs/errors/httpError.js +70 -0
- package/dist/cjs/errors/httpError.js.map +1 -0
- package/dist/cjs/errors/utils/baseErrorRootCause.d.ts +8 -0
- package/dist/cjs/errors/utils/baseErrorRootCause.js +18 -0
- package/dist/cjs/errors/utils/baseErrorRootCause.js.map +1 -0
- package/dist/cjs/errors/utils/rootCause.d.ts +5 -0
- package/dist/cjs/errors/utils/rootCause.js +11 -0
- package/dist/cjs/errors/utils/rootCause.js.map +1 -0
- package/dist/cjs/index.d.ts +55 -0
- package/dist/cjs/index.js +130 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/actions.d.ts +14 -0
- package/dist/cjs/types/actions.js +0 -0
- package/dist/cjs/types/core.d.ts +184 -0
- package/dist/cjs/types/core.js +0 -0
- package/dist/cjs/types/execution.d.ts +28 -0
- package/dist/cjs/types/execution.js +0 -0
- package/dist/cjs/types/request.d.ts +7 -0
- package/dist/cjs/types/request.js +0 -0
- package/dist/cjs/utils/checkPackageUpdates.d.ts +5 -0
- package/dist/cjs/utils/checkPackageUpdates.js +15 -0
- package/dist/cjs/utils/checkPackageUpdates.js.map +1 -0
- package/dist/cjs/utils/convertQuoteToRoute.d.ts +22 -0
- package/dist/cjs/utils/convertQuoteToRoute.js +88 -0
- package/dist/cjs/utils/convertQuoteToRoute.js.map +1 -0
- package/dist/cjs/utils/decode.d.ts +5 -0
- package/dist/cjs/utils/decode.js +9 -0
- package/dist/cjs/utils/decode.js.map +1 -0
- package/dist/cjs/utils/fetchTxErrorDetails.d.ts +5 -0
- package/dist/cjs/utils/fetchTxErrorDetails.js +13 -0
- package/dist/cjs/utils/fetchTxErrorDetails.js.map +1 -0
- package/dist/cjs/utils/formatUnits.d.ts +8 -0
- package/dist/cjs/utils/formatUnits.js +18 -0
- package/dist/cjs/utils/formatUnits.js.map +1 -0
- package/dist/cjs/utils/getTransactionMessage.d.ts +8 -0
- package/dist/cjs/utils/getTransactionMessage.js +12 -0
- package/dist/cjs/utils/getTransactionMessage.js.map +1 -0
- package/dist/cjs/utils/isHex.d.ts +10 -0
- package/dist/cjs/utils/isHex.js +11 -0
- package/dist/cjs/utils/isHex.js.map +1 -0
- package/dist/cjs/utils/isRoutesRequest.d.ts +7 -0
- package/dist/cjs/utils/isRoutesRequest.js +11 -0
- package/dist/cjs/utils/isRoutesRequest.js.map +1 -0
- package/dist/cjs/utils/isStep.d.ts +7 -0
- package/dist/cjs/utils/isStep.js +23 -0
- package/dist/cjs/utils/isStep.js.map +1 -0
- package/dist/cjs/utils/isToken.d.ts +7 -0
- package/dist/cjs/utils/isToken.js +10 -0
- package/dist/cjs/utils/isToken.js.map +1 -0
- package/dist/cjs/utils/parseUnits.d.ts +8 -0
- package/dist/cjs/utils/parseUnits.js +35 -0
- package/dist/cjs/utils/parseUnits.js.map +1 -0
- package/dist/cjs/utils/request.d.ts +11 -0
- package/dist/cjs/utils/request.js +56 -0
- package/dist/cjs/utils/request.js.map +1 -0
- package/dist/cjs/utils/sleep.d.ts +5 -0
- package/dist/cjs/utils/sleep.js +11 -0
- package/dist/cjs/utils/sleep.js.map +1 -0
- package/dist/cjs/utils/waitForResult.d.ts +14 -0
- package/dist/cjs/utils/waitForResult.js +36 -0
- package/dist/cjs/utils/waitForResult.js.map +1 -0
- package/dist/cjs/utils/withDedupe.d.ts +23 -0
- package/dist/cjs/utils/withDedupe.js +34 -0
- package/dist/cjs/utils/withDedupe.js.map +1 -0
- package/dist/cjs/utils/withTimeout.d.ts +26 -0
- package/dist/cjs/utils/withTimeout.js +35 -0
- package/dist/cjs/utils/withTimeout.js.map +1 -0
- package/dist/cjs/version.d.ts +6 -0
- package/dist/cjs/version.js +9 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/actions/getChains.d.ts +17 -0
- package/dist/esm/actions/getChains.d.ts.map +1 -0
- package/dist/esm/actions/getChains.js +26 -0
- package/dist/esm/actions/getChains.js.map +1 -0
- package/dist/esm/actions/getConnections.d.ts +15 -0
- package/dist/esm/actions/getConnections.d.ts.map +1 -0
- package/dist/esm/actions/getConnections.js +33 -0
- package/dist/esm/actions/getConnections.js.map +1 -0
- package/dist/esm/actions/getContractCallsQuote.d.ts +16 -0
- package/dist/esm/actions/getContractCallsQuote.d.ts.map +1 -0
- package/dist/esm/actions/getContractCallsQuote.js +44 -0
- package/dist/esm/actions/getContractCallsQuote.js.map +1 -0
- package/dist/esm/actions/getGasRecommendation.d.ts +16 -0
- package/dist/esm/actions/getGasRecommendation.d.ts.map +1 -0
- package/dist/esm/actions/getGasRecommendation.js +23 -0
- package/dist/esm/actions/getGasRecommendation.js.map +1 -0
- package/dist/esm/actions/getNameServiceAddress.d.ts +15 -0
- package/dist/esm/actions/getNameServiceAddress.d.ts.map +1 -0
- package/dist/esm/actions/getNameServiceAddress.js +28 -0
- package/dist/esm/actions/getNameServiceAddress.js.map +1 -0
- package/dist/esm/actions/getQuote.d.ts +18 -0
- package/dist/esm/actions/getQuote.d.ts.map +1 -0
- package/dist/esm/actions/getQuote.js +34 -0
- package/dist/esm/actions/getQuote.js.map +1 -0
- package/dist/esm/actions/getRelayedTransactionStatus.d.ts +16 -0
- package/dist/esm/actions/getRelayedTransactionStatus.d.ts.map +1 -0
- package/dist/esm/actions/getRelayedTransactionStatus.js +29 -0
- package/dist/esm/actions/getRelayedTransactionStatus.js.map +1 -0
- package/dist/esm/actions/getRelayerQuote.d.ts +17 -0
- package/dist/esm/actions/getRelayerQuote.d.ts.map +1 -0
- package/dist/esm/actions/getRelayerQuote.js +43 -0
- package/dist/esm/actions/getRelayerQuote.js.map +1 -0
- package/dist/esm/actions/getRoutes.d.ts +16 -0
- package/dist/esm/actions/getRoutes.d.ts.map +1 -0
- package/dist/esm/actions/getRoutes.js +31 -0
- package/dist/esm/actions/getRoutes.js.map +1 -0
- package/dist/esm/actions/getStatus.d.ts +17 -0
- package/dist/esm/actions/getStatus.d.ts.map +1 -0
- package/dist/esm/actions/getStatus.js +21 -0
- package/dist/esm/actions/getStatus.js.map +1 -0
- package/dist/esm/actions/getStepTransaction.d.ts +16 -0
- package/dist/esm/actions/getStepTransaction.d.ts.map +1 -0
- package/dist/esm/actions/getStepTransaction.js +35 -0
- package/dist/esm/actions/getStepTransaction.js.map +1 -0
- package/dist/esm/actions/getToken.d.ts +17 -0
- package/dist/esm/actions/getToken.d.ts.map +1 -0
- package/dist/esm/actions/getToken.js +25 -0
- package/dist/esm/actions/getToken.js.map +1 -0
- package/dist/esm/actions/getTokenBalance.d.ts +17 -0
- package/dist/esm/actions/getTokenBalance.d.ts.map +1 -0
- package/dist/esm/actions/getTokenBalance.js +19 -0
- package/dist/esm/actions/getTokenBalance.js.map +1 -0
- package/dist/esm/actions/getTokenBalances.d.ts +17 -0
- package/dist/esm/actions/getTokenBalances.d.ts.map +1 -0
- package/dist/esm/actions/getTokenBalances.js +14 -0
- package/dist/esm/actions/getTokenBalances.js.map +1 -0
- package/dist/esm/actions/getTokenBalancesByChain.d.ts +21 -0
- package/dist/esm/actions/getTokenBalancesByChain.d.ts.map +1 -0
- package/dist/esm/actions/getTokenBalancesByChain.js +24 -0
- package/dist/esm/actions/getTokenBalancesByChain.js.map +1 -0
- package/dist/esm/actions/getTokens.d.ts +20 -0
- package/dist/esm/actions/getTokens.d.ts.map +1 -0
- package/dist/esm/actions/getTokens.js +16 -0
- package/dist/esm/actions/getTokens.js.map +1 -0
- package/dist/esm/actions/getTools.d.ts +15 -0
- package/dist/esm/actions/getTools.d.ts.map +1 -0
- package/dist/esm/actions/getTools.js +20 -0
- package/dist/esm/actions/getTools.js.map +1 -0
- package/dist/esm/actions/getTransactionHistory.d.ts +26 -0
- package/dist/esm/actions/getTransactionHistory.d.ts.map +1 -0
- package/dist/esm/actions/getTransactionHistory.js +30 -0
- package/dist/esm/actions/getTransactionHistory.js.map +1 -0
- package/dist/esm/actions/getWalletBalances.d.ts +16 -0
- package/dist/esm/actions/getWalletBalances.d.ts.map +1 -0
- package/dist/esm/actions/getWalletBalances.js +19 -0
- package/dist/esm/actions/getWalletBalances.js.map +1 -0
- package/dist/esm/actions/index.d.ts +172 -0
- package/dist/esm/actions/index.d.ts.map +1 -0
- package/dist/esm/actions/index.js +51 -0
- package/dist/esm/actions/index.js.map +1 -0
- package/dist/esm/actions/patchContractCalls.d.ts +15 -0
- package/dist/esm/actions/patchContractCalls.d.ts.map +1 -0
- package/dist/esm/actions/patchContractCalls.js +14 -0
- package/dist/esm/actions/patchContractCalls.js.map +1 -0
- package/dist/esm/actions/relayTransaction.d.ts +16 -0
- package/dist/esm/actions/relayTransaction.d.ts.map +1 -0
- package/dist/esm/actions/relayTransaction.js +33 -0
- package/dist/esm/actions/relayTransaction.js.map +1 -0
- package/dist/esm/client/createClient.d.ts +7 -0
- package/dist/esm/client/createClient.d.ts.map +1 -0
- package/dist/esm/client/createClient.js +69 -0
- package/dist/esm/client/createClient.js.map +1 -0
- package/dist/esm/client/getClientStorage.d.ts +14 -0
- package/dist/esm/client/getClientStorage.d.ts.map +1 -0
- package/dist/esm/client/getClientStorage.js +47 -0
- package/dist/esm/client/getClientStorage.js.map +1 -0
- package/dist/esm/core/BaseStepExecutionTask.d.ts +10 -0
- package/dist/esm/core/BaseStepExecutionTask.d.ts.map +1 -0
- package/dist/esm/core/BaseStepExecutionTask.js +10 -0
- package/dist/esm/core/BaseStepExecutionTask.js.map +1 -0
- package/dist/esm/core/BaseStepExecutor.d.ts +24 -0
- package/dist/esm/core/BaseStepExecutor.d.ts.map +1 -0
- package/dist/esm/core/BaseStepExecutor.js +70 -0
- package/dist/esm/core/BaseStepExecutor.js.map +1 -0
- package/dist/esm/core/StatusManager.d.ts +83 -0
- package/dist/esm/core/StatusManager.d.ts.map +1 -0
- package/dist/esm/core/StatusManager.js +159 -0
- package/dist/esm/core/StatusManager.js.map +1 -0
- package/dist/esm/core/TaskPipeline.d.ts +12 -0
- package/dist/esm/core/TaskPipeline.d.ts.map +1 -0
- package/dist/esm/core/TaskPipeline.js +20 -0
- package/dist/esm/core/TaskPipeline.js.map +1 -0
- package/dist/esm/core/actionMessages.d.ts +9 -0
- package/dist/esm/core/actionMessages.d.ts.map +1 -0
- package/dist/esm/core/actionMessages.js +79 -0
- package/dist/esm/core/actionMessages.js.map +1 -0
- package/dist/esm/core/execution.d.ts +48 -0
- package/dist/esm/core/execution.d.ts.map +1 -0
- package/dist/esm/core/execution.js +141 -0
- package/dist/esm/core/execution.js.map +1 -0
- package/dist/esm/core/executionState.d.ts +21 -0
- package/dist/esm/core/executionState.d.ts.map +1 -0
- package/dist/esm/core/executionState.js +28 -0
- package/dist/esm/core/executionState.js.map +1 -0
- package/dist/esm/core/prepareRestart.d.ts +7 -0
- package/dist/esm/core/prepareRestart.d.ts.map +1 -0
- package/dist/esm/core/prepareRestart.js +20 -0
- package/dist/esm/core/prepareRestart.js.map +1 -0
- package/dist/esm/core/storage.d.ts +21 -0
- package/dist/esm/core/storage.d.ts.map +1 -0
- package/dist/esm/core/storage.js +32 -0
- package/dist/esm/core/storage.js.map +1 -0
- package/dist/esm/core/tasks/CheckBalanceTask.d.ts +19 -0
- package/dist/esm/core/tasks/CheckBalanceTask.d.ts.map +1 -0
- package/dist/esm/core/tasks/CheckBalanceTask.js +34 -0
- package/dist/esm/core/tasks/CheckBalanceTask.js.map +1 -0
- package/dist/esm/core/tasks/PrepareTransactionTask.d.ts +10 -0
- package/dist/esm/core/tasks/PrepareTransactionTask.d.ts.map +1 -0
- package/dist/esm/core/tasks/PrepareTransactionTask.js +29 -0
- package/dist/esm/core/tasks/PrepareTransactionTask.js.map +1 -0
- package/dist/esm/core/tasks/WaitForTransactionStatusTask.d.ts +13 -0
- package/dist/esm/core/tasks/WaitForTransactionStatusTask.d.ts.map +1 -0
- package/dist/esm/core/tasks/WaitForTransactionStatusTask.js +61 -0
- package/dist/esm/core/tasks/WaitForTransactionStatusTask.js.map +1 -0
- package/dist/esm/core/tasks/helpers/checkBalance.d.ts +30 -0
- package/dist/esm/core/tasks/helpers/checkBalance.d.ts.map +1 -0
- package/dist/esm/core/tasks/helpers/checkBalance.js +107 -0
- package/dist/esm/core/tasks/helpers/checkBalance.js.map +1 -0
- package/dist/esm/core/tasks/helpers/getTransactionRequestData.d.ts +7 -0
- package/dist/esm/core/tasks/helpers/getTransactionRequestData.d.ts.map +1 -0
- package/dist/esm/core/tasks/helpers/getTransactionRequestData.js +24 -0
- package/dist/esm/core/tasks/helpers/getTransactionRequestData.js.map +1 -0
- package/dist/esm/core/tasks/helpers/stepComparison.d.ts +21 -0
- package/dist/esm/core/tasks/helpers/stepComparison.d.ts.map +1 -0
- package/dist/esm/core/tasks/helpers/stepComparison.js +31 -0
- package/dist/esm/core/tasks/helpers/stepComparison.js.map +1 -0
- package/dist/esm/core/tasks/helpers/waitForTransactionStatus.d.ts +9 -0
- package/dist/esm/core/tasks/helpers/waitForTransactionStatus.d.ts.map +1 -0
- package/dist/esm/core/tasks/helpers/waitForTransactionStatus.js +47 -0
- package/dist/esm/core/tasks/helpers/waitForTransactionStatus.js.map +1 -0
- package/dist/esm/core/utils.d.ts +17 -0
- package/dist/esm/core/utils.d.ts.map +1 -0
- package/dist/esm/core/utils.js +40 -0
- package/dist/esm/core/utils.js.map +1 -0
- package/dist/esm/errors/SDKError.d.ts +17 -0
- package/dist/esm/errors/SDKError.d.ts.map +1 -0
- package/dist/esm/errors/SDKError.js +23 -0
- package/dist/esm/errors/SDKError.js.map +1 -0
- package/dist/esm/errors/baseError.d.ts +11 -0
- package/dist/esm/errors/baseError.d.ts.map +1 -0
- package/dist/esm/errors/baseError.js +18 -0
- package/dist/esm/errors/baseError.js.map +1 -0
- package/dist/esm/errors/constants.d.ts +55 -0
- package/dist/esm/errors/constants.d.ts.map +1 -0
- package/dist/esm/errors/constants.js +58 -0
- package/dist/esm/errors/constants.js.map +1 -0
- package/dist/esm/errors/errors.d.ts +38 -0
- package/dist/esm/errors/errors.d.ts.map +1 -0
- package/dist/esm/errors/errors.js +54 -0
- package/dist/esm/errors/errors.js.map +1 -0
- package/dist/esm/errors/httpError.d.ts +24 -0
- package/dist/esm/errors/httpError.d.ts.map +1 -0
- package/dist/esm/errors/httpError.js +69 -0
- package/dist/esm/errors/httpError.js.map +1 -0
- package/dist/esm/errors/utils/baseErrorRootCause.d.ts +8 -0
- package/dist/esm/errors/utils/baseErrorRootCause.d.ts.map +1 -0
- package/dist/esm/errors/utils/baseErrorRootCause.js +16 -0
- package/dist/esm/errors/utils/baseErrorRootCause.js.map +1 -0
- package/dist/esm/errors/utils/rootCause.d.ts +5 -0
- package/dist/esm/errors/utils/rootCause.d.ts.map +1 -0
- package/dist/esm/errors/utils/rootCause.js +10 -0
- package/dist/esm/errors/utils/rootCause.js.map +1 -0
- package/dist/esm/index.d.ts +55 -0
- package/dist/esm/index.js +53 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types/actions.d.ts +14 -0
- package/dist/esm/types/actions.d.ts.map +1 -0
- package/dist/esm/types/actions.js +1 -0
- package/dist/esm/types/core.d.ts +184 -0
- package/dist/esm/types/core.d.ts.map +1 -0
- package/dist/esm/types/core.js +1 -0
- package/dist/esm/types/execution.d.ts +28 -0
- package/dist/esm/types/execution.d.ts.map +1 -0
- package/dist/esm/types/execution.js +1 -0
- package/dist/esm/types/request.d.ts +7 -0
- package/dist/esm/types/request.d.ts.map +1 -0
- package/dist/esm/types/request.js +1 -0
- package/dist/esm/utils/checkPackageUpdates.d.ts +5 -0
- package/dist/esm/utils/checkPackageUpdates.d.ts.map +1 -0
- package/dist/esm/utils/checkPackageUpdates.js +14 -0
- package/dist/esm/utils/checkPackageUpdates.js.map +1 -0
- package/dist/esm/utils/convertQuoteToRoute.d.ts +22 -0
- package/dist/esm/utils/convertQuoteToRoute.d.ts.map +1 -0
- package/dist/esm/utils/convertQuoteToRoute.js +86 -0
- package/dist/esm/utils/convertQuoteToRoute.js.map +1 -0
- package/dist/esm/utils/decode.d.ts +5 -0
- package/dist/esm/utils/decode.d.ts.map +1 -0
- package/dist/esm/utils/decode.js +8 -0
- package/dist/esm/utils/decode.js.map +1 -0
- package/dist/esm/utils/fetchTxErrorDetails.d.ts +5 -0
- package/dist/esm/utils/fetchTxErrorDetails.d.ts.map +1 -0
- package/dist/esm/utils/fetchTxErrorDetails.js +12 -0
- package/dist/esm/utils/fetchTxErrorDetails.js.map +1 -0
- package/dist/esm/utils/formatUnits.d.ts +8 -0
- package/dist/esm/utils/formatUnits.d.ts.map +1 -0
- package/dist/esm/utils/formatUnits.js +17 -0
- package/dist/esm/utils/formatUnits.js.map +1 -0
- package/dist/esm/utils/getTransactionMessage.d.ts +8 -0
- package/dist/esm/utils/getTransactionMessage.d.ts.map +1 -0
- package/dist/esm/utils/getTransactionMessage.js +11 -0
- package/dist/esm/utils/getTransactionMessage.js.map +1 -0
- package/dist/esm/utils/isHex.d.ts +10 -0
- package/dist/esm/utils/isHex.d.ts.map +1 -0
- package/dist/esm/utils/isHex.js +10 -0
- package/dist/esm/utils/isHex.js.map +1 -0
- package/dist/esm/utils/isRoutesRequest.d.ts +7 -0
- package/dist/esm/utils/isRoutesRequest.d.ts.map +1 -0
- package/dist/esm/utils/isRoutesRequest.js +10 -0
- package/dist/esm/utils/isRoutesRequest.js.map +1 -0
- package/dist/esm/utils/isStep.d.ts +7 -0
- package/dist/esm/utils/isStep.d.ts.map +1 -0
- package/dist/esm/utils/isStep.js +22 -0
- package/dist/esm/utils/isStep.js.map +1 -0
- package/dist/esm/utils/isToken.d.ts +7 -0
- package/dist/esm/utils/isToken.d.ts.map +1 -0
- package/dist/esm/utils/isToken.js +9 -0
- package/dist/esm/utils/isToken.js.map +1 -0
- package/dist/esm/utils/parseUnits.d.ts +8 -0
- package/dist/esm/utils/parseUnits.d.ts.map +1 -0
- package/dist/esm/utils/parseUnits.js +34 -0
- package/dist/esm/utils/parseUnits.js.map +1 -0
- package/dist/esm/utils/request.d.ts +11 -0
- package/dist/esm/utils/request.d.ts.map +1 -0
- package/dist/esm/utils/request.js +54 -0
- package/dist/esm/utils/request.js.map +1 -0
- package/dist/esm/utils/sleep.d.ts +5 -0
- package/dist/esm/utils/sleep.d.ts.map +1 -0
- package/dist/esm/utils/sleep.js +10 -0
- package/dist/esm/utils/sleep.js.map +1 -0
- package/dist/esm/utils/waitForResult.d.ts +14 -0
- package/dist/esm/utils/waitForResult.d.ts.map +1 -0
- package/dist/esm/utils/waitForResult.js +35 -0
- package/dist/esm/utils/waitForResult.js.map +1 -0
- package/dist/esm/utils/withDedupe.d.ts +23 -0
- package/dist/esm/utils/withDedupe.d.ts.map +1 -0
- package/dist/esm/utils/withDedupe.js +32 -0
- package/dist/esm/utils/withDedupe.js.map +1 -0
- package/dist/esm/utils/withTimeout.d.ts +26 -0
- package/dist/esm/utils/withTimeout.d.ts.map +1 -0
- package/dist/esm/utils/withTimeout.js +34 -0
- package/dist/esm/utils/withTimeout.js.map +1 -0
- package/dist/esm/version.d.ts +6 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +7 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +75 -0
- package/src/actions/getChains.ts +55 -0
- package/src/actions/getConnections.ts +55 -0
- package/src/actions/getContractCallsQuote.ts +81 -0
- package/src/actions/getGasRecommendation.ts +47 -0
- package/src/actions/getNameServiceAddress.ts +42 -0
- package/src/actions/getQuote.ts +105 -0
- package/src/actions/getRelayedTransactionStatus.ts +67 -0
- package/src/actions/getRelayerQuote.ts +86 -0
- package/src/actions/getRoutes.ts +43 -0
- package/src/actions/getStatus.ts +41 -0
- package/src/actions/getStepTransaction.ts +52 -0
- package/src/actions/getToken.ts +47 -0
- package/src/actions/getTokenBalance.ts +21 -0
- package/src/actions/getTokenBalances.ts +47 -0
- package/src/actions/getTokenBalancesByChain.ts +76 -0
- package/src/actions/getTokens.ts +57 -0
- package/src/actions/getTools.ts +34 -0
- package/src/actions/getTransactionHistory.ts +54 -0
- package/src/actions/getWalletBalances.ts +36 -0
- package/src/actions/index.ts +347 -0
- package/src/actions/patchContractCalls.ts +30 -0
- package/src/actions/relayTransaction.ts +74 -0
- package/src/client/createClient.ts +100 -0
- package/src/client/getClientStorage.ts +65 -0
- package/src/core/BaseStepExecutionTask.ts +9 -0
- package/src/core/BaseStepExecutor.ts +129 -0
- package/src/core/StatusManager.ts +245 -0
- package/src/core/TaskPipeline.ts +28 -0
- package/src/core/actionMessages.ts +103 -0
- package/src/core/execution.ts +243 -0
- package/src/core/executionState.ts +48 -0
- package/src/core/prepareRestart.ts +28 -0
- package/src/core/storage.ts +42 -0
- package/src/core/tasks/CheckBalanceTask.ts +46 -0
- package/src/core/tasks/PrepareTransactionTask.ts +62 -0
- package/src/core/tasks/WaitForTransactionStatusTask.ts +114 -0
- package/src/core/tasks/helpers/checkBalance.ts +218 -0
- package/src/core/tasks/helpers/getTransactionRequestData.ts +47 -0
- package/src/core/tasks/helpers/stepComparison.ts +50 -0
- package/src/core/tasks/helpers/waitForTransactionStatus.ts +76 -0
- package/src/core/utils.ts +59 -0
- package/src/errors/SDKError.ts +26 -0
- package/src/errors/baseError.ts +22 -0
- package/src/errors/constants.ts +54 -0
- package/src/errors/errors.ts +68 -0
- package/src/errors/httpError.ts +92 -0
- package/src/errors/utils/baseErrorRootCause.ts +18 -0
- package/src/errors/utils/rootCause.ts +7 -0
- package/src/index.ts +122 -0
- package/src/types/actions.ts +16 -0
- package/src/types/core.ts +264 -0
- package/src/types/execution.ts +32 -0
- package/src/types/request.ts +3 -0
- package/src/utils/checkPackageUpdates.ts +22 -0
- package/src/utils/convertQuoteToRoute.ts +154 -0
- package/src/utils/decode.ts +13 -0
- package/src/utils/fetchTxErrorDetails.ts +15 -0
- package/src/utils/formatUnits.ts +22 -0
- package/src/utils/getTransactionMessage.ts +17 -0
- package/src/utils/isHex.ts +14 -0
- package/src/utils/isRoutesRequest.ts +31 -0
- package/src/utils/isStep.ts +41 -0
- package/src/utils/isToken.ts +11 -0
- package/src/utils/parseUnits.ts +50 -0
- package/src/utils/request.ts +100 -0
- package/src/utils/sleep.ts +5 -0
- package/src/utils/waitForResult.ts +45 -0
- package/src/utils/withDedupe.ts +45 -0
- package/src/utils/withTimeout.ts +50 -0
- package/src/version.ts +2 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { StatusMessage, Substatus } from '@lifi/types'
|
|
2
|
+
import type {
|
|
3
|
+
ExecutionActionStatus,
|
|
4
|
+
ExecutionActionType,
|
|
5
|
+
} from '../types/core.js'
|
|
6
|
+
|
|
7
|
+
const actionMessages: Record<
|
|
8
|
+
ExecutionActionType,
|
|
9
|
+
Partial<Record<ExecutionActionStatus, string>>
|
|
10
|
+
> = {
|
|
11
|
+
CHECK_ALLOWANCE: {
|
|
12
|
+
STARTED: 'Checking token allowance',
|
|
13
|
+
PENDING: 'Waiting for token allowance check',
|
|
14
|
+
DONE: 'Token allowance checked',
|
|
15
|
+
},
|
|
16
|
+
RESET_ALLOWANCE: {
|
|
17
|
+
STARTED: 'Resetting token allowance',
|
|
18
|
+
RESET_REQUIRED: 'Resetting token allowance',
|
|
19
|
+
PENDING: 'Waiting for token allowance reset',
|
|
20
|
+
DONE: 'Token allowance reset',
|
|
21
|
+
},
|
|
22
|
+
SET_ALLOWANCE: {
|
|
23
|
+
STARTED: 'Setting token allowance',
|
|
24
|
+
ACTION_REQUIRED: 'Set token allowance',
|
|
25
|
+
PENDING: 'Waiting for token allowance',
|
|
26
|
+
DONE: 'Token allowance set',
|
|
27
|
+
},
|
|
28
|
+
SWAP: {
|
|
29
|
+
STARTED: 'Preparing swap transaction',
|
|
30
|
+
ACTION_REQUIRED: 'Sign swap transaction',
|
|
31
|
+
MESSAGE_REQUIRED: 'Sign swap message',
|
|
32
|
+
PENDING: 'Waiting for swap transaction',
|
|
33
|
+
DONE: 'Swap completed',
|
|
34
|
+
},
|
|
35
|
+
CROSS_CHAIN: {
|
|
36
|
+
STARTED: 'Preparing bridge transaction',
|
|
37
|
+
ACTION_REQUIRED: 'Sign bridge transaction',
|
|
38
|
+
MESSAGE_REQUIRED: 'Sign bridge message',
|
|
39
|
+
PENDING: 'Waiting for bridge transaction',
|
|
40
|
+
DONE: 'Bridge transaction confirmed',
|
|
41
|
+
},
|
|
42
|
+
RECEIVING_CHAIN: {
|
|
43
|
+
STARTED: 'Waiting for destination chain',
|
|
44
|
+
PENDING: 'Waiting for destination chain',
|
|
45
|
+
DONE: 'Bridge completed',
|
|
46
|
+
},
|
|
47
|
+
PERMIT: {
|
|
48
|
+
STARTED: 'Preparing transaction',
|
|
49
|
+
ACTION_REQUIRED: 'Sign permit message',
|
|
50
|
+
PENDING: 'Waiting for permit message',
|
|
51
|
+
DONE: 'Permit message signed',
|
|
52
|
+
},
|
|
53
|
+
NATIVE_PERMIT: {
|
|
54
|
+
STARTED: 'Preparing transaction',
|
|
55
|
+
ACTION_REQUIRED: 'Sign permit message',
|
|
56
|
+
PENDING: 'Waiting for permit message',
|
|
57
|
+
DONE: 'Permit message signed',
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const substatusMessages: Record<
|
|
62
|
+
StatusMessage,
|
|
63
|
+
Partial<Record<Substatus, string>>
|
|
64
|
+
> = {
|
|
65
|
+
PENDING: {
|
|
66
|
+
BRIDGE_NOT_AVAILABLE: 'Bridge communication is temporarily unavailable.',
|
|
67
|
+
CHAIN_NOT_AVAILABLE: 'RPC communication is temporarily unavailable.',
|
|
68
|
+
UNKNOWN_ERROR:
|
|
69
|
+
'An unexpected error occurred. Please seek assistance in the LI.FI discord server.',
|
|
70
|
+
WAIT_SOURCE_CONFIRMATIONS:
|
|
71
|
+
'The bridge deposit has been received. The bridge is waiting for more confirmations to start the off-chain logic.',
|
|
72
|
+
WAIT_DESTINATION_TRANSACTION:
|
|
73
|
+
'The bridge off-chain logic is being executed. Wait for the transaction to appear on the destination chain.',
|
|
74
|
+
},
|
|
75
|
+
DONE: {
|
|
76
|
+
PARTIAL:
|
|
77
|
+
'Some of the received tokens are not the requested destination tokens.',
|
|
78
|
+
REFUNDED: 'The tokens were refunded to the sender address.',
|
|
79
|
+
COMPLETED: 'The transfer is complete.',
|
|
80
|
+
},
|
|
81
|
+
FAILED: {},
|
|
82
|
+
INVALID: {},
|
|
83
|
+
NOT_FOUND: {},
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function getActionMessage(
|
|
87
|
+
type: ExecutionActionType,
|
|
88
|
+
status: ExecutionActionStatus
|
|
89
|
+
): string | undefined {
|
|
90
|
+
const actionMessage = actionMessages[type][status]
|
|
91
|
+
return actionMessage
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function getSubstatusMessage(
|
|
95
|
+
status: StatusMessage,
|
|
96
|
+
substatus?: Substatus
|
|
97
|
+
): string | undefined {
|
|
98
|
+
if (!substatus) {
|
|
99
|
+
return
|
|
100
|
+
}
|
|
101
|
+
const message = substatusMessages[status][substatus]
|
|
102
|
+
return message
|
|
103
|
+
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import type { Route } from '@lifi/types'
|
|
2
|
+
import { LiFiErrorCode } from '../errors/constants.js'
|
|
3
|
+
import { ExecuteStepRetryError, ProviderError } from '../errors/errors.js'
|
|
4
|
+
import type {
|
|
5
|
+
ExecutionOptions,
|
|
6
|
+
LiFiStepExtended,
|
|
7
|
+
RouteExtended,
|
|
8
|
+
SDKClient,
|
|
9
|
+
SDKProvider,
|
|
10
|
+
} from '../types/core.js'
|
|
11
|
+
import { executionState } from './executionState.js'
|
|
12
|
+
import { prepareRestart } from './prepareRestart.js'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Execute a route.
|
|
16
|
+
* @param client - The SDK client.
|
|
17
|
+
* @param route - The route that should be executed. Cannot be an active route.
|
|
18
|
+
* @param executionOptions - An object containing settings and callbacks.
|
|
19
|
+
* @returns The executed route.
|
|
20
|
+
* @throws {LiFiError} Throws a LiFiError if the execution fails.
|
|
21
|
+
*/
|
|
22
|
+
export const executeRoute = async (
|
|
23
|
+
client: SDKClient,
|
|
24
|
+
route: Route,
|
|
25
|
+
executionOptions?: ExecutionOptions
|
|
26
|
+
): Promise<RouteExtended> => {
|
|
27
|
+
// Deep clone to prevent side effects
|
|
28
|
+
const clonedRoute = structuredClone<Route>(route)
|
|
29
|
+
|
|
30
|
+
let executionPromise = executionState.get(clonedRoute.id)?.promise
|
|
31
|
+
// Check if route is already running
|
|
32
|
+
if (executionPromise) {
|
|
33
|
+
return executionPromise
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
executionState.create({ route: clonedRoute, executionOptions })
|
|
37
|
+
executionPromise = executeSteps(client, clonedRoute)
|
|
38
|
+
executionState.update({
|
|
39
|
+
route: clonedRoute,
|
|
40
|
+
promise: executionPromise,
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
return executionPromise
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Resume the execution of a route that has been stopped or had an error while executing.
|
|
48
|
+
* @param client - The SDK client.
|
|
49
|
+
* @param route - The route that is to be executed. Cannot be an active route.
|
|
50
|
+
* @param executionOptions - An object containing settings and callbacks.
|
|
51
|
+
* @returns The executed route.
|
|
52
|
+
* @throws {LiFiError} Throws a LiFiError if the execution fails.
|
|
53
|
+
*/
|
|
54
|
+
export const resumeRoute = async (
|
|
55
|
+
client: SDKClient,
|
|
56
|
+
route: Route,
|
|
57
|
+
executionOptions?: ExecutionOptions
|
|
58
|
+
): Promise<RouteExtended> => {
|
|
59
|
+
const execution = executionState.get(route.id)
|
|
60
|
+
|
|
61
|
+
if (execution) {
|
|
62
|
+
const executionHalted = execution.executors.some(
|
|
63
|
+
(executor) => !executor.allowExecution
|
|
64
|
+
)
|
|
65
|
+
if (!executionHalted) {
|
|
66
|
+
// Check if we want to resume route execution in the background
|
|
67
|
+
updateRouteExecution(route, {
|
|
68
|
+
executeInBackground: executionOptions?.executeInBackground,
|
|
69
|
+
})
|
|
70
|
+
if (!execution.promise) {
|
|
71
|
+
// We should never reach this point if we do clean-up properly
|
|
72
|
+
throw new Error('Route execution promise not found.')
|
|
73
|
+
}
|
|
74
|
+
return execution.promise
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
prepareRestart(route)
|
|
79
|
+
|
|
80
|
+
return executeRoute(client, route, executionOptions)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const executeSteps = async (
|
|
84
|
+
client: SDKClient,
|
|
85
|
+
route: RouteExtended
|
|
86
|
+
): Promise<RouteExtended> => {
|
|
87
|
+
// Loop over steps and execute them
|
|
88
|
+
for (let index = 0; index < route.steps.length; index++) {
|
|
89
|
+
const execution = executionState.get(route.id)
|
|
90
|
+
// Check if execution has stopped in the meantime
|
|
91
|
+
if (!execution) {
|
|
92
|
+
break
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const step = route.steps[index]
|
|
96
|
+
const previousStep = route.steps[index - 1]
|
|
97
|
+
// Check if the step is already done
|
|
98
|
+
if (step.execution?.status === 'DONE') {
|
|
99
|
+
continue
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Update step fromAmount using output of the previous step execution. In the future this should be handled by calling `updateRoute`
|
|
103
|
+
if (previousStep?.execution?.toAmount) {
|
|
104
|
+
step.action.fromAmount = previousStep.execution.toAmount
|
|
105
|
+
if (step.includedSteps?.length) {
|
|
106
|
+
step.includedSteps[0].action.fromAmount =
|
|
107
|
+
previousStep.execution.toAmount
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const fromAddress = step.action.fromAddress
|
|
113
|
+
if (!fromAddress) {
|
|
114
|
+
throw new Error('Action fromAddress is not specified.')
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const provider = client.providers.find((provider: SDKProvider) =>
|
|
118
|
+
provider.isAddress(fromAddress)
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
if (!provider) {
|
|
122
|
+
throw new ProviderError(
|
|
123
|
+
LiFiErrorCode.ProviderUnavailable,
|
|
124
|
+
'SDK Execution Provider not found.'
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const stepExecutor = await provider.getStepExecutor({
|
|
129
|
+
routeId: route.id,
|
|
130
|
+
executionOptions: execution.executionOptions,
|
|
131
|
+
})
|
|
132
|
+
execution.executors.push(stepExecutor)
|
|
133
|
+
|
|
134
|
+
// Check if we want to execute this step in the background
|
|
135
|
+
if (execution.executionOptions) {
|
|
136
|
+
updateRouteExecution(route, execution.executionOptions)
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
let executedStep: LiFiStepExtended
|
|
140
|
+
try {
|
|
141
|
+
executedStep = await stepExecutor.executeStep(client, step)
|
|
142
|
+
} catch (e) {
|
|
143
|
+
if (e instanceof ExecuteStepRetryError) {
|
|
144
|
+
step.execution = undefined
|
|
145
|
+
executedStep = await stepExecutor.executeStep(
|
|
146
|
+
client,
|
|
147
|
+
step,
|
|
148
|
+
e.retryParams
|
|
149
|
+
)
|
|
150
|
+
} else {
|
|
151
|
+
throw e
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// We may reach this point if user interaction isn't allowed. We want to stop execution until we resume it
|
|
156
|
+
if (executedStep.execution?.status !== 'DONE') {
|
|
157
|
+
stopRouteExecution(route)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Execution stopped during the current step, we don't want to continue to the next step so we return already
|
|
161
|
+
if (!stepExecutor.allowExecution) {
|
|
162
|
+
return route
|
|
163
|
+
}
|
|
164
|
+
} catch (e) {
|
|
165
|
+
stopRouteExecution(route)
|
|
166
|
+
throw e
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Clean up after the execution
|
|
171
|
+
executionState.delete(route.id)
|
|
172
|
+
return route
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Updates route execution to background or foreground state.
|
|
177
|
+
* @param route - A route that is currently in execution.
|
|
178
|
+
* @param options - An object with execution settings.
|
|
179
|
+
*/
|
|
180
|
+
export const updateRouteExecution = (
|
|
181
|
+
route: Route,
|
|
182
|
+
options: ExecutionOptions
|
|
183
|
+
): void => {
|
|
184
|
+
const execution = executionState.get(route.id)
|
|
185
|
+
if (!execution) {
|
|
186
|
+
return
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if ('executeInBackground' in options) {
|
|
190
|
+
for (const executor of execution.executors) {
|
|
191
|
+
executor.setInteraction({
|
|
192
|
+
allowInteraction: !options?.executeInBackground,
|
|
193
|
+
allowUpdates: true,
|
|
194
|
+
})
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Update active route settings so we know what the current state of execution is
|
|
198
|
+
execution.executionOptions = {
|
|
199
|
+
...execution.executionOptions,
|
|
200
|
+
...options,
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Stops the execution of an active route.
|
|
206
|
+
* @param route - A route that is currently in execution.
|
|
207
|
+
* @returns The stopped route.
|
|
208
|
+
*/
|
|
209
|
+
export const stopRouteExecution = (route: Route): Route => {
|
|
210
|
+
const execution = executionState.get(route.id)
|
|
211
|
+
if (!execution) {
|
|
212
|
+
return route
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
for (const executor of execution.executors) {
|
|
216
|
+
executor.setInteraction({
|
|
217
|
+
allowInteraction: false,
|
|
218
|
+
allowUpdates: false,
|
|
219
|
+
allowExecution: false,
|
|
220
|
+
})
|
|
221
|
+
}
|
|
222
|
+
executionState.delete(route.id)
|
|
223
|
+
return execution.route
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Get the list of active routes.
|
|
228
|
+
* @returns A list of routes.
|
|
229
|
+
*/
|
|
230
|
+
export const getActiveRoutes = (): RouteExtended[] => {
|
|
231
|
+
return Object.values(executionState.state)
|
|
232
|
+
.map((dict) => dict?.route)
|
|
233
|
+
.filter(Boolean) as RouteExtended[]
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Return the current route information for given route. The route has to be active.
|
|
238
|
+
* @param routeId - A route id.
|
|
239
|
+
* @returns The updated route.
|
|
240
|
+
*/
|
|
241
|
+
export const getActiveRoute = (routeId: string): RouteExtended | undefined => {
|
|
242
|
+
return executionState.get(routeId)?.route
|
|
243
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ExecutionOptions,
|
|
3
|
+
RouteExtended,
|
|
4
|
+
StepExecutor,
|
|
5
|
+
} from '../types/core.js'
|
|
6
|
+
|
|
7
|
+
interface ExecutionData {
|
|
8
|
+
route: RouteExtended
|
|
9
|
+
executors: StepExecutor[]
|
|
10
|
+
executionOptions?: ExecutionOptions
|
|
11
|
+
promise?: Promise<RouteExtended>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type ExecutionStateParams = Omit<ExecutionData, 'executors'>
|
|
15
|
+
|
|
16
|
+
interface ExecutionState {
|
|
17
|
+
state: Partial<Record<string, ExecutionData>>
|
|
18
|
+
get(routeId: string): ExecutionData | undefined
|
|
19
|
+
create(params: ExecutionStateParams): ExecutionData
|
|
20
|
+
update(params: ExecutionStateParams): void
|
|
21
|
+
delete(routeId: string): void
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const executionState: ExecutionState = {
|
|
25
|
+
state: {},
|
|
26
|
+
get(routeId: string) {
|
|
27
|
+
return this.state[routeId]
|
|
28
|
+
},
|
|
29
|
+
create(params) {
|
|
30
|
+
this.state[params.route.id] = {
|
|
31
|
+
...this.state[params.route.id],
|
|
32
|
+
...params,
|
|
33
|
+
executors: this.state[params.route.id]?.executors ?? [],
|
|
34
|
+
}
|
|
35
|
+
return this.state[params.route.id]!
|
|
36
|
+
},
|
|
37
|
+
update(state) {
|
|
38
|
+
if (this.state[state.route.id]) {
|
|
39
|
+
this.state[state.route.id] = {
|
|
40
|
+
...this.state[state.route.id]!,
|
|
41
|
+
...state,
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
delete(routeId) {
|
|
46
|
+
delete this.state[routeId]
|
|
47
|
+
},
|
|
48
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RouteExtended } from '../types/core.js'
|
|
2
|
+
|
|
3
|
+
export const prepareRestart = (route: RouteExtended): void => {
|
|
4
|
+
for (let index = 0; index < route.steps.length; index++) {
|
|
5
|
+
const step = route.steps[index]
|
|
6
|
+
if (step.execution) {
|
|
7
|
+
// Find the index of the last action that has tx hash, taskId, or signed messages
|
|
8
|
+
const lastValidIndex = step.execution.actions.findLastIndex(
|
|
9
|
+
(action) =>
|
|
10
|
+
['SWAP', 'CROSS_CHAIN', 'RECEIVING_CHAIN'].includes(action.type) &&
|
|
11
|
+
(!!action.txHash || !!action.taskId) &&
|
|
12
|
+
action.status !== 'FAILED'
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
// Keep all actions up to the one with tx hash
|
|
16
|
+
if (lastValidIndex >= 0) {
|
|
17
|
+
step.execution.actions = step.execution.actions.slice(
|
|
18
|
+
0,
|
|
19
|
+
lastValidIndex + 1
|
|
20
|
+
)
|
|
21
|
+
} else {
|
|
22
|
+
// If no tx hash exists, reset the actions array
|
|
23
|
+
step.execution.actions = []
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
step.transactionRequest = undefined
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface SDKStorage {
|
|
2
|
+
get(key: string): string | null | Promise<string | null>
|
|
3
|
+
set(key: string, value: string): void | Promise<void>
|
|
4
|
+
remove(key: string): void | Promise<void>
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export class LocalStorageAdapter implements SDKStorage {
|
|
8
|
+
get(key: string): string | null {
|
|
9
|
+
return window.localStorage.getItem(key)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
set(key: string, value: string): void {
|
|
13
|
+
window.localStorage.setItem(key, value)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
remove(key: string): void {
|
|
17
|
+
window.localStorage.removeItem(key)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class InMemoryStorage implements SDKStorage {
|
|
22
|
+
private store = new Map<string, string>()
|
|
23
|
+
|
|
24
|
+
get(key: string): string | null {
|
|
25
|
+
return this.store.get(key) ?? null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set(key: string, value: string): void {
|
|
29
|
+
this.store.set(key, value)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
remove(key: string): void {
|
|
33
|
+
this.store.delete(key)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function createDefaultStorage(): SDKStorage {
|
|
38
|
+
if (typeof window !== 'undefined' && window.localStorage) {
|
|
39
|
+
return new LocalStorageAdapter()
|
|
40
|
+
}
|
|
41
|
+
return new InMemoryStorage()
|
|
42
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
2
|
+
import { TransactionError } from '../../errors/errors.js'
|
|
3
|
+
import type { StepExecutorContext, TaskResult } from '../../types/execution.js'
|
|
4
|
+
import { BaseStepExecutionTask } from '../BaseStepExecutionTask.js'
|
|
5
|
+
import {
|
|
6
|
+
type CheckBalanceOptions,
|
|
7
|
+
checkBalance,
|
|
8
|
+
} from './helpers/checkBalance.js'
|
|
9
|
+
|
|
10
|
+
export class CheckBalanceTask extends BaseStepExecutionTask {
|
|
11
|
+
/**
|
|
12
|
+
* Per-step options hook for chain-specific subclasses (e.g. skip the
|
|
13
|
+
* gas check for smart-contract wallets or relayed steps). Default `{}`
|
|
14
|
+
* keeps behavior unchanged for every provider that doesn't override.
|
|
15
|
+
* Resolved lazily inside `run()` — pipelines that resume past
|
|
16
|
+
* `CheckBalance` pay no cost.
|
|
17
|
+
*/
|
|
18
|
+
protected getCheckBalanceOptions(
|
|
19
|
+
_context: StepExecutorContext
|
|
20
|
+
): Promise<CheckBalanceOptions> {
|
|
21
|
+
return Promise.resolve({})
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async run(context: StepExecutorContext): Promise<TaskResult> {
|
|
25
|
+
const { client, step, statusManager, isBridgeExecution } = context
|
|
26
|
+
|
|
27
|
+
statusManager.initializeAction({
|
|
28
|
+
step,
|
|
29
|
+
type: isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP',
|
|
30
|
+
chainId: step.action.fromChainId,
|
|
31
|
+
status: 'STARTED',
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const walletAddress = step.action.fromAddress
|
|
35
|
+
if (!walletAddress) {
|
|
36
|
+
throw new TransactionError(
|
|
37
|
+
LiFiErrorCode.InternalError,
|
|
38
|
+
'The wallet address is undefined.'
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const options = await this.getCheckBalanceOptions(context)
|
|
43
|
+
await checkBalance(client, walletAddress, step, options)
|
|
44
|
+
return { status: 'COMPLETED' }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { getStepTransaction } from '../../actions/getStepTransaction.js'
|
|
2
|
+
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
3
|
+
import { TransactionError } from '../../errors/errors.js'
|
|
4
|
+
import type { StepExecutorContext, TaskResult } from '../../types/execution.js'
|
|
5
|
+
import { BaseStepExecutionTask } from '../BaseStepExecutionTask.js'
|
|
6
|
+
import { stepComparison } from './helpers/stepComparison.js'
|
|
7
|
+
|
|
8
|
+
export class PrepareTransactionTask extends BaseStepExecutionTask {
|
|
9
|
+
async run(context: StepExecutorContext): Promise<TaskResult> {
|
|
10
|
+
const {
|
|
11
|
+
client,
|
|
12
|
+
step,
|
|
13
|
+
statusManager,
|
|
14
|
+
allowUserInteraction,
|
|
15
|
+
executionOptions,
|
|
16
|
+
isBridgeExecution,
|
|
17
|
+
} = context
|
|
18
|
+
|
|
19
|
+
const action = statusManager.findAction(
|
|
20
|
+
step,
|
|
21
|
+
isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
if (!action) {
|
|
25
|
+
throw new TransactionError(
|
|
26
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
27
|
+
'Unable to prepare transaction. Action not found.'
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (!step.transactionRequest) {
|
|
32
|
+
const { execution, ...stepBase } = step
|
|
33
|
+
const updatedStep = await getStepTransaction(client, stepBase)
|
|
34
|
+
const comparedStep = await stepComparison(
|
|
35
|
+
statusManager,
|
|
36
|
+
step,
|
|
37
|
+
updatedStep,
|
|
38
|
+
allowUserInteraction,
|
|
39
|
+
executionOptions
|
|
40
|
+
)
|
|
41
|
+
Object.assign(step, {
|
|
42
|
+
...comparedStep,
|
|
43
|
+
execution: step.execution,
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!step.transactionRequest?.data) {
|
|
48
|
+
throw new TransactionError(
|
|
49
|
+
LiFiErrorCode.TransactionUnprepared,
|
|
50
|
+
'Unable to prepare transaction. Transaction request data is not found.'
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
statusManager.updateAction(step, action.type, 'ACTION_REQUIRED')
|
|
55
|
+
|
|
56
|
+
if (!allowUserInteraction) {
|
|
57
|
+
return { status: 'PAUSED' }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return { status: 'COMPLETED' }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { ExtendedTransactionInfo, FullStatusData } from '@lifi/types'
|
|
2
|
+
import { LiFiErrorCode } from '../../errors/constants.js'
|
|
3
|
+
import { TransactionError } from '../../errors/errors.js'
|
|
4
|
+
import type { ExecutionActionType } from '../../types/core.js'
|
|
5
|
+
import type { StepExecutorContext, TaskResult } from '../../types/execution.js'
|
|
6
|
+
import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js'
|
|
7
|
+
import { BaseStepExecutionTask } from '../BaseStepExecutionTask.js'
|
|
8
|
+
import { waitForTransactionStatus } from './helpers/waitForTransactionStatus.js'
|
|
9
|
+
|
|
10
|
+
export class WaitForTransactionStatusTask extends BaseStepExecutionTask {
|
|
11
|
+
readonly actionType: ExecutionActionType
|
|
12
|
+
|
|
13
|
+
constructor(actionType: ExecutionActionType) {
|
|
14
|
+
super()
|
|
15
|
+
this.actionType = actionType
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async run(context: StepExecutorContext): Promise<TaskResult> {
|
|
19
|
+
const {
|
|
20
|
+
client,
|
|
21
|
+
step,
|
|
22
|
+
statusManager,
|
|
23
|
+
pollingIntervalMs,
|
|
24
|
+
toChain,
|
|
25
|
+
isBridgeExecution,
|
|
26
|
+
} = context
|
|
27
|
+
|
|
28
|
+
// At this point, we should have a txHash or taskId
|
|
29
|
+
// taskId is used for custom integrations that don't use the standard transaction hash
|
|
30
|
+
let transactionHash: string | undefined
|
|
31
|
+
try {
|
|
32
|
+
const swapOrBridgeAction = statusManager.findAction(
|
|
33
|
+
step,
|
|
34
|
+
isBridgeExecution ? 'CROSS_CHAIN' : 'SWAP'
|
|
35
|
+
)
|
|
36
|
+
transactionHash = swapOrBridgeAction?.txHash || swapOrBridgeAction?.taskId
|
|
37
|
+
|
|
38
|
+
// Wait for the transaction status on the destination chain
|
|
39
|
+
if (!transactionHash) {
|
|
40
|
+
throw new Error('Transaction hash is undefined.')
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const action = statusManager.initializeAction({
|
|
44
|
+
step,
|
|
45
|
+
type: this.actionType,
|
|
46
|
+
chainId:
|
|
47
|
+
this.actionType === 'RECEIVING_CHAIN'
|
|
48
|
+
? step.action.toChainId
|
|
49
|
+
: step.action.fromChainId,
|
|
50
|
+
status: 'PENDING',
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
const statusResponse = (await waitForTransactionStatus(
|
|
54
|
+
client,
|
|
55
|
+
statusManager,
|
|
56
|
+
transactionHash,
|
|
57
|
+
step,
|
|
58
|
+
action.type,
|
|
59
|
+
pollingIntervalMs
|
|
60
|
+
)) as FullStatusData
|
|
61
|
+
|
|
62
|
+
const statusReceiving =
|
|
63
|
+
statusResponse.receiving as ExtendedTransactionInfo
|
|
64
|
+
|
|
65
|
+
// Update action status
|
|
66
|
+
statusManager.updateAction(step, action.type, 'DONE', {
|
|
67
|
+
chainId: statusReceiving?.chainId || toChain.id,
|
|
68
|
+
substatus: statusResponse.substatus,
|
|
69
|
+
substatusMessage: statusResponse.substatusMessage,
|
|
70
|
+
txHash: statusReceiving?.txHash,
|
|
71
|
+
txLink:
|
|
72
|
+
statusReceiving?.txLink ||
|
|
73
|
+
`${toChain.metamask.blockExplorerUrls[0]}tx/${statusReceiving?.txHash}`,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
// Update execution status
|
|
77
|
+
statusManager.updateExecution(step, {
|
|
78
|
+
status: 'DONE',
|
|
79
|
+
...(statusResponse.sending.amount && {
|
|
80
|
+
fromAmount: statusResponse.sending.amount,
|
|
81
|
+
}),
|
|
82
|
+
...(statusReceiving?.amount && { toAmount: statusReceiving.amount }),
|
|
83
|
+
...(statusReceiving?.token && { toToken: statusReceiving.token }),
|
|
84
|
+
internalTxLink: statusResponse?.lifiExplorerLink,
|
|
85
|
+
externalTxLink: statusResponse?.bridgeExplorerLink,
|
|
86
|
+
gasCosts: [
|
|
87
|
+
{
|
|
88
|
+
amount: statusResponse.sending.gasAmount,
|
|
89
|
+
amountUSD: statusResponse.sending.gasAmountUSD,
|
|
90
|
+
token: statusResponse.sending.gasToken,
|
|
91
|
+
estimate: statusResponse.sending.gasUsed,
|
|
92
|
+
limit: statusResponse.sending.gasUsed,
|
|
93
|
+
price: statusResponse.sending.gasPrice,
|
|
94
|
+
type: 'SEND',
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
return { status: 'COMPLETED' }
|
|
100
|
+
} catch (e: any) {
|
|
101
|
+
const htmlMessage = await getTransactionFailedMessage(
|
|
102
|
+
client,
|
|
103
|
+
step,
|
|
104
|
+
`${toChain.metamask.blockExplorerUrls[0]}tx/${transactionHash}`
|
|
105
|
+
)
|
|
106
|
+
throw new TransactionError(
|
|
107
|
+
LiFiErrorCode.TransactionFailed,
|
|
108
|
+
htmlMessage ??
|
|
109
|
+
'Failed while waiting for status of destination chain transaction.',
|
|
110
|
+
e
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|