@lombard.finance/sdk 4.7.2 → 5.0.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 +83 -2
- package/README.md +22 -21
- package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.d.ts.map +1 -1
- package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.d.ts.map +1 -1
- package/dist/api.js +5 -5
- package/dist/bridge.js +1 -1
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/config/evm.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/config/solana.d.ts.map +1 -1
- package/dist/chains/btc/actions/depositAndDeploy/config/index.d.ts.map +1 -1
- package/dist/chains/btc/actions/depositAndDeploy/types.d.ts.map +1 -1
- package/dist/chains/btc/actions/stake/BtcStake.d.ts.map +1 -1
- package/dist/chains/btc/actions/stake/config/evm.d.ts.map +1 -1
- package/dist/chains/btc/actions/stake/config/solana.d.ts.map +1 -1
- package/dist/chains/btc/actions/stakeAndDeploy/config/index.d.ts.map +1 -1
- package/dist/chains/btc/actions/stakeAndDeploy/types.d.ts.map +1 -1
- package/dist/chains/btc/client/getCurrentBlockHeight.d.ts.map +1 -1
- package/dist/chains/evm/actions/deploy/EvmDeploy.d.ts +19 -4
- package/dist/chains/evm/actions/deploy/EvmDeploy.d.ts.map +1 -1
- package/dist/chains/evm/actions/deploy/index.d.ts.map +1 -1
- package/dist/chains/evm/actions/deploy/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/deposit/config/evm.d.ts.map +1 -1
- package/dist/chains/evm/actions/deposit/index.d.ts.map +1 -1
- package/dist/chains/evm/actions/redeem/EvmRedeem.d.ts.map +1 -1
- package/dist/chains/evm/actions/redeem/config/evm.d.ts.map +1 -1
- package/dist/chains/evm/actions/redeem/index.d.ts.map +1 -1
- package/dist/chains/evm/actions/redeem/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/stake/config/index.d.ts.map +1 -1
- package/dist/chains/evm/actions/stake/config/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/stake/index.d.ts.map +1 -1
- package/dist/chains/evm/actions/stake/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/unstake/EvmUnstake.d.ts.map +1 -1
- package/dist/chains/evm/actions/unstake/index.d.ts.map +1 -1
- package/dist/chains/evm/actions/unstake/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/withdraw/EvmCancelWithdraw.d.ts.map +1 -1
- package/dist/chains/evm/actions/withdraw/EvmWithdraw.d.ts +6 -0
- package/dist/chains/evm/actions/withdraw/EvmWithdraw.d.ts.map +1 -1
- package/dist/chains/evm/actions/withdraw/config/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/withdraw/types.d.ts.map +1 -1
- package/dist/chains/solana/SolanaActions.d.ts.map +1 -1
- package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts.map +1 -1
- package/dist/chains/solana/actions/redeem/types.d.ts.map +1 -1
- package/dist/chains/solana/actions/stake/SolanaStake.d.ts.map +1 -1
- package/dist/chains/solana/actions/stake/types.d.ts.map +1 -1
- package/dist/chains/solana/actions/unstake/SolanaUnstake.d.ts.map +1 -1
- package/dist/chains/solana/actions/unstake/factory.d.ts.map +1 -1
- package/dist/chains/solana/actions/unstake/types.d.ts.map +1 -1
- package/dist/chains/solana/utils.d.ts.map +1 -1
- package/dist/chains/starknet/actions/unstake/config/index.d.ts.map +1 -1
- package/dist/chains/starknet/actions/unstake/factory.d.ts.map +1 -1
- package/dist/chains/starknet/actions/unstake/types.d.ts.map +1 -1
- package/dist/chains/sui/actions/unstake/config/index.d.ts.map +1 -1
- package/dist/chains/sui/actions/unstake/factory.d.ts.map +1 -1
- package/dist/chains/sui/actions/unstake/types.d.ts.map +1 -1
- package/dist/chunks/{BtcActions-Ds6YrAKZ.js → BtcActions-CFGiDxtv.js} +20 -22
- package/dist/chunks/BtcActions-CFGiDxtv.js.map +1 -0
- package/dist/chunks/BtcActions-DJJmmyzi.cjs +2 -0
- package/dist/chunks/BtcActions-DJJmmyzi.cjs.map +1 -0
- package/dist/chunks/EvmActions-CUKBeiUw.js +1508 -0
- package/dist/chunks/EvmActions-CUKBeiUw.js.map +1 -0
- package/dist/chunks/EvmActions-CxipDb7X.cjs +7 -0
- package/dist/chunks/EvmActions-CxipDb7X.cjs.map +1 -0
- package/dist/chunks/{ReferralsClient-DT3qvRXP.js → ReferralsClient-BRa26dYS.js} +4 -4
- package/dist/chunks/ReferralsClient-BRa26dYS.js.map +1 -0
- package/dist/chunks/ReferralsClient-o-3AUm7s.cjs.map +1 -1
- package/dist/chunks/{approveLBTC-DZQpza0E.js → approveLBTC-DnCt6ZZF.js} +3 -3
- package/dist/chunks/{approveLBTC-DZQpza0E.js.map → approveLBTC-DnCt6ZZF.js.map} +1 -1
- package/dist/chunks/{blockchain-identifier-C2GkWxmw.js → blockchain-identifier-BkASqCgZ.js} +2 -2
- package/dist/chunks/blockchain-identifier-BkASqCgZ.js.map +1 -0
- package/dist/chunks/blockchain-identifier-DWfC3Es2.cjs.map +1 -1
- package/dist/chunks/{bridge-62Nuzkt6.js → bridge-DV4fOcHe.js} +4 -4
- package/dist/chunks/bridge-DV4fOcHe.js.map +1 -0
- package/dist/chunks/bridge-DZp5x4Yb.cjs.map +1 -1
- package/dist/chunks/{config-8IroHCdP.cjs → config-BfX8lrdO.cjs} +2 -2
- package/dist/chunks/config-BfX8lrdO.cjs.map +1 -0
- package/dist/chunks/{config-ej-tsP3s.js → config-wnjPtnjd.js} +46 -53
- package/dist/chunks/config-wnjPtnjd.js.map +1 -0
- package/dist/chunks/{defi-registry-QwFZR4oK.cjs → defi-registry-CyMKVT3z.cjs} +2 -2
- package/dist/chunks/defi-registry-CyMKVT3z.cjs.map +1 -0
- package/dist/chunks/{defi-registry-DLP7nuRn.js → defi-registry-DULXbu3D.js} +9 -9
- package/dist/chunks/defi-registry-DULXbu3D.js.map +1 -0
- package/dist/chunks/depositStatus-B9P1YXEU.cjs.map +1 -1
- package/dist/chunks/{depositStatus-DMDUj1Zi.js → depositStatus-Cgd_GDUt.js} +5 -5
- package/dist/chunks/depositStatus-Cgd_GDUt.js.map +1 -0
- package/dist/chunks/events-B9b3YdgM.cjs +2 -0
- package/dist/chunks/events-B9b3YdgM.cjs.map +1 -0
- package/dist/chunks/{events-DmrU6jV2.js → events-DU2wYlt_.js} +189 -191
- package/dist/chunks/events-DU2wYlt_.js.map +1 -0
- package/dist/chunks/{get-exchange-ratio-D_5R035-.js → get-exchange-ratio-BvPUfcIQ.js} +2 -2
- package/dist/chunks/{get-exchange-ratio-D_5R035-.js.map → get-exchange-ratio-BvPUfcIQ.js.map} +1 -1
- package/dist/chunks/get-exchange-ratio-DGztGO7i.cjs.map +1 -1
- package/dist/chunks/get-positions-summary-CC7BDtlY.cjs.map +1 -1
- package/dist/chunks/{get-positions-summary-CSTG4Ni0.js → get-positions-summary-DxAgmaMl.js} +2 -2
- package/dist/chunks/get-positions-summary-DxAgmaMl.js.map +1 -0
- package/dist/chunks/get-vault-tvl-B6rSrGi_.js +203 -0
- package/dist/chunks/get-vault-tvl-B6rSrGi_.js.map +1 -0
- package/dist/chunks/get-vault-tvl-dvEPPxvT.cjs +2 -0
- package/dist/chunks/get-vault-tvl-dvEPPxvT.cjs.map +1 -0
- package/dist/chunks/get-vault-withdrawals-Cgx7VsM1.cjs +2 -0
- package/dist/chunks/get-vault-withdrawals-Cgx7VsM1.cjs.map +1 -0
- package/dist/chunks/get-vault-withdrawals-W5CgNbqE.js +154 -0
- package/dist/chunks/get-vault-withdrawals-W5CgNbqE.js.map +1 -0
- package/dist/chunks/{getUserStakeAndBakeSignature-Bqp_BTOt.js → getUserStakeAndBakeSignature-BRhWFYyY.js} +4 -4
- package/dist/chunks/getUserStakeAndBakeSignature-BRhWFYyY.js.map +1 -0
- package/dist/chunks/getUserStakeAndBakeSignature-VlC_GHmz.cjs.map +1 -1
- package/dist/chunks/hex-BiCL4CPh.js +11 -0
- package/dist/chunks/hex-BiCL4CPh.js.map +1 -0
- package/dist/chunks/hex-DeJtv8eu.cjs +2 -0
- package/dist/chunks/hex-DeJtv8eu.cjs.map +1 -0
- package/dist/chunks/{lbtc-addresses-BzalXq8D.js → lbtc-addresses-ClXt-tuB.js} +2 -2
- package/dist/chunks/{lbtc-addresses-BzalXq8D.js.map → lbtc-addresses-ClXt-tuB.js.map} +1 -1
- package/dist/chunks/parameters-CcpaKGU2.js +24 -0
- package/dist/chunks/parameters-CcpaKGU2.js.map +1 -0
- package/dist/chunks/parameters-YNWmaAho.cjs +2 -0
- package/dist/chunks/parameters-YNWmaAho.cjs.map +1 -0
- package/dist/chunks/{statusConstants-C4MCQQX7.cjs → statusConstants-B-7VEYgO.cjs} +2 -2
- package/dist/chunks/statusConstants-B-7VEYgO.cjs.map +1 -0
- package/dist/chunks/{statusConstants-DAn1Atsp.js → statusConstants-C3JHNUTC.js} +15 -17
- package/dist/chunks/statusConstants-C3JHNUTC.js.map +1 -0
- package/dist/chunks/{storeNetworkFeeSignature-B4xx2WLI.js → storeNetworkFeeSignature-CY_Z-Wtn.js} +2 -2
- package/dist/chunks/{storeNetworkFeeSignature-B4xx2WLI.js.map → storeNetworkFeeSignature-CY_Z-Wtn.js.map} +1 -1
- package/dist/chunks/token-addresses-C7H9E4qz.cjs.map +1 -1
- package/dist/chunks/{token-addresses-J-EuQVP6.js → token-addresses-DVnRPyu4.js} +4 -2
- package/dist/chunks/token-addresses-DVnRPyu4.js.map +1 -0
- package/dist/chunks/{tokens-CwbSzyK9.js → tokens-Btl3GXbc.js} +3 -3
- package/dist/chunks/tokens-Btl3GXbc.js.map +1 -0
- package/dist/chunks/tokens-DEYY7W7O.cjs.map +1 -1
- package/dist/chunks/unwrapBtceToLbtcv-C4OxoVVU.js +321 -0
- package/dist/chunks/unwrapBtceToLbtcv-C4OxoVVU.js.map +1 -0
- package/dist/chunks/unwrapBtceToLbtcv-Dg-yUGpg.cjs +2 -0
- package/dist/chunks/unwrapBtceToLbtcv-Dg-yUGpg.cjs.map +1 -0
- package/dist/chunks/withdrawEarn-CTtVruit.cjs +7 -0
- package/dist/chunks/withdrawEarn-CTtVruit.cjs.map +1 -0
- package/dist/chunks/{unstakeLBTC-CEqb4N-_.js → withdrawEarn-QFaMhs0t.js} +965 -612
- package/dist/chunks/withdrawEarn-QFaMhs0t.js.map +1 -0
- package/dist/client/ApiNamespace.d.ts +3 -6
- package/dist/client/ApiNamespace.d.ts.map +1 -1
- package/dist/common/blockchain-identifier.d.ts.map +1 -1
- package/dist/common/chains.d.ts.map +1 -1
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/contract-functions/cancelEarnWithdrawal/cancelEarnWithdrawal.d.ts +19 -0
- package/dist/contract-functions/cancelEarnWithdrawal/cancelEarnWithdrawal.d.ts.map +1 -0
- package/dist/contract-functions/cancelEarnWithdrawal/index.d.ts +2 -0
- package/dist/contract-functions/cancelEarnWithdrawal/index.d.ts.map +1 -0
- package/dist/contract-functions/depositEarn/depositEarn.d.ts +36 -0
- package/dist/contract-functions/depositEarn/depositEarn.d.ts.map +1 -0
- package/dist/contract-functions/depositEarn/index.d.ts +2 -0
- package/dist/contract-functions/depositEarn/index.d.ts.map +1 -0
- package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts.map +1 -1
- package/dist/contract-functions/getEarnPosition/getEarnPosition.d.ts +17 -16
- package/dist/contract-functions/getEarnPosition/getEarnPosition.d.ts.map +1 -1
- package/dist/contract-functions/getShareValue/getShareValue.d.ts +5 -15
- package/dist/contract-functions/getShareValue/getShareValue.d.ts.map +1 -1
- package/dist/contract-functions/getSharesByAddress/getSharesByAddress.d.ts +5 -20
- package/dist/contract-functions/getSharesByAddress/getSharesByAddress.d.ts.map +1 -1
- package/dist/contract-functions/index.d.ts +4 -2
- package/dist/contract-functions/index.d.ts.map +1 -1
- package/dist/contract-functions/previewWithdrawEarn/index.d.ts +2 -0
- package/dist/contract-functions/previewWithdrawEarn/index.d.ts.map +1 -0
- package/dist/contract-functions/previewWithdrawEarn/previewWithdrawEarn.d.ts +38 -0
- package/dist/contract-functions/previewWithdrawEarn/previewWithdrawEarn.d.ts.map +1 -0
- package/dist/contract-functions/signStakeAndBake/validation.d.ts.map +1 -1
- package/dist/contract-functions/withdrawEarn/index.d.ts +2 -0
- package/dist/contract-functions/withdrawEarn/index.d.ts.map +1 -0
- package/dist/contract-functions/withdrawEarn/withdrawEarn.d.ts +46 -0
- package/dist/contract-functions/withdrawEarn/withdrawEarn.d.ts.map +1 -0
- package/dist/contract-functions/wrapToBtce/wrapToBtce.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +32 -30
- package/dist/core/assets/catalog.d.ts.map +1 -1
- package/dist/core/assets/utils.d.ts.map +1 -1
- package/dist/core/chains/utils.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +19 -19
- package/dist/defi/defi-registry.d.ts.map +1 -1
- package/dist/defi/index.d.ts +1 -1
- package/dist/defi/index.d.ts.map +1 -1
- package/dist/defi.cjs +1 -1
- package/dist/defi.js +4 -4
- package/dist/entries/api.d.ts +14 -14
- package/dist/entries/api.d.ts.map +1 -1
- package/dist/entries/contracts.d.ts +4 -2
- package/dist/entries/contracts.d.ts.map +1 -1
- package/dist/entries/defi.d.ts +1 -1
- package/dist/entries/defi.d.ts.map +1 -1
- package/dist/entries/evm.d.ts +7 -7
- package/dist/entries/evm.d.ts.map +1 -1
- package/dist/entries/utils.d.ts +9 -9
- package/dist/entries/utils.d.ts.map +1 -1
- package/dist/entries/vaults.d.ts +1 -1
- package/dist/entries/vaults.d.ts.map +1 -1
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +67 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +171 -174
- package/dist/index.js.map +1 -1
- package/dist/metrics.js +1 -1
- package/dist/services/EvmService.d.ts.map +1 -1
- package/dist/shared/actions/BaseAction.d.ts.map +1 -1
- package/dist/shared/deposits/depositStatus.d.ts.map +1 -1
- package/dist/shared/validation/index.d.ts.map +1 -1
- package/dist/tokens/tokens.d.ts.map +1 -1
- package/dist/utils/chain.d.ts.map +1 -1
- package/dist/utils/consoleLogger.d.ts.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +16 -16
- package/dist/vaults/index.d.ts +8 -10
- package/dist/vaults/index.d.ts.map +1 -1
- package/dist/vaults/lib/config.d.ts +148 -150
- package/dist/vaults/lib/config.d.ts.map +1 -1
- package/dist/vaults/lib/metrics/get-vault-apy.d.ts +2 -4
- package/dist/vaults/lib/metrics/get-vault-apy.d.ts.map +1 -1
- package/dist/vaults/lib/metrics/get-vault-points.d.ts +2 -5
- package/dist/vaults/lib/metrics/get-vault-points.d.ts.map +1 -1
- package/dist/vaults/lib/metrics/get-vault-tvl.d.ts +5 -8
- package/dist/vaults/lib/metrics/get-vault-tvl.d.ts.map +1 -1
- package/dist/vaults/lib/ops/deposit.d.ts +5 -14
- package/dist/vaults/lib/ops/deposit.d.ts.map +1 -1
- package/dist/vaults/lib/ops/get-vault-deposits.d.ts +9 -13
- package/dist/vaults/lib/ops/get-vault-deposits.d.ts.map +1 -1
- package/dist/vaults/lib/ops/get-vault-minimum-deposit.d.ts +4 -7
- package/dist/vaults/lib/ops/get-vault-minimum-deposit.d.ts.map +1 -1
- package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts +14 -18
- package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts.map +1 -1
- package/dist/vaults/lib/ops/preview-vault-deposit.d.ts +4 -8
- package/dist/vaults/lib/ops/preview-vault-deposit.d.ts.map +1 -1
- package/dist/vaults/lib/ops/withdraw.d.ts +11 -27
- package/dist/vaults/lib/ops/withdraw.d.ts.map +1 -1
- package/dist/vaults.cjs +1 -1
- package/dist/vaults.cjs.map +1 -1
- package/dist/vaults.js +91 -103
- package/dist/vaults.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/BtcActions-Ds6YrAKZ.js.map +0 -1
- package/dist/chunks/BtcActions-DywyNv3O.cjs +0 -2
- package/dist/chunks/BtcActions-DywyNv3O.cjs.map +0 -1
- package/dist/chunks/EvmActions-BDk1vvRY.js +0 -1341
- package/dist/chunks/EvmActions-BDk1vvRY.js.map +0 -1
- package/dist/chunks/EvmActions-BzlEACJk.cjs +0 -2
- package/dist/chunks/EvmActions-BzlEACJk.cjs.map +0 -1
- package/dist/chunks/ReferralsClient-DT3qvRXP.js.map +0 -1
- package/dist/chunks/blockchain-identifier-C2GkWxmw.js.map +0 -1
- package/dist/chunks/bridge-62Nuzkt6.js.map +0 -1
- package/dist/chunks/config-8IroHCdP.cjs.map +0 -1
- package/dist/chunks/config-ej-tsP3s.js.map +0 -1
- package/dist/chunks/defi-registry-DLP7nuRn.js.map +0 -1
- package/dist/chunks/defi-registry-QwFZR4oK.cjs.map +0 -1
- package/dist/chunks/depositStatus-DMDUj1Zi.js.map +0 -1
- package/dist/chunks/events-DADaEsss.cjs +0 -2
- package/dist/chunks/events-DADaEsss.cjs.map +0 -1
- package/dist/chunks/events-DmrU6jV2.js.map +0 -1
- package/dist/chunks/get-positions-summary-CSTG4Ni0.js.map +0 -1
- package/dist/chunks/get-vault-tvl-D6XcYucx.cjs +0 -2
- package/dist/chunks/get-vault-tvl-D6XcYucx.cjs.map +0 -1
- package/dist/chunks/get-vault-tvl-DwdB1FA1.js +0 -226
- package/dist/chunks/get-vault-tvl-DwdB1FA1.js.map +0 -1
- package/dist/chunks/get-vault-withdrawals-BLwcsT0Q.js +0 -161
- package/dist/chunks/get-vault-withdrawals-BLwcsT0Q.js.map +0 -1
- package/dist/chunks/get-vault-withdrawals-CuSwGy0M.cjs +0 -2
- package/dist/chunks/get-vault-withdrawals-CuSwGy0M.cjs.map +0 -1
- package/dist/chunks/getUserStakeAndBakeSignature-Bqp_BTOt.js.map +0 -1
- package/dist/chunks/parameters-C_16L5ft.js +0 -11
- package/dist/chunks/parameters-C_16L5ft.js.map +0 -1
- package/dist/chunks/parameters-DK9cYCAH.cjs +0 -2
- package/dist/chunks/parameters-DK9cYCAH.cjs.map +0 -1
- package/dist/chunks/statusConstants-C4MCQQX7.cjs.map +0 -1
- package/dist/chunks/statusConstants-DAn1Atsp.js.map +0 -1
- package/dist/chunks/time-I-BeyUkG.cjs +0 -2
- package/dist/chunks/time-I-BeyUkG.cjs.map +0 -1
- package/dist/chunks/time-Sa5gggPG.js +0 -24
- package/dist/chunks/time-Sa5gggPG.js.map +0 -1
- package/dist/chunks/token-addresses-J-EuQVP6.js.map +0 -1
- package/dist/chunks/tokens-CwbSzyK9.js.map +0 -1
- package/dist/chunks/unstakeLBTC-CEqb4N-_.js.map +0 -1
- package/dist/chunks/unstakeLBTC-DMI79XHm.cjs +0 -2
- package/dist/chunks/unstakeLBTC-DMI79XHm.cjs.map +0 -1
- package/dist/chunks/withdraw-CYUXQ9HY.js +0 -209
- package/dist/chunks/withdraw-CYUXQ9HY.js.map +0 -1
- package/dist/chunks/withdraw-D-FlPc10.cjs +0 -12
- package/dist/chunks/withdraw-D-FlPc10.cjs.map +0 -1
- package/dist/chunks/wrapToBtce-D-TaAhqb.cjs +0 -2
- package/dist/chunks/wrapToBtce-D-TaAhqb.cjs.map +0 -1
- package/dist/chunks/wrapToBtce-yEQfbDAw.js +0 -298
- package/dist/chunks/wrapToBtce-yEQfbDAw.js.map +0 -1
- package/dist/contract-functions/getShareValue/index.d.ts +0 -2
- package/dist/contract-functions/getShareValue/index.d.ts.map +0 -1
- package/dist/contract-functions/getSharesByAddress/index.d.ts +0 -2
- package/dist/contract-functions/getSharesByAddress/index.d.ts.map +0 -1
|
@@ -3,20 +3,19 @@ import { Address, Hash } from 'viem';
|
|
|
3
3
|
import { ChainId } from '../../../common/chains';
|
|
4
4
|
import { IEnvParam } from '../../../common/parameters';
|
|
5
5
|
import { TokenInfo } from '../../../tokens/tokens';
|
|
6
|
-
import {
|
|
7
|
-
export type
|
|
6
|
+
import { EarnChain } from '../config';
|
|
7
|
+
export type GetEarnDepositsParameters = IEnvParam & {
|
|
8
8
|
account: Address;
|
|
9
9
|
chainId: ChainId;
|
|
10
|
-
vaultKey?: Vault;
|
|
11
10
|
rpcUrl?: string;
|
|
12
11
|
};
|
|
13
|
-
export type
|
|
12
|
+
export type EarnDeposit = {
|
|
14
13
|
/** The transaction hash */
|
|
15
14
|
txHash: Hash;
|
|
16
15
|
/** The transaction's block number */
|
|
17
16
|
blockNumber: number;
|
|
18
17
|
/** The chain id */
|
|
19
|
-
chainId:
|
|
18
|
+
chainId: EarnChain;
|
|
20
19
|
/** The deposited amount */
|
|
21
20
|
amount: BigNumber;
|
|
22
21
|
/** The amount of shares received */
|
|
@@ -31,15 +30,13 @@ export type VaultDeposit = {
|
|
|
31
30
|
* @param parameters - The parameters.
|
|
32
31
|
* @param parameters.account - The account address.
|
|
33
32
|
* @param parameters.chainId - The chain id.
|
|
34
|
-
* @param parameters.vaultKey - The optional vault identifier.
|
|
35
33
|
* @param parameters.rpcUrl - The optional RPC url.
|
|
36
34
|
*
|
|
37
|
-
* @returns {Promise<
|
|
35
|
+
* @returns {Promise<EarnDeposit[]>}
|
|
38
36
|
*/
|
|
39
|
-
export declare function
|
|
40
|
-
export type
|
|
37
|
+
export declare function getEarnDeposits({ account, chainId, rpcUrl, env, }: GetEarnDepositsParameters): Promise<EarnDeposit[]>;
|
|
38
|
+
export type GetEarnDepositsAllChainsParameters = {
|
|
41
39
|
account: Address;
|
|
42
|
-
vaultKey?: Vault;
|
|
43
40
|
rpcUrl?: string;
|
|
44
41
|
};
|
|
45
42
|
/**
|
|
@@ -48,10 +45,9 @@ export type GetVaultDepositsAllChainsParameters = {
|
|
|
48
45
|
*
|
|
49
46
|
* @param parameters - The parameters.
|
|
50
47
|
* @param parameters.account - The account address.
|
|
51
|
-
* @param parameters.vaultKey - The optional vault identifier (defaults to Veda).
|
|
52
48
|
* @param parameters.rpcUrl - The optional RPC url.
|
|
53
49
|
*
|
|
54
|
-
* @returns {Promise<
|
|
50
|
+
* @returns {Promise<EarnDeposit[]>} All deposits across all supported chains, sorted by block number (newest first)
|
|
55
51
|
*/
|
|
56
|
-
export declare function
|
|
52
|
+
export declare function getEarnDepositsAllChains({ account, rpcUrl, }: GetEarnDepositsAllChainsParameters): Promise<EarnDeposit[]>;
|
|
57
53
|
//# sourceMappingURL=get-vault-deposits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vault-deposits.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/get-vault-deposits.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAGL,SAAS,EACV,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAGL,
|
|
1
|
+
{"version":3,"file":"get-vault-deposits.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/get-vault-deposits.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAGL,SAAS,EACV,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAGL,SAAS,EAGV,MAAM,WAAW,CAAC;AA4CnB,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,2BAA2B;IAC3B,MAAM,EAAE,IAAI,CAAC;IACb,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,2BAA2B;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,oCAAoC;IACpC,WAAW,EAAE,SAAS,CAAC;IACvB,wBAAwB;IACxB,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,EACpC,OAAO,EACP,OAAO,EACP,MAAM,EACN,GAAG,GACJ,EAAE,yBAAyB,0BAyD3B;AAED,MAAM,MAAM,kCAAkC,GAAG;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,OAAO,EACP,MAAM,GACP,EAAE,kCAAkC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAe7D"}
|
|
@@ -2,10 +2,7 @@ import { Env } from '@lombard.finance/sdk-common';
|
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
3
|
import { ChainId } from '../../../common/chains';
|
|
4
4
|
import { Token } from '../../../tokens/token-addresses';
|
|
5
|
-
|
|
6
|
-
export type GetVaultMinimumDepositParameters = {
|
|
7
|
-
/** The vault identifier. */
|
|
8
|
-
vaultKey: Vault;
|
|
5
|
+
export type GetEarnMinimumDepositParameters = {
|
|
9
6
|
/** The deposit token. Defaults to LBTC. */
|
|
10
7
|
token?: Token;
|
|
11
8
|
/** The chain where the deposit will be made. Defaults to Ethereum. */
|
|
@@ -24,9 +21,9 @@ export type GetVaultMinimumDepositParameters = {
|
|
|
24
21
|
*
|
|
25
22
|
* @example
|
|
26
23
|
* ```ts
|
|
27
|
-
* const min = await
|
|
28
|
-
* // BigNumber(0.00000002)
|
|
24
|
+
* const min = await getEarnMinimumDeposit();
|
|
25
|
+
* // BigNumber(0.00000002), 2 satoshis at current rates
|
|
29
26
|
* ```
|
|
30
27
|
*/
|
|
31
|
-
export declare function
|
|
28
|
+
export declare function getEarnMinimumDeposit({ token, chainId, rpcUrl, env, }?: GetEarnMinimumDepositParameters): Promise<BigNumber>;
|
|
32
29
|
//# sourceMappingURL=get-vault-minimum-deposit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vault-minimum-deposit.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/get-vault-minimum-deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-vault-minimum-deposit.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/get-vault-minimum-deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAKxD,MAAM,MAAM,+BAA+B,GAAG;IAC5C,2CAA2C;IAC3C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAkB,EAClB,OAA0B,EAC1B,MAAM,EACN,GAAG,GACJ,GAAE,+BAAoC,GAAG,OAAO,CAAC,SAAS,CAAC,CAsI3D"}
|
|
@@ -3,14 +3,13 @@ import { Address, Hash } from 'viem';
|
|
|
3
3
|
import { ChainId } from '../../../common/chains';
|
|
4
4
|
import { IEnvParam } from '../../../common/parameters';
|
|
5
5
|
import { TokenInfo } from '../../../tokens/tokens';
|
|
6
|
-
import {
|
|
7
|
-
export type
|
|
6
|
+
import { EarnChain } from '../config';
|
|
7
|
+
export type GetEarnWithdrawalsParameters = IEnvParam & {
|
|
8
8
|
account: Address;
|
|
9
9
|
chainId: ChainId;
|
|
10
|
-
vaultKey?: Vault;
|
|
11
10
|
rpcUrl?: string;
|
|
12
11
|
};
|
|
13
|
-
export type
|
|
12
|
+
export type EarnWithdrawal = {
|
|
14
13
|
token?: Omit<TokenInfo, 'abi'>;
|
|
15
14
|
/** The amount of shares withdrawn */
|
|
16
15
|
shareAmount: BigNumber;
|
|
@@ -33,30 +32,28 @@ export type VaultWithdrawal = {
|
|
|
33
32
|
/** The fulfilment block number */
|
|
34
33
|
fulfilledBlockNumber?: number;
|
|
35
34
|
/** The chain id */
|
|
36
|
-
chainId?:
|
|
35
|
+
chainId?: EarnChain;
|
|
37
36
|
/** The user wallet address that made the withdrawal */
|
|
38
37
|
toAddress?: Address;
|
|
39
38
|
};
|
|
40
|
-
export type
|
|
41
|
-
cancelled:
|
|
42
|
-
expired:
|
|
43
|
-
fulfilled:
|
|
44
|
-
open:
|
|
39
|
+
export type EarnWithdrawals = {
|
|
40
|
+
cancelled: EarnWithdrawal[];
|
|
41
|
+
expired: EarnWithdrawal[];
|
|
42
|
+
fulfilled: EarnWithdrawal[];
|
|
43
|
+
open: EarnWithdrawal[];
|
|
45
44
|
};
|
|
46
45
|
/**
|
|
47
46
|
* Retrieves the withdrawals made by specified address.
|
|
48
47
|
* @param parameters - The parameters.
|
|
49
48
|
* @param parameters.account - The account address.
|
|
50
49
|
* @param parameters.chainId - The chain id.
|
|
51
|
-
* @param parameters.vaultKey - The optional vault identifier.
|
|
52
50
|
* @param parameters.rpcUrl - The optional RPC url.
|
|
53
51
|
*
|
|
54
|
-
* @returns {Promise<
|
|
52
|
+
* @returns {Promise<EarnWithdrawals>}
|
|
55
53
|
*/
|
|
56
|
-
export declare function
|
|
57
|
-
export type
|
|
54
|
+
export declare function getEarnWithdrawals({ account, chainId, rpcUrl, env, }: GetEarnWithdrawalsParameters): Promise<EarnWithdrawals>;
|
|
55
|
+
export type GetEarnWithdrawalsAllChainsParameters = {
|
|
58
56
|
account: Address;
|
|
59
|
-
vaultKey?: Vault;
|
|
60
57
|
rpcUrl?: string;
|
|
61
58
|
};
|
|
62
59
|
/**
|
|
@@ -65,10 +62,9 @@ export type GetVaultWithdrawalsAllChainsParameters = {
|
|
|
65
62
|
*
|
|
66
63
|
* @param parameters - The parameters.
|
|
67
64
|
* @param parameters.account - The account address.
|
|
68
|
-
* @param parameters.vaultKey - The optional vault identifier (defaults to Veda).
|
|
69
65
|
* @param parameters.rpcUrl - The optional RPC url.
|
|
70
66
|
*
|
|
71
|
-
* @returns {Promise<
|
|
67
|
+
* @returns {Promise<EarnWithdrawals>} All withdrawals across all supported chains, categorized and sorted
|
|
72
68
|
*/
|
|
73
|
-
export declare function
|
|
69
|
+
export declare function getEarnWithdrawalsAllChains({ account, rpcUrl, }: GetEarnWithdrawalsAllChainsParameters): Promise<EarnWithdrawals>;
|
|
74
70
|
//# sourceMappingURL=get-vault-withdrawals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vault-withdrawals.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/get-vault-withdrawals.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAGL,SAAS,EACV,MAAM,wBAAwB,CAAC;AAGhC,OAAO,
|
|
1
|
+
{"version":3,"file":"get-vault-withdrawals.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/get-vault-withdrawals.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAGL,SAAS,EACV,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAGL,SAAS,EAEV,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/B,qCAAqC;IACrC,WAAW,EAAE,SAAS,CAAC;IACvB,oCAAoC;IACpC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,MAAM,EAAE,IAAI,CAAC;IACb,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,kCAAkC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB,CAAC;AA8DF;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,OAAO,EACP,MAAM,EACN,GAAG,GACJ,EAAE,4BAA4B,4BAwI9B;AAED,MAAM,MAAM,qCAAqC,GAAG;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,EAChD,OAAO,EACP,MAAM,GACP,EAAE,qCAAqC,GAAG,OAAO,CAAC,eAAe,CAAC,CAyClE"}
|
|
@@ -2,12 +2,9 @@ import { Env } from '@lombard.finance/sdk-common';
|
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
3
|
import { ChainId } from '../../../common/chains';
|
|
4
4
|
import { Token } from '../../../tokens/token-addresses';
|
|
5
|
-
|
|
6
|
-
export type PreviewVaultDepositParameters = {
|
|
5
|
+
export type PreviewEarnDepositParameters = {
|
|
7
6
|
/** The deposit amount in human-readable format (e.g., "0.001"). */
|
|
8
7
|
amount: BigNumber.Value;
|
|
9
|
-
/** The vault identifier. */
|
|
10
|
-
vaultKey: Vault;
|
|
11
8
|
/** The deposit token. Defaults to LBTC. */
|
|
12
9
|
token?: Token;
|
|
13
10
|
/** The chain where the deposit will be made. Defaults to Ethereum. */
|
|
@@ -26,13 +23,12 @@ export type PreviewVaultDepositParameters = {
|
|
|
26
23
|
*
|
|
27
24
|
* @example
|
|
28
25
|
* ```ts
|
|
29
|
-
* const shares = await
|
|
26
|
+
* const shares = await previewEarnDeposit({
|
|
30
27
|
* amount: '0.001',
|
|
31
|
-
* vaultKey: Vault.Veda,
|
|
32
28
|
* token: Token.LBTC,
|
|
33
29
|
* });
|
|
34
|
-
* // BigNumber(0.00098039)
|
|
30
|
+
* // BigNumber(0.00098039), expected shares for 0.001 LBTC
|
|
35
31
|
* ```
|
|
36
32
|
*/
|
|
37
|
-
export declare function
|
|
33
|
+
export declare function previewEarnDeposit({ amount: amountRaw, token, chainId, rpcUrl, env, }: PreviewEarnDepositParameters): Promise<BigNumber>;
|
|
38
34
|
//# sourceMappingURL=preview-vault-deposit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-vault-deposit.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/preview-vault-deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"preview-vault-deposit.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/preview-vault-deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AASxD,MAAM,MAAM,4BAA4B,GAAG;IACzC,mEAAmE;IACnE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;IACxB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EAAE,SAAS,EACjB,KAAkB,EAClB,OAA0B,EAC1B,MAAM,EACN,GAAG,GACJ,EAAE,4BAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,CAkEnD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { Hash } from 'viem';
|
|
2
3
|
import { CommonWriteParameters } from '../../../common/parameters';
|
|
3
4
|
import { Token } from '../../../tokens/token-addresses';
|
|
4
|
-
import { Vault } from '../config';
|
|
5
5
|
export type QueueWithdrawParameters = {
|
|
6
6
|
/** The amount to be withdrawn from the DeFi vault. */
|
|
7
7
|
amount: BigNumber.Value;
|
|
@@ -13,37 +13,21 @@ export type QueueWithdrawParameters = {
|
|
|
13
13
|
approve?: boolean;
|
|
14
14
|
/** The optional deposit asset. */
|
|
15
15
|
token?: Token;
|
|
16
|
-
/** The vault identifier. */
|
|
17
|
-
vaultKey?: Vault;
|
|
18
16
|
} & CommonWriteParameters;
|
|
19
17
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* @param {boolean} parameters.approve - The optional flag determining whether approve actions should be performed.
|
|
24
|
-
* @param {Token} parameters.token - The optional deposit asset.
|
|
25
|
-
* @param {Vault} parameters.vaultKey - The vault identifier.
|
|
26
|
-
* @param {Address} parameters.account - The EVM account address.
|
|
27
|
-
* @param {ChainId} parameters.chainId - The chain id.
|
|
28
|
-
* @param {EIP1193Provider} parameters.provider - The EIP1193 provider.
|
|
29
|
-
* @param {string} parameters.rpcUrl - The optional rpc url.
|
|
18
|
+
* @internal Internal helper used by `EvmWithdraw` and other action classes.
|
|
19
|
+
* The public `queueWithdraw` function was removed in 5.0.0; consumers use
|
|
20
|
+
* `withdrawEarn` instead.
|
|
30
21
|
*
|
|
31
22
|
* @returns {Promise<Hash>}
|
|
32
23
|
*/
|
|
33
|
-
export declare function
|
|
34
|
-
export type CancelWithdrawParameters = Pick<QueueWithdrawParameters, 'token'
|
|
24
|
+
export declare function queueWithdrawInternal({ amount: amountRaw, approve, token, account, chainId, provider, rpcUrl, env, }: QueueWithdrawParameters): Promise<`0x${string}`>;
|
|
25
|
+
export type CancelWithdrawParameters = Pick<QueueWithdrawParameters, 'token'> & CommonWriteParameters;
|
|
35
26
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* @param {Address} parameters.account - The EVM account address.
|
|
41
|
-
* @param {ChainId} parameters.chainId - The chain id.
|
|
42
|
-
* @param {EIP1193Provider} parameters.provider - The EIP1193 provider.
|
|
43
|
-
* @param {string} parameters.rpcUrl - The optional rpc url.
|
|
44
|
-
*
|
|
45
|
-
* @returns {Promise<Hash>}
|
|
46
|
-
* @returns
|
|
27
|
+
* @internal
|
|
28
|
+
* Shared implementation for cancelWithdraw / cancelEarnWithdrawal so the new
|
|
29
|
+
* Earn-native function does not trigger the deprecation warning when calling
|
|
30
|
+
* through.
|
|
47
31
|
*/
|
|
48
|
-
export declare function
|
|
32
|
+
export declare function cancelWithdrawInternal({ token, account, chainId, provider, rpcUrl, env, }: CancelWithdrawParameters): Promise<Hash>;
|
|
49
33
|
//# sourceMappingURL=withdraw.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lib/ops/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAWxD,MAAM,MAAM,uBAAuB,GAAG;IACpC,sDAAsD;IACtD,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,GAAG,qBAAqB,CAAC;AAE1B;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EAAE,SAAS,EACjB,OAAc,EACd,KAAkB,EAClB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EACN,GAAG,GACJ,EAAE,uBAAuB,0BAmGzB;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,GAC3E,qBAAqB,CAAC;AAExB;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,EAC3C,KAAkB,EAClB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EACN,GAAG,GACJ,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC1C"}
|
package/dist/vaults.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("./chunks/get-vault-tvl-dvEPPxvT.cjs"),s=require("./chunks/tokens-DEYY7W7O.cjs"),t=require("./chunks/token-addresses-C7H9E4qz.cjs"),v=require("./chunks/config-BfX8lrdO.cjs"),k=require("./chunks/get-vault-withdrawals-Cgx7VsM1.cjs"),y=require("bignumber.js"),N=require("./chunks/numbers-3LtmxfD8.cjs");async function L({token:o=t.Token.LBTC,chainId:n=t.ChainId.ethereum,rpcUrl:c,env:m}={}){const r=v.EARN_VAULT;if(!v.isEarnChain(n))throw new Error(`Unsupported chain id: ${n}. Supported chains: ${r.chains.join(", ")}`);const a=r.tokens[o];if(!a||!a.includes(n))throw new Error(`Token ${o} is not supported on chain ${n} for the Bitcoin Earn vault`);let u,d;if(n===t.ChainId.ethereum){const e=await s.getTokenInfo(o,t.ChainId.ethereum,m,c);if(!e)throw new Error(`Could not resolve token info for ${o} on Ethereum`);u=e.address,d=e.decimals}else{const e=await s.getTokenInfo(o,t.ChainId.ethereum,m);if(!e)throw new Error(`Cannot determine minimum deposit for ${o}: token not available on Ethereum. The Lens and Accountant contracts are Ethereum-only.`);u=e.address,d=e.decimals}const l=s.makePublicClient({chainId:t.ChainId.ethereum,rpcUrl:n===t.ChainId.ethereum?c:void 0,env:m}),h=r.vaultContract.address,f=r.accountantContract.address,p=r.lensContract.address,w=r.lensContract.abi,b=r.accountantContract.abi,[g,C]=await l.multicall({contracts:[{address:f,abi:b,functionName:"getRateInQuote",args:[u]},{address:p,abi:w,functionName:"previewDeposit",args:[u,1n,h,f]}]});if(g.status!=="success")throw new Error(`Failed to get exchange rate for ${o}: ${g.error}`);if(C.status!=="success")throw new Error(`Failed to preview deposit for ${o}: ${C.error}`);if(C.result>0n)return s.fromBaseDenomination("1",d);const T=g.result,i=BigInt(10)**BigInt(r.decimals),D=(T+i-1n)/i;if(await l.readContract({address:p,abi:w,functionName:"previewDeposit",args:[u,D,h,f]})>0n)return s.fromBaseDenomination(D.toString(),d);const I=10,$=Array.from({length:I},(e,A)=>D+BigInt(A+1)),B=await l.multicall({contracts:$.map(e=>({address:p,abi:w,functionName:"previewDeposit",args:[u,e,h,f]}))});for(let e=0;e<B.length;e++){const A=B[e];if(A.status==="success"&&A.result>0n)return s.fromBaseDenomination($[e].toString(),d)}throw new Error(`Could not determine minimum deposit amount for ${o} after ${I} attempts`)}async function R({amount:o,token:n=t.Token.LBTC,chainId:c=t.ChainId.ethereum,rpcUrl:m,env:r}){const a=v.EARN_VAULT;if(!v.isEarnChain(c))throw new Error(`Unsupported chain id: ${c}. Supported chains: ${a.chains.join(", ")}`);const u=a.tokens[n];if(!u||!u.includes(c))throw new Error(`Token ${n} is not supported on chain ${c} for the Bitcoin Earn vault`);const d=y(o);if(d.isNegative()||d.isZero())throw new Error("Deposit amount must be greater than zero");let l,h;if(c===t.ChainId.ethereum){const i=await s.getTokenInfo(n,t.ChainId.ethereum,r,m);if(!i)throw new Error(`Could not resolve token info for ${n} on Ethereum`);l=i.address,h=i.decimals}else{const i=await s.getTokenInfo(n,t.ChainId.ethereum,r);if(!i)throw new Error(`Cannot preview deposit for ${n}: token not available on Ethereum. The Lens contract is Ethereum-only.`);l=i.address,h=i.decimals}const f=N.toBigInt(s.toBaseDenomination(d,h)),p=s.makePublicClient({chainId:t.ChainId.ethereum,rpcUrl:c===t.ChainId.ethereum?m:void 0,env:r}),w=a.vaultContract.address,b=a.accountantContract.address,g=a.lensContract.address,C=a.lensContract.abi,T=await p.readContract({address:g,abi:C,functionName:"previewDeposit",args:[l,f,w,b]});return s.fromBaseDenomination(T.toString(),a.decimals)}exports.getEarnApy=E.getEarnApy;exports.getEarnDeposits=E.getEarnDeposits;exports.getEarnDepositsAllChains=E.getEarnDepositsAllChains;exports.getEarnPoints=E.getEarnPoints;exports.getEarnTVL=E.getEarnTVL;exports.getEarnWithdrawals=k.getEarnWithdrawals;exports.getEarnWithdrawalsAllChains=k.getEarnWithdrawalsAllChains;exports.getEarnMinimumDeposit=L;exports.previewEarnDeposit=R;
|
|
2
2
|
//# sourceMappingURL=vaults.cjs.map
|
package/dist/vaults.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vaults.cjs","sources":["../src/vaults/lib/ops/get-vault-minimum-deposit.ts","../src/vaults/lib/ops/preview-vault-deposit.ts"],"sourcesContent":["import { Env } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { ChainId } from '../../../common/chains';\nimport { Token } from '../../../tokens/token-addresses';\nimport { getTokenInfo } from '../../../tokens/tokens';\nimport { fromBaseDenomination } from '../../../tokens/tokens';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type GetVaultMinimumDepositParameters = {\n /** The vault identifier. */\n vaultKey: Vault;\n /** The deposit token. Defaults to LBTC. */\n token?: Token;\n /** The chain where the deposit will be made. Defaults to Ethereum. */\n chainId?: ChainId;\n /** Optional RPC URL for Ethereum (used for Lens/Accountant queries). */\n rpcUrl?: string;\n /** Optional environment. */\n env?: Env;\n};\n\n/**\n * Returns the minimum deposit amount (in human-readable format) for a given\n * token that will produce at least 1 vault share.\n *\n * The minimum is derived from the on-chain exchange rate. It is not a fixed\n * constant and changes as the vault accrues yield.\n *\n * @example\n * ```ts\n * const min = await getVaultMinimumDeposit({ vaultKey: Vault.Veda });\n * // BigNumber(0.00000002) — 2 satoshis at current rates\n * ```\n */\nexport async function getVaultMinimumDeposit({\n vaultKey,\n token = Token.LBTC,\n chainId = ChainId.ethereum,\n rpcUrl,\n env,\n}: GetVaultMinimumDepositParameters): Promise<BigNumber> {\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}. Supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const supportedChains = vault.tokens[\n token as keyof typeof vault.tokens\n ] as readonly ChainId[] | undefined;\n if (!supportedChains || !supportedChains.includes(chainId)) {\n throw new Error(\n `Token ${token} is not supported on chain ${chainId} for vault ${vaultKey}`,\n );\n }\n\n // Lens and Accountant are Ethereum-only contracts.\n // Resolve the token's Ethereum address for the query.\n let ethTokenAddress: Address;\n let tokenDecimals: number;\n\n if (chainId === ChainId.ethereum) {\n const tokenInfo = await getTokenInfo(token, ChainId.ethereum, env, rpcUrl);\n if (!tokenInfo) {\n throw new Error(`Could not resolve token info for ${token} on Ethereum`);\n }\n ethTokenAddress = tokenInfo.address;\n tokenDecimals = tokenInfo.decimals;\n } else {\n // For cross-chain deposits, we still need the Ethereum token address\n // because the Lens/Accountant are on Ethereum.\n const ethTokenInfo = await getTokenInfo(token, ChainId.ethereum, env);\n if (!ethTokenInfo) {\n throw new Error(\n `Cannot determine minimum deposit for ${token}: token not available on Ethereum. ` +\n `The Lens and Accountant contracts are Ethereum-only.`,\n );\n }\n ethTokenAddress = ethTokenInfo.address;\n tokenDecimals = ethTokenInfo.decimals;\n }\n\n const ethPublicClient = makePublicClient({\n chainId: ChainId.ethereum,\n rpcUrl: chainId === ChainId.ethereum ? rpcUrl : undefined,\n env,\n });\n\n const vaultAddress = vault.vaultContract.address as Address;\n const accountantAddress = vault.accountantContract.address as Address;\n const lensAddress = vault.lensContract.address as Address;\n const lensAbi = vault.lensContract.abi as Abi;\n const accountantAbi = vault.accountantContract.abi as Abi;\n\n // Batch: get the exchange rate and check if 1 base unit yields any shares.\n const [rateResult, previewOneResult] = await ethPublicClient.multicall({\n contracts: [\n {\n address: accountantAddress,\n abi: accountantAbi,\n functionName: 'getRateInQuote',\n args: [ethTokenAddress],\n },\n {\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit',\n args: [ethTokenAddress, 1n, vaultAddress, accountantAddress],\n },\n ],\n });\n\n if (rateResult.status !== 'success') {\n throw new Error(\n `Failed to get exchange rate for ${token}: ${rateResult.error}`,\n );\n }\n\n if (previewOneResult.status !== 'success') {\n throw new Error(\n `Failed to preview deposit for ${token}: ${previewOneResult.error}`,\n );\n }\n\n // If 1 base unit already yields shares, that's the minimum.\n if ((previewOneResult.result as bigint) > 0n) {\n return fromBaseDenomination('1', tokenDecimals);\n }\n\n // Calculate: minimum base units = ceil(rateInQuote / 10^vaultDecimals)\n const rateInQuote = rateResult.result as bigint;\n const oneShare = BigInt(10) ** BigInt(vault.decimals);\n const estimatedMin = (rateInQuote + oneShare - 1n) / oneShare;\n\n // Verify the estimate with previewDeposit.\n const verifyResult = await ethPublicClient.readContract({\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit',\n args: [ethTokenAddress, estimatedMin, vaultAddress, accountantAddress],\n });\n\n if ((verifyResult as bigint) > 0n) {\n return fromBaseDenomination(estimatedMin.toString(), tokenDecimals);\n }\n\n // Edge case: estimate was off (e.g., share premium). Batch all candidates\n // in a single multicall to avoid sequential RPC round trips.\n const maxAttempts = 10;\n const candidates = Array.from(\n { length: maxAttempts },\n (_, i) => estimatedMin + BigInt(i + 1),\n );\n\n const batchResults = await ethPublicClient.multicall({\n contracts: candidates.map((candidate) => ({\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit' as const,\n args: [ethTokenAddress, candidate, vaultAddress, accountantAddress],\n })),\n });\n\n for (let i = 0; i < batchResults.length; i++) {\n const result = batchResults[i];\n if (result.status === 'success' && (result.result as bigint) > 0n) {\n return fromBaseDenomination(candidates[i].toString(), tokenDecimals);\n }\n }\n\n throw new Error(\n `Could not determine minimum deposit amount for ${token} after ${maxAttempts} attempts`,\n );\n}\n","import { Env } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { ChainId } from '../../../common/chains';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport toBigInt from '../../../utils/numbers';\nimport { isVedaVaultChain, Vault, VAULTS } from '../config';\n\nexport type PreviewVaultDepositParameters = {\n /** The deposit amount in human-readable format (e.g., \"0.001\"). */\n amount: BigNumber.Value;\n /** The vault identifier. */\n vaultKey: Vault;\n /** The deposit token. Defaults to LBTC. */\n token?: Token;\n /** The chain where the deposit will be made. Defaults to Ethereum. */\n chainId?: ChainId;\n /** Optional RPC URL for Ethereum (used for Lens queries). */\n rpcUrl?: string;\n /** Optional environment. */\n env?: Env;\n};\n\n/**\n * Returns the expected number of vault shares (in human-readable format)\n * for a given deposit amount.\n *\n * Uses the on-chain Lens contract to simulate the deposit, accounting for\n * the current exchange rate and any share premiums.\n *\n * @example\n * ```ts\n * const shares = await previewVaultDeposit({\n * amount: '0.001',\n * vaultKey: Vault.Veda,\n * token: Token.LBTC,\n * });\n * // BigNumber(0.00098039) — expected shares for 0.001 LBTC\n * ```\n */\nexport async function previewVaultDeposit({\n amount: amountRaw,\n vaultKey,\n token = Token.LBTC,\n chainId = ChainId.ethereum,\n rpcUrl,\n env,\n}: PreviewVaultDepositParameters): Promise<BigNumber> {\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}. Supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const supportedChains = vault.tokens[\n token as keyof typeof vault.tokens\n ] as readonly ChainId[] | undefined;\n if (!supportedChains || !supportedChains.includes(chainId)) {\n throw new Error(\n `Token ${token} is not supported on chain ${chainId} for vault ${vaultKey}`,\n );\n }\n\n const amount = BigNumber(amountRaw);\n if (amount.isNegative() || amount.isZero()) {\n throw new Error('Deposit amount must be greater than zero');\n }\n\n // Lens is Ethereum-only. Resolve the token's Ethereum address.\n let ethTokenAddress: Address;\n let tokenDecimals: number;\n\n if (chainId === ChainId.ethereum) {\n const tokenInfo = await getTokenInfo(token, ChainId.ethereum, env, rpcUrl);\n if (!tokenInfo) {\n throw new Error(`Could not resolve token info for ${token} on Ethereum`);\n }\n ethTokenAddress = tokenInfo.address;\n tokenDecimals = tokenInfo.decimals;\n } else {\n const ethTokenInfo = await getTokenInfo(token, ChainId.ethereum, env);\n if (!ethTokenInfo) {\n throw new Error(\n `Cannot preview deposit for ${token}: token not available on Ethereum. ` +\n `The Lens contract is Ethereum-only.`,\n );\n }\n ethTokenAddress = ethTokenInfo.address;\n tokenDecimals = ethTokenInfo.decimals;\n }\n\n const amountBase = toBigInt(toBaseDenomination(amount, tokenDecimals));\n\n const ethPublicClient = makePublicClient({\n chainId: ChainId.ethereum,\n rpcUrl: chainId === ChainId.ethereum ? rpcUrl : undefined,\n env,\n });\n\n const vaultAddress = vault.vaultContract.address as Address;\n const accountantAddress = vault.accountantContract.address as Address;\n const lensAddress = vault.lensContract.address as Address;\n const lensAbi = vault.lensContract.abi as Abi;\n\n const shares = await ethPublicClient.readContract({\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit',\n args: [ethTokenAddress, amountBase, vaultAddress, accountantAddress],\n });\n\n return fromBaseDenomination((shares as bigint).toString(), vault.decimals);\n}\n"],"names":["getVaultMinimumDeposit","vaultKey","token","Token","chainId","ChainId","rpcUrl","env","vault","VAULTS","isVedaVaultChain","supportedChains","ethTokenAddress","tokenDecimals","tokenInfo","getTokenInfo","ethTokenInfo","ethPublicClient","makePublicClient","vaultAddress","accountantAddress","lensAddress","lensAbi","accountantAbi","rateResult","previewOneResult","fromBaseDenomination","rateInQuote","oneShare","estimatedMin","maxAttempts","candidates","_","i","batchResults","candidate","result","previewVaultDeposit","amountRaw","amount","BigNumber","amountBase","toBigInt","toBaseDenomination","shares"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vaults.cjs","sources":["../src/vaults/lib/ops/get-vault-minimum-deposit.ts","../src/vaults/lib/ops/preview-vault-deposit.ts"],"sourcesContent":["import { Env } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { ChainId } from '../../../common/chains';\nimport { Token } from '../../../tokens/token-addresses';\nimport { getTokenInfo } from '../../../tokens/tokens';\nimport { fromBaseDenomination } from '../../../tokens/tokens';\nimport { EARN_VAULT, isEarnChain } from '../config';\n\nexport type GetEarnMinimumDepositParameters = {\n /** The deposit token. Defaults to LBTC. */\n token?: Token;\n /** The chain where the deposit will be made. Defaults to Ethereum. */\n chainId?: ChainId;\n /** Optional RPC URL for Ethereum (used for Lens/Accountant queries). */\n rpcUrl?: string;\n /** Optional environment. */\n env?: Env;\n};\n\n/**\n * Returns the minimum deposit amount (in human-readable format) for a given\n * token that will produce at least 1 vault share.\n *\n * The minimum is derived from the on-chain exchange rate. It is not a fixed\n * constant and changes as the vault accrues yield.\n *\n * @example\n * ```ts\n * const min = await getEarnMinimumDeposit();\n * // BigNumber(0.00000002), 2 satoshis at current rates\n * ```\n */\nexport async function getEarnMinimumDeposit({\n token = Token.LBTC,\n chainId = ChainId.ethereum,\n rpcUrl,\n env,\n}: GetEarnMinimumDepositParameters = {}): Promise<BigNumber> {\n const vault = EARN_VAULT;\n if (!isEarnChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const supportedChains = vault.tokens[token as keyof typeof vault.tokens] as\n | readonly ChainId[]\n | undefined;\n if (!supportedChains || !supportedChains.includes(chainId)) {\n throw new Error(\n `Token ${token} is not supported on chain ${chainId} for the Bitcoin Earn vault`,\n );\n }\n\n // Lens and Accountant are Ethereum-only contracts.\n // Resolve the token's Ethereum address for the query.\n let ethTokenAddress: Address;\n let tokenDecimals: number;\n\n if (chainId === ChainId.ethereum) {\n const tokenInfo = await getTokenInfo(token, ChainId.ethereum, env, rpcUrl);\n if (!tokenInfo) {\n throw new Error(`Could not resolve token info for ${token} on Ethereum`);\n }\n ethTokenAddress = tokenInfo.address;\n tokenDecimals = tokenInfo.decimals;\n } else {\n // For cross-chain deposits, we still need the Ethereum token address\n // because the Lens/Accountant are on Ethereum.\n const ethTokenInfo = await getTokenInfo(token, ChainId.ethereum, env);\n if (!ethTokenInfo) {\n throw new Error(\n `Cannot determine minimum deposit for ${token}: token not available on Ethereum. ` +\n `The Lens and Accountant contracts are Ethereum-only.`,\n );\n }\n ethTokenAddress = ethTokenInfo.address;\n tokenDecimals = ethTokenInfo.decimals;\n }\n\n const ethPublicClient = makePublicClient({\n chainId: ChainId.ethereum,\n rpcUrl: chainId === ChainId.ethereum ? rpcUrl : undefined,\n env,\n });\n\n const vaultAddress = vault.vaultContract.address as Address;\n const accountantAddress = vault.accountantContract.address as Address;\n const lensAddress = vault.lensContract.address as Address;\n const lensAbi = vault.lensContract.abi as Abi;\n const accountantAbi = vault.accountantContract.abi as Abi;\n\n // Batch: get the exchange rate and check if 1 base unit yields any shares.\n const [rateResult, previewOneResult] = await ethPublicClient.multicall({\n contracts: [\n {\n address: accountantAddress,\n abi: accountantAbi,\n functionName: 'getRateInQuote',\n args: [ethTokenAddress],\n },\n {\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit',\n args: [ethTokenAddress, 1n, vaultAddress, accountantAddress],\n },\n ],\n });\n\n if (rateResult.status !== 'success') {\n throw new Error(\n `Failed to get exchange rate for ${token}: ${rateResult.error}`,\n );\n }\n\n if (previewOneResult.status !== 'success') {\n throw new Error(\n `Failed to preview deposit for ${token}: ${previewOneResult.error}`,\n );\n }\n\n // If 1 base unit already yields shares, that's the minimum.\n if ((previewOneResult.result as bigint) > 0n) {\n return fromBaseDenomination('1', tokenDecimals);\n }\n\n // Calculate: minimum base units = ceil(rateInQuote / 10^vaultDecimals)\n const rateInQuote = rateResult.result as bigint;\n const oneShare = BigInt(10) ** BigInt(vault.decimals);\n const estimatedMin = (rateInQuote + oneShare - 1n) / oneShare;\n\n // Verify the estimate with previewDeposit.\n const verifyResult = await ethPublicClient.readContract({\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit',\n args: [ethTokenAddress, estimatedMin, vaultAddress, accountantAddress],\n });\n\n if ((verifyResult as bigint) > 0n) {\n return fromBaseDenomination(estimatedMin.toString(), tokenDecimals);\n }\n\n // Edge case: estimate was off (e.g., share premium). Batch all candidates\n // in a single multicall to avoid sequential RPC round trips.\n const maxAttempts = 10;\n const candidates = Array.from(\n { length: maxAttempts },\n (_, i) => estimatedMin + BigInt(i + 1),\n );\n\n const batchResults = await ethPublicClient.multicall({\n contracts: candidates.map((candidate) => ({\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit' as const,\n args: [ethTokenAddress, candidate, vaultAddress, accountantAddress],\n })),\n });\n\n for (let i = 0; i < batchResults.length; i++) {\n const result = batchResults[i];\n if (result.status === 'success' && (result.result as bigint) > 0n) {\n return fromBaseDenomination(candidates[i].toString(), tokenDecimals);\n }\n }\n\n throw new Error(\n `Could not determine minimum deposit amount for ${token} after ${maxAttempts} attempts`,\n );\n}\n","import { Env } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { makePublicClient } from '../../../clients/public-client';\nimport { ChainId } from '../../../common/chains';\nimport { Token } from '../../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../../tokens/tokens';\nimport toBigInt from '../../../utils/numbers';\nimport { EARN_VAULT, isEarnChain } from '../config';\n\nexport type PreviewEarnDepositParameters = {\n /** The deposit amount in human-readable format (e.g., \"0.001\"). */\n amount: BigNumber.Value;\n /** The deposit token. Defaults to LBTC. */\n token?: Token;\n /** The chain where the deposit will be made. Defaults to Ethereum. */\n chainId?: ChainId;\n /** Optional RPC URL for Ethereum (used for Lens queries). */\n rpcUrl?: string;\n /** Optional environment. */\n env?: Env;\n};\n\n/**\n * Returns the expected number of vault shares (in human-readable format)\n * for a given deposit amount.\n *\n * Uses the on-chain Lens contract to simulate the deposit, accounting for\n * the current exchange rate and any share premiums.\n *\n * @example\n * ```ts\n * const shares = await previewEarnDeposit({\n * amount: '0.001',\n * token: Token.LBTC,\n * });\n * // BigNumber(0.00098039), expected shares for 0.001 LBTC\n * ```\n */\nexport async function previewEarnDeposit({\n amount: amountRaw,\n token = Token.LBTC,\n chainId = ChainId.ethereum,\n rpcUrl,\n env,\n}: PreviewEarnDepositParameters): Promise<BigNumber> {\n const vault = EARN_VAULT;\n if (!isEarnChain(chainId)) {\n throw new Error(\n `Unsupported chain id: ${chainId}. Supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n const supportedChains = vault.tokens[token as keyof typeof vault.tokens] as\n | readonly ChainId[]\n | undefined;\n if (!supportedChains || !supportedChains.includes(chainId)) {\n throw new Error(\n `Token ${token} is not supported on chain ${chainId} for the Bitcoin Earn vault`,\n );\n }\n\n const amount = BigNumber(amountRaw);\n if (amount.isNegative() || amount.isZero()) {\n throw new Error('Deposit amount must be greater than zero');\n }\n\n // Lens is Ethereum-only. Resolve the token's Ethereum address.\n let ethTokenAddress: Address;\n let tokenDecimals: number;\n\n if (chainId === ChainId.ethereum) {\n const tokenInfo = await getTokenInfo(token, ChainId.ethereum, env, rpcUrl);\n if (!tokenInfo) {\n throw new Error(`Could not resolve token info for ${token} on Ethereum`);\n }\n ethTokenAddress = tokenInfo.address;\n tokenDecimals = tokenInfo.decimals;\n } else {\n const ethTokenInfo = await getTokenInfo(token, ChainId.ethereum, env);\n if (!ethTokenInfo) {\n throw new Error(\n `Cannot preview deposit for ${token}: token not available on Ethereum. ` +\n `The Lens contract is Ethereum-only.`,\n );\n }\n ethTokenAddress = ethTokenInfo.address;\n tokenDecimals = ethTokenInfo.decimals;\n }\n\n const amountBase = toBigInt(toBaseDenomination(amount, tokenDecimals));\n\n const ethPublicClient = makePublicClient({\n chainId: ChainId.ethereum,\n rpcUrl: chainId === ChainId.ethereum ? rpcUrl : undefined,\n env,\n });\n\n const vaultAddress = vault.vaultContract.address as Address;\n const accountantAddress = vault.accountantContract.address as Address;\n const lensAddress = vault.lensContract.address as Address;\n const lensAbi = vault.lensContract.abi as Abi;\n\n const shares = await ethPublicClient.readContract({\n address: lensAddress,\n abi: lensAbi,\n functionName: 'previewDeposit',\n args: [ethTokenAddress, amountBase, vaultAddress, accountantAddress],\n });\n\n return fromBaseDenomination((shares as bigint).toString(), vault.decimals);\n}\n"],"names":["getEarnMinimumDeposit","token","Token","chainId","ChainId","rpcUrl","env","vault","EARN_VAULT","isEarnChain","supportedChains","ethTokenAddress","tokenDecimals","tokenInfo","getTokenInfo","ethTokenInfo","ethPublicClient","makePublicClient","vaultAddress","accountantAddress","lensAddress","lensAbi","accountantAbi","rateResult","previewOneResult","fromBaseDenomination","rateInQuote","oneShare","estimatedMin","maxAttempts","candidates","_","i","batchResults","candidate","result","previewEarnDeposit","amountRaw","amount","BigNumber","amountBase","toBigInt","toBaseDenomination","shares"],"mappings":"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"}
|