@lombard.finance/sdk 4.3.2 → 4.4.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 +16 -0
- package/LICENSE +21 -0
- package/README.md +6 -6
- 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.cjs +1 -1
- package/dist/api.js +29 -29
- package/dist/bridge.cjs +1 -1
- package/dist/bridge.js +7 -7
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +10 -10
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts +7 -4
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/config/index.d.ts +16 -8
- package/dist/chains/btc/actions/deposit/config/index.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/config/solana.d.ts +20 -0
- package/dist/chains/btc/actions/deposit/config/solana.d.ts.map +1 -0
- package/dist/chains/btc/actions/deposit/config/types.d.ts +4 -3
- package/dist/chains/btc/actions/deposit/config/types.d.ts.map +1 -1
- package/dist/chains/evm/EvmActions.d.ts +4 -4
- package/dist/chains/evm/actions/deposit/config/evm.d.ts +3 -3
- package/dist/chains/evm/actions/deposit/config/evm.d.ts.map +1 -1
- package/dist/chains/evm/actions/deposit/config/types.d.ts +1 -1
- package/dist/chains/evm/actions/deposit/config/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/deposit/factory.d.ts +1 -1
- package/dist/chains/evm/actions/deposit/types.d.ts +1 -1
- package/dist/chains/evm/actions/deposit/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/redeem/EvmRedeem.d.ts.map +1 -1
- package/dist/chains/evm/actions/unstake/EvmUnstake.d.ts.map +1 -1
- package/dist/chains/solana/SolanaActions.d.ts +10 -0
- package/dist/chains/solana/SolanaActions.d.ts.map +1 -1
- package/dist/chains/solana/actions/index.d.ts +1 -0
- package/dist/chains/solana/actions/index.d.ts.map +1 -1
- package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts +37 -0
- package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/config/index.d.ts +8 -0
- package/dist/chains/solana/actions/redeem/config/index.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/config/solana.d.ts +22 -0
- package/dist/chains/solana/actions/redeem/config/solana.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/config/types.d.ts +35 -0
- package/dist/chains/solana/actions/redeem/config/types.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/factory.d.ts +12 -0
- package/dist/chains/solana/actions/redeem/factory.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/index.d.ts +9 -0
- package/dist/chains/solana/actions/redeem/index.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/types.d.ts +52 -0
- package/dist/chains/solana/actions/redeem/types.d.ts.map +1 -0
- package/dist/chains/solana/utils.d.ts +15 -0
- package/dist/chains/solana/utils.d.ts.map +1 -0
- package/dist/chunks/BtcActions-BOVJrdTI.cjs +2 -0
- package/dist/chunks/BtcActions-BOVJrdTI.cjs.map +1 -0
- package/dist/chunks/{BtcActions-k-qs1uO0.js → BtcActions-_a8r3Q7c.js} +457 -414
- package/dist/chunks/BtcActions-_a8r3Q7c.js.map +1 -0
- package/dist/chunks/{EvmActions-B_dF42So.js → EvmActions-D4vFpbYk.js} +163 -173
- package/dist/chunks/EvmActions-D4vFpbYk.js.map +1 -0
- package/dist/chunks/EvmActions-VrDbgMDy.cjs +2 -0
- package/dist/chunks/EvmActions-VrDbgMDy.cjs.map +1 -0
- package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs +2 -0
- package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs.map +1 -0
- package/dist/chunks/{ReferralsClient-DbFWWtVi.js → ReferralsClient-DvEsA3II.js} +160 -160
- package/dist/chunks/ReferralsClient-DvEsA3II.js.map +1 -0
- package/dist/chunks/{api-config-CtcP3TVl.js → api-config-Dm6dR85f.js} +6 -6
- package/dist/chunks/{api-config-CtcP3TVl.js.map → api-config-Dm6dR85f.js.map} +1 -1
- package/dist/chunks/{approveLBTC-CZiZmdcX.cjs → approveLBTC-CUXEC3kw.cjs} +2 -2
- package/dist/chunks/{approveLBTC-CZiZmdcX.cjs.map → approveLBTC-CUXEC3kw.cjs.map} +1 -1
- package/dist/chunks/approveLBTC-Du2El1tW.js +26 -0
- package/dist/chunks/{approveLBTC-B5-ZWqct.js.map → approveLBTC-Du2El1tW.js.map} +1 -1
- package/dist/chunks/{array-Cev6kyLJ.js → array-DYttUPf5.js} +7 -7
- package/dist/chunks/{array-Cev6kyLJ.js.map → array-DYttUPf5.js.map} +1 -1
- package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs → blockchain-identifier-BTPGxLio.cjs} +2 -2
- package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs.map → blockchain-identifier-BTPGxLio.cjs.map} +1 -1
- package/dist/chunks/{blockchain-identifier-BmadkNtK.js → blockchain-identifier-CTVaEPpY.js} +24 -24
- package/dist/chunks/{blockchain-identifier-BmadkNtK.js.map → blockchain-identifier-CTVaEPpY.js.map} +1 -1
- package/dist/chunks/{bridge-CTsiodO1.js → bridge-DqGabhIY.js} +13 -13
- package/dist/chunks/{bridge-CTsiodO1.js.map → bridge-DqGabhIY.js.map} +1 -1
- package/dist/chunks/{bridge-BzRlY9pP.cjs → bridge-dWaKrMKm.cjs} +2 -2
- package/dist/chunks/{bridge-BzRlY9pP.cjs.map → bridge-dWaKrMKm.cjs.map} +1 -1
- package/dist/chunks/{config-hFKqUyg3.js → config-DghboRx0.js} +10 -10
- package/dist/chunks/{config-hFKqUyg3.js.map → config-DghboRx0.js.map} +1 -1
- package/dist/chunks/{config-l4ZaZw_g.cjs → config-DmCmanM_.cjs} +2 -2
- package/dist/chunks/{config-l4ZaZw_g.cjs.map → config-DmCmanM_.cjs.map} +1 -1
- package/dist/chunks/constants-D1FnS2Z8.js +6 -0
- package/dist/chunks/constants-D1FnS2Z8.js.map +1 -0
- package/dist/chunks/constants-ueShGH9R.cjs +2 -0
- package/dist/chunks/constants-ueShGH9R.cjs.map +1 -0
- package/dist/chunks/{defi-registry-BIRv_zkp.cjs → defi-registry-DDNavtO1.cjs} +2 -2
- package/dist/chunks/{defi-registry-BIRv_zkp.cjs.map → defi-registry-DDNavtO1.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-wNFN3qyB.js → defi-registry-DxjjBQTV.js} +13 -13
- package/dist/chunks/{defi-registry-wNFN3qyB.js.map → defi-registry-DxjjBQTV.js.map} +1 -1
- package/dist/chunks/{depositStatus-DM7fRmbN.js → depositStatus-05_X7FVs.js} +42 -42
- package/dist/chunks/{depositStatus-DM7fRmbN.js.map → depositStatus-05_X7FVs.js.map} +1 -1
- package/dist/chunks/{depositStatus-C3-EgT2a.cjs → depositStatus-CUjHpXFJ.cjs} +2 -2
- package/dist/chunks/{depositStatus-C3-EgT2a.cjs.map → depositStatus-CUjHpXFJ.cjs.map} +1 -1
- package/dist/chunks/events-5c8IHjEF.cjs +2 -0
- package/dist/chunks/events-5c8IHjEF.cjs.map +1 -0
- package/dist/chunks/{events-DdV_xi-2.js → events-rgJZNpHd.js} +414 -303
- package/dist/chunks/events-rgJZNpHd.js.map +1 -0
- package/dist/chunks/evm-by-btc-address-CZvE15lx.js +39 -0
- package/dist/chunks/{evm-by-btc-address-CwLiENtM.js.map → evm-by-btc-address-CZvE15lx.js.map} +1 -1
- package/dist/chunks/fee-requirements-CCNsxAvJ.js +14 -0
- package/dist/chunks/{fee-requirements-x8-8mpJ7.js.map → fee-requirements-CCNsxAvJ.js.map} +1 -1
- package/dist/chunks/get-exchange-ratio-B-xzYND1.js +20 -0
- package/dist/chunks/{get-exchange-ratio-NtnkG1kZ.js.map → get-exchange-ratio-B-xzYND1.js.map} +1 -1
- package/dist/chunks/{get-exchange-ratio-C-7DadfD.cjs → get-exchange-ratio-BEhD4gLB.cjs} +2 -2
- package/dist/chunks/{get-exchange-ratio-C-7DadfD.cjs.map → get-exchange-ratio-BEhD4gLB.cjs.map} +1 -1
- package/dist/chunks/{get-positions-summary-DkZZYbGP.cjs → get-positions-summary-Dh1QPLYO.cjs} +2 -2
- package/dist/chunks/{get-positions-summary-DkZZYbGP.cjs.map → get-positions-summary-Dh1QPLYO.cjs.map} +1 -1
- package/dist/chunks/{get-positions-summary-B_MmGHLv.js → get-positions-summary-iYshN1RQ.js} +28 -28
- package/dist/chunks/{get-positions-summary-B_MmGHLv.js.map → get-positions-summary-iYshN1RQ.js.map} +1 -1
- package/dist/chunks/{get-vault-tvl-YAXePAW3.js → get-vault-tvl-Ct_Zkg7C.js} +41 -41
- package/dist/chunks/{get-vault-tvl-YAXePAW3.js.map → get-vault-tvl-Ct_Zkg7C.js.map} +1 -1
- package/dist/chunks/{get-vault-tvl-DmTUbOY7.cjs → get-vault-tvl-D_tQIDAs.cjs} +2 -2
- package/dist/chunks/{get-vault-tvl-DmTUbOY7.cjs.map → get-vault-tvl-D_tQIDAs.cjs.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs → get-vault-withdrawals-8ALlEiAC.cjs} +2 -2
- package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs.map → get-vault-withdrawals-8ALlEiAC.cjs.map} +1 -1
- package/dist/chunks/get-vault-withdrawals-jk7Sv4S4.js +161 -0
- package/dist/chunks/{get-vault-withdrawals-BrpZlt6s.js.map → get-vault-withdrawals-jk7Sv4S4.js.map} +1 -1
- package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs → getSharesByAddress-D8hehnP1.cjs} +2 -2
- package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs.map → getSharesByAddress-D8hehnP1.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-BiruCDp6.js → getSharesByAddress-_tBaIBsw.js} +38 -38
- package/dist/chunks/{getSharesByAddress-BiruCDp6.js.map → getSharesByAddress-_tBaIBsw.js.map} +1 -1
- package/dist/chunks/getUserStakeAndBakeSignature-CSEyzgMc.cjs +2 -0
- package/dist/chunks/getUserStakeAndBakeSignature-CSEyzgMc.cjs.map +1 -0
- package/dist/chunks/getUserStakeAndBakeSignature-Su-k10ap.js +125 -0
- package/dist/chunks/getUserStakeAndBakeSignature-Su-k10ap.js.map +1 -0
- package/dist/chunks/lbtc-addresses-D8MYCdsx.js +10 -0
- package/dist/chunks/{lbtc-addresses-BLRmtR3c.js.map → lbtc-addresses-D8MYCdsx.js.map} +1 -1
- package/dist/chunks/{lbtc-addresses-xyTYV7hx.cjs → lbtc-addresses-Kil252DX.cjs} +2 -2
- package/dist/chunks/{lbtc-addresses-xyTYV7hx.cjs.map → lbtc-addresses-Kil252DX.cjs.map} +1 -1
- package/dist/chunks/numbers-CclN2Ohk.js +15 -0
- package/dist/chunks/{numbers-CM-lcmt4.js.map → numbers-CclN2Ohk.js.map} +1 -1
- package/dist/chunks/parameters-C_16L5ft.js +11 -0
- package/dist/chunks/{parameters-CDV-6Hk5.js.map → parameters-C_16L5ft.js.map} +1 -1
- package/dist/chunks/satoshi-CSoJBXc6.js +19 -0
- package/dist/chunks/{satoshi-Ch6y8aYG.js.map → satoshi-CSoJBXc6.js.map} +1 -1
- package/dist/chunks/statusConstants-Cri7yswV.cjs +2 -0
- package/dist/chunks/statusConstants-Cri7yswV.cjs.map +1 -0
- package/dist/chunks/{statusConstants-DFxMrVob.js → statusConstants-Zii1786K.js} +1134 -1113
- package/dist/chunks/statusConstants-Zii1786K.js.map +1 -0
- package/dist/chunks/{storeNetworkFeeSignature-BZGL2Zn_.js → storeNetworkFeeSignature-BODIpq3Y.js} +26 -26
- package/dist/chunks/{storeNetworkFeeSignature-BZGL2Zn_.js.map → storeNetworkFeeSignature-BODIpq3Y.js.map} +1 -1
- package/dist/chunks/{storeNetworkFeeSignature-D7yo6lDV.cjs → storeNetworkFeeSignature-Buk4091C.cjs} +2 -2
- package/dist/chunks/{storeNetworkFeeSignature-D7yo6lDV.cjs.map → storeNetworkFeeSignature-Buk4091C.cjs.map} +1 -1
- package/dist/chunks/time-Sa5gggPG.js +24 -0
- package/dist/chunks/{time-QPeEEEnQ.js.map → time-Sa5gggPG.js.map} +1 -1
- package/dist/chunks/{token-addresses-FKpA3uc4.js → token-addresses-D0v5cR1j.js} +174 -163
- package/dist/chunks/{token-addresses-FKpA3uc4.js.map → token-addresses-D0v5cR1j.js.map} +1 -1
- package/dist/chunks/{token-addresses-DRBecUa7.cjs → token-addresses-nzvTOi24.cjs} +2 -2
- package/dist/chunks/{token-addresses-DRBecUa7.cjs.map → token-addresses-nzvTOi24.cjs.map} +1 -1
- package/dist/chunks/{tokens-D_HeVB5p.cjs → tokens-BkvA0Gp1.cjs} +2 -2
- package/dist/chunks/{tokens-D_HeVB5p.cjs.map → tokens-BkvA0Gp1.cjs.map} +1 -1
- package/dist/chunks/{tokens-C6qZHzph.js → tokens-DgC1hfkm.js} +18 -18
- package/dist/chunks/{tokens-C6qZHzph.js.map → tokens-DgC1hfkm.js.map} +1 -1
- package/dist/chunks/{unstakeLBTC-H0zdYQa6.cjs → unstakeLBTC-CmoCaGX9.cjs} +2 -2
- package/dist/chunks/{unstakeLBTC-H0zdYQa6.cjs.map → unstakeLBTC-CmoCaGX9.cjs.map} +1 -1
- package/dist/chunks/{unstakeLBTC-DAIR9NO_.js → unstakeLBTC-DtvVbpbU.js} +50 -50
- package/dist/chunks/{unstakeLBTC-DAIR9NO_.js.map → unstakeLBTC-DtvVbpbU.js.map} +1 -1
- package/dist/chunks/{withdraw-hHueI2p7.js → withdraw-DgjuaUN3.js} +45 -45
- package/dist/chunks/{withdraw-hHueI2p7.js.map → withdraw-DgjuaUN3.js.map} +1 -1
- package/dist/chunks/{withdraw-C1fMFSwy.cjs → withdraw-i0AueZ_C.cjs} +2 -2
- package/dist/chunks/{withdraw-C1fMFSwy.cjs.map → withdraw-i0AueZ_C.cjs.map} +1 -1
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +16 -16
- package/dist/core/assets/catalog.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +85 -85
- package/dist/debug.js +4 -4
- package/dist/defi.cjs +1 -1
- package/dist/defi.js +10 -10
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +34 -34
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +287 -283
- package/dist/index.js.map +1 -1
- package/dist/metrics.cjs +1 -1
- package/dist/metrics.js +6 -6
- package/dist/stories/arg-types.d.ts +1 -0
- package/dist/stories/arg-types.d.ts.map +1 -1
- package/dist/tokens/token-addresses.d.ts +2 -2
- package/dist/tokens/token-addresses.d.ts.map +1 -1
- package/dist/utils/chain.d.ts +7 -0
- package/dist/utils/chain.d.ts.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +76 -76
- package/dist/vaults.cjs +1 -1
- package/dist/vaults.js +14 -14
- package/package.json +19 -6
- package/dist/chunks/BtcActions-XbVRQEcM.cjs +0 -2
- package/dist/chunks/BtcActions-XbVRQEcM.cjs.map +0 -1
- package/dist/chunks/BtcActions-k-qs1uO0.js.map +0 -1
- package/dist/chunks/EvmActions-BVzQ3fLK.cjs +0 -2
- package/dist/chunks/EvmActions-BVzQ3fLK.cjs.map +0 -1
- package/dist/chunks/EvmActions-B_dF42So.js.map +0 -1
- package/dist/chunks/ReferralsClient-BC-1wT1q.cjs +0 -2
- package/dist/chunks/ReferralsClient-BC-1wT1q.cjs.map +0 -1
- package/dist/chunks/ReferralsClient-DbFWWtVi.js.map +0 -1
- package/dist/chunks/approveLBTC-B5-ZWqct.js +0 -26
- package/dist/chunks/constants-BBK-JNcY.cjs +0 -2
- package/dist/chunks/constants-BBK-JNcY.cjs.map +0 -1
- package/dist/chunks/constants-CuT4axsy.js +0 -5
- package/dist/chunks/constants-CuT4axsy.js.map +0 -1
- package/dist/chunks/events-DdV_xi-2.js.map +0 -1
- package/dist/chunks/events-DqIJRzJo.cjs +0 -2
- package/dist/chunks/events-DqIJRzJo.cjs.map +0 -1
- package/dist/chunks/evm-by-btc-address-CwLiENtM.js +0 -39
- package/dist/chunks/fee-requirements-x8-8mpJ7.js +0 -14
- package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +0 -20
- package/dist/chunks/get-vault-withdrawals-BrpZlt6s.js +0 -161
- package/dist/chunks/getUserStakeAndBakeSignature-BxRq2cI1.cjs +0 -2
- package/dist/chunks/getUserStakeAndBakeSignature-BxRq2cI1.cjs.map +0 -1
- package/dist/chunks/getUserStakeAndBakeSignature-NGGblnJl.js +0 -120
- package/dist/chunks/getUserStakeAndBakeSignature-NGGblnJl.js.map +0 -1
- package/dist/chunks/lbtc-addresses-BLRmtR3c.js +0 -10
- package/dist/chunks/numbers-CM-lcmt4.js +0 -15
- package/dist/chunks/parameters-CDV-6Hk5.js +0 -11
- package/dist/chunks/satoshi-Ch6y8aYG.js +0 -19
- package/dist/chunks/statusConstants-BLiNBT6s.cjs +0 -2
- package/dist/chunks/statusConstants-BLiNBT6s.cjs.map +0 -1
- package/dist/chunks/statusConstants-DFxMrVob.js.map +0 -1
- package/dist/chunks/time-QPeEEEnQ.js +0 -24
package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs → get-vault-withdrawals-8ALlEiAC.cjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const v=require("axios"),E=require("./api-config-DkXqqfCK.cjs"),l=require("./tokens-
|
|
2
|
-
//# sourceMappingURL=get-vault-withdrawals-
|
|
1
|
+
"use strict";const v=require("axios"),E=require("./api-config-DkXqqfCK.cjs"),l=require("./tokens-BkvA0Gp1.cjs"),i=require("./array-DKG6Pz4i.cjs"),r=require("./time-I-BeyUkG.cjs"),u=require("./config-DmCmanM_.cjs"),C={cancelled_requests:[],expired_requests:[],fulfilled_requests:[],open_requests:[]},R=n=>n?"Response"in n?R(n.Response):{cancelled_requests:n.cancelled_requests??[],expired_requests:n.expired_requests??[],fulfilled_requests:n.fulfilled_requests??[],open_requests:n.open_requests??[]}:C;async function B({account:n,chainId:a,vaultKey:c=u.Vault.Veda,rpcUrl:f,env:p}){const o=u.VAULTS[c];if(!o)throw new Error(`Unknown vault key: ${c}`);if(!u.isVedaVaultChain(a))throw new Error(`Unsupported chain id: ${a}. Please switch to one of the supported chains: ${o.chains.join(", ")}`);const h=u.VEDA_VAULT_CHAIN_TO_NETWORK_MAP[a],{bffApiUrl:m}=E.getApiConfig(p);if(!m)throw new Error(`Could not determine API endpoint for provided environment: ${p}`);const w=`${m}/sevenseas-api/withdraw-requests/${h}/${o.vaultContract.address}/${n}`,q=new URLSearchParams({historical:"true"}),t=`${w}?${q.toString()}`,{data:A}=await v.get(t),x=R(A),_=x.cancelled_requests??[],b=x.expired_requests??[],k=x.fulfilled_requests??[],T=x.open_requests??[],V=i.unique([..._.map(e=>r.ensureHex(e.wantToken)),...b.map(e=>r.ensureHex(e.wantToken)),...k.map(e=>r.ensureHex(e.Request.wantToken)),...T.map(e=>r.ensureHex(e.wantToken))]),d={};for(const e of V){const s=await l.getAssetInfo(e,a,f);s?d[e]={address:s.address,decimals:s.decimals,symbol:s.symbol}:d[e]=void 0}const N=_.map(e=>{const s=d[r.ensureHex(e.wantToken)];return{amount:void 0,blockNumber:e.blockNumber,deadline:e.deadline,shareAmount:l.fromBaseDenomination(e.amount,o.decimals),timestamp:e.timestamp,txHash:r.ensureHex(e.transactionHash),token:s,chainId:a,toAddress:n}}),P=b.map(e=>{const s=d[r.ensureHex(e.wantToken)];return{amount:void 0,blockNumber:e.blockNumber,deadline:e.deadline,shareAmount:l.fromBaseDenomination(e.amount,o.decimals),timestamp:e.timestamp,txHash:r.ensureHex(e.transactionHash),token:s,chainId:a,toAddress:n}}),$=k.map(e=>{const s=d[r.ensureHex(e.Request.wantToken)];return{amount:l.fromBaseDenomination(e.Fulfillment.wantAmountReceived,(s==null?void 0:s.decimals)||0),blockNumber:e.Request.blockNumber,deadline:e.Request.deadline,shareAmount:l.fromBaseDenomination(e.Fulfillment.offerAmountSpent,o.decimals),timestamp:e.Request.timestamp,txHash:r.ensureHex(e.Request.transactionHash),token:s,fulfilledBlockNumber:e.Fulfillment.blockNumber,fulfilledTimestamp:e.Fulfillment.timestamp,fulfilledTxHash:r.ensureHex(e.Fulfillment.transactionHash),minPrice:l.fromBaseDenomination(e.Request.minPrice,(s==null?void 0:s.decimals)||0),chainId:a,toAddress:n}}),g=T.map(e=>{const s=d[r.ensureHex(e.wantToken)];return{amount:void 0,blockNumber:e.blockNumber,deadline:e.deadline,shareAmount:l.fromBaseDenomination(e.amount,o.decimals),timestamp:e.timestamp,txHash:r.ensureHex(e.transactionHash),token:s,minPrice:l.fromBaseDenomination(e.minPrice,(s==null?void 0:s.decimals)||0),chainId:a,toAddress:n}});return{cancelled:i.orderBy(N,e=>e.timestamp,"desc"),expired:i.orderBy(P,e=>e.timestamp,"desc"),fulfilled:i.orderBy($,e=>e.fulfilledTimestamp||e.timestamp,"desc"),open:i.orderBy(g,e=>e.timestamp,"desc")}}async function D({account:n,vaultKey:a=u.Vault.Veda,rpcUrl:c}){const f=u.VAULTS[a];if(!f)throw new Error(`Unknown vault key: ${a}`);const p=f.chains.map(t=>B({account:n,chainId:t,vaultKey:a,rpcUrl:c}).catch(A=>(console.error(`Failed to fetch withdrawals for chain ${t}:`,A),{cancelled:[],expired:[],fulfilled:[],open:[]}))),o=await Promise.all(p),h=[],m=[],w=[],q=[];for(const t of o)h.push(...t.cancelled),m.push(...t.expired),w.push(...t.fulfilled),q.push(...t.open);return{cancelled:i.orderBy(h,t=>t.timestamp,"desc"),expired:i.orderBy(m,t=>t.timestamp,"desc"),fulfilled:i.orderBy(w,t=>t.fulfilledTimestamp||t.timestamp,"desc"),open:i.orderBy(q,t=>t.timestamp,"desc")}}exports.getVaultWithdrawals=B;exports.getVaultWithdrawalsAllChains=D;
|
|
2
|
+
//# sourceMappingURL=get-vault-withdrawals-8ALlEiAC.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vault-withdrawals-CWcYy_sH.cjs","sources":["../../src/vaults/lib/ops/get-vault-withdrawals.ts"],"sourcesContent":["import axios from 'axios';\nimport BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { getApiConfig } from '../../../common/api-config';\nimport { ChainId } from '../../../common/chains';\nimport { IEnvParam } from '../../../common/parameters';\nimport {\n fromBaseDenomination,\n getAssetInfo,\n TokenInfo,\n} from '../../../tokens/tokens';\nimport { orderBy, unique } from '../../../utils/array';\nimport { ensureHex } from '../../../utils/hex';\nimport {\n isVedaVaultChain,\n Vault,\n VAULTS,\n VEDA_VAULT_CHAIN_TO_NETWORK_MAP,\n VedaVaultChain,\n} from '../config';\n\nexport type GetVaultWithdrawalsParameters = IEnvParam & {\n account: Address;\n chainId: ChainId;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\nexport type VaultWithdrawal = {\n token?: Omit<TokenInfo, 'abi'>;\n /** The amount of shares withdrawn */\n shareAmount: BigNumber;\n /** The amount of funds withdrawn */\n amount?: BigNumber;\n /** The min price of a share */\n minPrice?: BigNumber;\n /** The expiration timestamp */\n deadline: number;\n /** The request timestamp */\n timestamp: number;\n /** The withdraw request transaction hash */\n txHash: Hash;\n /** The request block number */\n blockNumber: number;\n /** The fulfilment timestamp */\n fulfilledTimestamp?: number;\n /** The funds transfer transaction hash */\n fulfilledTxHash?: Hash;\n /** The fulfilment block number */\n fulfilledBlockNumber?: number;\n /** The chain id */\n chainId?: VedaVaultChain;\n /** The user wallet address that made the withdrawal */\n toAddress?: Address;\n};\n\nexport type VaultWithdrawals = {\n cancelled: VaultWithdrawal[];\n expired: VaultWithdrawal[];\n fulfilled: VaultWithdrawal[];\n open: VaultWithdrawal[];\n};\n\ntype WithdrawRequest = {\n amount: number;\n blockNumber: number;\n deadline: number;\n minPrice: number;\n timestamp: number;\n transactionHash: string;\n wantToken: string;\n};\n\ntype FulfilledRequest = {\n // Yup, there's a typo in the response, double L is expected.\n Fulfillment: {\n blockNumber: number;\n offerAmountSpent: number;\n timestamp: number;\n transactionHash: string;\n wantAmountReceived: number;\n wantToken: string;\n };\n Request: WithdrawRequest;\n};\n\ntype SevenSeasWithdrawRequests = {\n cancelled_requests?: WithdrawRequest[];\n expired_requests?: WithdrawRequest[];\n fulfilled_requests?: FulfilledRequest[];\n open_requests?: WithdrawRequest[];\n};\n\ntype WithdrawalsPayload =\n | SevenSeasWithdrawRequests\n | { Response: SevenSeasWithdrawRequests };\n\nconst EMPTY_WITHDRAW_REQUESTS: SevenSeasWithdrawRequests = {\n cancelled_requests: [],\n expired_requests: [],\n fulfilled_requests: [],\n open_requests: [],\n};\n\nconst normalizeSevenSeasWithdrawRequests = (\n payload?: WithdrawalsPayload,\n): SevenSeasWithdrawRequests => {\n if (!payload) {\n return EMPTY_WITHDRAW_REQUESTS;\n }\n\n if ('Response' in payload) {\n return normalizeSevenSeasWithdrawRequests(payload.Response);\n }\n\n return {\n cancelled_requests: payload.cancelled_requests ?? [],\n expired_requests: payload.expired_requests ?? [],\n fulfilled_requests: payload.fulfilled_requests ?? [],\n open_requests: payload.open_requests ?? [],\n };\n};\n\n/**\n * Retrieves the withdrawals made by specified address.\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.chainId - The chain id.\n * @param parameters.vaultKey - The optional vault identifier.\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>}\n */\nexport async function getVaultWithdrawals({\n account,\n chainId,\n vaultKey = Vault.Veda,\n rpcUrl,\n env,\n}: GetVaultWithdrawalsParameters) {\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 network = VEDA_VAULT_CHAIN_TO_NETWORK_MAP[chainId];\n const { bffApiUrl } = getApiConfig(env);\n if (!bffApiUrl) {\n throw new Error(\n `Could not determine API endpoint for provided environment: ${env}`,\n );\n }\n\n const endpoint = `${bffApiUrl}/sevenseas-api/withdraw-requests/${network}/${vault.vaultContract.address}/${account}`;\n const searchParams = new URLSearchParams({\n historical: 'true',\n });\n const url = `${endpoint}?${searchParams.toString()}`;\n\n const { data } = await axios.get<WithdrawalsPayload>(url);\n const response = normalizeSevenSeasWithdrawRequests(data);\n\n const cancelledRequests = response.cancelled_requests ?? [];\n const expiredRequests = response.expired_requests ?? [];\n const fulfilledRequests = response.fulfilled_requests ?? [];\n const openRequests = response.open_requests ?? [];\n\n const withdrawAssetsAddresses = unique([\n ...cancelledRequests.map(a => ensureHex(a.wantToken)),\n ...expiredRequests.map(a => ensureHex(a.wantToken)),\n ...fulfilledRequests.map(a => ensureHex(a.Request.wantToken)),\n ...openRequests.map(a => ensureHex(a.wantToken)),\n ]);\n\n const withdrawAssets: Record<Address, Omit<TokenInfo, 'abi'> | undefined> =\n {};\n for (const asset of withdrawAssetsAddresses) {\n const assetInfo = await getAssetInfo(asset, chainId, rpcUrl);\n if (assetInfo) {\n withdrawAssets[asset] = {\n address: assetInfo.address,\n decimals: assetInfo.decimals,\n symbol: assetInfo.symbol,\n };\n } else {\n withdrawAssets[asset] = undefined;\n }\n }\n\n const cancelled = cancelledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const expired = expiredRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const fulfilled = fulfilledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.Request.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: fromBaseDenomination(\n w.Fulfillment.wantAmountReceived,\n token?.decimals || 0,\n ),\n blockNumber: w.Request.blockNumber,\n deadline: w.Request.deadline,\n shareAmount: fromBaseDenomination(\n w.Fulfillment.offerAmountSpent,\n vault.decimals,\n ),\n timestamp: w.Request.timestamp,\n txHash: ensureHex(w.Request.transactionHash),\n token,\n fulfilledBlockNumber: w.Fulfillment.blockNumber,\n fulfilledTimestamp: w.Fulfillment.timestamp,\n fulfilledTxHash: ensureHex(w.Fulfillment.transactionHash),\n minPrice: fromBaseDenomination(w.Request.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const open = openRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n minPrice: fromBaseDenomination(w.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n\n const wihdrawals: VaultWithdrawals = {\n cancelled: orderBy(cancelled, a => a.timestamp, 'desc'),\n expired: orderBy(expired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n fulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(open, a => a.timestamp, 'desc'),\n };\n\n return wihdrawals;\n}\n\nexport type GetVaultWithdrawalsAllChainsParameters = {\n account: Address;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\n/**\n * Retrieves the withdrawals made by specified address across all supported chains for a vault.\n * This is useful for getting a complete view of all withdrawals regardless of the currently connected chain.\n *\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.vaultKey - The optional vault identifier (defaults to Veda).\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>} All withdrawals across all supported chains, categorized and sorted\n */\nexport async function getVaultWithdrawalsAllChains({\n account,\n vaultKey = Vault.Veda,\n rpcUrl,\n}: GetVaultWithdrawalsAllChainsParameters): Promise<VaultWithdrawals> {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n // Fetch withdrawals from all supported chains in parallel\n const withdrawalsPromises = vault.chains.map(chainId =>\n getVaultWithdrawals({ account, chainId, vaultKey, rpcUrl }).catch(error => {\n console.error(`Failed to fetch withdrawals for chain ${chainId}:`, error);\n return {\n cancelled: [],\n expired: [],\n fulfilled: [],\n open: [],\n }; // Return empty withdrawals on error to not break the entire query\n }),\n );\n\n const withdrawalsArrays = await Promise.all(withdrawalsPromises);\n\n // Combine all withdrawals from all chains\n const allCancelled: VaultWithdrawal[] = [];\n const allExpired: VaultWithdrawal[] = [];\n const allFulfilled: VaultWithdrawal[] = [];\n const allOpen: VaultWithdrawal[] = [];\n\n for (const withdrawals of withdrawalsArrays) {\n allCancelled.push(...withdrawals.cancelled);\n allExpired.push(...withdrawals.expired);\n allFulfilled.push(...withdrawals.fulfilled);\n allOpen.push(...withdrawals.open);\n }\n\n // Sort each category by timestamp (newest first)\n return {\n cancelled: orderBy(allCancelled, a => a.timestamp, 'desc'),\n expired: orderBy(allExpired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n allFulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(allOpen, a => a.timestamp, 'desc'),\n };\n}\n"],"names":["EMPTY_WITHDRAW_REQUESTS","normalizeSevenSeasWithdrawRequests","payload","getVaultWithdrawals","account","chainId","vaultKey","Vault","rpcUrl","env","vault","VAULTS","isVedaVaultChain","network","VEDA_VAULT_CHAIN_TO_NETWORK_MAP","bffApiUrl","getApiConfig","endpoint","searchParams","url","data","axios","response","cancelledRequests","expiredRequests","fulfilledRequests","openRequests","withdrawAssetsAddresses","unique","ensureHex","a","withdrawAssets","asset","assetInfo","getAssetInfo","cancelled","w","token","fromBaseDenomination","expired","fulfilled","open","orderBy","getVaultWithdrawalsAllChains","withdrawalsPromises","error","withdrawalsArrays","allCancelled","allExpired","allFulfilled","allOpen","withdrawals"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-vault-withdrawals-8ALlEiAC.cjs","sources":["../../src/vaults/lib/ops/get-vault-withdrawals.ts"],"sourcesContent":["import axios from 'axios';\nimport BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { getApiConfig } from '../../../common/api-config';\nimport { ChainId } from '../../../common/chains';\nimport { IEnvParam } from '../../../common/parameters';\nimport {\n fromBaseDenomination,\n getAssetInfo,\n TokenInfo,\n} from '../../../tokens/tokens';\nimport { orderBy, unique } from '../../../utils/array';\nimport { ensureHex } from '../../../utils/hex';\nimport {\n isVedaVaultChain,\n Vault,\n VAULTS,\n VEDA_VAULT_CHAIN_TO_NETWORK_MAP,\n VedaVaultChain,\n} from '../config';\n\nexport type GetVaultWithdrawalsParameters = IEnvParam & {\n account: Address;\n chainId: ChainId;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\nexport type VaultWithdrawal = {\n token?: Omit<TokenInfo, 'abi'>;\n /** The amount of shares withdrawn */\n shareAmount: BigNumber;\n /** The amount of funds withdrawn */\n amount?: BigNumber;\n /** The min price of a share */\n minPrice?: BigNumber;\n /** The expiration timestamp */\n deadline: number;\n /** The request timestamp */\n timestamp: number;\n /** The withdraw request transaction hash */\n txHash: Hash;\n /** The request block number */\n blockNumber: number;\n /** The fulfilment timestamp */\n fulfilledTimestamp?: number;\n /** The funds transfer transaction hash */\n fulfilledTxHash?: Hash;\n /** The fulfilment block number */\n fulfilledBlockNumber?: number;\n /** The chain id */\n chainId?: VedaVaultChain;\n /** The user wallet address that made the withdrawal */\n toAddress?: Address;\n};\n\nexport type VaultWithdrawals = {\n cancelled: VaultWithdrawal[];\n expired: VaultWithdrawal[];\n fulfilled: VaultWithdrawal[];\n open: VaultWithdrawal[];\n};\n\ntype WithdrawRequest = {\n amount: number;\n blockNumber: number;\n deadline: number;\n minPrice: number;\n timestamp: number;\n transactionHash: string;\n wantToken: string;\n};\n\ntype FulfilledRequest = {\n // Yup, there's a typo in the response, double L is expected.\n Fulfillment: {\n blockNumber: number;\n offerAmountSpent: number;\n timestamp: number;\n transactionHash: string;\n wantAmountReceived: number;\n wantToken: string;\n };\n Request: WithdrawRequest;\n};\n\ntype SevenSeasWithdrawRequests = {\n cancelled_requests?: WithdrawRequest[];\n expired_requests?: WithdrawRequest[];\n fulfilled_requests?: FulfilledRequest[];\n open_requests?: WithdrawRequest[];\n};\n\ntype WithdrawalsPayload =\n | SevenSeasWithdrawRequests\n | { Response: SevenSeasWithdrawRequests };\n\nconst EMPTY_WITHDRAW_REQUESTS: SevenSeasWithdrawRequests = {\n cancelled_requests: [],\n expired_requests: [],\n fulfilled_requests: [],\n open_requests: [],\n};\n\nconst normalizeSevenSeasWithdrawRequests = (\n payload?: WithdrawalsPayload,\n): SevenSeasWithdrawRequests => {\n if (!payload) {\n return EMPTY_WITHDRAW_REQUESTS;\n }\n\n if ('Response' in payload) {\n return normalizeSevenSeasWithdrawRequests(payload.Response);\n }\n\n return {\n cancelled_requests: payload.cancelled_requests ?? [],\n expired_requests: payload.expired_requests ?? [],\n fulfilled_requests: payload.fulfilled_requests ?? [],\n open_requests: payload.open_requests ?? [],\n };\n};\n\n/**\n * Retrieves the withdrawals made by specified address.\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.chainId - The chain id.\n * @param parameters.vaultKey - The optional vault identifier.\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>}\n */\nexport async function getVaultWithdrawals({\n account,\n chainId,\n vaultKey = Vault.Veda,\n rpcUrl,\n env,\n}: GetVaultWithdrawalsParameters) {\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 network = VEDA_VAULT_CHAIN_TO_NETWORK_MAP[chainId];\n const { bffApiUrl } = getApiConfig(env);\n if (!bffApiUrl) {\n throw new Error(\n `Could not determine API endpoint for provided environment: ${env}`,\n );\n }\n\n const endpoint = `${bffApiUrl}/sevenseas-api/withdraw-requests/${network}/${vault.vaultContract.address}/${account}`;\n const searchParams = new URLSearchParams({\n historical: 'true',\n });\n const url = `${endpoint}?${searchParams.toString()}`;\n\n const { data } = await axios.get<WithdrawalsPayload>(url);\n const response = normalizeSevenSeasWithdrawRequests(data);\n\n const cancelledRequests = response.cancelled_requests ?? [];\n const expiredRequests = response.expired_requests ?? [];\n const fulfilledRequests = response.fulfilled_requests ?? [];\n const openRequests = response.open_requests ?? [];\n\n const withdrawAssetsAddresses = unique([\n ...cancelledRequests.map(a => ensureHex(a.wantToken)),\n ...expiredRequests.map(a => ensureHex(a.wantToken)),\n ...fulfilledRequests.map(a => ensureHex(a.Request.wantToken)),\n ...openRequests.map(a => ensureHex(a.wantToken)),\n ]);\n\n const withdrawAssets: Record<Address, Omit<TokenInfo, 'abi'> | undefined> =\n {};\n for (const asset of withdrawAssetsAddresses) {\n const assetInfo = await getAssetInfo(asset, chainId, rpcUrl);\n if (assetInfo) {\n withdrawAssets[asset] = {\n address: assetInfo.address,\n decimals: assetInfo.decimals,\n symbol: assetInfo.symbol,\n };\n } else {\n withdrawAssets[asset] = undefined;\n }\n }\n\n const cancelled = cancelledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const expired = expiredRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const fulfilled = fulfilledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.Request.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: fromBaseDenomination(\n w.Fulfillment.wantAmountReceived,\n token?.decimals || 0,\n ),\n blockNumber: w.Request.blockNumber,\n deadline: w.Request.deadline,\n shareAmount: fromBaseDenomination(\n w.Fulfillment.offerAmountSpent,\n vault.decimals,\n ),\n timestamp: w.Request.timestamp,\n txHash: ensureHex(w.Request.transactionHash),\n token,\n fulfilledBlockNumber: w.Fulfillment.blockNumber,\n fulfilledTimestamp: w.Fulfillment.timestamp,\n fulfilledTxHash: ensureHex(w.Fulfillment.transactionHash),\n minPrice: fromBaseDenomination(w.Request.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const open = openRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n minPrice: fromBaseDenomination(w.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n\n const wihdrawals: VaultWithdrawals = {\n cancelled: orderBy(cancelled, a => a.timestamp, 'desc'),\n expired: orderBy(expired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n fulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(open, a => a.timestamp, 'desc'),\n };\n\n return wihdrawals;\n}\n\nexport type GetVaultWithdrawalsAllChainsParameters = {\n account: Address;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\n/**\n * Retrieves the withdrawals made by specified address across all supported chains for a vault.\n * This is useful for getting a complete view of all withdrawals regardless of the currently connected chain.\n *\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.vaultKey - The optional vault identifier (defaults to Veda).\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>} All withdrawals across all supported chains, categorized and sorted\n */\nexport async function getVaultWithdrawalsAllChains({\n account,\n vaultKey = Vault.Veda,\n rpcUrl,\n}: GetVaultWithdrawalsAllChainsParameters): Promise<VaultWithdrawals> {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n // Fetch withdrawals from all supported chains in parallel\n const withdrawalsPromises = vault.chains.map(chainId =>\n getVaultWithdrawals({ account, chainId, vaultKey, rpcUrl }).catch(error => {\n console.error(`Failed to fetch withdrawals for chain ${chainId}:`, error);\n return {\n cancelled: [],\n expired: [],\n fulfilled: [],\n open: [],\n }; // Return empty withdrawals on error to not break the entire query\n }),\n );\n\n const withdrawalsArrays = await Promise.all(withdrawalsPromises);\n\n // Combine all withdrawals from all chains\n const allCancelled: VaultWithdrawal[] = [];\n const allExpired: VaultWithdrawal[] = [];\n const allFulfilled: VaultWithdrawal[] = [];\n const allOpen: VaultWithdrawal[] = [];\n\n for (const withdrawals of withdrawalsArrays) {\n allCancelled.push(...withdrawals.cancelled);\n allExpired.push(...withdrawals.expired);\n allFulfilled.push(...withdrawals.fulfilled);\n allOpen.push(...withdrawals.open);\n }\n\n // Sort each category by timestamp (newest first)\n return {\n cancelled: orderBy(allCancelled, a => a.timestamp, 'desc'),\n expired: orderBy(allExpired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n allFulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(allOpen, a => a.timestamp, 'desc'),\n };\n}\n"],"names":["EMPTY_WITHDRAW_REQUESTS","normalizeSevenSeasWithdrawRequests","payload","getVaultWithdrawals","account","chainId","vaultKey","Vault","rpcUrl","env","vault","VAULTS","isVedaVaultChain","network","VEDA_VAULT_CHAIN_TO_NETWORK_MAP","bffApiUrl","getApiConfig","endpoint","searchParams","url","data","axios","response","cancelledRequests","expiredRequests","fulfilledRequests","openRequests","withdrawAssetsAddresses","unique","ensureHex","a","withdrawAssets","asset","assetInfo","getAssetInfo","cancelled","w","token","fromBaseDenomination","expired","fulfilled","open","orderBy","getVaultWithdrawalsAllChains","withdrawalsPromises","error","withdrawalsArrays","allCancelled","allExpired","allFulfilled","allOpen","withdrawals"],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import S from "axios";
|
|
2
|
+
import { getApiConfig as U } from "./api-config-Dm6dR85f.js";
|
|
3
|
+
import { getAssetInfo as g, fromBaseDenomination as o } from "./tokens-DgC1hfkm.js";
|
|
4
|
+
import { unique as C, orderBy as i } from "./array-DYttUPf5.js";
|
|
5
|
+
import { ensureHex as a } from "./time-Sa5gggPG.js";
|
|
6
|
+
import { Vault as T, isVedaVaultChain as F, VAULTS as H, VEDA_VAULT_CHAIN_TO_NETWORK_MAP as W } from "./config-DghboRx0.js";
|
|
7
|
+
const B = {
|
|
8
|
+
cancelled_requests: [],
|
|
9
|
+
expired_requests: [],
|
|
10
|
+
fulfilled_requests: [],
|
|
11
|
+
open_requests: []
|
|
12
|
+
}, N = (n) => n ? "Response" in n ? N(n.Response) : {
|
|
13
|
+
cancelled_requests: n.cancelled_requests ?? [],
|
|
14
|
+
expired_requests: n.expired_requests ?? [],
|
|
15
|
+
fulfilled_requests: n.fulfilled_requests ?? [],
|
|
16
|
+
open_requests: n.open_requests ?? []
|
|
17
|
+
} : B;
|
|
18
|
+
async function D({
|
|
19
|
+
account: n,
|
|
20
|
+
chainId: r,
|
|
21
|
+
vaultKey: c = T.Veda,
|
|
22
|
+
rpcUrl: u,
|
|
23
|
+
env: p
|
|
24
|
+
}) {
|
|
25
|
+
const l = H[c];
|
|
26
|
+
if (!l)
|
|
27
|
+
throw new Error(`Unknown vault key: ${c}`);
|
|
28
|
+
if (!F(r))
|
|
29
|
+
throw new Error(
|
|
30
|
+
`Unsupported chain id: ${r}. Please switch to one of the supported chains: ${l.chains.join(", ")}`
|
|
31
|
+
);
|
|
32
|
+
const f = W[r], { bffApiUrl: m } = U(p);
|
|
33
|
+
if (!m)
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Could not determine API endpoint for provided environment: ${p}`
|
|
36
|
+
);
|
|
37
|
+
const h = `${m}/sevenseas-api/withdraw-requests/${f}/${l.vaultContract.address}/${n}`, w = new URLSearchParams({
|
|
38
|
+
historical: "true"
|
|
39
|
+
}), s = `${h}?${w.toString()}`, { data: A } = await S.get(s), q = N(A), b = q.cancelled_requests ?? [], k = q.expired_requests ?? [], x = q.fulfilled_requests ?? [], R = q.open_requests ?? [], P = C([
|
|
40
|
+
...b.map((e) => a(e.wantToken)),
|
|
41
|
+
...k.map((e) => a(e.wantToken)),
|
|
42
|
+
...x.map((e) => a(e.Request.wantToken)),
|
|
43
|
+
...R.map((e) => a(e.wantToken))
|
|
44
|
+
]), d = {};
|
|
45
|
+
for (const e of P) {
|
|
46
|
+
const t = await g(e, r, u);
|
|
47
|
+
t ? d[e] = {
|
|
48
|
+
address: t.address,
|
|
49
|
+
decimals: t.decimals,
|
|
50
|
+
symbol: t.symbol
|
|
51
|
+
} : d[e] = void 0;
|
|
52
|
+
}
|
|
53
|
+
const $ = b.map((e) => {
|
|
54
|
+
const t = d[a(e.wantToken)];
|
|
55
|
+
return {
|
|
56
|
+
amount: void 0,
|
|
57
|
+
blockNumber: e.blockNumber,
|
|
58
|
+
deadline: e.deadline,
|
|
59
|
+
shareAmount: o(e.amount, l.decimals),
|
|
60
|
+
timestamp: e.timestamp,
|
|
61
|
+
txHash: a(e.transactionHash),
|
|
62
|
+
token: t,
|
|
63
|
+
chainId: r,
|
|
64
|
+
toAddress: n
|
|
65
|
+
};
|
|
66
|
+
}), v = k.map((e) => {
|
|
67
|
+
const t = d[a(e.wantToken)];
|
|
68
|
+
return {
|
|
69
|
+
amount: void 0,
|
|
70
|
+
blockNumber: e.blockNumber,
|
|
71
|
+
deadline: e.deadline,
|
|
72
|
+
shareAmount: o(e.amount, l.decimals),
|
|
73
|
+
timestamp: e.timestamp,
|
|
74
|
+
txHash: a(e.transactionHash),
|
|
75
|
+
token: t,
|
|
76
|
+
chainId: r,
|
|
77
|
+
toAddress: n
|
|
78
|
+
};
|
|
79
|
+
}), E = x.map((e) => {
|
|
80
|
+
const t = d[a(e.Request.wantToken)];
|
|
81
|
+
return {
|
|
82
|
+
amount: o(
|
|
83
|
+
e.Fulfillment.wantAmountReceived,
|
|
84
|
+
(t == null ? void 0 : t.decimals) || 0
|
|
85
|
+
),
|
|
86
|
+
blockNumber: e.Request.blockNumber,
|
|
87
|
+
deadline: e.Request.deadline,
|
|
88
|
+
shareAmount: o(
|
|
89
|
+
e.Fulfillment.offerAmountSpent,
|
|
90
|
+
l.decimals
|
|
91
|
+
),
|
|
92
|
+
timestamp: e.Request.timestamp,
|
|
93
|
+
txHash: a(e.Request.transactionHash),
|
|
94
|
+
token: t,
|
|
95
|
+
fulfilledBlockNumber: e.Fulfillment.blockNumber,
|
|
96
|
+
fulfilledTimestamp: e.Fulfillment.timestamp,
|
|
97
|
+
fulfilledTxHash: a(e.Fulfillment.transactionHash),
|
|
98
|
+
minPrice: o(e.Request.minPrice, (t == null ? void 0 : t.decimals) || 0),
|
|
99
|
+
chainId: r,
|
|
100
|
+
toAddress: n
|
|
101
|
+
};
|
|
102
|
+
}), V = R.map((e) => {
|
|
103
|
+
const t = d[a(e.wantToken)];
|
|
104
|
+
return {
|
|
105
|
+
amount: void 0,
|
|
106
|
+
blockNumber: e.blockNumber,
|
|
107
|
+
deadline: e.deadline,
|
|
108
|
+
shareAmount: o(e.amount, l.decimals),
|
|
109
|
+
timestamp: e.timestamp,
|
|
110
|
+
txHash: a(e.transactionHash),
|
|
111
|
+
token: t,
|
|
112
|
+
minPrice: o(e.minPrice, (t == null ? void 0 : t.decimals) || 0),
|
|
113
|
+
chainId: r,
|
|
114
|
+
toAddress: n
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
return {
|
|
118
|
+
cancelled: i($, (e) => e.timestamp, "desc"),
|
|
119
|
+
expired: i(v, (e) => e.timestamp, "desc"),
|
|
120
|
+
fulfilled: i(
|
|
121
|
+
E,
|
|
122
|
+
(e) => e.fulfilledTimestamp || e.timestamp,
|
|
123
|
+
"desc"
|
|
124
|
+
),
|
|
125
|
+
open: i(V, (e) => e.timestamp, "desc")
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
async function G({
|
|
129
|
+
account: n,
|
|
130
|
+
vaultKey: r = T.Veda,
|
|
131
|
+
rpcUrl: c
|
|
132
|
+
}) {
|
|
133
|
+
const u = H[r];
|
|
134
|
+
if (!u)
|
|
135
|
+
throw new Error(`Unknown vault key: ${r}`);
|
|
136
|
+
const p = u.chains.map(
|
|
137
|
+
(s) => D({ account: n, chainId: s, vaultKey: r, rpcUrl: c }).catch((A) => (console.error(`Failed to fetch withdrawals for chain ${s}:`, A), {
|
|
138
|
+
cancelled: [],
|
|
139
|
+
expired: [],
|
|
140
|
+
fulfilled: [],
|
|
141
|
+
open: []
|
|
142
|
+
}))
|
|
143
|
+
), l = await Promise.all(p), f = [], m = [], h = [], w = [];
|
|
144
|
+
for (const s of l)
|
|
145
|
+
f.push(...s.cancelled), m.push(...s.expired), h.push(...s.fulfilled), w.push(...s.open);
|
|
146
|
+
return {
|
|
147
|
+
cancelled: i(f, (s) => s.timestamp, "desc"),
|
|
148
|
+
expired: i(m, (s) => s.timestamp, "desc"),
|
|
149
|
+
fulfilled: i(
|
|
150
|
+
h,
|
|
151
|
+
(s) => s.fulfilledTimestamp || s.timestamp,
|
|
152
|
+
"desc"
|
|
153
|
+
),
|
|
154
|
+
open: i(w, (s) => s.timestamp, "desc")
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
export {
|
|
158
|
+
D as getVaultWithdrawals,
|
|
159
|
+
G as getVaultWithdrawalsAllChains
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=get-vault-withdrawals-jk7Sv4S4.js.map
|
package/dist/chunks/{get-vault-withdrawals-BrpZlt6s.js.map → get-vault-withdrawals-jk7Sv4S4.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vault-withdrawals-BrpZlt6s.js","sources":["../../src/vaults/lib/ops/get-vault-withdrawals.ts"],"sourcesContent":["import axios from 'axios';\nimport BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { getApiConfig } from '../../../common/api-config';\nimport { ChainId } from '../../../common/chains';\nimport { IEnvParam } from '../../../common/parameters';\nimport {\n fromBaseDenomination,\n getAssetInfo,\n TokenInfo,\n} from '../../../tokens/tokens';\nimport { orderBy, unique } from '../../../utils/array';\nimport { ensureHex } from '../../../utils/hex';\nimport {\n isVedaVaultChain,\n Vault,\n VAULTS,\n VEDA_VAULT_CHAIN_TO_NETWORK_MAP,\n VedaVaultChain,\n} from '../config';\n\nexport type GetVaultWithdrawalsParameters = IEnvParam & {\n account: Address;\n chainId: ChainId;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\nexport type VaultWithdrawal = {\n token?: Omit<TokenInfo, 'abi'>;\n /** The amount of shares withdrawn */\n shareAmount: BigNumber;\n /** The amount of funds withdrawn */\n amount?: BigNumber;\n /** The min price of a share */\n minPrice?: BigNumber;\n /** The expiration timestamp */\n deadline: number;\n /** The request timestamp */\n timestamp: number;\n /** The withdraw request transaction hash */\n txHash: Hash;\n /** The request block number */\n blockNumber: number;\n /** The fulfilment timestamp */\n fulfilledTimestamp?: number;\n /** The funds transfer transaction hash */\n fulfilledTxHash?: Hash;\n /** The fulfilment block number */\n fulfilledBlockNumber?: number;\n /** The chain id */\n chainId?: VedaVaultChain;\n /** The user wallet address that made the withdrawal */\n toAddress?: Address;\n};\n\nexport type VaultWithdrawals = {\n cancelled: VaultWithdrawal[];\n expired: VaultWithdrawal[];\n fulfilled: VaultWithdrawal[];\n open: VaultWithdrawal[];\n};\n\ntype WithdrawRequest = {\n amount: number;\n blockNumber: number;\n deadline: number;\n minPrice: number;\n timestamp: number;\n transactionHash: string;\n wantToken: string;\n};\n\ntype FulfilledRequest = {\n // Yup, there's a typo in the response, double L is expected.\n Fulfillment: {\n blockNumber: number;\n offerAmountSpent: number;\n timestamp: number;\n transactionHash: string;\n wantAmountReceived: number;\n wantToken: string;\n };\n Request: WithdrawRequest;\n};\n\ntype SevenSeasWithdrawRequests = {\n cancelled_requests?: WithdrawRequest[];\n expired_requests?: WithdrawRequest[];\n fulfilled_requests?: FulfilledRequest[];\n open_requests?: WithdrawRequest[];\n};\n\ntype WithdrawalsPayload =\n | SevenSeasWithdrawRequests\n | { Response: SevenSeasWithdrawRequests };\n\nconst EMPTY_WITHDRAW_REQUESTS: SevenSeasWithdrawRequests = {\n cancelled_requests: [],\n expired_requests: [],\n fulfilled_requests: [],\n open_requests: [],\n};\n\nconst normalizeSevenSeasWithdrawRequests = (\n payload?: WithdrawalsPayload,\n): SevenSeasWithdrawRequests => {\n if (!payload) {\n return EMPTY_WITHDRAW_REQUESTS;\n }\n\n if ('Response' in payload) {\n return normalizeSevenSeasWithdrawRequests(payload.Response);\n }\n\n return {\n cancelled_requests: payload.cancelled_requests ?? [],\n expired_requests: payload.expired_requests ?? [],\n fulfilled_requests: payload.fulfilled_requests ?? [],\n open_requests: payload.open_requests ?? [],\n };\n};\n\n/**\n * Retrieves the withdrawals made by specified address.\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.chainId - The chain id.\n * @param parameters.vaultKey - The optional vault identifier.\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>}\n */\nexport async function getVaultWithdrawals({\n account,\n chainId,\n vaultKey = Vault.Veda,\n rpcUrl,\n env,\n}: GetVaultWithdrawalsParameters) {\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 network = VEDA_VAULT_CHAIN_TO_NETWORK_MAP[chainId];\n const { bffApiUrl } = getApiConfig(env);\n if (!bffApiUrl) {\n throw new Error(\n `Could not determine API endpoint for provided environment: ${env}`,\n );\n }\n\n const endpoint = `${bffApiUrl}/sevenseas-api/withdraw-requests/${network}/${vault.vaultContract.address}/${account}`;\n const searchParams = new URLSearchParams({\n historical: 'true',\n });\n const url = `${endpoint}?${searchParams.toString()}`;\n\n const { data } = await axios.get<WithdrawalsPayload>(url);\n const response = normalizeSevenSeasWithdrawRequests(data);\n\n const cancelledRequests = response.cancelled_requests ?? [];\n const expiredRequests = response.expired_requests ?? [];\n const fulfilledRequests = response.fulfilled_requests ?? [];\n const openRequests = response.open_requests ?? [];\n\n const withdrawAssetsAddresses = unique([\n ...cancelledRequests.map(a => ensureHex(a.wantToken)),\n ...expiredRequests.map(a => ensureHex(a.wantToken)),\n ...fulfilledRequests.map(a => ensureHex(a.Request.wantToken)),\n ...openRequests.map(a => ensureHex(a.wantToken)),\n ]);\n\n const withdrawAssets: Record<Address, Omit<TokenInfo, 'abi'> | undefined> =\n {};\n for (const asset of withdrawAssetsAddresses) {\n const assetInfo = await getAssetInfo(asset, chainId, rpcUrl);\n if (assetInfo) {\n withdrawAssets[asset] = {\n address: assetInfo.address,\n decimals: assetInfo.decimals,\n symbol: assetInfo.symbol,\n };\n } else {\n withdrawAssets[asset] = undefined;\n }\n }\n\n const cancelled = cancelledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const expired = expiredRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const fulfilled = fulfilledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.Request.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: fromBaseDenomination(\n w.Fulfillment.wantAmountReceived,\n token?.decimals || 0,\n ),\n blockNumber: w.Request.blockNumber,\n deadline: w.Request.deadline,\n shareAmount: fromBaseDenomination(\n w.Fulfillment.offerAmountSpent,\n vault.decimals,\n ),\n timestamp: w.Request.timestamp,\n txHash: ensureHex(w.Request.transactionHash),\n token,\n fulfilledBlockNumber: w.Fulfillment.blockNumber,\n fulfilledTimestamp: w.Fulfillment.timestamp,\n fulfilledTxHash: ensureHex(w.Fulfillment.transactionHash),\n minPrice: fromBaseDenomination(w.Request.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const open = openRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n minPrice: fromBaseDenomination(w.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n\n const wihdrawals: VaultWithdrawals = {\n cancelled: orderBy(cancelled, a => a.timestamp, 'desc'),\n expired: orderBy(expired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n fulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(open, a => a.timestamp, 'desc'),\n };\n\n return wihdrawals;\n}\n\nexport type GetVaultWithdrawalsAllChainsParameters = {\n account: Address;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\n/**\n * Retrieves the withdrawals made by specified address across all supported chains for a vault.\n * This is useful for getting a complete view of all withdrawals regardless of the currently connected chain.\n *\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.vaultKey - The optional vault identifier (defaults to Veda).\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>} All withdrawals across all supported chains, categorized and sorted\n */\nexport async function getVaultWithdrawalsAllChains({\n account,\n vaultKey = Vault.Veda,\n rpcUrl,\n}: GetVaultWithdrawalsAllChainsParameters): Promise<VaultWithdrawals> {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n // Fetch withdrawals from all supported chains in parallel\n const withdrawalsPromises = vault.chains.map(chainId =>\n getVaultWithdrawals({ account, chainId, vaultKey, rpcUrl }).catch(error => {\n console.error(`Failed to fetch withdrawals for chain ${chainId}:`, error);\n return {\n cancelled: [],\n expired: [],\n fulfilled: [],\n open: [],\n }; // Return empty withdrawals on error to not break the entire query\n }),\n );\n\n const withdrawalsArrays = await Promise.all(withdrawalsPromises);\n\n // Combine all withdrawals from all chains\n const allCancelled: VaultWithdrawal[] = [];\n const allExpired: VaultWithdrawal[] = [];\n const allFulfilled: VaultWithdrawal[] = [];\n const allOpen: VaultWithdrawal[] = [];\n\n for (const withdrawals of withdrawalsArrays) {\n allCancelled.push(...withdrawals.cancelled);\n allExpired.push(...withdrawals.expired);\n allFulfilled.push(...withdrawals.fulfilled);\n allOpen.push(...withdrawals.open);\n }\n\n // Sort each category by timestamp (newest first)\n return {\n cancelled: orderBy(allCancelled, a => a.timestamp, 'desc'),\n expired: orderBy(allExpired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n allFulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(allOpen, a => a.timestamp, 'desc'),\n };\n}\n"],"names":["EMPTY_WITHDRAW_REQUESTS","normalizeSevenSeasWithdrawRequests","payload","getVaultWithdrawals","account","chainId","vaultKey","Vault","rpcUrl","env","vault","VAULTS","isVedaVaultChain","network","VEDA_VAULT_CHAIN_TO_NETWORK_MAP","bffApiUrl","getApiConfig","endpoint","searchParams","url","data","axios","response","cancelledRequests","expiredRequests","fulfilledRequests","openRequests","withdrawAssetsAddresses","unique","ensureHex","a","withdrawAssets","asset","assetInfo","getAssetInfo","cancelled","w","token","fromBaseDenomination","expired","fulfilled","open","orderBy","getVaultWithdrawalsAllChains","withdrawalsPromises","error","withdrawalsArrays","allCancelled","allExpired","allFulfilled","allOpen","withdrawals"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"get-vault-withdrawals-jk7Sv4S4.js","sources":["../../src/vaults/lib/ops/get-vault-withdrawals.ts"],"sourcesContent":["import axios from 'axios';\nimport BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { getApiConfig } from '../../../common/api-config';\nimport { ChainId } from '../../../common/chains';\nimport { IEnvParam } from '../../../common/parameters';\nimport {\n fromBaseDenomination,\n getAssetInfo,\n TokenInfo,\n} from '../../../tokens/tokens';\nimport { orderBy, unique } from '../../../utils/array';\nimport { ensureHex } from '../../../utils/hex';\nimport {\n isVedaVaultChain,\n Vault,\n VAULTS,\n VEDA_VAULT_CHAIN_TO_NETWORK_MAP,\n VedaVaultChain,\n} from '../config';\n\nexport type GetVaultWithdrawalsParameters = IEnvParam & {\n account: Address;\n chainId: ChainId;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\nexport type VaultWithdrawal = {\n token?: Omit<TokenInfo, 'abi'>;\n /** The amount of shares withdrawn */\n shareAmount: BigNumber;\n /** The amount of funds withdrawn */\n amount?: BigNumber;\n /** The min price of a share */\n minPrice?: BigNumber;\n /** The expiration timestamp */\n deadline: number;\n /** The request timestamp */\n timestamp: number;\n /** The withdraw request transaction hash */\n txHash: Hash;\n /** The request block number */\n blockNumber: number;\n /** The fulfilment timestamp */\n fulfilledTimestamp?: number;\n /** The funds transfer transaction hash */\n fulfilledTxHash?: Hash;\n /** The fulfilment block number */\n fulfilledBlockNumber?: number;\n /** The chain id */\n chainId?: VedaVaultChain;\n /** The user wallet address that made the withdrawal */\n toAddress?: Address;\n};\n\nexport type VaultWithdrawals = {\n cancelled: VaultWithdrawal[];\n expired: VaultWithdrawal[];\n fulfilled: VaultWithdrawal[];\n open: VaultWithdrawal[];\n};\n\ntype WithdrawRequest = {\n amount: number;\n blockNumber: number;\n deadline: number;\n minPrice: number;\n timestamp: number;\n transactionHash: string;\n wantToken: string;\n};\n\ntype FulfilledRequest = {\n // Yup, there's a typo in the response, double L is expected.\n Fulfillment: {\n blockNumber: number;\n offerAmountSpent: number;\n timestamp: number;\n transactionHash: string;\n wantAmountReceived: number;\n wantToken: string;\n };\n Request: WithdrawRequest;\n};\n\ntype SevenSeasWithdrawRequests = {\n cancelled_requests?: WithdrawRequest[];\n expired_requests?: WithdrawRequest[];\n fulfilled_requests?: FulfilledRequest[];\n open_requests?: WithdrawRequest[];\n};\n\ntype WithdrawalsPayload =\n | SevenSeasWithdrawRequests\n | { Response: SevenSeasWithdrawRequests };\n\nconst EMPTY_WITHDRAW_REQUESTS: SevenSeasWithdrawRequests = {\n cancelled_requests: [],\n expired_requests: [],\n fulfilled_requests: [],\n open_requests: [],\n};\n\nconst normalizeSevenSeasWithdrawRequests = (\n payload?: WithdrawalsPayload,\n): SevenSeasWithdrawRequests => {\n if (!payload) {\n return EMPTY_WITHDRAW_REQUESTS;\n }\n\n if ('Response' in payload) {\n return normalizeSevenSeasWithdrawRequests(payload.Response);\n }\n\n return {\n cancelled_requests: payload.cancelled_requests ?? [],\n expired_requests: payload.expired_requests ?? [],\n fulfilled_requests: payload.fulfilled_requests ?? [],\n open_requests: payload.open_requests ?? [],\n };\n};\n\n/**\n * Retrieves the withdrawals made by specified address.\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.chainId - The chain id.\n * @param parameters.vaultKey - The optional vault identifier.\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>}\n */\nexport async function getVaultWithdrawals({\n account,\n chainId,\n vaultKey = Vault.Veda,\n rpcUrl,\n env,\n}: GetVaultWithdrawalsParameters) {\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 network = VEDA_VAULT_CHAIN_TO_NETWORK_MAP[chainId];\n const { bffApiUrl } = getApiConfig(env);\n if (!bffApiUrl) {\n throw new Error(\n `Could not determine API endpoint for provided environment: ${env}`,\n );\n }\n\n const endpoint = `${bffApiUrl}/sevenseas-api/withdraw-requests/${network}/${vault.vaultContract.address}/${account}`;\n const searchParams = new URLSearchParams({\n historical: 'true',\n });\n const url = `${endpoint}?${searchParams.toString()}`;\n\n const { data } = await axios.get<WithdrawalsPayload>(url);\n const response = normalizeSevenSeasWithdrawRequests(data);\n\n const cancelledRequests = response.cancelled_requests ?? [];\n const expiredRequests = response.expired_requests ?? [];\n const fulfilledRequests = response.fulfilled_requests ?? [];\n const openRequests = response.open_requests ?? [];\n\n const withdrawAssetsAddresses = unique([\n ...cancelledRequests.map(a => ensureHex(a.wantToken)),\n ...expiredRequests.map(a => ensureHex(a.wantToken)),\n ...fulfilledRequests.map(a => ensureHex(a.Request.wantToken)),\n ...openRequests.map(a => ensureHex(a.wantToken)),\n ]);\n\n const withdrawAssets: Record<Address, Omit<TokenInfo, 'abi'> | undefined> =\n {};\n for (const asset of withdrawAssetsAddresses) {\n const assetInfo = await getAssetInfo(asset, chainId, rpcUrl);\n if (assetInfo) {\n withdrawAssets[asset] = {\n address: assetInfo.address,\n decimals: assetInfo.decimals,\n symbol: assetInfo.symbol,\n };\n } else {\n withdrawAssets[asset] = undefined;\n }\n }\n\n const cancelled = cancelledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const expired = expiredRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const fulfilled = fulfilledRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.Request.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: fromBaseDenomination(\n w.Fulfillment.wantAmountReceived,\n token?.decimals || 0,\n ),\n blockNumber: w.Request.blockNumber,\n deadline: w.Request.deadline,\n shareAmount: fromBaseDenomination(\n w.Fulfillment.offerAmountSpent,\n vault.decimals,\n ),\n timestamp: w.Request.timestamp,\n txHash: ensureHex(w.Request.transactionHash),\n token,\n fulfilledBlockNumber: w.Fulfillment.blockNumber,\n fulfilledTimestamp: w.Fulfillment.timestamp,\n fulfilledTxHash: ensureHex(w.Fulfillment.transactionHash),\n minPrice: fromBaseDenomination(w.Request.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n const open = openRequests.map(w => {\n const token = withdrawAssets[ensureHex(w.wantToken)];\n const withdrawal: VaultWithdrawal = {\n amount: undefined,\n blockNumber: w.blockNumber,\n deadline: w.deadline,\n shareAmount: fromBaseDenomination(w.amount, vault.decimals),\n timestamp: w.timestamp,\n txHash: ensureHex(w.transactionHash),\n token,\n minPrice: fromBaseDenomination(w.minPrice, token?.decimals || 0),\n chainId,\n toAddress: account,\n };\n return withdrawal;\n });\n\n const wihdrawals: VaultWithdrawals = {\n cancelled: orderBy(cancelled, a => a.timestamp, 'desc'),\n expired: orderBy(expired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n fulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(open, a => a.timestamp, 'desc'),\n };\n\n return wihdrawals;\n}\n\nexport type GetVaultWithdrawalsAllChainsParameters = {\n account: Address;\n vaultKey?: Vault;\n rpcUrl?: string;\n};\n\n/**\n * Retrieves the withdrawals made by specified address across all supported chains for a vault.\n * This is useful for getting a complete view of all withdrawals regardless of the currently connected chain.\n *\n * @param parameters - The parameters.\n * @param parameters.account - The account address.\n * @param parameters.vaultKey - The optional vault identifier (defaults to Veda).\n * @param parameters.rpcUrl - The optional RPC url.\n *\n * @returns {Promise<VaultWithdrawals>} All withdrawals across all supported chains, categorized and sorted\n */\nexport async function getVaultWithdrawalsAllChains({\n account,\n vaultKey = Vault.Veda,\n rpcUrl,\n}: GetVaultWithdrawalsAllChainsParameters): Promise<VaultWithdrawals> {\n const vault = VAULTS[vaultKey];\n if (!vault) {\n throw new Error(`Unknown vault key: ${vaultKey}`);\n }\n\n // Fetch withdrawals from all supported chains in parallel\n const withdrawalsPromises = vault.chains.map(chainId =>\n getVaultWithdrawals({ account, chainId, vaultKey, rpcUrl }).catch(error => {\n console.error(`Failed to fetch withdrawals for chain ${chainId}:`, error);\n return {\n cancelled: [],\n expired: [],\n fulfilled: [],\n open: [],\n }; // Return empty withdrawals on error to not break the entire query\n }),\n );\n\n const withdrawalsArrays = await Promise.all(withdrawalsPromises);\n\n // Combine all withdrawals from all chains\n const allCancelled: VaultWithdrawal[] = [];\n const allExpired: VaultWithdrawal[] = [];\n const allFulfilled: VaultWithdrawal[] = [];\n const allOpen: VaultWithdrawal[] = [];\n\n for (const withdrawals of withdrawalsArrays) {\n allCancelled.push(...withdrawals.cancelled);\n allExpired.push(...withdrawals.expired);\n allFulfilled.push(...withdrawals.fulfilled);\n allOpen.push(...withdrawals.open);\n }\n\n // Sort each category by timestamp (newest first)\n return {\n cancelled: orderBy(allCancelled, a => a.timestamp, 'desc'),\n expired: orderBy(allExpired, a => a.timestamp, 'desc'),\n fulfilled: orderBy(\n allFulfilled,\n a => a.fulfilledTimestamp || a.timestamp,\n 'desc',\n ),\n open: orderBy(allOpen, a => a.timestamp, 'desc'),\n };\n}\n"],"names":["EMPTY_WITHDRAW_REQUESTS","normalizeSevenSeasWithdrawRequests","payload","getVaultWithdrawals","account","chainId","vaultKey","Vault","rpcUrl","env","vault","VAULTS","isVedaVaultChain","network","VEDA_VAULT_CHAIN_TO_NETWORK_MAP","bffApiUrl","getApiConfig","endpoint","searchParams","url","data","axios","response","cancelledRequests","expiredRequests","fulfilledRequests","openRequests","withdrawAssetsAddresses","unique","ensureHex","a","withdrawAssets","asset","assetInfo","getAssetInfo","cancelled","w","token","fromBaseDenomination","expired","fulfilled","open","orderBy","getVaultWithdrawalsAllChains","withdrawalsPromises","error","withdrawalsArrays","allCancelled","allExpired","allFulfilled","allOpen","withdrawals"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const s=require("./tokens-
|
|
2
|
-
//# sourceMappingURL=getSharesByAddress-
|
|
1
|
+
"use strict";const s=require("./tokens-BkvA0Gp1.cjs"),i=require("./token-addresses-nzvTOi24.cjs"),b=require("./satoshi-CZEsHl5X.cjs"),T=require("./index-BKzxeh1Y.cjs"),w=require("viem"),m=require("./unstakeLBTC-CmoCaGX9.cjs"),f=require("./time-I-BeyUkG.cjs"),u=require("./config-DmCmanM_.cjs");async function A({chainId:e,rpcUrl:o,env:c}){const t=c||s.determineEnv(e),a=s.makePublicClient({chainId:e,rpcUrl:o,env:t}),n=await s.getTokenContractInfo(i.Token.LBTC,e,t),r=await a.readContract({abi:n.abi,address:n.address,functionName:"totalSupply"});return b.fromSatoshi(String(r))}async function E({data:e,proofSignature:o,account:c,chainId:t,provider:a,rpcUrl:n,env:r=T.p}){const l=s.makePublicClient({chainId:t,rpcUrl:n,env:r}),C=i.makeWalletClient({chainId:t,provider:a}),d=await s.getTokenContractInfo(i.Token.BTCb,t,r,i.AddressKind.Adapter),g=await l.readContract({address:d.address,abi:d.abi,functionName:"getAssetRouter"});if(!g||g===w.zeroAddress)throw new Error("AssetRouter address not found in token adapter");const h={address:g,account:c,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[t],abi:m.ASSET_ROUTER_ABI,functionName:"mint",args:[f.ensureHex(e),f.ensureHex(o)]},k=i.isKatanaChain(t)?await m.estimateGasFees(l,h,w.parseGwei("1")):{},{request:S}=await l.simulateContract({...h,...k});return await C.writeContract(S)}async function p({chainId:e,rpcUrl:o,vaultKey:c=u.Vault.Veda}){const t=u.VAULTS[c];if(!t)throw new Error(`Unknown vault key: ${c}`);if(!u.isVedaVaultChain(e))throw new Error(`Unsupported chain id: ${e}. Please switch to one of the supported chains: ${t.chains.join(", ")}`);try{const a=s.makePublicClient({chainId:e,rpcUrl:o}),r=await w.getContract({abi:t.accountantContract.abi,address:t.accountantContract.address,client:a}).read.getRate();return b.fromSatoshi(String(r))}catch(a){const n=s.getErrorMessage(a);throw new Error(n)}}async function V({chainId:e,rpcUrl:o,address:c,vaultKey:t=u.Vault.Veda}){const a=u.VAULTS[t];if(!a)throw new Error(`Unknown vault key: ${t}`);if(!u.isVedaVaultChain(e))throw new Error(`Unsupported chain id: ${e}. Please switch to one of the supported chains: ${a.chains.join(", ")}`);try{const n=s.makePublicClient({chainId:e,rpcUrl:o}),l=await w.getContract({abi:a.lensContract.abi,address:a.lensContract.address,client:n}).read.balanceOf([c,a.vaultContract.address]),C=b.fromSatoshi(String(l)),d=await p({chainId:e,rpcUrl:o,vaultKey:t});return{balance:C,exchangeRate:d,balanceLbtc:C.multipliedBy(d)}}catch(n){const r=s.getErrorMessage(n);throw new Error(r)}}exports.claimUnstakeRedeem=E;exports.getLBTCTotalSupply=A;exports.getShareValue=p;exports.getSharesByAddress=V;
|
|
2
|
+
//# sourceMappingURL=getSharesByAddress-D8hehnP1.cjs.map
|
package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs.map → getSharesByAddress-D8hehnP1.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSharesByAddress-BEgOf1C0.cjs","sources":["../../src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts","../../src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts","../../src/contract-functions/getShareValue/getShareValue.ts","../../src/contract-functions/getSharesByAddress/getSharesByAddress.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { CommonParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { determineEnv } from '../../utils/env';\nimport { fromSatoshi } from '../../utils/satoshi';\n\n/**\n * Get the total supply of LBTC tokens.\n *\n * @param {CommonParameters} parameters - The parameters.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @return {Promise<BigNumber>}\n */\nexport async function getLBTCTotalSupply({\n chainId,\n rpcUrl,\n env,\n}: CommonParameters): Promise<BigNumber> {\n const environment = env || determineEnv(chainId);\n const publicClient = makePublicClient({ chainId, rpcUrl, env: environment });\n const lbtcContract = await getTokenContractInfo(\n Token.LBTC,\n chainId,\n environment,\n );\n\n const totalSupplyRaw = await publicClient.readContract({\n abi: lbtcContract.abi,\n address: lbtcContract.address,\n functionName: 'totalSupply',\n });\n\n return fromSatoshi(String(totalSupplyRaw));\n}\n","import { DEFAULT_ENV } from '@lombard.finance/sdk-common';\nimport { Hash, parseGwei, zeroAddress } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP, isKatanaChain } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport ASSET_ROUTER_ABI from '../../tokens/abi/ASSET_ROUTER_ABI';\nimport { AddressKind, Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { estimateGasFees } from '../../utils/gas';\nimport { ensureHex } from '../../utils/hex';\n\n/**\n * Parameters for claiming BTC.b from unstake redemptions\n */\nexport interface IClaimUnstakeRedeemParams extends CommonWriteParameters {\n /** Raw payload from the unstake redemption (`Unstake.rawPayload`) */\n data: string;\n\n /** Signature/proof from the unstake redemption (`Unstake.proof`) */\n proofSignature: string;\n}\n\n/**\n * Claims BTC.b tokens from an unstake redemption (LBTC → BTC.b)\n *\n * This function is specifically for claiming native chain redemptions after the 7-day unstaking period.\n * Unlike deposits which use `adapter.mintV1`, unstake redemptions use `assetRouter.mint`.\n *\n * Business Rules:\n * - Only works for native chain redemptions (LBTC → BTC.b)\n * - Requires notarization status = SESSION_APPROVED\n * - Requires session state = COMPLETED\n * - Must be called after 7 days from unstake\n *\n * @param params - Parameters for claiming\n * @returns Transaction hash of the claim operation\n *\n * @throws Error if claiming fails or if action selector doesn't match\n */\nexport async function claimUnstakeRedeem({\n data,\n proofSignature,\n account,\n chainId,\n provider,\n rpcUrl,\n env = DEFAULT_ENV,\n}: IClaimUnstakeRedeemParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl, env });\n const walletClient = makeWalletClient({ chainId, provider });\n\n // Get AssetRouter address from BTCb token adapter\n const btcbTokenContract = await getTokenContractInfo(\n Token.BTCb,\n chainId,\n env,\n AddressKind.Adapter,\n );\n\n // Read AssetRouter address from token adapter\n const assetRouterAddress = await publicClient.readContract({\n address: btcbTokenContract.address,\n abi: btcbTokenContract.abi,\n functionName: 'getAssetRouter',\n });\n\n if (!assetRouterAddress || assetRouterAddress === zeroAddress) {\n throw new Error('AssetRouter address not found in token adapter');\n }\n\n // Call AssetRouter.mint function\n const callData = {\n address: assetRouterAddress,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: ASSET_ROUTER_ABI,\n functionName: 'mint',\n args: [ensureHex(data), ensureHex(proofSignature)],\n } as const;\n\n const gasEstimationData = isKatanaChain(chainId)\n ? await estimateGasFees(publicClient, callData, parseGwei('1'))\n : {};\n\n const { request } = await publicClient.simulateContract({\n ...callData,\n ...gasEstimationData,\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\nimport { getContract } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { CommonParameters } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\nimport { fromSatoshi } from '../../utils/satoshi';\nimport { isVedaVaultChain, Vault, VAULTS } from '../../vaults/lib/config';\n\nexport interface IGetShareValueParameters extends CommonParameters {\n /**\n * Optional DeFi vault identifier specifying the vault in use\n * @default {string} - \"veda\"\n */\n vaultKey?: Vault;\n}\n\n/**\n * Gets the value of a single share unit (in LBTC) from the specified vault.\n *\n * @param {IGetShareValueParameters} parameters - The parameters.\n * @param {Vault} parameters.vaultKey - The optional DeFi vault identifier.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<BigNumber>}\n */\nexport async function getShareValue({\n chainId,\n rpcUrl,\n vaultKey = Vault.Veda,\n}: IGetShareValueParameters): 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}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n try {\n const client = makePublicClient({ chainId, rpcUrl });\n\n const accountantContract = getContract({\n abi: vault.accountantContract.abi,\n address: vault.accountantContract.address,\n client,\n });\n\n const exchangeRate = await accountantContract.read.getRate();\n return fromSatoshi(String(exchangeRate));\n } catch (err) {\n const errorMessage = getErrorMessage(err);\n throw new Error(errorMessage);\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { getContract } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { CommonParameters } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\nimport { fromSatoshi } from '../../utils/satoshi';\nimport { isVedaVaultChain, Vault, VAULTS } from '../../vaults/lib/config';\nimport { getShareValue } from '../getShareValue';\n\nexport interface IGetSharesByAddressParameters extends CommonParameters {\n /**\n * The address of the share holder.\n */\n address: string;\n /**\n * Optional vault key specifying the vault in use\n * @default {string} - \"veda\"\n */\n vaultKey?: Vault;\n}\n\ninterface IGetSharesByAddressResponse {\n /** The amount of share owned. */\n balance: BigNumber;\n /** The value of a single share unit */\n exchangeRate: BigNumber;\n /** The balance represented in BTC. */\n balanceLbtc: BigNumber;\n}\n\n/**\n * Gets the amount of shares (LBTCv) owned by the provided address.\n *\n * @param {IGetSharesByAddressParameters} parameters - The parameters.\n * @param {Vault} parameters.vaultKey - The optional DeFi vault identifier.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @return {Promise<IGetSharesByAddressResponse>}\n */\nexport async function getSharesByAddress({\n chainId,\n rpcUrl,\n address,\n vaultKey = Vault.Veda,\n}: IGetSharesByAddressParameters): Promise<IGetSharesByAddressResponse> {\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 try {\n const client = makePublicClient({ chainId, rpcUrl });\n\n const lensContract = getContract({\n abi: vault.lensContract.abi,\n address: vault.lensContract.address,\n client,\n });\n\n const balanceValue = await lensContract.read.balanceOf([\n address,\n vault.vaultContract.address,\n ]);\n\n const balance = fromSatoshi(String(balanceValue));\n\n const exchangeRate = await getShareValue({ chainId, rpcUrl, vaultKey });\n\n return {\n balance,\n exchangeRate,\n balanceLbtc: balance.multipliedBy(exchangeRate),\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n throw new Error(errorMessage);\n }\n}\n"],"names":["getLBTCTotalSupply","chainId","rpcUrl","env","environment","determineEnv","publicClient","makePublicClient","lbtcContract","getTokenContractInfo","Token","totalSupplyRaw","fromSatoshi","claimUnstakeRedeem","data","proofSignature","account","provider","DEFAULT_ENV","walletClient","makeWalletClient","btcbTokenContract","AddressKind","assetRouterAddress","zeroAddress","callData","CHAIN_ID_TO_VIEM_CHAIN_MAP","ASSET_ROUTER_ABI","ensureHex","gasEstimationData","isKatanaChain","estimateGasFees","parseGwei","request","getShareValue","vaultKey","Vault","vault","VAULTS","isVedaVaultChain","client","exchangeRate","getContract","err","errorMessage","getErrorMessage","getSharesByAddress","address","balanceValue","balance","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getSharesByAddress-D8hehnP1.cjs","sources":["../../src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts","../../src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts","../../src/contract-functions/getShareValue/getShareValue.ts","../../src/contract-functions/getSharesByAddress/getSharesByAddress.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { CommonParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { determineEnv } from '../../utils/env';\nimport { fromSatoshi } from '../../utils/satoshi';\n\n/**\n * Get the total supply of LBTC tokens.\n *\n * @param {CommonParameters} parameters - The parameters.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @return {Promise<BigNumber>}\n */\nexport async function getLBTCTotalSupply({\n chainId,\n rpcUrl,\n env,\n}: CommonParameters): Promise<BigNumber> {\n const environment = env || determineEnv(chainId);\n const publicClient = makePublicClient({ chainId, rpcUrl, env: environment });\n const lbtcContract = await getTokenContractInfo(\n Token.LBTC,\n chainId,\n environment,\n );\n\n const totalSupplyRaw = await publicClient.readContract({\n abi: lbtcContract.abi,\n address: lbtcContract.address,\n functionName: 'totalSupply',\n });\n\n return fromSatoshi(String(totalSupplyRaw));\n}\n","import { DEFAULT_ENV } from '@lombard.finance/sdk-common';\nimport { Hash, parseGwei, zeroAddress } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP, isKatanaChain } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport ASSET_ROUTER_ABI from '../../tokens/abi/ASSET_ROUTER_ABI';\nimport { AddressKind, Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { estimateGasFees } from '../../utils/gas';\nimport { ensureHex } from '../../utils/hex';\n\n/**\n * Parameters for claiming BTC.b from unstake redemptions\n */\nexport interface IClaimUnstakeRedeemParams extends CommonWriteParameters {\n /** Raw payload from the unstake redemption (`Unstake.rawPayload`) */\n data: string;\n\n /** Signature/proof from the unstake redemption (`Unstake.proof`) */\n proofSignature: string;\n}\n\n/**\n * Claims BTC.b tokens from an unstake redemption (LBTC → BTC.b)\n *\n * This function is specifically for claiming native chain redemptions after the 7-day unstaking period.\n * Unlike deposits which use `adapter.mintV1`, unstake redemptions use `assetRouter.mint`.\n *\n * Business Rules:\n * - Only works for native chain redemptions (LBTC → BTC.b)\n * - Requires notarization status = SESSION_APPROVED\n * - Requires session state = COMPLETED\n * - Must be called after 7 days from unstake\n *\n * @param params - Parameters for claiming\n * @returns Transaction hash of the claim operation\n *\n * @throws Error if claiming fails or if action selector doesn't match\n */\nexport async function claimUnstakeRedeem({\n data,\n proofSignature,\n account,\n chainId,\n provider,\n rpcUrl,\n env = DEFAULT_ENV,\n}: IClaimUnstakeRedeemParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl, env });\n const walletClient = makeWalletClient({ chainId, provider });\n\n // Get AssetRouter address from BTCb token adapter\n const btcbTokenContract = await getTokenContractInfo(\n Token.BTCb,\n chainId,\n env,\n AddressKind.Adapter,\n );\n\n // Read AssetRouter address from token adapter\n const assetRouterAddress = await publicClient.readContract({\n address: btcbTokenContract.address,\n abi: btcbTokenContract.abi,\n functionName: 'getAssetRouter',\n });\n\n if (!assetRouterAddress || assetRouterAddress === zeroAddress) {\n throw new Error('AssetRouter address not found in token adapter');\n }\n\n // Call AssetRouter.mint function\n const callData = {\n address: assetRouterAddress,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: ASSET_ROUTER_ABI,\n functionName: 'mint',\n args: [ensureHex(data), ensureHex(proofSignature)],\n } as const;\n\n const gasEstimationData = isKatanaChain(chainId)\n ? await estimateGasFees(publicClient, callData, parseGwei('1'))\n : {};\n\n const { request } = await publicClient.simulateContract({\n ...callData,\n ...gasEstimationData,\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\nimport { getContract } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { CommonParameters } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\nimport { fromSatoshi } from '../../utils/satoshi';\nimport { isVedaVaultChain, Vault, VAULTS } from '../../vaults/lib/config';\n\nexport interface IGetShareValueParameters extends CommonParameters {\n /**\n * Optional DeFi vault identifier specifying the vault in use\n * @default {string} - \"veda\"\n */\n vaultKey?: Vault;\n}\n\n/**\n * Gets the value of a single share unit (in LBTC) from the specified vault.\n *\n * @param {IGetShareValueParameters} parameters - The parameters.\n * @param {Vault} parameters.vaultKey - The optional DeFi vault identifier.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @returns {Promise<BigNumber>}\n */\nexport async function getShareValue({\n chainId,\n rpcUrl,\n vaultKey = Vault.Veda,\n}: IGetShareValueParameters): 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}. Please switch to one of the supported chains: ${vault.chains.join(', ')}`,\n );\n }\n\n try {\n const client = makePublicClient({ chainId, rpcUrl });\n\n const accountantContract = getContract({\n abi: vault.accountantContract.abi,\n address: vault.accountantContract.address,\n client,\n });\n\n const exchangeRate = await accountantContract.read.getRate();\n return fromSatoshi(String(exchangeRate));\n } catch (err) {\n const errorMessage = getErrorMessage(err);\n throw new Error(errorMessage);\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { getContract } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { CommonParameters } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\nimport { fromSatoshi } from '../../utils/satoshi';\nimport { isVedaVaultChain, Vault, VAULTS } from '../../vaults/lib/config';\nimport { getShareValue } from '../getShareValue';\n\nexport interface IGetSharesByAddressParameters extends CommonParameters {\n /**\n * The address of the share holder.\n */\n address: string;\n /**\n * Optional vault key specifying the vault in use\n * @default {string} - \"veda\"\n */\n vaultKey?: Vault;\n}\n\ninterface IGetSharesByAddressResponse {\n /** The amount of share owned. */\n balance: BigNumber;\n /** The value of a single share unit */\n exchangeRate: BigNumber;\n /** The balance represented in BTC. */\n balanceLbtc: BigNumber;\n}\n\n/**\n * Gets the amount of shares (LBTCv) owned by the provided address.\n *\n * @param {IGetSharesByAddressParameters} parameters - The parameters.\n * @param {Vault} parameters.vaultKey - The optional DeFi vault identifier.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n *\n * @return {Promise<IGetSharesByAddressResponse>}\n */\nexport async function getSharesByAddress({\n chainId,\n rpcUrl,\n address,\n vaultKey = Vault.Veda,\n}: IGetSharesByAddressParameters): Promise<IGetSharesByAddressResponse> {\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 try {\n const client = makePublicClient({ chainId, rpcUrl });\n\n const lensContract = getContract({\n abi: vault.lensContract.abi,\n address: vault.lensContract.address,\n client,\n });\n\n const balanceValue = await lensContract.read.balanceOf([\n address,\n vault.vaultContract.address,\n ]);\n\n const balance = fromSatoshi(String(balanceValue));\n\n const exchangeRate = await getShareValue({ chainId, rpcUrl, vaultKey });\n\n return {\n balance,\n exchangeRate,\n balanceLbtc: balance.multipliedBy(exchangeRate),\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n throw new Error(errorMessage);\n }\n}\n"],"names":["getLBTCTotalSupply","chainId","rpcUrl","env","environment","determineEnv","publicClient","makePublicClient","lbtcContract","getTokenContractInfo","Token","totalSupplyRaw","fromSatoshi","claimUnstakeRedeem","data","proofSignature","account","provider","DEFAULT_ENV","walletClient","makeWalletClient","btcbTokenContract","AddressKind","assetRouterAddress","zeroAddress","callData","CHAIN_ID_TO_VIEM_CHAIN_MAP","ASSET_ROUTER_ABI","ensureHex","gasEstimationData","isKatanaChain","estimateGasFees","parseGwei","request","getShareValue","vaultKey","Vault","vault","VAULTS","isVedaVaultChain","client","exchangeRate","getContract","err","errorMessage","getErrorMessage","getSharesByAddress","address","balanceValue","balance","error"],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { p as
|
|
5
|
-
import { zeroAddress as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
async function
|
|
1
|
+
import { determineEnv as T, makePublicClient as d, getTokenContractInfo as C, getErrorMessage as f } from "./tokens-DgC1hfkm.js";
|
|
2
|
+
import { Token as b, makeWalletClient as y, AddressKind as R, CHAIN_ID_TO_VIEM_CHAIN_MAP as V, isKatanaChain as _ } from "./token-addresses-D0v5cR1j.js";
|
|
3
|
+
import { fromSatoshi as w } from "./satoshi-CSoJBXc6.js";
|
|
4
|
+
import { p as x } from "./index-CfcQ_g3t.js";
|
|
5
|
+
import { zeroAddress as B, parseGwei as U, getContract as g } from "viem";
|
|
6
|
+
import { estimateGasFees as $, ASSET_ROUTER_ABI as H } from "./unstakeLBTC-DtvVbpbU.js";
|
|
7
|
+
import { ensureHex as p } from "./time-Sa5gggPG.js";
|
|
8
|
+
import { Vault as h, isVedaVaultChain as A, VAULTS as E } from "./config-DghboRx0.js";
|
|
9
|
+
async function z({
|
|
10
10
|
chainId: a,
|
|
11
|
-
rpcUrl:
|
|
12
|
-
env:
|
|
11
|
+
rpcUrl: o,
|
|
12
|
+
env: s
|
|
13
13
|
}) {
|
|
14
|
-
const t =
|
|
14
|
+
const t = s || T(a), e = d({ chainId: a, rpcUrl: o, env: t }), n = await C(
|
|
15
15
|
b.LBTC,
|
|
16
16
|
a,
|
|
17
17
|
t
|
|
@@ -20,16 +20,16 @@ async function q({
|
|
|
20
20
|
address: n.address,
|
|
21
21
|
functionName: "totalSupply"
|
|
22
22
|
});
|
|
23
|
-
return
|
|
23
|
+
return w(String(r));
|
|
24
24
|
}
|
|
25
25
|
async function F({
|
|
26
26
|
data: a,
|
|
27
|
-
proofSignature:
|
|
28
|
-
account:
|
|
27
|
+
proofSignature: o,
|
|
28
|
+
account: s,
|
|
29
29
|
chainId: t,
|
|
30
30
|
provider: e,
|
|
31
31
|
rpcUrl: n,
|
|
32
|
-
env: r =
|
|
32
|
+
env: r = x
|
|
33
33
|
}) {
|
|
34
34
|
const c = d({ chainId: t, rpcUrl: n, env: r }), l = y({ chainId: t, provider: e }), i = await C(
|
|
35
35
|
b.BTCb,
|
|
@@ -41,40 +41,40 @@ async function F({
|
|
|
41
41
|
abi: i.abi,
|
|
42
42
|
functionName: "getAssetRouter"
|
|
43
43
|
});
|
|
44
|
-
if (!u || u ===
|
|
44
|
+
if (!u || u === B)
|
|
45
45
|
throw new Error("AssetRouter address not found in token adapter");
|
|
46
|
-
const
|
|
46
|
+
const m = {
|
|
47
47
|
address: u,
|
|
48
|
-
account:
|
|
48
|
+
account: s,
|
|
49
49
|
chain: V[t],
|
|
50
50
|
abi: H,
|
|
51
51
|
functionName: "mint",
|
|
52
|
-
args: [p(a), p(
|
|
53
|
-
}, S =
|
|
54
|
-
...
|
|
52
|
+
args: [p(a), p(o)]
|
|
53
|
+
}, S = _(t) ? await $(c, m, U("1")) : {}, { request: k } = await c.simulateContract({
|
|
54
|
+
...m,
|
|
55
55
|
...S
|
|
56
56
|
});
|
|
57
57
|
return await l.writeContract(k);
|
|
58
58
|
}
|
|
59
59
|
async function M({
|
|
60
60
|
chainId: a,
|
|
61
|
-
rpcUrl:
|
|
62
|
-
vaultKey:
|
|
61
|
+
rpcUrl: o,
|
|
62
|
+
vaultKey: s = h.Veda
|
|
63
63
|
}) {
|
|
64
|
-
const t = E[
|
|
64
|
+
const t = E[s];
|
|
65
65
|
if (!t)
|
|
66
|
-
throw new Error(`Unknown vault key: ${
|
|
66
|
+
throw new Error(`Unknown vault key: ${s}`);
|
|
67
67
|
if (!A(a))
|
|
68
68
|
throw new Error(
|
|
69
69
|
`Unsupported chain id: ${a}. Please switch to one of the supported chains: ${t.chains.join(", ")}`
|
|
70
70
|
);
|
|
71
71
|
try {
|
|
72
|
-
const e = d({ chainId: a, rpcUrl:
|
|
72
|
+
const e = d({ chainId: a, rpcUrl: o }), r = await g({
|
|
73
73
|
abi: t.accountantContract.abi,
|
|
74
74
|
address: t.accountantContract.address,
|
|
75
75
|
client: e
|
|
76
76
|
}).read.getRate();
|
|
77
|
-
return
|
|
77
|
+
return w(String(r));
|
|
78
78
|
} catch (e) {
|
|
79
79
|
const n = f(e);
|
|
80
80
|
throw new Error(n);
|
|
@@ -82,8 +82,8 @@ async function M({
|
|
|
82
82
|
}
|
|
83
83
|
async function W({
|
|
84
84
|
chainId: a,
|
|
85
|
-
rpcUrl:
|
|
86
|
-
address:
|
|
85
|
+
rpcUrl: o,
|
|
86
|
+
address: s,
|
|
87
87
|
vaultKey: t = h.Veda
|
|
88
88
|
}) {
|
|
89
89
|
const e = E[t];
|
|
@@ -94,14 +94,14 @@ async function W({
|
|
|
94
94
|
`Unsupported chain id: ${a}. Please switch to one of the supported chains: ${e.chains.join(", ")}`
|
|
95
95
|
);
|
|
96
96
|
try {
|
|
97
|
-
const n = d({ chainId: a, rpcUrl:
|
|
97
|
+
const n = d({ chainId: a, rpcUrl: o }), c = await g({
|
|
98
98
|
abi: e.lensContract.abi,
|
|
99
99
|
address: e.lensContract.address,
|
|
100
100
|
client: n
|
|
101
101
|
}).read.balanceOf([
|
|
102
|
-
|
|
102
|
+
s,
|
|
103
103
|
e.vaultContract.address
|
|
104
|
-
]), l =
|
|
104
|
+
]), l = w(String(c)), i = await M({ chainId: a, rpcUrl: o, vaultKey: t });
|
|
105
105
|
return {
|
|
106
106
|
balance: l,
|
|
107
107
|
exchangeRate: i,
|
|
@@ -113,9 +113,9 @@ async function W({
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
export {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
F as claimUnstakeRedeem,
|
|
117
|
+
z as getLBTCTotalSupply,
|
|
118
|
+
M as getShareValue,
|
|
119
|
+
W as getSharesByAddress
|
|
120
120
|
};
|
|
121
|
-
//# sourceMappingURL=getSharesByAddress-
|
|
121
|
+
//# sourceMappingURL=getSharesByAddress-_tBaIBsw.js.map
|