@lombard.finance/sdk 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -94
- package/README.md +10 -59
- package/dist/api.cjs +1 -1
- package/dist/api.js +5 -5
- package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
- package/dist/bridge/lib/config.d.ts +3 -3
- package/dist/bridge/lib/config.d.ts.map +1 -1
- package/dist/bridge.cjs +1 -1
- package/dist/bridge.js +1 -1
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chunks/{BtcActions-D9eBmDj6.cjs → BtcActions-ByhBml_1.cjs} +2 -2
- package/dist/chunks/{BtcActions-D9eBmDj6.cjs.map → BtcActions-ByhBml_1.cjs.map} +1 -1
- package/dist/chunks/{BtcActions-DGqmtxjd.js → BtcActions-C_A1dUQ0.js} +20 -20
- package/dist/chunks/{BtcActions-DGqmtxjd.js.map → BtcActions-C_A1dUQ0.js.map} +1 -1
- package/dist/chunks/{EvmActions-BOwYPThp.cjs → EvmActions-DoYIhj61.cjs} +2 -2
- package/dist/chunks/{EvmActions-BOwYPThp.cjs.map → EvmActions-DoYIhj61.cjs.map} +1 -1
- package/dist/chunks/{EvmActions-MW5mNmqs.js → EvmActions-DucgT60w.js} +45 -45
- package/dist/chunks/{EvmActions-MW5mNmqs.js.map → EvmActions-DucgT60w.js.map} +1 -1
- package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs → ReferralsClient-BC-1wT1q.cjs} +2 -2
- package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs.map → ReferralsClient-BC-1wT1q.cjs.map} +1 -1
- package/dist/chunks/{ReferralsClient-JjWLlIO4.js → ReferralsClient-DbFWWtVi.js} +20 -20
- package/dist/chunks/{ReferralsClient-JjWLlIO4.js.map → ReferralsClient-DbFWWtVi.js.map} +1 -1
- package/dist/chunks/approveLBTC-B5-ZWqct.js +26 -0
- package/dist/chunks/{approveLBTC-DOP0wsm3.js.map → approveLBTC-B5-ZWqct.js.map} +1 -1
- package/dist/chunks/{approveLBTC-CN6rJF6_.cjs → approveLBTC-CZiZmdcX.cjs} +2 -2
- package/dist/chunks/{approveLBTC-CN6rJF6_.cjs.map → approveLBTC-CZiZmdcX.cjs.map} +1 -1
- package/dist/chunks/blockchain-identifier-BmadkNtK.js +113 -0
- package/dist/chunks/blockchain-identifier-BmadkNtK.js.map +1 -0
- package/dist/chunks/{blockchain-identifier-DtIGGlIi.cjs → blockchain-identifier-BzMQWh-C.cjs} +2 -2
- package/dist/chunks/blockchain-identifier-BzMQWh-C.cjs.map +1 -0
- package/dist/chunks/bridge-BzRlY9pP.cjs +12 -0
- package/dist/chunks/bridge-BzRlY9pP.cjs.map +1 -0
- package/dist/chunks/{bridge-DyAiDpxD.js → bridge-CTsiodO1.js} +72 -95
- package/dist/chunks/bridge-CTsiodO1.js.map +1 -0
- package/dist/chunks/{config-_8X_2sG4.js → config-hFKqUyg3.js} +2 -2
- package/dist/chunks/{config-_8X_2sG4.js.map → config-hFKqUyg3.js.map} +1 -1
- package/dist/chunks/{config-DqbLaiRi.cjs → config-l4ZaZw_g.cjs} +2 -2
- package/dist/chunks/{config-DqbLaiRi.cjs.map → config-l4ZaZw_g.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-NGWlyxAY.cjs → defi-registry-BIRv_zkp.cjs} +2 -2
- package/dist/chunks/{defi-registry-NGWlyxAY.cjs.map → defi-registry-BIRv_zkp.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-dhrQMy94.js → defi-registry-wNFN3qyB.js} +7 -7
- package/dist/chunks/{defi-registry-dhrQMy94.js.map → defi-registry-wNFN3qyB.js.map} +1 -1
- package/dist/chunks/{depositStatus-K6gky8zH.cjs → depositStatus-C3-EgT2a.cjs} +2 -2
- package/dist/chunks/{depositStatus-K6gky8zH.cjs.map → depositStatus-C3-EgT2a.cjs.map} +1 -1
- package/dist/chunks/{depositStatus-DeCO-K5Q.js → depositStatus-DM7fRmbN.js} +8 -8
- package/dist/chunks/{depositStatus-DeCO-K5Q.js.map → depositStatus-DM7fRmbN.js.map} +1 -1
- package/dist/chunks/{events-DIKZG4SZ.cjs → events-BTtwgCev.cjs} +2 -2
- package/dist/chunks/{events-DIKZG4SZ.cjs.map → events-BTtwgCev.cjs.map} +1 -1
- package/dist/chunks/{events-CLVUaKQS.js → events-DPi6MDRA.js} +35 -35
- package/dist/chunks/{events-CLVUaKQS.js.map → events-DPi6MDRA.js.map} +1 -1
- package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs → get-exchange-ratio-C-7DadfD.cjs} +2 -2
- package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs.map → get-exchange-ratio-C-7DadfD.cjs.map} +1 -1
- package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +20 -0
- package/dist/chunks/{get-exchange-ratio-B0CNEGOB.js.map → get-exchange-ratio-NtnkG1kZ.js.map} +1 -1
- package/dist/chunks/{get-positions-summary-Cled5YPA.js → get-positions-summary-B_MmGHLv.js} +4 -4
- package/dist/chunks/{get-positions-summary-Cled5YPA.js.map → get-positions-summary-B_MmGHLv.js.map} +1 -1
- package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs → get-positions-summary-DkZZYbGP.cjs} +2 -2
- package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs.map → get-positions-summary-DkZZYbGP.cjs.map} +1 -1
- package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs → get-vault-tvl-DmTUbOY7.cjs} +2 -2
- package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs.map → get-vault-tvl-DmTUbOY7.cjs.map} +1 -1
- package/dist/chunks/{get-vault-tvl-DxjO9xDs.js → get-vault-tvl-YAXePAW3.js} +4 -4
- package/dist/chunks/{get-vault-tvl-DxjO9xDs.js.map → get-vault-tvl-YAXePAW3.js.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js → get-vault-withdrawals-BrpZlt6s.js} +3 -3
- package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js.map → get-vault-withdrawals-BrpZlt6s.js.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs → get-vault-withdrawals-CWcYy_sH.cjs} +2 -2
- package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs.map → get-vault-withdrawals-CWcYy_sH.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-De7as74h.cjs → getSharesByAddress-U48H_ygt.cjs} +2 -2
- package/dist/chunks/{getSharesByAddress-De7as74h.cjs.map → getSharesByAddress-U48H_ygt.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-CK2q7gBI.js → getSharesByAddress-cUtkrKTq.js} +14 -14
- package/dist/chunks/{getSharesByAddress-CK2q7gBI.js.map → getSharesByAddress-cUtkrKTq.js.map} +1 -1
- package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs → getUserStakeAndBakeSignature-BxRq2cI1.cjs} +2 -2
- package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs.map → getUserStakeAndBakeSignature-BxRq2cI1.cjs.map} +1 -1
- package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js → getUserStakeAndBakeSignature-NGGblnJl.js} +11 -11
- package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js.map → getUserStakeAndBakeSignature-NGGblnJl.js.map} +1 -1
- package/dist/chunks/index-BKzxeh1Y.cjs.map +1 -1
- package/dist/chunks/index-CfcQ_g3t.js.map +1 -1
- package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js → lbtc-addresses-BLRmtR3c.js} +2 -2
- package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js.map → lbtc-addresses-BLRmtR3c.js.map} +1 -1
- package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs → lbtc-addresses-xyTYV7hx.cjs} +2 -2
- package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs.map → lbtc-addresses-xyTYV7hx.cjs.map} +1 -1
- package/dist/chunks/{statusConstants-ZJia15m2.js → statusConstants-CJk6vOiM.js} +844 -853
- package/dist/chunks/statusConstants-CJk6vOiM.js.map +1 -0
- package/dist/chunks/statusConstants-fmtIEEEM.cjs +2 -0
- package/dist/chunks/statusConstants-fmtIEEEM.cjs.map +1 -0
- package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js → storeNetworkFeeSignature-BZGL2Zn_.js} +8 -8
- package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js.map → storeNetworkFeeSignature-BZGL2Zn_.js.map} +1 -1
- package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs → storeNetworkFeeSignature-D7yo6lDV.cjs} +2 -2
- package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs.map → storeNetworkFeeSignature-D7yo6lDV.cjs.map} +1 -1
- package/dist/chunks/token-addresses-DRBecUa7.cjs +2 -0
- package/dist/chunks/token-addresses-DRBecUa7.cjs.map +1 -0
- package/dist/chunks/token-addresses-FKpA3uc4.js +541 -0
- package/dist/chunks/token-addresses-FKpA3uc4.js.map +1 -0
- package/dist/chunks/{tokens-Bw35TZqd.js → tokens-C6qZHzph.js} +28 -30
- package/dist/chunks/tokens-C6qZHzph.js.map +1 -0
- package/dist/chunks/tokens-D_HeVB5p.cjs +2 -0
- package/dist/chunks/tokens-D_HeVB5p.cjs.map +1 -0
- package/dist/chunks/{unstakeLBTC-Huy_ncVl.js → unstakeLBTC-B4Rwf65e.js} +141 -129
- package/dist/chunks/unstakeLBTC-B4Rwf65e.js.map +1 -0
- package/dist/chunks/unstakeLBTC-Wlfi14de.cjs +2 -0
- package/dist/chunks/unstakeLBTC-Wlfi14de.cjs.map +1 -0
- package/dist/chunks/{withdraw-Z77x7Hj4.cjs → withdraw-C1fMFSwy.cjs} +2 -2
- package/dist/chunks/{withdraw-Z77x7Hj4.cjs.map → withdraw-C1fMFSwy.cjs.map} +1 -1
- package/dist/chunks/{withdraw-CVNVJ7-x.js → withdraw-hHueI2p7.js} +9 -9
- package/dist/chunks/{withdraw-CVNVJ7-x.js.map → withdraw-hHueI2p7.js.map} +1 -1
- package/dist/clients/rpc-url-config.d.ts.map +1 -1
- package/dist/common/chains.d.ts +343 -112
- package/dist/common/chains.d.ts.map +1 -1
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts +27 -0
- package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts.map +1 -1
- package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts +26 -0
- package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +26 -24
- package/dist/core/chains/catalog.d.ts.map +1 -1
- package/dist/core/chains/types.d.ts +0 -1
- package/dist/core/chains/types.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +29 -29
- package/dist/defi.cjs +1 -1
- package/dist/defi.js +3 -3
- package/dist/entries/contracts.d.ts +2 -2
- package/dist/entries/contracts.d.ts.map +1 -1
- package/dist/entries/evm.d.ts +1 -1
- package/dist/entries/evm.d.ts.map +1 -1
- package/dist/entries/utils.d.ts +1 -1
- package/dist/entries/utils.d.ts.map +1 -1
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +34 -35
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +188 -187
- package/dist/metrics.cjs +1 -1
- package/dist/metrics.js +1 -1
- package/dist/stories/components/decorators/wagmi-decorator.d.ts.map +1 -1
- package/dist/tokens/token-addresses.d.ts.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +48 -49
- package/dist/vaults.cjs +1 -1
- package/dist/vaults.js +15 -15
- package/package.json +2 -2
- package/dist/chunks/approveLBTC-DOP0wsm3.js +0 -26
- package/dist/chunks/blockchain-identifier-DtIGGlIi.cjs.map +0 -1
- package/dist/chunks/blockchain-identifier-PNEhu-QU.js +0 -113
- package/dist/chunks/blockchain-identifier-PNEhu-QU.js.map +0 -1
- package/dist/chunks/bridge-DkZMwO7c.cjs +0 -12
- package/dist/chunks/bridge-DkZMwO7c.cjs.map +0 -1
- package/dist/chunks/bridge-DyAiDpxD.js.map +0 -1
- package/dist/chunks/get-exchange-ratio-B0CNEGOB.js +0 -20
- package/dist/chunks/statusConstants-DTDi_4Go.cjs +0 -2
- package/dist/chunks/statusConstants-DTDi_4Go.cjs.map +0 -1
- package/dist/chunks/statusConstants-ZJia15m2.js.map +0 -1
- package/dist/chunks/token-addresses-D859i6tX.cjs +0 -2
- package/dist/chunks/token-addresses-D859i6tX.cjs.map +0 -1
- package/dist/chunks/token-addresses-DmAr89jP.js +0 -579
- package/dist/chunks/token-addresses-DmAr89jP.js.map +0 -1
- package/dist/chunks/tokens-Bw35TZqd.js.map +0 -1
- package/dist/chunks/tokens-DLGMNeqZ.cjs +0 -2
- package/dist/chunks/tokens-DLGMNeqZ.cjs.map +0 -1
- package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs +0 -2
- package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs.map +0 -1
- package/dist/chunks/unstakeLBTC-Huy_ncVl.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw-Z77x7Hj4.cjs","sources":["../../src/vaults/lib/ops/deposit.ts","../../src/vaults/lib/ops/withdraw.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type DepositParameters = {\n /** The amount to be deposited into the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Deposits specified amount to the chosen DeFi vault.\n * @param {DepositParameters} parameters\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function deposit({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: DepositParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const depositToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!depositToken) {\n throw new Error(`Unknown deposit token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(\n toBaseDenomination(amount, depositToken.decimals),\n );\n\n const allowanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'allowance',\n args: [account, vault.vaultContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n depositToken.decimals,\n );\n\n const balanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n depositToken.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The deposit amount exceeds the account's balance. \\nDeposit amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The deposit amount exceeds allowance. \\nDeposit amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'approve',\n args: [vault.vaultContract.address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // deposit funds via the teller contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.tellerContracts[chainId].address,\n abi: vault.tellerContracts[chainId].abi,\n functionName: 'deposit',\n args: [depositToken.address, amountBase, 0n],\n });\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { DAY } from '../../../utils/time';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type QueueWithdrawParameters = {\n /** The amount to be withdrawn from the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the withdraw amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Queues withdrawal from the DeFi vault.\n * @param {QueueWithdrawParameters} parameters - The parameters.\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function queueWithdraw({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: QueueWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(toBaseDenomination(amount, vault.decimals));\n\n const balanceRaw = await publicClient.readContract({\n address: vault.lensContract.address,\n abi: vault.lensContract.abi,\n functionName: 'balanceOf',\n args: [account, vault.vaultContract.address],\n });\n const balance = fromBaseDenomination(String(balanceRaw), vault.decimals);\n\n const allowanceRaw = await publicClient.readContract({\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'allowance',\n args: [account, vault.withdrawQueueContracts[chainId].address],\n });\n const allowance = fromBaseDenomination(String(allowanceRaw), vault.decimals);\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The withdraw amount exceeds the account's balance. \\nWithdraw amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The withdraw amount exceeds allowance. \\nWithdraw amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'approve',\n args: [vault.withdrawQueueContracts[chainId].address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // queue withdraw vault token to wihdraw token via the withdraw queue contract\n const expiry = BigNumber(Date.now())\n .dividedBy(1000)\n .plus(BigNumber(vault.queueWithdrawDaysValid).multipliedBy(DAY / 1000))\n .decimalPlaces(0, BigNumber.ROUND_DOWN); // expiry = now(seconds) + days(seconds)\n\n const discount = BigNumber(vault.queueWithdrawDiscountPercent).multipliedBy(\n 10000, // 1% = 10000\n );\n\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'safeUpdateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [expiry.toFixed(0), 0n, amountBase, false],\n vault.accountantContract.address,\n discount.toFixed(0),\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n\nexport type CancelWithdrawParameters = Pick<\n QueueWithdrawParameters,\n 'token' | 'vaultKey'\n> &\n CommonWriteParameters;\n\n/**\n * Cancels queued withdrawal.\n * @param {CancelWithdrawParameters} parameters - The parameters.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n * @returns\n */\nexport async function cancelWithdraw({\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: CancelWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n // cancel withdrawal via withdraw queue contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'updateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [0, 0, 0, false],\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n"],"names":["deposit","amountRaw","approve","token","Token","vaultKey","Vault","account","chainId","provider","rpcUrl","env","vault","VAULTS","isVedaVaultChain","publicClient","makePublicClient","walletClient","makeWalletClient","depositToken","getTokenInfo","amount","BigNumber","amountBase","toBigInt","toBaseDenomination","allowanceRaw","allowance","fromBaseDenomination","balanceRaw","balance","exceededMessage","request","CHAIN_ID_TO_VIEM_CHAIN_MAP","txHash","err","msg","getErrorMessage","queueWithdraw","withdrawToken","expiry","DAY","discount","cancelWithdraw"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"withdraw-C1fMFSwy.cjs","sources":["../../src/vaults/lib/ops/deposit.ts","../../src/vaults/lib/ops/withdraw.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type DepositParameters = {\n /** The amount to be deposited into the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Deposits specified amount to the chosen DeFi vault.\n * @param {DepositParameters} parameters\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function deposit({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: DepositParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const depositToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!depositToken) {\n throw new Error(`Unknown deposit token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(\n toBaseDenomination(amount, depositToken.decimals),\n );\n\n const allowanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'allowance',\n args: [account, vault.vaultContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n depositToken.decimals,\n );\n\n const balanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n depositToken.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The deposit amount exceeds the account's balance. \\nDeposit amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The deposit amount exceeds allowance. \\nDeposit amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'approve',\n args: [vault.vaultContract.address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // deposit funds via the teller contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.tellerContracts[chainId].address,\n abi: vault.tellerContracts[chainId].abi,\n functionName: 'deposit',\n args: [depositToken.address, amountBase, 0n],\n });\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { DAY } from '../../../utils/time';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type QueueWithdrawParameters = {\n /** The amount to be withdrawn from the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the withdraw amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Queues withdrawal from the DeFi vault.\n * @param {QueueWithdrawParameters} parameters - The parameters.\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function queueWithdraw({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: QueueWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(toBaseDenomination(amount, vault.decimals));\n\n const balanceRaw = await publicClient.readContract({\n address: vault.lensContract.address,\n abi: vault.lensContract.abi,\n functionName: 'balanceOf',\n args: [account, vault.vaultContract.address],\n });\n const balance = fromBaseDenomination(String(balanceRaw), vault.decimals);\n\n const allowanceRaw = await publicClient.readContract({\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'allowance',\n args: [account, vault.withdrawQueueContracts[chainId].address],\n });\n const allowance = fromBaseDenomination(String(allowanceRaw), vault.decimals);\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The withdraw amount exceeds the account's balance. \\nWithdraw amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The withdraw amount exceeds allowance. \\nWithdraw amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'approve',\n args: [vault.withdrawQueueContracts[chainId].address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // queue withdraw vault token to wihdraw token via the withdraw queue contract\n const expiry = BigNumber(Date.now())\n .dividedBy(1000)\n .plus(BigNumber(vault.queueWithdrawDaysValid).multipliedBy(DAY / 1000))\n .decimalPlaces(0, BigNumber.ROUND_DOWN); // expiry = now(seconds) + days(seconds)\n\n const discount = BigNumber(vault.queueWithdrawDiscountPercent).multipliedBy(\n 10000, // 1% = 10000\n );\n\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'safeUpdateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [expiry.toFixed(0), 0n, amountBase, false],\n vault.accountantContract.address,\n discount.toFixed(0),\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n\nexport type CancelWithdrawParameters = Pick<\n QueueWithdrawParameters,\n 'token' | 'vaultKey'\n> &\n CommonWriteParameters;\n\n/**\n * Cancels queued withdrawal.\n * @param {CancelWithdrawParameters} parameters - The parameters.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n * @returns\n */\nexport async function cancelWithdraw({\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: CancelWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n // cancel withdrawal via withdraw queue contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'updateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [0, 0, 0, false],\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n"],"names":["deposit","amountRaw","approve","token","Token","vaultKey","Vault","account","chainId","provider","rpcUrl","env","vault","VAULTS","isVedaVaultChain","publicClient","makePublicClient","walletClient","makeWalletClient","depositToken","getTokenInfo","amount","BigNumber","amountBase","toBigInt","toBaseDenomination","allowanceRaw","allowance","fromBaseDenomination","balanceRaw","balance","exceededMessage","request","CHAIN_ID_TO_VIEM_CHAIN_MAP","txHash","err","msg","getErrorMessage","queueWithdraw","withdrawToken","expiry","DAY","discount","cancelWithdraw"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import m from "bignumber.js";
|
|
2
|
-
import { m as q, e as A, t as
|
|
3
|
-
import {
|
|
2
|
+
import { m as q, e as A, t as V, f as g, g as W } from "./tokens-C6qZHzph.js";
|
|
3
|
+
import { U as y, o as D, a as b } from "./token-addresses-FKpA3uc4.js";
|
|
4
4
|
import { t as P } from "./numbers-CM-lcmt4.js";
|
|
5
|
-
import { a as F, b as H, c as
|
|
5
|
+
import { a as F, b as H, c as U } from "./config-hFKqUyg3.js";
|
|
6
6
|
import { D as Q } from "./time-QPeEEEnQ.js";
|
|
7
7
|
async function j({
|
|
8
8
|
amount: l,
|
|
@@ -15,7 +15,7 @@ async function j({
|
|
|
15
15
|
rpcUrl: n,
|
|
16
16
|
env: C
|
|
17
17
|
}) {
|
|
18
|
-
const t =
|
|
18
|
+
const t = U[o];
|
|
19
19
|
if (!t)
|
|
20
20
|
throw new Error(`Unknown vault key: ${o}`);
|
|
21
21
|
if (!H(a))
|
|
@@ -26,7 +26,7 @@ async function j({
|
|
|
26
26
|
if (!e)
|
|
27
27
|
throw new Error(`Unknown deposit token: ${d}`);
|
|
28
28
|
const i = m(l), c = P(
|
|
29
|
-
|
|
29
|
+
V(i, e.decimals)
|
|
30
30
|
), T = await s.readContract({
|
|
31
31
|
address: e.address,
|
|
32
32
|
abi: e.abi,
|
|
@@ -97,7 +97,7 @@ async function Y({
|
|
|
97
97
|
rpcUrl: n,
|
|
98
98
|
env: C
|
|
99
99
|
}) {
|
|
100
|
-
const t =
|
|
100
|
+
const t = U[o];
|
|
101
101
|
if (!t)
|
|
102
102
|
throw new Error(`Unknown vault key: ${o}`);
|
|
103
103
|
if (!H(a))
|
|
@@ -107,7 +107,7 @@ async function Y({
|
|
|
107
107
|
const s = q({ chainId: a, rpcUrl: n }), w = y({ provider: f, chainId: a }), e = await A(d, a, C, n);
|
|
108
108
|
if (!e)
|
|
109
109
|
throw new Error(`Unknown withdraw token: ${d}`);
|
|
110
|
-
const i = m(l), c = P(
|
|
110
|
+
const i = m(l), c = P(V(i, t.decimals)), T = await s.readContract({
|
|
111
111
|
address: t.lensContract.address,
|
|
112
112
|
abi: t.lensContract.abi,
|
|
113
113
|
functionName: "balanceOf",
|
|
@@ -177,7 +177,7 @@ async function z({
|
|
|
177
177
|
rpcUrl: a,
|
|
178
178
|
env: f
|
|
179
179
|
}) {
|
|
180
|
-
const n =
|
|
180
|
+
const n = U[u];
|
|
181
181
|
if (!n)
|
|
182
182
|
throw new Error(`Unknown vault key: ${u}`);
|
|
183
183
|
if (!H(o))
|
|
@@ -206,4 +206,4 @@ export {
|
|
|
206
206
|
j as d,
|
|
207
207
|
Y as q
|
|
208
208
|
};
|
|
209
|
-
//# sourceMappingURL=withdraw-
|
|
209
|
+
//# sourceMappingURL=withdraw-hHueI2p7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw-CVNVJ7-x.js","sources":["../../src/vaults/lib/ops/deposit.ts","../../src/vaults/lib/ops/withdraw.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type DepositParameters = {\n /** The amount to be deposited into the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Deposits specified amount to the chosen DeFi vault.\n * @param {DepositParameters} parameters\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function deposit({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: DepositParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const depositToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!depositToken) {\n throw new Error(`Unknown deposit token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(\n toBaseDenomination(amount, depositToken.decimals),\n );\n\n const allowanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'allowance',\n args: [account, vault.vaultContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n depositToken.decimals,\n );\n\n const balanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n depositToken.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The deposit amount exceeds the account's balance. \\nDeposit amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The deposit amount exceeds allowance. \\nDeposit amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'approve',\n args: [vault.vaultContract.address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // deposit funds via the teller contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.tellerContracts[chainId].address,\n abi: vault.tellerContracts[chainId].abi,\n functionName: 'deposit',\n args: [depositToken.address, amountBase, 0n],\n });\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { DAY } from '../../../utils/time';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type QueueWithdrawParameters = {\n /** The amount to be withdrawn from the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the withdraw amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Queues withdrawal from the DeFi vault.\n * @param {QueueWithdrawParameters} parameters - The parameters.\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function queueWithdraw({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: QueueWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(toBaseDenomination(amount, vault.decimals));\n\n const balanceRaw = await publicClient.readContract({\n address: vault.lensContract.address,\n abi: vault.lensContract.abi,\n functionName: 'balanceOf',\n args: [account, vault.vaultContract.address],\n });\n const balance = fromBaseDenomination(String(balanceRaw), vault.decimals);\n\n const allowanceRaw = await publicClient.readContract({\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'allowance',\n args: [account, vault.withdrawQueueContracts[chainId].address],\n });\n const allowance = fromBaseDenomination(String(allowanceRaw), vault.decimals);\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The withdraw amount exceeds the account's balance. \\nWithdraw amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The withdraw amount exceeds allowance. \\nWithdraw amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'approve',\n args: [vault.withdrawQueueContracts[chainId].address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // queue withdraw vault token to wihdraw token via the withdraw queue contract\n const expiry = BigNumber(Date.now())\n .dividedBy(1000)\n .plus(BigNumber(vault.queueWithdrawDaysValid).multipliedBy(DAY / 1000))\n .decimalPlaces(0, BigNumber.ROUND_DOWN); // expiry = now(seconds) + days(seconds)\n\n const discount = BigNumber(vault.queueWithdrawDiscountPercent).multipliedBy(\n 10000, // 1% = 10000\n );\n\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'safeUpdateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [expiry.toFixed(0), 0n, amountBase, false],\n vault.accountantContract.address,\n discount.toFixed(0),\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n\nexport type CancelWithdrawParameters = Pick<\n QueueWithdrawParameters,\n 'token' | 'vaultKey'\n> &\n CommonWriteParameters;\n\n/**\n * Cancels queued withdrawal.\n * @param {CancelWithdrawParameters} parameters - The parameters.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n * @returns\n */\nexport async function cancelWithdraw({\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: CancelWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n // cancel withdrawal via withdraw queue contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'updateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [0, 0, 0, false],\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n"],"names":["deposit","amountRaw","approve","token","Token","vaultKey","Vault","account","chainId","provider","rpcUrl","env","vault","VAULTS","isVedaVaultChain","publicClient","makePublicClient","walletClient","makeWalletClient","depositToken","getTokenInfo","amount","BigNumber","amountBase","toBigInt","toBaseDenomination","allowanceRaw","allowance","fromBaseDenomination","balanceRaw","balance","exceededMessage","request","CHAIN_ID_TO_VIEM_CHAIN_MAP","txHash","err","msg","getErrorMessage","queueWithdraw","withdrawToken","expiry","DAY","discount","cancelWithdraw"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"withdraw-hHueI2p7.js","sources":["../../src/vaults/lib/ops/deposit.ts","../../src/vaults/lib/ops/withdraw.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type DepositParameters = {\n /** The amount to be deposited into the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Deposits specified amount to the chosen DeFi vault.\n * @param {DepositParameters} parameters\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function deposit({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: DepositParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const depositToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!depositToken) {\n throw new Error(`Unknown deposit token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(\n toBaseDenomination(amount, depositToken.decimals),\n );\n\n const allowanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'allowance',\n args: [account, vault.vaultContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n depositToken.decimals,\n );\n\n const balanceRaw = await publicClient.readContract({\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n depositToken.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The deposit amount exceeds the account's balance. \\nDeposit amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The deposit amount exceeds allowance. \\nDeposit amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: depositToken.address,\n abi: depositToken.abi,\n functionName: 'approve',\n args: [vault.vaultContract.address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // deposit funds via the teller contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.tellerContracts[chainId].address,\n abi: vault.tellerContracts[chainId].abi,\n functionName: 'deposit',\n args: [depositToken.address, amountBase, 0n],\n });\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { makeWalletClient } from '../../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../../common/chains';\nimport { CommonWriteParameters } from '../../../common/parameters';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport { getErrorMessage } from '../../../utils/err';\nimport toBigInt from '../../../utils/numbers';\nimport { DAY } from '../../../utils/time';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type QueueWithdrawParameters = {\n /** The amount to be withdrawn from the DeFi vault. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the withdraw amount exceeds allowance.\n */\n approve?: boolean;\n /** The optional deposit asset. */\n token?: Token;\n /** The vault identifier. */\n vaultKey?: Vault;\n} & CommonWriteParameters;\n\n/**\n * Queues withdrawal from the DeFi vault.\n * @param {QueueWithdrawParameters} parameters - The parameters.\n * @param {BigNumber.Value} parameters.amount - The deposit amount.\n * @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n */\nexport async function queueWithdraw({\n amount: amountRaw,\n approve = true,\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: QueueWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n const amount = BigNumber(amountRaw);\n const amountBase = toBigInt(toBaseDenomination(amount, vault.decimals));\n\n const balanceRaw = await publicClient.readContract({\n address: vault.lensContract.address,\n abi: vault.lensContract.abi,\n functionName: 'balanceOf',\n args: [account, vault.vaultContract.address],\n });\n const balance = fromBaseDenomination(String(balanceRaw), vault.decimals);\n\n const allowanceRaw = await publicClient.readContract({\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'allowance',\n args: [account, vault.withdrawQueueContracts[chainId].address],\n });\n const allowance = fromBaseDenomination(String(allowanceRaw), vault.decimals);\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The withdraw amount exceeds the account's balance. \\nWithdraw amount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The withdraw amount exceeds allowance. \\nWithdraw amount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n try {\n console.info(`Trying to approve ${amountBase}`);\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.vaultContract.address,\n abi: vault.vaultContract.abi,\n functionName: 'approve',\n args: [vault.withdrawQueueContracts[chainId].address, amountBase],\n });\n\n const txHash = await walletClient.writeContract(request);\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${vault.vaultContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${vault.vaultContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n // queue withdraw vault token to wihdraw token via the withdraw queue contract\n const expiry = BigNumber(Date.now())\n .dividedBy(1000)\n .plus(BigNumber(vault.queueWithdrawDaysValid).multipliedBy(DAY / 1000))\n .decimalPlaces(0, BigNumber.ROUND_DOWN); // expiry = now(seconds) + days(seconds)\n\n const discount = BigNumber(vault.queueWithdrawDiscountPercent).multipliedBy(\n 10000, // 1% = 10000\n );\n\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'safeUpdateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [expiry.toFixed(0), 0n, amountBase, false],\n vault.accountantContract.address,\n discount.toFixed(0),\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n\nexport type CancelWithdrawParameters = Pick<\n QueueWithdrawParameters,\n 'token' | 'vaultKey'\n> &\n CommonWriteParameters;\n\n/**\n * Cancels queued withdrawal.\n * @param {CancelWithdrawParameters} parameters - The parameters.\n * @param {Token} parameters.token - The optional deposit asset.\n * @param {Vault} parameters.vaultKey - The vault identifier.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<Hash>}\n * @returns\n */\nexport async function cancelWithdraw({\n token = Token.LBTC,\n vaultKey = Vault.Veda,\n account,\n chainId,\n provider,\n rpcUrl,\n env,\n}: CancelWithdrawParameters) {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n if (!isVedaVaultChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId });\n\n const withdrawToken = await getTokenInfo(token, chainId, env, rpcUrl);\n if (!withdrawToken) {\n throw new Error(`Unknown withdraw token: ${token}`);\n }\n\n // cancel withdrawal via withdraw queue contract\n const { request } = await publicClient.simulateContract({\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n address: vault.withdrawQueueContracts[chainId].address,\n abi: vault.withdrawQueueContracts[chainId].abi,\n functionName: 'updateAtomicRequest',\n args: [\n vault.vaultContract.address,\n withdrawToken.address,\n [0, 0, 0, false],\n ],\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n"],"names":["deposit","amountRaw","approve","token","Token","vaultKey","Vault","account","chainId","provider","rpcUrl","env","vault","VAULTS","isVedaVaultChain","publicClient","makePublicClient","walletClient","makeWalletClient","depositToken","getTokenInfo","amount","BigNumber","amountBase","toBigInt","toBaseDenomination","allowanceRaw","allowance","fromBaseDenomination","balanceRaw","balance","exceededMessage","request","CHAIN_ID_TO_VIEM_CHAIN_MAP","txHash","err","msg","getErrorMessage","queueWithdraw","withdrawToken","expiry","DAY","discount","cancelWithdraw"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-url-config.d.ts","sourceRoot":"","sources":["../../src/clients/rpc-url-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAKlD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,OAAO,oDAAoD,CAAC;AAEzE,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"rpc-url-config.d.ts","sourceRoot":"","sources":["../../src/clients/rpc-url-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAKlD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,OAAO,oDAAoD,CAAC;AAEzE,eAAO,MAAM,YAAY,EAAE,aAqB1B,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GA0BjC,aAAa,CACnB"}
|