@lifi/sdk 2.3.1 → 3.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/LiFi.js +222 -250
- package/dist/cjs/LiFi.js.map +1 -0
- package/dist/cjs/allowance/getAllowance.js +82 -0
- package/dist/cjs/allowance/getAllowance.js.map +1 -0
- package/dist/cjs/allowance/index.js +5 -16
- package/dist/cjs/allowance/index.js.map +1 -0
- package/dist/cjs/allowance/setAllowance.js +71 -0
- package/dist/cjs/allowance/setAllowance.js.map +1 -0
- package/dist/cjs/{types/internal.types.js → allowance/types.js} +1 -0
- package/dist/cjs/allowance/types.js.map +1 -0
- package/dist/cjs/balance/getBalance.js +97 -0
- package/dist/cjs/balance/getBalance.js.map +1 -0
- package/dist/cjs/balance/getTokenBalance.js +7 -10
- package/dist/cjs/balance/getTokenBalance.js.map +1 -0
- package/dist/cjs/balance/index.js +4 -24
- package/dist/cjs/balance/index.js.map +1 -0
- package/dist/cjs/connectors.js +28 -48
- package/dist/cjs/connectors.js.map +1 -0
- package/dist/cjs/constants.js +7 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/execution/BaseStepExecutor.js +54 -0
- package/dist/cjs/execution/BaseStepExecutor.js.map +1 -0
- package/dist/cjs/execution/EVMStepExecutor.js +271 -0
- package/dist/cjs/execution/EVMStepExecutor.js.map +1 -0
- package/dist/cjs/execution/RouteExecutionManager.js +196 -197
- package/dist/cjs/execution/RouteExecutionManager.js.map +1 -0
- package/dist/cjs/execution/StatusManager.js +142 -136
- package/dist/cjs/execution/StatusManager.js.map +1 -0
- package/dist/cjs/execution/StepExecutionManager.js +220 -233
- package/dist/cjs/execution/StepExecutionManager.js.map +1 -0
- package/dist/cjs/execution/checkAllowance.js +76 -0
- package/dist/cjs/execution/checkAllowance.js.map +1 -0
- package/dist/cjs/execution/checkBalance.js +42 -0
- package/dist/cjs/execution/checkBalance.js.map +1 -0
- package/dist/cjs/execution/index.js +4 -15
- package/dist/cjs/execution/index.js.map +1 -0
- package/dist/cjs/execution/multisig.js +13 -17
- package/dist/cjs/execution/multisig.js.map +1 -0
- package/dist/cjs/execution/prepareRestart.js +23 -0
- package/dist/cjs/execution/prepareRestart.js.map +1 -0
- package/dist/cjs/execution/stepComparison.js +5 -17
- package/dist/cjs/execution/stepComparison.js.map +1 -0
- package/dist/cjs/execution/switchChain.js +10 -22
- package/dist/cjs/execution/switchChain.js.map +1 -0
- package/dist/cjs/execution/types.js +3 -0
- package/dist/cjs/execution/types.js.map +1 -0
- package/dist/cjs/execution/utils.js +12 -67
- package/dist/cjs/execution/utils.js.map +1 -0
- package/dist/cjs/execution/waitForReceivingTransaction.js +56 -0
- package/dist/cjs/execution/waitForReceivingTransaction.js.map +1 -0
- package/dist/cjs/helpers.js +12 -58
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.js +16 -22
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/providers/EVM.js +35 -0
- package/dist/cjs/providers/EVM.js.map +1 -0
- package/dist/cjs/providers/Solana.js +38 -0
- package/dist/cjs/providers/Solana.js.map +1 -0
- package/dist/cjs/providers/index.js +5 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/providers/types.js +9 -0
- package/dist/cjs/providers/types.js.map +1 -0
- package/dist/cjs/request.js +10 -13
- package/dist/cjs/request.js.map +1 -0
- package/dist/cjs/services/ApiService.js +70 -86
- package/dist/cjs/services/ApiService.js.map +1 -0
- package/dist/cjs/services/ChainsService.js +19 -9
- package/dist/cjs/services/ChainsService.js.map +1 -0
- package/dist/cjs/services/ConfigService.js +94 -67
- package/dist/cjs/services/ConfigService.js.map +1 -0
- package/dist/cjs/typeguards.js +1 -0
- package/dist/cjs/typeguards.js.map +1 -0
- package/dist/cjs/types/abi.js +46 -0
- package/dist/cjs/types/abi.js.map +1 -0
- package/dist/cjs/types/index.js +4 -20
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/internal.js +3 -0
- package/dist/cjs/types/internal.js.map +1 -0
- package/dist/cjs/utils/errors.js +63 -40
- package/dist/cjs/utils/errors.js.map +1 -0
- package/dist/cjs/utils/getMaxPriorityFeePerGas.js +23 -0
- package/dist/cjs/utils/getMaxPriorityFeePerGas.js.map +1 -0
- package/dist/cjs/utils/index.js +9 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/median.js +16 -0
- package/dist/cjs/utils/median.js.map +1 -0
- package/dist/cjs/utils/parseError.js +55 -92
- package/dist/cjs/utils/parseError.js.map +1 -0
- package/dist/cjs/utils/utils.js +10 -85
- package/dist/cjs/utils/utils.js.map +1 -0
- package/dist/cjs/version.js +2 -1
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/LiFi.js +375 -0
- package/dist/esm/LiFi.js.map +1 -0
- package/dist/esm/allowance/getAllowance.js +79 -0
- package/dist/esm/allowance/getAllowance.js.map +1 -0
- package/dist/esm/allowance/index.js +4 -0
- package/dist/esm/allowance/index.js.map +1 -0
- package/dist/esm/allowance/setAllowance.js +67 -0
- package/dist/esm/allowance/setAllowance.js.map +1 -0
- package/dist/esm/allowance/types.js +2 -0
- package/dist/esm/allowance/types.js.map +1 -0
- package/dist/esm/balance/getBalance.js +93 -0
- package/dist/esm/balance/getBalance.js.map +1 -0
- package/dist/{balance → esm/balance}/getTokenBalance.js +5 -4
- package/dist/esm/balance/getTokenBalance.js.map +1 -0
- package/dist/esm/balance/index.js +3 -0
- package/dist/esm/balance/index.js.map +1 -0
- package/dist/esm/connectors.js +42 -0
- package/dist/esm/connectors.js.map +1 -0
- package/dist/esm/constants.js +7 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/execution/BaseStepExecutor.js +51 -0
- package/dist/esm/execution/BaseStepExecutor.js.map +1 -0
- package/dist/esm/execution/EVMStepExecutor.js +299 -0
- package/dist/esm/execution/EVMStepExecutor.js.map +1 -0
- package/dist/esm/execution/RouteExecutionManager.js +268 -0
- package/dist/esm/execution/RouteExecutionManager.js.map +1 -0
- package/dist/esm/execution/StatusManager.js +216 -0
- package/dist/esm/execution/StatusManager.js.map +1 -0
- package/dist/esm/execution/StepExecutionManager.js +280 -0
- package/dist/esm/execution/StepExecutionManager.js.map +1 -0
- package/dist/esm/execution/checkAllowance.js +74 -0
- package/dist/esm/execution/checkAllowance.js.map +1 -0
- package/dist/esm/execution/checkBalance.js +39 -0
- package/dist/esm/execution/checkBalance.js.map +1 -0
- package/dist/esm/execution/index.js +3 -0
- package/dist/esm/execution/index.js.map +1 -0
- package/dist/esm/execution/multisig.js +26 -0
- package/dist/esm/execution/multisig.js.map +1 -0
- package/dist/esm/execution/prepareRestart.js +64 -0
- package/dist/esm/execution/prepareRestart.js.map +1 -0
- package/dist/{execution → esm/execution}/stepComparison.js +5 -4
- package/dist/esm/execution/stepComparison.js.map +1 -0
- package/dist/{execution → esm/execution}/switchChain.js +19 -12
- package/dist/esm/execution/switchChain.js.map +1 -0
- package/dist/esm/execution/types.js +2 -0
- package/dist/esm/execution/types.js.map +1 -0
- package/dist/esm/execution/utils.js +80 -0
- package/dist/esm/execution/utils.js.map +1 -0
- package/dist/esm/execution/waitForReceivingTransaction.js +52 -0
- package/dist/esm/execution/waitForReceivingTransaction.js.map +1 -0
- package/dist/{helpers.js → esm/helpers.js} +9 -37
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/providers/EVM.js +30 -0
- package/dist/esm/providers/EVM.js.map +1 -0
- package/dist/esm/providers/Solana.js +34 -0
- package/dist/esm/providers/Solana.js.map +1 -0
- package/dist/esm/providers/index.js +2 -0
- package/dist/esm/providers/index.js.map +1 -0
- package/dist/esm/providers/types.js +6 -0
- package/dist/esm/providers/types.js.map +1 -0
- package/dist/{request.js → esm/request.js} +6 -5
- package/dist/esm/request.js.map +1 -0
- package/dist/{services → esm/services}/ApiService.js +29 -26
- package/dist/esm/services/ApiService.js.map +1 -0
- package/dist/{services → esm/services}/ChainsService.js +16 -4
- package/dist/esm/services/ChainsService.js.map +1 -0
- package/dist/esm/services/ConfigService.js +143 -0
- package/dist/esm/services/ConfigService.js.map +1 -0
- package/dist/{typeguards.js → esm/typeguards.js} +1 -0
- package/dist/esm/typeguards.js.map +1 -0
- package/dist/esm/types/abi.js +43 -0
- package/dist/esm/types/abi.js.map +1 -0
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/internal.js +2 -0
- package/dist/esm/types/internal.js.map +1 -0
- package/dist/{utils → esm/utils}/errors.js +61 -35
- package/dist/esm/utils/errors.js.map +1 -0
- package/dist/esm/utils/getMaxPriorityFeePerGas.js +19 -0
- package/dist/esm/utils/getMaxPriorityFeePerGas.js.map +1 -0
- package/dist/esm/utils/index.js +6 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/median.js +12 -0
- package/dist/esm/utils/median.js.map +1 -0
- package/dist/{utils → esm/utils}/parseError.js +45 -41
- package/dist/esm/utils/parseError.js.map +1 -0
- package/dist/esm/utils/utils.js +38 -0
- package/dist/esm/utils/utils.js.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/types/LiFi.d.ts +179 -0
- package/dist/types/LiFi.d.ts.map +1 -0
- package/dist/types/allowance/getAllowance.d.ts +7 -0
- package/dist/types/allowance/getAllowance.d.ts.map +1 -0
- package/dist/types/allowance/index.d.ts +4 -0
- package/dist/types/allowance/index.d.ts.map +1 -0
- package/dist/types/allowance/setAllowance.d.ts +7 -0
- package/dist/types/allowance/setAllowance.d.ts.map +1 -0
- package/dist/types/allowance/types.d.ts +28 -0
- package/dist/types/allowance/types.d.ts.map +1 -0
- package/dist/types/balance/getBalance.d.ts +3 -0
- package/dist/types/balance/getBalance.d.ts.map +1 -0
- package/dist/{balance → types/balance}/getTokenBalance.d.ts +3 -2
- package/dist/types/balance/getTokenBalance.d.ts.map +1 -0
- package/dist/types/balance/index.d.ts +3 -0
- package/dist/types/balance/index.d.ts.map +1 -0
- package/dist/types/connectors.d.ts +9 -0
- package/dist/types/connectors.d.ts.map +1 -0
- package/dist/types/constants.d.ts +7 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/execution/BaseStepExecutor.d.ts +13 -0
- package/dist/types/execution/BaseStepExecutor.d.ts.map +1 -0
- package/dist/types/execution/EVMStepExecutor.d.ts +14 -0
- package/dist/types/execution/EVMStepExecutor.d.ts.map +1 -0
- package/dist/types/execution/RouteExecutionManager.d.ts +61 -0
- package/dist/types/execution/RouteExecutionManager.d.ts.map +1 -0
- package/dist/types/execution/StatusManager.d.ts +69 -0
- package/dist/types/execution/StatusManager.d.ts.map +1 -0
- package/dist/types/execution/StepExecutionManager.d.ts +8 -0
- package/dist/types/execution/StepExecutionManager.d.ts.map +1 -0
- package/dist/types/execution/checkAllowance.d.ts +6 -0
- package/dist/types/execution/checkAllowance.d.ts.map +1 -0
- package/dist/types/execution/checkBalance.d.ts +3 -0
- package/dist/types/execution/checkBalance.d.ts.map +1 -0
- package/dist/types/execution/index.d.ts +3 -0
- package/dist/types/execution/index.d.ts.map +1 -0
- package/dist/types/execution/multisig.d.ts +5 -0
- package/dist/types/execution/multisig.d.ts.map +1 -0
- package/dist/types/execution/prepareRestart.d.ts +3 -0
- package/dist/types/execution/prepareRestart.d.ts.map +1 -0
- package/dist/{execution → types/execution}/stepComparison.d.ts +6 -4
- package/dist/types/execution/stepComparison.d.ts.map +1 -0
- package/dist/types/execution/switchChain.d.ts +23 -0
- package/dist/types/execution/switchChain.d.ts.map +1 -0
- package/dist/types/execution/types.d.ts +83 -0
- package/dist/types/execution/types.d.ts.map +1 -0
- package/dist/types/execution/utils.d.ts +13 -0
- package/dist/types/execution/utils.d.ts.map +1 -0
- package/dist/types/execution/waitForReceivingTransaction.d.ts +4 -0
- package/dist/types/execution/waitForReceivingTransaction.d.ts.map +1 -0
- package/dist/types/helpers.d.ts +19 -0
- package/dist/types/helpers.d.ts.map +1 -0
- package/dist/types/index.d.ts +9 -3
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/providers/EVM.d.ts +11 -0
- package/dist/types/providers/EVM.d.ts.map +1 -0
- package/dist/types/providers/Solana.d.ts +10 -0
- package/dist/types/providers/Solana.d.ts.map +1 -0
- package/dist/types/providers/index.d.ts +2 -0
- package/dist/types/providers/index.d.ts.map +1 -0
- package/dist/types/providers/types.d.ts +13 -0
- package/dist/types/providers/types.d.ts.map +1 -0
- package/dist/{request.d.ts → types/request.d.ts} +1 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/{cjs → types}/services/ApiService.d.ts +5 -5
- package/dist/types/services/ApiService.d.ts.map +1 -0
- package/dist/{services → types/services}/ChainsService.d.ts +3 -2
- package/dist/types/services/ChainsService.d.ts.map +1 -0
- package/dist/{services → types/services}/ConfigService.d.ts +10 -6
- package/dist/types/services/ConfigService.d.ts.map +1 -0
- package/dist/{cjs → types}/typeguards.d.ts +3 -2
- package/dist/types/typeguards.d.ts.map +1 -0
- package/dist/types/types/abi.d.ts +6 -0
- package/dist/types/types/abi.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/internal.d.ts +61 -0
- package/dist/types/types/internal.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/errors.d.ts +16 -14
- package/dist/types/utils/errors.d.ts.map +1 -0
- package/dist/types/utils/getMaxPriorityFeePerGas.d.ts +3 -0
- package/dist/types/utils/getMaxPriorityFeePerGas.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +6 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/median.d.ts +2 -0
- package/dist/types/utils/median.d.ts.map +1 -0
- package/dist/{utils → types/utils}/parseError.d.ts +7 -6
- package/dist/types/utils/parseError.d.ts.map +1 -0
- package/dist/types/utils/utils.d.ts +11 -0
- package/dist/types/utils/utils.d.ts.map +1 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +37 -95
- package/dist/LiFi.d.ts +0 -164
- package/dist/LiFi.js +0 -235
- package/dist/allowance/checkAllowance.d.ts +0 -4
- package/dist/allowance/checkAllowance.js +0 -96
- package/dist/allowance/index.d.ts +0 -2
- package/dist/allowance/index.js +0 -2
- package/dist/allowance/tokenApproval.d.ts +0 -22
- package/dist/allowance/tokenApproval.js +0 -59
- package/dist/allowance/utils.d.ts +0 -14
- package/dist/allowance/utils.js +0 -72
- package/dist/balance/checkBalance.d.ts +0 -3
- package/dist/balance/checkBalance.js +0 -38
- package/dist/balance/index.d.ts +0 -13
- package/dist/balance/index.js +0 -10
- package/dist/balance/utils.d.ts +0 -6
- package/dist/balance/utils.js +0 -143
- package/dist/cjs/LiFi.d.ts +0 -164
- package/dist/cjs/allowance/checkAllowance.d.ts +0 -4
- package/dist/cjs/allowance/checkAllowance.js +0 -103
- package/dist/cjs/allowance/index.d.ts +0 -2
- package/dist/cjs/allowance/tokenApproval.d.ts +0 -22
- package/dist/cjs/allowance/tokenApproval.js +0 -69
- package/dist/cjs/allowance/utils.d.ts +0 -14
- package/dist/cjs/allowance/utils.js +0 -82
- package/dist/cjs/balance/checkBalance.d.ts +0 -3
- package/dist/cjs/balance/checkBalance.js +0 -45
- package/dist/cjs/balance/getTokenBalance.d.ts +0 -8
- package/dist/cjs/balance/index.d.ts +0 -13
- package/dist/cjs/balance/utils.d.ts +0 -6
- package/dist/cjs/balance/utils.js +0 -150
- package/dist/cjs/connectors.d.ts +0 -6
- package/dist/cjs/execution/RouteExecutionManager.d.ts +0 -65
- package/dist/cjs/execution/StatusManager.d.ts +0 -68
- package/dist/cjs/execution/StepExecutionManager.d.ts +0 -7
- package/dist/cjs/execution/StepExecutor.d.ts +0 -15
- package/dist/cjs/execution/StepExecutor.js +0 -62
- package/dist/cjs/execution/index.d.ts +0 -1
- package/dist/cjs/execution/multisig.d.ts +0 -3
- package/dist/cjs/execution/stepComparison.d.ts +0 -14
- package/dist/cjs/execution/switchChain.d.ts +0 -16
- package/dist/cjs/execution/utils.d.ts +0 -6
- package/dist/cjs/helpers.d.ts +0 -28
- package/dist/cjs/index.d.ts +0 -5
- package/dist/cjs/request.d.ts +0 -9
- package/dist/cjs/services/ChainsService.d.ts +0 -11
- package/dist/cjs/services/ConfigService.d.ts +0 -23
- package/dist/cjs/types/ERC20.d.ts +0 -22
- package/dist/cjs/types/ERC20.js +0 -53
- package/dist/cjs/types/index.d.ts +0 -4
- package/dist/cjs/types/internal.types.d.ts +0 -151
- package/dist/cjs/utils/getProvider.d.ts +0 -3
- package/dist/cjs/utils/getProvider.js +0 -11
- package/dist/cjs/utils/multicall.d.ts +0 -10
- package/dist/cjs/utils/multicall.js +0 -68
- package/dist/cjs/utils/multicallAbi.json +0 -313
- package/dist/cjs/utils/parseError.d.ts +0 -37
- package/dist/cjs/utils/preRestart.d.ts +0 -3
- package/dist/cjs/utils/preRestart.js +0 -56
- package/dist/cjs/utils/utils.d.ts +0 -25
- package/dist/cjs/version.d.ts +0 -2
- package/dist/connectors.d.ts +0 -6
- package/dist/connectors.js +0 -57
- package/dist/execution/RouteExecutionManager.d.ts +0 -65
- package/dist/execution/RouteExecutionManager.js +0 -213
- package/dist/execution/StatusManager.d.ts +0 -68
- package/dist/execution/StatusManager.js +0 -168
- package/dist/execution/StepExecutionManager.d.ts +0 -7
- package/dist/execution/StepExecutionManager.js +0 -267
- package/dist/execution/StepExecutor.d.ts +0 -15
- package/dist/execution/StepExecutor.js +0 -58
- package/dist/execution/index.d.ts +0 -1
- package/dist/execution/index.js +0 -1
- package/dist/execution/multisig.d.ts +0 -3
- package/dist/execution/multisig.js +0 -27
- package/dist/execution/switchChain.d.ts +0 -16
- package/dist/execution/utils.d.ts +0 -6
- package/dist/execution/utils.js +0 -122
- package/dist/helpers.d.ts +0 -28
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -6
- package/dist/services/ApiService.d.ts +0 -17
- package/dist/services/ConfigService.js +0 -101
- package/dist/typeguards.d.ts +0 -4
- package/dist/types/ERC20.d.ts +0 -22
- package/dist/types/ERC20.js +0 -50
- package/dist/types/index.js +0 -4
- package/dist/types/internal.types.d.ts +0 -151
- package/dist/types/internal.types.js +0 -1
- package/dist/utils/errors.d.ts +0 -106
- package/dist/utils/getProvider.d.ts +0 -3
- package/dist/utils/getProvider.js +0 -7
- package/dist/utils/multicall.d.ts +0 -10
- package/dist/utils/multicall.js +0 -61
- package/dist/utils/multicallAbi.json +0 -313
- package/dist/utils/preRestart.d.ts +0 -3
- package/dist/utils/preRestart.js +0 -52
- package/dist/utils/utils.d.ts +0 -25
- package/dist/utils/utils.js +0 -99
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -2
package/dist/esm/LiFi.js
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { getTokenAllowance, getTokenAllowanceMulticall, revokeTokenApproval, setTokenAllowance, } from './allowance/index.js';
|
|
2
|
+
import * as balance from './balance/index.js';
|
|
3
|
+
import { getPublicClient } from './connectors.js';
|
|
4
|
+
import { RouteExecutionManager } from './execution/RouteExecutionManager.js';
|
|
5
|
+
import { checkPackageUpdates } from './helpers.js';
|
|
6
|
+
import ApiService from './services/ApiService.js';
|
|
7
|
+
import { ChainsService } from './services/ChainsService.js';
|
|
8
|
+
import { isToken } from './typeguards.js';
|
|
9
|
+
import { ValidationError } from './utils/errors.js';
|
|
10
|
+
import { name, version } from './version.js';
|
|
11
|
+
export class LiFi extends RouteExecutionManager {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super(options);
|
|
14
|
+
Object.defineProperty(this, "chainsService", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: void 0
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Get the current configuration of the SDK
|
|
22
|
+
* @returns - The config object
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(this, "getConfig", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
configurable: true,
|
|
27
|
+
writable: true,
|
|
28
|
+
value: () => {
|
|
29
|
+
return this.configService.getConfig();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Get the SDK configuration after all setup calls are finished
|
|
34
|
+
* @returns - The config object
|
|
35
|
+
*/
|
|
36
|
+
Object.defineProperty(this, "getConfigAsync", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true,
|
|
40
|
+
value: () => {
|
|
41
|
+
return this.configService.getConfigAsync();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Get an instance of a provider for a specific chain
|
|
46
|
+
* @param chainId - Id of the chain the provider is for
|
|
47
|
+
* @returns The public client for the given chain
|
|
48
|
+
*/
|
|
49
|
+
Object.defineProperty(this, "getPublicClient", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
configurable: true,
|
|
52
|
+
writable: true,
|
|
53
|
+
value: (chainId) => {
|
|
54
|
+
return getPublicClient(chainId);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Set a new confuration for the SDK
|
|
59
|
+
* @param configUpdate - An object containing the configuration fields that should be updated.
|
|
60
|
+
* @returns The renewed config object
|
|
61
|
+
*/
|
|
62
|
+
Object.defineProperty(this, "setConfig", {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
configurable: true,
|
|
65
|
+
writable: true,
|
|
66
|
+
value: (configUpdate) => {
|
|
67
|
+
return this.configService.updateConfig(configUpdate);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Get a set of current possibilities based on a request that specifies which chains, exchanges and bridges are preferred or unwanted.
|
|
72
|
+
* @param request - Object defining preferences regarding chain, exchanges and bridges
|
|
73
|
+
* @param options - Request options
|
|
74
|
+
* @returns Object listing current possibilities for any-to-any cross-chain-swaps based on the provided preferences.
|
|
75
|
+
* @throws {LiFiError} Throws a LiFiError if request fails.
|
|
76
|
+
* @deprecated We don't want to support this endpoint anymore in the future. /chains, /tools, /connections, and /tokens should be used instead
|
|
77
|
+
*/
|
|
78
|
+
Object.defineProperty(this, "getPossibilities", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true,
|
|
81
|
+
writable: true,
|
|
82
|
+
value: async (request, options) => {
|
|
83
|
+
return ApiService.getPossibilities(request, options);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* Fetch information about a Token
|
|
88
|
+
* @param chain - Id or key of the chain that contains the token
|
|
89
|
+
* @param token - Address or symbol of the token on the requested chain
|
|
90
|
+
* @param options - Request options
|
|
91
|
+
* @throws {LiFiError} - Throws a LiFiError if request fails
|
|
92
|
+
* @returns Token information
|
|
93
|
+
*/
|
|
94
|
+
Object.defineProperty(this, "getToken", {
|
|
95
|
+
enumerable: true,
|
|
96
|
+
configurable: true,
|
|
97
|
+
writable: true,
|
|
98
|
+
value: async (chain, token, options) => {
|
|
99
|
+
return ApiService.getToken(chain, token, options);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Get a quote for a token transfer
|
|
104
|
+
* @param request - The configuration of the requested quote
|
|
105
|
+
* @param options - Request options
|
|
106
|
+
* @throws {LiFiError} - Throws a LiFiError if request fails
|
|
107
|
+
* @returns Quote for a token transfer
|
|
108
|
+
*/
|
|
109
|
+
Object.defineProperty(this, "getQuote", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
configurable: true,
|
|
112
|
+
writable: true,
|
|
113
|
+
value: async (request, options) => {
|
|
114
|
+
return ApiService.getQuote(request, options);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* Get a quote for a destination contract call
|
|
119
|
+
* @param request - The configuration of the requested destination call
|
|
120
|
+
* @param options - Request options
|
|
121
|
+
* @throws {LiFiError} - Throws a LiFiError if request fails
|
|
122
|
+
* @returns - Returns step.
|
|
123
|
+
*/
|
|
124
|
+
Object.defineProperty(this, "getContractCallQuote", {
|
|
125
|
+
enumerable: true,
|
|
126
|
+
configurable: true,
|
|
127
|
+
writable: true,
|
|
128
|
+
value: async (request, options) => {
|
|
129
|
+
return ApiService.getContractCallQuote(request, options);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* Check the status of a transfer. For cross chain transfers, the "bridge" parameter is required.
|
|
134
|
+
* @param request - Configuration of the requested status
|
|
135
|
+
* @param options - Rrquest options.
|
|
136
|
+
* @throws {LiFiError} - Throws a LiFiError if request fails
|
|
137
|
+
* @returns Returns status response.
|
|
138
|
+
*/
|
|
139
|
+
Object.defineProperty(this, "getStatus", {
|
|
140
|
+
enumerable: true,
|
|
141
|
+
configurable: true,
|
|
142
|
+
writable: true,
|
|
143
|
+
value: async (request, options) => {
|
|
144
|
+
return ApiService.getStatus(request, options);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
/**
|
|
148
|
+
* Get the available tools to bridge and swap tokens.
|
|
149
|
+
* @param request - The configuration of the requested tools
|
|
150
|
+
* @param options - Request options
|
|
151
|
+
* @returns The tools that are available on the requested chains
|
|
152
|
+
*/
|
|
153
|
+
Object.defineProperty(this, "getTools", {
|
|
154
|
+
enumerable: true,
|
|
155
|
+
configurable: true,
|
|
156
|
+
writable: true,
|
|
157
|
+
value: async (request, options) => {
|
|
158
|
+
return ApiService.getTools(request || {}, options);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
/**
|
|
162
|
+
* Get all known tokens.
|
|
163
|
+
* @param request - The configuration of the requested tokens
|
|
164
|
+
* @param options - Request options
|
|
165
|
+
* @returns The tokens that are available on the requested chains
|
|
166
|
+
*/
|
|
167
|
+
Object.defineProperty(this, "getTokens", {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
configurable: true,
|
|
170
|
+
writable: true,
|
|
171
|
+
value: async (request, options) => {
|
|
172
|
+
return ApiService.getTokens(request || {}, options);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
/**
|
|
176
|
+
* Get all available chains
|
|
177
|
+
* @returns A list of all available chains
|
|
178
|
+
* @throws {LiFiError} Throws a LiFiError if request fails.
|
|
179
|
+
*/
|
|
180
|
+
Object.defineProperty(this, "getChains", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
configurable: true,
|
|
183
|
+
writable: true,
|
|
184
|
+
value: async () => {
|
|
185
|
+
return this.chainsService.getChains();
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
/**
|
|
189
|
+
* Get a set of routes for a request that describes a transfer of tokens.
|
|
190
|
+
* @param request - A description of the transfer.
|
|
191
|
+
* @param options - Request options
|
|
192
|
+
* @returns The resulting routes that can be used to realize the described transfer of tokens.
|
|
193
|
+
* @throws {LiFiError} Throws a LiFiError if request fails.
|
|
194
|
+
*/
|
|
195
|
+
Object.defineProperty(this, "getRoutes", {
|
|
196
|
+
enumerable: true,
|
|
197
|
+
configurable: true,
|
|
198
|
+
writable: true,
|
|
199
|
+
value: async (request, options) => {
|
|
200
|
+
return ApiService.getRoutes(request, options);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
/**
|
|
204
|
+
* Get the transaction data for a single step of a route
|
|
205
|
+
* @param step - The step object.
|
|
206
|
+
* @param options - Request options
|
|
207
|
+
* @returns The step populated with the transaction data.
|
|
208
|
+
* @throws {LiFiError} Throws a LiFiError if request fails.
|
|
209
|
+
*/
|
|
210
|
+
Object.defineProperty(this, "getStepTransaction", {
|
|
211
|
+
enumerable: true,
|
|
212
|
+
configurable: true,
|
|
213
|
+
writable: true,
|
|
214
|
+
value: async (step, options) => {
|
|
215
|
+
return ApiService.getStepTransaction(step, options);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
/**
|
|
219
|
+
* Get gas recommendation for a certain chain
|
|
220
|
+
* @param request - Configuration of the requested recommendation.
|
|
221
|
+
* @param options - Request options
|
|
222
|
+
* @throws {LiFiError} Throws a LiFiError if request fails.
|
|
223
|
+
* @returns Gas recommendation response.
|
|
224
|
+
*/
|
|
225
|
+
Object.defineProperty(this, "getGasRecommendation", {
|
|
226
|
+
enumerable: true,
|
|
227
|
+
configurable: true,
|
|
228
|
+
writable: true,
|
|
229
|
+
value: async (request, options) => {
|
|
230
|
+
return ApiService.getGasRecommendation(request, options);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
/**
|
|
234
|
+
* Returns the balances of a specific token a wallet holds across all aggregated chains.
|
|
235
|
+
* @param walletAddress - A wallet address.
|
|
236
|
+
* @param token - A Token object.
|
|
237
|
+
* @returns An object containing the token and the amounts on different chains.
|
|
238
|
+
* @throws {ValidationError} Throws a ValidationError if parameters are invalid.
|
|
239
|
+
*/
|
|
240
|
+
Object.defineProperty(this, "getTokenBalance", {
|
|
241
|
+
enumerable: true,
|
|
242
|
+
configurable: true,
|
|
243
|
+
writable: true,
|
|
244
|
+
value: async (walletAddress, token) => {
|
|
245
|
+
if (!walletAddress) {
|
|
246
|
+
throw new ValidationError('Missing walletAddress.');
|
|
247
|
+
}
|
|
248
|
+
if (!isToken(token)) {
|
|
249
|
+
throw new ValidationError(`Invalid token passed: address "${token.address}" on chainId "${token.chainId}"`);
|
|
250
|
+
}
|
|
251
|
+
return balance.getTokenBalance(walletAddress, token);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
/**
|
|
255
|
+
* Returns the balances for a list tokens a wallet holds across all aggregated chains.
|
|
256
|
+
* @param walletAddress - A wallet address.
|
|
257
|
+
* @param tokens - A list of Token objects.
|
|
258
|
+
* @returns A list of objects containing the tokens and the amounts on different chains.
|
|
259
|
+
* @throws {ValidationError} Throws a ValidationError if parameters are invalid.
|
|
260
|
+
*/
|
|
261
|
+
Object.defineProperty(this, "getTokenBalances", {
|
|
262
|
+
enumerable: true,
|
|
263
|
+
configurable: true,
|
|
264
|
+
writable: true,
|
|
265
|
+
value: async (walletAddress, tokens) => {
|
|
266
|
+
if (!walletAddress) {
|
|
267
|
+
throw new ValidationError('Missing walletAddress.');
|
|
268
|
+
}
|
|
269
|
+
const invalidTokens = tokens.filter((token) => !isToken(token));
|
|
270
|
+
if (invalidTokens.length) {
|
|
271
|
+
throw new ValidationError(`Invalid token passed: address "${invalidTokens[0].address}" on chainId "${invalidTokens[0].chainId}"`);
|
|
272
|
+
}
|
|
273
|
+
return balance.getTokenBalances(walletAddress, tokens);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
/**
|
|
277
|
+
* This method queries the balances of tokens for a specific list of chains for a given wallet.
|
|
278
|
+
* @param walletAddress - A walletaddress.
|
|
279
|
+
* @param tokensByChain - A list of Token objects organized by chain ids.
|
|
280
|
+
* @returns A list of objects containing the tokens and the amounts on different chains organized by the chosen chains.
|
|
281
|
+
* @throws {ValidationError} Throws a ValidationError if parameters are invalid.
|
|
282
|
+
*/
|
|
283
|
+
Object.defineProperty(this, "getTokenBalancesByChain", {
|
|
284
|
+
enumerable: true,
|
|
285
|
+
configurable: true,
|
|
286
|
+
writable: true,
|
|
287
|
+
value: async (walletAddress, tokensByChain) => {
|
|
288
|
+
if (!walletAddress) {
|
|
289
|
+
throw new ValidationError('Missing walletAddress.');
|
|
290
|
+
}
|
|
291
|
+
const tokenList = Object.values(tokensByChain).flat();
|
|
292
|
+
const invalidTokens = tokenList.filter((token) => !isToken(token));
|
|
293
|
+
if (invalidTokens.length) {
|
|
294
|
+
throw new ValidationError(`Invalid token passed: address "${invalidTokens[0].address}" on chainId "${invalidTokens[0].chainId}"`);
|
|
295
|
+
}
|
|
296
|
+
return balance.getTokenBalancesByChain(walletAddress, tokensByChain);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
/**
|
|
300
|
+
* Get the current allowance for a certain token.
|
|
301
|
+
* @param token - The token that should be checked
|
|
302
|
+
* @param ownerAddress - The owner of the token
|
|
303
|
+
* @param spenderAddress - The spender address that has to be approved
|
|
304
|
+
* @returns Returns allowance
|
|
305
|
+
*/
|
|
306
|
+
Object.defineProperty(this, "getTokenAllowance", {
|
|
307
|
+
enumerable: true,
|
|
308
|
+
configurable: true,
|
|
309
|
+
writable: true,
|
|
310
|
+
value: async (token, ownerAddress, spenderAddress) => {
|
|
311
|
+
return getTokenAllowance(token, ownerAddress, spenderAddress);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
/**
|
|
315
|
+
* Get the current allowance for a list of token/spender address pairs.
|
|
316
|
+
* @param ownerAddress - The owner of the tokens
|
|
317
|
+
* @param tokens - A list of token and spender address pairs
|
|
318
|
+
* @returns Returns array of tokens and their allowance
|
|
319
|
+
*/
|
|
320
|
+
Object.defineProperty(this, "getTokenAllowanceMulticall", {
|
|
321
|
+
enumerable: true,
|
|
322
|
+
configurable: true,
|
|
323
|
+
writable: true,
|
|
324
|
+
value: async (ownerAddress, tokens) => {
|
|
325
|
+
return getTokenAllowanceMulticall(ownerAddress, tokens);
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
/**
|
|
329
|
+
* Set approval for a certain token and amount.
|
|
330
|
+
* @param request - The approval request
|
|
331
|
+
* @returns Returns Hash or nothing
|
|
332
|
+
*/
|
|
333
|
+
Object.defineProperty(this, "setTokenApproval", {
|
|
334
|
+
enumerable: true,
|
|
335
|
+
configurable: true,
|
|
336
|
+
writable: true,
|
|
337
|
+
value: (request) => {
|
|
338
|
+
return setTokenAllowance(request);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
/**
|
|
342
|
+
* Revoke approval for a certain token.
|
|
343
|
+
* @param request - The revoke request
|
|
344
|
+
* @returns Returns Hash or nothing
|
|
345
|
+
*/
|
|
346
|
+
Object.defineProperty(this, "revokeTokenApproval", {
|
|
347
|
+
enumerable: true,
|
|
348
|
+
configurable: true,
|
|
349
|
+
writable: true,
|
|
350
|
+
value: (request) => {
|
|
351
|
+
return revokeTokenApproval(request);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
/**
|
|
355
|
+
* Get all the available connections for swap/bridging tokens
|
|
356
|
+
* @param connectionRequest ConnectionsRequest
|
|
357
|
+
* @returns ConnectionsResponse
|
|
358
|
+
*/
|
|
359
|
+
Object.defineProperty(this, "getConnections", {
|
|
360
|
+
enumerable: true,
|
|
361
|
+
configurable: true,
|
|
362
|
+
writable: true,
|
|
363
|
+
value: async (connectionRequest) => {
|
|
364
|
+
const connections = await ApiService.getAvailableConnections(connectionRequest);
|
|
365
|
+
return connections;
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
this.chainsService = ChainsService.getInstance();
|
|
369
|
+
this.chainsService.getChains().then((chains) => {
|
|
370
|
+
this.configService.updateChains(chains);
|
|
371
|
+
});
|
|
372
|
+
checkPackageUpdates(name, version, options.disableVersionCheck);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=LiFi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiFi.js","sourceRoot":"","sources":["../../src/LiFi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { getContract } from 'viem';
|
|
2
|
+
import { getMulticallAddress, getPublicClient } from '../connectors.js';
|
|
3
|
+
import { MulticallBatchSize } from '../constants.js';
|
|
4
|
+
import { allowanceAbi } from '../types/index.js';
|
|
5
|
+
import { isNativeTokenAddress } from '../utils/utils.js';
|
|
6
|
+
export const getAllowance = async (chainId, tokenAddress, ownerAddress, spenderAddress) => {
|
|
7
|
+
const client = await getPublicClient(chainId);
|
|
8
|
+
const contract = getContract({
|
|
9
|
+
address: tokenAddress,
|
|
10
|
+
abi: allowanceAbi,
|
|
11
|
+
publicClient: client,
|
|
12
|
+
});
|
|
13
|
+
try {
|
|
14
|
+
const approved = (await contract.read.allowance([
|
|
15
|
+
ownerAddress,
|
|
16
|
+
spenderAddress,
|
|
17
|
+
]));
|
|
18
|
+
return approved;
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
return 0n;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const getAllowanceMulticall = async (chainId, tokens, ownerAddress) => {
|
|
25
|
+
if (!tokens.length) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
const multicallAddress = await getMulticallAddress(chainId);
|
|
29
|
+
if (!multicallAddress) {
|
|
30
|
+
throw new Error(`No multicall address configured for chainId ${chainId}.`);
|
|
31
|
+
}
|
|
32
|
+
const client = await getPublicClient(chainId);
|
|
33
|
+
const contracts = tokens.map((token) => ({
|
|
34
|
+
address: token.token.address,
|
|
35
|
+
abi: allowanceAbi,
|
|
36
|
+
functionName: 'allowance',
|
|
37
|
+
args: [ownerAddress, token.spenderAddress],
|
|
38
|
+
}));
|
|
39
|
+
const results = await client.multicall({
|
|
40
|
+
contracts,
|
|
41
|
+
multicallAddress: multicallAddress,
|
|
42
|
+
batchSize: MulticallBatchSize,
|
|
43
|
+
});
|
|
44
|
+
if (!results.length) {
|
|
45
|
+
throw new Error(`Couldn't load allowance from chainId ${chainId} using multicall.`);
|
|
46
|
+
}
|
|
47
|
+
return tokens.map(({ token, spenderAddress }, i) => ({
|
|
48
|
+
token,
|
|
49
|
+
spenderAddress,
|
|
50
|
+
allowance: results[i].result,
|
|
51
|
+
}));
|
|
52
|
+
};
|
|
53
|
+
export const getTokenAllowance = async (token, ownerAddress, spenderAddress) => {
|
|
54
|
+
// native token don't need approval
|
|
55
|
+
if (isNativeTokenAddress(token.address)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const approved = await getAllowance(token.chainId, token.address, ownerAddress, spenderAddress);
|
|
59
|
+
return approved;
|
|
60
|
+
};
|
|
61
|
+
export const getTokenAllowanceMulticall = async (ownerAddress, tokens) => {
|
|
62
|
+
// filter out native tokens
|
|
63
|
+
const filteredTokens = tokens.filter(({ token }) => !isNativeTokenAddress(token.address));
|
|
64
|
+
// group by chain
|
|
65
|
+
const tokenDataByChain = {};
|
|
66
|
+
filteredTokens.forEach((data) => {
|
|
67
|
+
if (!tokenDataByChain[data.token.chainId]) {
|
|
68
|
+
tokenDataByChain[data.token.chainId] = [];
|
|
69
|
+
}
|
|
70
|
+
tokenDataByChain[data.token.chainId].push(data);
|
|
71
|
+
});
|
|
72
|
+
const chainKeys = Object.keys(tokenDataByChain).map(Number.parseInt);
|
|
73
|
+
const allowances = (await Promise.all(chainKeys.map(async (chainId) => {
|
|
74
|
+
// get allowances for current chain and token list
|
|
75
|
+
return getAllowanceMulticall(chainId, tokenDataByChain[chainId], ownerAddress);
|
|
76
|
+
}))).flat();
|
|
77
|
+
return allowances;
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=getAllowance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllowance.js","sourceRoot":"","sources":["../../../src/allowance/getAllowance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/allowance/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { encodeFunctionData, maxUint256, publicActions } from 'viem';
|
|
2
|
+
import { approveAbi } from '../types/index.js';
|
|
3
|
+
import { getMaxPriorityFeePerGas } from '../utils/index.js';
|
|
4
|
+
import { isNativeTokenAddress } from '../utils/utils.js';
|
|
5
|
+
import { getAllowance } from './getAllowance.js';
|
|
6
|
+
export const setAllowance = async (walletClient, tokenAddress, contractAddress, amount, settings, returnPopulatedTransaction) => {
|
|
7
|
+
const data = encodeFunctionData({
|
|
8
|
+
abi: approveAbi,
|
|
9
|
+
functionName: 'approve',
|
|
10
|
+
args: [contractAddress, amount],
|
|
11
|
+
});
|
|
12
|
+
if (returnPopulatedTransaction) {
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
const client = walletClient.extend(publicActions);
|
|
16
|
+
let transactionRequest = {
|
|
17
|
+
to: tokenAddress,
|
|
18
|
+
data,
|
|
19
|
+
maxPriorityFeePerGas: walletClient.account?.type === 'local'
|
|
20
|
+
? await getMaxPriorityFeePerGas(client)
|
|
21
|
+
: undefined,
|
|
22
|
+
};
|
|
23
|
+
if (settings?.updateTransactionRequestHook) {
|
|
24
|
+
const customizedTransactionRequest = await settings.updateTransactionRequestHook({
|
|
25
|
+
requestType: 'approve',
|
|
26
|
+
...transactionRequest,
|
|
27
|
+
});
|
|
28
|
+
transactionRequest = {
|
|
29
|
+
...transactionRequest,
|
|
30
|
+
...customizedTransactionRequest,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return client.sendTransaction({
|
|
34
|
+
to: transactionRequest.to,
|
|
35
|
+
account: walletClient.account,
|
|
36
|
+
data: transactionRequest.data,
|
|
37
|
+
gas: transactionRequest.gas,
|
|
38
|
+
gasPrice: transactionRequest.gasPrice,
|
|
39
|
+
maxFeePerGas: transactionRequest.maxFeePerGas,
|
|
40
|
+
maxPriorityFeePerGas: transactionRequest.maxPriorityFeePerGas,
|
|
41
|
+
chain: null,
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
export const setTokenAllowance = async ({ walletClient, token, spenderAddress, amount, infiniteApproval = false, }) => {
|
|
45
|
+
// native token don't need approval
|
|
46
|
+
if (isNativeTokenAddress(token.address)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const approvedAmount = await getAllowance(token.chainId, token.address, walletClient.account.address, spenderAddress);
|
|
50
|
+
if (amount > approvedAmount) {
|
|
51
|
+
const approvalAmount = infiniteApproval ? maxUint256 : amount;
|
|
52
|
+
const approveTx = await setAllowance(walletClient, token.address, spenderAddress, approvalAmount);
|
|
53
|
+
return approveTx;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export const revokeTokenApproval = async ({ walletClient, token, spenderAddress, }) => {
|
|
57
|
+
// native token don't need approval
|
|
58
|
+
if (isNativeTokenAddress(token.address)) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const approvedAmount = await getAllowance(token.chainId, token.address, walletClient.account.address, spenderAddress);
|
|
62
|
+
if (approvedAmount > 0) {
|
|
63
|
+
const approveTx = await setAllowance(walletClient, token.address, spenderAddress, 0n);
|
|
64
|
+
return approveTx;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=setAllowance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setAllowance.js","sourceRoot":"","sources":["../../../src/allowance/setAllowance.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAKpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,YAA0B,EAC1B,YAAoB,EACpB,eAAuB,EACvB,MAAc,EACd,QAAoC,EACpC,0BAAoC,EACrB,EAAE;IACjB,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAC9B,GAAG,EAAE,UAAU;QACf,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC;KAChC,CAAC,CAAA;IAEF,IAAI,0BAA0B,EAAE;QAC9B,OAAO,IAAI,CAAA;KACZ;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IAEjD,IAAI,kBAAkB,GAA0B;QAC9C,EAAE,EAAE,YAAY;QAChB,IAAI;QACJ,oBAAoB,EAClB,YAAY,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO;YACpC,CAAC,CAAC,MAAM,uBAAuB,CAAC,MAAsB,CAAC;YACvD,CAAC,CAAC,SAAS;KAChB,CAAA;IAED,IAAI,QAAQ,EAAE,4BAA4B,EAAE;QAC1C,MAAM,4BAA4B,GAChC,MAAM,QAAQ,CAAC,4BAA4B,CAAC;YAC1C,WAAW,EAAE,SAAS;YACtB,GAAG,kBAAkB;SACtB,CAAC,CAAA;QAEJ,kBAAkB,GAAG;YACnB,GAAG,kBAAkB;YACrB,GAAG,4BAA4B;SAChC,CAAA;KACF;IAED,OAAO,MAAM,CAAC,eAAe,CAAC;QAC5B,EAAE,EAAE,kBAAkB,CAAC,EAAa;QACpC,OAAO,EAAE,YAAY,CAAC,OAAQ;QAC9B,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,GAAG,EAAE,kBAAkB,CAAC,GAAG;QAC3B,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;QACrC,YAAY,EAAE,kBAAkB,CAAC,YAAY;QAC7C,oBAAoB,EAAE,kBAAkB,CAAC,oBAAoB;QAC7D,KAAK,EAAE,IAAI;KACiB,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,YAAY,EACZ,KAAK,EACL,cAAc,EACd,MAAM,EACN,gBAAgB,GAAG,KAAK,GACJ,EAAwB,EAAE;IAC9C,mCAAmC;IACnC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACvC,OAAM;KACP;IACD,MAAM,cAAc,GAAG,MAAM,YAAY,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAO,EACb,YAAY,CAAC,OAAQ,CAAC,OAAO,EAC7B,cAAc,CACf,CAAA;IAED,IAAI,MAAM,GAAG,cAAc,EAAE;QAC3B,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAA;QAE7D,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,YAAY,EACZ,KAAK,CAAC,OAAO,EACb,cAAc,EACd,cAAc,CACf,CAAA;QAED,OAAO,SAAS,CAAA;KACjB;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,YAAY,EACZ,KAAK,EACL,cAAc,GACQ,EAAwB,EAAE;IAChD,mCAAmC;IACnC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACvC,OAAM;KACP;IACD,MAAM,cAAc,GAAG,MAAM,YAAY,CACvC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAO,EACb,YAAY,CAAC,OAAQ,CAAC,OAAO,EAC7B,cAAc,CACf,CAAA;IACD,IAAI,cAAc,GAAG,CAAC,EAAE;QACtB,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,YAAY,EACZ,KAAK,CAAC,OAAO,EACb,cAAc,EACd,EAAE,CACH,CAAA;QAED,OAAO,SAAS,CAAA;KACjB;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/allowance/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { getMulticallAddress, getPublicClient } from '../connectors.js';
|
|
2
|
+
import { MulticallBatchSize } from '../constants.js';
|
|
3
|
+
import { balanceOfAbi, getEthBalanceAbi } from '../types/index.js';
|
|
4
|
+
import { isZeroAddress } from '../utils/utils.js';
|
|
5
|
+
export const getBalance = async (walletAddress, tokens) => {
|
|
6
|
+
if (tokens.length === 0) {
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
const { chainId } = tokens[0];
|
|
10
|
+
tokens.forEach((token) => {
|
|
11
|
+
if (token.chainId !== chainId) {
|
|
12
|
+
console.warn(`Requested tokens have to be on the same chain.`);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
const multicallAddress = await getMulticallAddress(chainId);
|
|
16
|
+
if (multicallAddress && tokens.length > 1) {
|
|
17
|
+
return getBalanceMulticall(chainId, tokens, walletAddress, multicallAddress);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return getBalanceDefault(chainId, tokens, walletAddress);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const getBalanceMulticall = async (chainId, tokens, walletAddress, multicallAddress) => {
|
|
24
|
+
const client = await getPublicClient(chainId);
|
|
25
|
+
const contracts = tokens.map((token) => {
|
|
26
|
+
if (isZeroAddress(token.address)) {
|
|
27
|
+
return {
|
|
28
|
+
address: multicallAddress,
|
|
29
|
+
abi: getEthBalanceAbi,
|
|
30
|
+
functionName: 'getEthBalance',
|
|
31
|
+
args: [walletAddress],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
address: token.address,
|
|
36
|
+
abi: balanceOfAbi,
|
|
37
|
+
functionName: 'balanceOf',
|
|
38
|
+
args: [walletAddress],
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
const blockNumber = await client.getBlockNumber();
|
|
42
|
+
const results = await client.multicall({
|
|
43
|
+
contracts,
|
|
44
|
+
multicallAddress: multicallAddress,
|
|
45
|
+
blockNumber,
|
|
46
|
+
batchSize: MulticallBatchSize,
|
|
47
|
+
});
|
|
48
|
+
if (!results.length) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
return tokens.map((token, i) => {
|
|
52
|
+
return {
|
|
53
|
+
...token,
|
|
54
|
+
amount: results[i].result,
|
|
55
|
+
blockNumber,
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const getBalanceDefault = async (chainId, tokens, walletAddress) => {
|
|
60
|
+
const client = await getPublicClient(chainId);
|
|
61
|
+
const blockNumber = await client.getBlockNumber();
|
|
62
|
+
const queue = tokens.map((token) => {
|
|
63
|
+
if (isZeroAddress(token.address)) {
|
|
64
|
+
return client.getBalance({
|
|
65
|
+
address: walletAddress,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return client.readContract({
|
|
69
|
+
address: token.address,
|
|
70
|
+
abi: balanceOfAbi,
|
|
71
|
+
functionName: 'balanceOf',
|
|
72
|
+
args: [walletAddress],
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
const results = await Promise.allSettled(queue);
|
|
76
|
+
const tokenAmounts = tokens.map((token, index) => {
|
|
77
|
+
const result = results[index];
|
|
78
|
+
if (result.status === 'rejected') {
|
|
79
|
+
console.warn(result.reason);
|
|
80
|
+
return {
|
|
81
|
+
...token,
|
|
82
|
+
blockNumber,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
...token,
|
|
87
|
+
amount: result.value,
|
|
88
|
+
blockNumber,
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
return tokenAmounts;
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=getBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../../src/balance/getBalance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,aAAqB,EACrB,MAAe,EACS,EAAE;IAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,EAAE,CAAA;KACV;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;SAC/D;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAE3D,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACzC,OAAO,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAA;KAC7E;SAAM;QACL,OAAO,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;KACzD;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,KAAK,EAC/B,OAAgB,EAChB,MAAe,EACf,aAAqB,EACrB,gBAAwB,EACA,EAAE;IAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO;gBACL,OAAO,EAAE,gBAA2B;gBACpC,GAAG,EAAE,gBAAgB;gBACrB,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,CAAC,aAAa,CAAC;aACtB,CAAA;SACF;QACD,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAkB;YACjC,GAAG,EAAE,YAAY;YACjB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAA;IACH,CAAC,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;IACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;QACrC,SAAS;QACT,gBAAgB,EAAE,gBAA2B;QAC7C,WAAW;QACX,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAA;KACV;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAS,EAAE,EAAE;QACrC,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAgB;YACnC,WAAW;SACZ,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,KAAK,EAC7B,OAAgB,EAChB,MAAe,EACf,aAAqB,EACG,EAAE;IAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAA;IACjD,MAAM,KAAK,GAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACpD,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO,MAAM,CAAC,UAAU,CAAC;gBACvB,OAAO,EAAE,aAAwB;aAClC,CAAC,CAAA;SACH;QACD,OAAO,MAAM,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,KAAK,CAAC,OAAkB;YACjC,GAAG,EAAE,YAAY;YACjB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAoB,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAE/C,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3B,OAAO;gBACL,GAAG,KAAK;gBACR,WAAW;aACZ,CAAA;SACF;QACD,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,WAAW;SACZ,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
|