@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.
Files changed (164) hide show
  1. package/CHANGELOG.md +0 -94
  2. package/README.md +10 -59
  3. package/dist/api.cjs +1 -1
  4. package/dist/api.js +5 -5
  5. package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
  6. package/dist/bridge/lib/config.d.ts +3 -3
  7. package/dist/bridge/lib/config.d.ts.map +1 -1
  8. package/dist/bridge.cjs +1 -1
  9. package/dist/bridge.js +1 -1
  10. package/dist/btc.cjs +1 -1
  11. package/dist/btc.js +2 -2
  12. package/dist/chunks/{BtcActions-D9eBmDj6.cjs → BtcActions-ByhBml_1.cjs} +2 -2
  13. package/dist/chunks/{BtcActions-D9eBmDj6.cjs.map → BtcActions-ByhBml_1.cjs.map} +1 -1
  14. package/dist/chunks/{BtcActions-DGqmtxjd.js → BtcActions-C_A1dUQ0.js} +20 -20
  15. package/dist/chunks/{BtcActions-DGqmtxjd.js.map → BtcActions-C_A1dUQ0.js.map} +1 -1
  16. package/dist/chunks/{EvmActions-BOwYPThp.cjs → EvmActions-DoYIhj61.cjs} +2 -2
  17. package/dist/chunks/{EvmActions-BOwYPThp.cjs.map → EvmActions-DoYIhj61.cjs.map} +1 -1
  18. package/dist/chunks/{EvmActions-MW5mNmqs.js → EvmActions-DucgT60w.js} +45 -45
  19. package/dist/chunks/{EvmActions-MW5mNmqs.js.map → EvmActions-DucgT60w.js.map} +1 -1
  20. package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs → ReferralsClient-BC-1wT1q.cjs} +2 -2
  21. package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs.map → ReferralsClient-BC-1wT1q.cjs.map} +1 -1
  22. package/dist/chunks/{ReferralsClient-JjWLlIO4.js → ReferralsClient-DbFWWtVi.js} +20 -20
  23. package/dist/chunks/{ReferralsClient-JjWLlIO4.js.map → ReferralsClient-DbFWWtVi.js.map} +1 -1
  24. package/dist/chunks/approveLBTC-B5-ZWqct.js +26 -0
  25. package/dist/chunks/{approveLBTC-DOP0wsm3.js.map → approveLBTC-B5-ZWqct.js.map} +1 -1
  26. package/dist/chunks/{approveLBTC-CN6rJF6_.cjs → approveLBTC-CZiZmdcX.cjs} +2 -2
  27. package/dist/chunks/{approveLBTC-CN6rJF6_.cjs.map → approveLBTC-CZiZmdcX.cjs.map} +1 -1
  28. package/dist/chunks/blockchain-identifier-BmadkNtK.js +113 -0
  29. package/dist/chunks/blockchain-identifier-BmadkNtK.js.map +1 -0
  30. package/dist/chunks/{blockchain-identifier-DtIGGlIi.cjs → blockchain-identifier-BzMQWh-C.cjs} +2 -2
  31. package/dist/chunks/blockchain-identifier-BzMQWh-C.cjs.map +1 -0
  32. package/dist/chunks/bridge-BzRlY9pP.cjs +12 -0
  33. package/dist/chunks/bridge-BzRlY9pP.cjs.map +1 -0
  34. package/dist/chunks/{bridge-DyAiDpxD.js → bridge-CTsiodO1.js} +72 -95
  35. package/dist/chunks/bridge-CTsiodO1.js.map +1 -0
  36. package/dist/chunks/{config-_8X_2sG4.js → config-hFKqUyg3.js} +2 -2
  37. package/dist/chunks/{config-_8X_2sG4.js.map → config-hFKqUyg3.js.map} +1 -1
  38. package/dist/chunks/{config-DqbLaiRi.cjs → config-l4ZaZw_g.cjs} +2 -2
  39. package/dist/chunks/{config-DqbLaiRi.cjs.map → config-l4ZaZw_g.cjs.map} +1 -1
  40. package/dist/chunks/{defi-registry-NGWlyxAY.cjs → defi-registry-BIRv_zkp.cjs} +2 -2
  41. package/dist/chunks/{defi-registry-NGWlyxAY.cjs.map → defi-registry-BIRv_zkp.cjs.map} +1 -1
  42. package/dist/chunks/{defi-registry-dhrQMy94.js → defi-registry-wNFN3qyB.js} +7 -7
  43. package/dist/chunks/{defi-registry-dhrQMy94.js.map → defi-registry-wNFN3qyB.js.map} +1 -1
  44. package/dist/chunks/{depositStatus-K6gky8zH.cjs → depositStatus-C3-EgT2a.cjs} +2 -2
  45. package/dist/chunks/{depositStatus-K6gky8zH.cjs.map → depositStatus-C3-EgT2a.cjs.map} +1 -1
  46. package/dist/chunks/{depositStatus-DeCO-K5Q.js → depositStatus-DM7fRmbN.js} +8 -8
  47. package/dist/chunks/{depositStatus-DeCO-K5Q.js.map → depositStatus-DM7fRmbN.js.map} +1 -1
  48. package/dist/chunks/{events-DIKZG4SZ.cjs → events-BTtwgCev.cjs} +2 -2
  49. package/dist/chunks/{events-DIKZG4SZ.cjs.map → events-BTtwgCev.cjs.map} +1 -1
  50. package/dist/chunks/{events-CLVUaKQS.js → events-DPi6MDRA.js} +35 -35
  51. package/dist/chunks/{events-CLVUaKQS.js.map → events-DPi6MDRA.js.map} +1 -1
  52. package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs → get-exchange-ratio-C-7DadfD.cjs} +2 -2
  53. package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs.map → get-exchange-ratio-C-7DadfD.cjs.map} +1 -1
  54. package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +20 -0
  55. package/dist/chunks/{get-exchange-ratio-B0CNEGOB.js.map → get-exchange-ratio-NtnkG1kZ.js.map} +1 -1
  56. package/dist/chunks/{get-positions-summary-Cled5YPA.js → get-positions-summary-B_MmGHLv.js} +4 -4
  57. package/dist/chunks/{get-positions-summary-Cled5YPA.js.map → get-positions-summary-B_MmGHLv.js.map} +1 -1
  58. package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs → get-positions-summary-DkZZYbGP.cjs} +2 -2
  59. package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs.map → get-positions-summary-DkZZYbGP.cjs.map} +1 -1
  60. package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs → get-vault-tvl-DmTUbOY7.cjs} +2 -2
  61. package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs.map → get-vault-tvl-DmTUbOY7.cjs.map} +1 -1
  62. package/dist/chunks/{get-vault-tvl-DxjO9xDs.js → get-vault-tvl-YAXePAW3.js} +4 -4
  63. package/dist/chunks/{get-vault-tvl-DxjO9xDs.js.map → get-vault-tvl-YAXePAW3.js.map} +1 -1
  64. package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js → get-vault-withdrawals-BrpZlt6s.js} +3 -3
  65. package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js.map → get-vault-withdrawals-BrpZlt6s.js.map} +1 -1
  66. package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs → get-vault-withdrawals-CWcYy_sH.cjs} +2 -2
  67. package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs.map → get-vault-withdrawals-CWcYy_sH.cjs.map} +1 -1
  68. package/dist/chunks/{getSharesByAddress-De7as74h.cjs → getSharesByAddress-U48H_ygt.cjs} +2 -2
  69. package/dist/chunks/{getSharesByAddress-De7as74h.cjs.map → getSharesByAddress-U48H_ygt.cjs.map} +1 -1
  70. package/dist/chunks/{getSharesByAddress-CK2q7gBI.js → getSharesByAddress-cUtkrKTq.js} +14 -14
  71. package/dist/chunks/{getSharesByAddress-CK2q7gBI.js.map → getSharesByAddress-cUtkrKTq.js.map} +1 -1
  72. package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs → getUserStakeAndBakeSignature-BxRq2cI1.cjs} +2 -2
  73. package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs.map → getUserStakeAndBakeSignature-BxRq2cI1.cjs.map} +1 -1
  74. package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js → getUserStakeAndBakeSignature-NGGblnJl.js} +11 -11
  75. package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js.map → getUserStakeAndBakeSignature-NGGblnJl.js.map} +1 -1
  76. package/dist/chunks/index-BKzxeh1Y.cjs.map +1 -1
  77. package/dist/chunks/index-CfcQ_g3t.js.map +1 -1
  78. package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js → lbtc-addresses-BLRmtR3c.js} +2 -2
  79. package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js.map → lbtc-addresses-BLRmtR3c.js.map} +1 -1
  80. package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs → lbtc-addresses-xyTYV7hx.cjs} +2 -2
  81. package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs.map → lbtc-addresses-xyTYV7hx.cjs.map} +1 -1
  82. package/dist/chunks/{statusConstants-ZJia15m2.js → statusConstants-CJk6vOiM.js} +844 -853
  83. package/dist/chunks/statusConstants-CJk6vOiM.js.map +1 -0
  84. package/dist/chunks/statusConstants-fmtIEEEM.cjs +2 -0
  85. package/dist/chunks/statusConstants-fmtIEEEM.cjs.map +1 -0
  86. package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js → storeNetworkFeeSignature-BZGL2Zn_.js} +8 -8
  87. package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js.map → storeNetworkFeeSignature-BZGL2Zn_.js.map} +1 -1
  88. package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs → storeNetworkFeeSignature-D7yo6lDV.cjs} +2 -2
  89. package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs.map → storeNetworkFeeSignature-D7yo6lDV.cjs.map} +1 -1
  90. package/dist/chunks/token-addresses-DRBecUa7.cjs +2 -0
  91. package/dist/chunks/token-addresses-DRBecUa7.cjs.map +1 -0
  92. package/dist/chunks/token-addresses-FKpA3uc4.js +541 -0
  93. package/dist/chunks/token-addresses-FKpA3uc4.js.map +1 -0
  94. package/dist/chunks/{tokens-Bw35TZqd.js → tokens-C6qZHzph.js} +28 -30
  95. package/dist/chunks/tokens-C6qZHzph.js.map +1 -0
  96. package/dist/chunks/tokens-D_HeVB5p.cjs +2 -0
  97. package/dist/chunks/tokens-D_HeVB5p.cjs.map +1 -0
  98. package/dist/chunks/{unstakeLBTC-Huy_ncVl.js → unstakeLBTC-B4Rwf65e.js} +141 -129
  99. package/dist/chunks/unstakeLBTC-B4Rwf65e.js.map +1 -0
  100. package/dist/chunks/unstakeLBTC-Wlfi14de.cjs +2 -0
  101. package/dist/chunks/unstakeLBTC-Wlfi14de.cjs.map +1 -0
  102. package/dist/chunks/{withdraw-Z77x7Hj4.cjs → withdraw-C1fMFSwy.cjs} +2 -2
  103. package/dist/chunks/{withdraw-Z77x7Hj4.cjs.map → withdraw-C1fMFSwy.cjs.map} +1 -1
  104. package/dist/chunks/{withdraw-CVNVJ7-x.js → withdraw-hHueI2p7.js} +9 -9
  105. package/dist/chunks/{withdraw-CVNVJ7-x.js.map → withdraw-hHueI2p7.js.map} +1 -1
  106. package/dist/clients/rpc-url-config.d.ts.map +1 -1
  107. package/dist/common/chains.d.ts +343 -112
  108. package/dist/common/chains.d.ts.map +1 -1
  109. package/dist/common/feature-config.d.ts.map +1 -1
  110. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts +27 -0
  111. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts.map +1 -1
  112. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts +26 -0
  113. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts.map +1 -1
  114. package/dist/contracts.cjs +1 -1
  115. package/dist/contracts.js +26 -24
  116. package/dist/core/chains/catalog.d.ts.map +1 -1
  117. package/dist/core/chains/types.d.ts +0 -1
  118. package/dist/core/chains/types.d.ts.map +1 -1
  119. package/dist/core.cjs +1 -1
  120. package/dist/core.js +29 -29
  121. package/dist/defi.cjs +1 -1
  122. package/dist/defi.js +3 -3
  123. package/dist/entries/contracts.d.ts +2 -2
  124. package/dist/entries/contracts.d.ts.map +1 -1
  125. package/dist/entries/evm.d.ts +1 -1
  126. package/dist/entries/evm.d.ts.map +1 -1
  127. package/dist/entries/utils.d.ts +1 -1
  128. package/dist/entries/utils.d.ts.map +1 -1
  129. package/dist/evm.cjs +1 -1
  130. package/dist/evm.js +34 -35
  131. package/dist/index.cjs +1 -1
  132. package/dist/index.d.ts +3 -3
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +188 -187
  135. package/dist/metrics.cjs +1 -1
  136. package/dist/metrics.js +1 -1
  137. package/dist/stories/components/decorators/wagmi-decorator.d.ts.map +1 -1
  138. package/dist/tokens/token-addresses.d.ts.map +1 -1
  139. package/dist/utils.cjs +1 -1
  140. package/dist/utils.js +48 -49
  141. package/dist/vaults.cjs +1 -1
  142. package/dist/vaults.js +15 -15
  143. package/package.json +2 -2
  144. package/dist/chunks/approveLBTC-DOP0wsm3.js +0 -26
  145. package/dist/chunks/blockchain-identifier-DtIGGlIi.cjs.map +0 -1
  146. package/dist/chunks/blockchain-identifier-PNEhu-QU.js +0 -113
  147. package/dist/chunks/blockchain-identifier-PNEhu-QU.js.map +0 -1
  148. package/dist/chunks/bridge-DkZMwO7c.cjs +0 -12
  149. package/dist/chunks/bridge-DkZMwO7c.cjs.map +0 -1
  150. package/dist/chunks/bridge-DyAiDpxD.js.map +0 -1
  151. package/dist/chunks/get-exchange-ratio-B0CNEGOB.js +0 -20
  152. package/dist/chunks/statusConstants-DTDi_4Go.cjs +0 -2
  153. package/dist/chunks/statusConstants-DTDi_4Go.cjs.map +0 -1
  154. package/dist/chunks/statusConstants-ZJia15m2.js.map +0 -1
  155. package/dist/chunks/token-addresses-D859i6tX.cjs +0 -2
  156. package/dist/chunks/token-addresses-D859i6tX.cjs.map +0 -1
  157. package/dist/chunks/token-addresses-DmAr89jP.js +0 -579
  158. package/dist/chunks/token-addresses-DmAr89jP.js.map +0 -1
  159. package/dist/chunks/tokens-Bw35TZqd.js.map +0 -1
  160. package/dist/chunks/tokens-DLGMNeqZ.cjs +0 -2
  161. package/dist/chunks/tokens-DLGMNeqZ.cjs.map +0 -1
  162. package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs +0 -2
  163. package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs.map +0 -1
  164. 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 U, f as g, c as W } from "./tokens-Bw35TZqd.js";
3
- import { V as y, T as D, e as b } from "./token-addresses-DmAr89jP.js";
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 V } from "./config-_8X_2sG4.js";
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 = V[o];
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
- U(i, e.decimals)
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 = V[o];
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(U(i, t.decimals)), T = await s.readContract({
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 = V[u];
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-CVNVJ7-x.js.map
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,aAsB1B,CAAC;AAEF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GA2BjC,aAAa,CACnB"}
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"}