@lombard.finance/sdk 4.2.0 → 4.3.1
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 +2 -90
- package/README.md +10 -59
- package/dist/api.cjs +1 -1
- package/dist/api.js +5 -5
- package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
- package/dist/bridge/lib/config.d.ts +3 -3
- package/dist/bridge/lib/config.d.ts.map +1 -1
- package/dist/bridge.cjs +1 -1
- package/dist/bridge.js +1 -1
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +2 -2
- package/dist/chains/evm/actions/deploy/EvmDeploy.d.ts.map +1 -1
- package/dist/chains/evm/actions/stake/EvmStake.d.ts.map +1 -1
- package/dist/chains/evm/actions/withdraw/EvmWithdraw.d.ts.map +1 -1
- package/dist/chunks/{BtcActions-DGqmtxjd.js → BtcActions-1_ZaUpvL.js} +20 -20
- package/dist/chunks/{BtcActions-DGqmtxjd.js.map → BtcActions-1_ZaUpvL.js.map} +1 -1
- package/dist/chunks/{BtcActions-D9eBmDj6.cjs → BtcActions-DH_wPOz5.cjs} +2 -2
- package/dist/chunks/{BtcActions-D9eBmDj6.cjs.map → BtcActions-DH_wPOz5.cjs.map} +1 -1
- package/dist/chunks/EvmActions-CjExg-28.cjs +2 -0
- package/dist/chunks/EvmActions-CjExg-28.cjs.map +1 -0
- package/dist/chunks/{EvmActions-MW5mNmqs.js → EvmActions-fH7CLc6N.js} +207 -207
- package/dist/chunks/EvmActions-fH7CLc6N.js.map +1 -0
- package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs → ReferralsClient-BC-1wT1q.cjs} +2 -2
- package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs.map → ReferralsClient-BC-1wT1q.cjs.map} +1 -1
- package/dist/chunks/{ReferralsClient-JjWLlIO4.js → ReferralsClient-DbFWWtVi.js} +20 -20
- package/dist/chunks/{ReferralsClient-JjWLlIO4.js.map → ReferralsClient-DbFWWtVi.js.map} +1 -1
- package/dist/chunks/approveLBTC-B5-ZWqct.js +26 -0
- package/dist/chunks/{approveLBTC-DOP0wsm3.js.map → approveLBTC-B5-ZWqct.js.map} +1 -1
- package/dist/chunks/{approveLBTC-CN6rJF6_.cjs → approveLBTC-CZiZmdcX.cjs} +2 -2
- package/dist/chunks/{approveLBTC-CN6rJF6_.cjs.map → approveLBTC-CZiZmdcX.cjs.map} +1 -1
- package/dist/chunks/blockchain-identifier-BmadkNtK.js +113 -0
- package/dist/chunks/blockchain-identifier-BmadkNtK.js.map +1 -0
- package/dist/chunks/{blockchain-identifier-DtIGGlIi.cjs → blockchain-identifier-BzMQWh-C.cjs} +2 -2
- package/dist/chunks/blockchain-identifier-BzMQWh-C.cjs.map +1 -0
- package/dist/chunks/bridge-BzRlY9pP.cjs +12 -0
- package/dist/chunks/bridge-BzRlY9pP.cjs.map +1 -0
- package/dist/chunks/{bridge-DyAiDpxD.js → bridge-CTsiodO1.js} +72 -95
- package/dist/chunks/bridge-CTsiodO1.js.map +1 -0
- package/dist/chunks/{config-_8X_2sG4.js → config-hFKqUyg3.js} +2 -2
- package/dist/chunks/{config-_8X_2sG4.js.map → config-hFKqUyg3.js.map} +1 -1
- package/dist/chunks/{config-DqbLaiRi.cjs → config-l4ZaZw_g.cjs} +2 -2
- package/dist/chunks/{config-DqbLaiRi.cjs.map → config-l4ZaZw_g.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-NGWlyxAY.cjs → defi-registry-BIRv_zkp.cjs} +2 -2
- package/dist/chunks/{defi-registry-NGWlyxAY.cjs.map → defi-registry-BIRv_zkp.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-dhrQMy94.js → defi-registry-wNFN3qyB.js} +7 -7
- package/dist/chunks/{defi-registry-dhrQMy94.js.map → defi-registry-wNFN3qyB.js.map} +1 -1
- package/dist/chunks/{depositStatus-K6gky8zH.cjs → depositStatus-C3-EgT2a.cjs} +2 -2
- package/dist/chunks/{depositStatus-K6gky8zH.cjs.map → depositStatus-C3-EgT2a.cjs.map} +1 -1
- package/dist/chunks/{depositStatus-DeCO-K5Q.js → depositStatus-DM7fRmbN.js} +8 -8
- package/dist/chunks/{depositStatus-DeCO-K5Q.js.map → depositStatus-DM7fRmbN.js.map} +1 -1
- package/dist/chunks/{events-DIKZG4SZ.cjs → events-DURabzL2.cjs} +2 -2
- package/dist/chunks/{events-DIKZG4SZ.cjs.map → events-DURabzL2.cjs.map} +1 -1
- package/dist/chunks/{events-CLVUaKQS.js → events-bwurClEA.js} +35 -35
- package/dist/chunks/{events-CLVUaKQS.js.map → events-bwurClEA.js.map} +1 -1
- package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs → get-exchange-ratio-C-7DadfD.cjs} +2 -2
- package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs.map → get-exchange-ratio-C-7DadfD.cjs.map} +1 -1
- package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +20 -0
- package/dist/chunks/{get-exchange-ratio-B0CNEGOB.js.map → get-exchange-ratio-NtnkG1kZ.js.map} +1 -1
- package/dist/chunks/{get-positions-summary-Cled5YPA.js → get-positions-summary-B_MmGHLv.js} +4 -4
- package/dist/chunks/{get-positions-summary-Cled5YPA.js.map → get-positions-summary-B_MmGHLv.js.map} +1 -1
- package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs → get-positions-summary-DkZZYbGP.cjs} +2 -2
- package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs.map → get-positions-summary-DkZZYbGP.cjs.map} +1 -1
- package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs → get-vault-tvl-DmTUbOY7.cjs} +2 -2
- package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs.map → get-vault-tvl-DmTUbOY7.cjs.map} +1 -1
- package/dist/chunks/{get-vault-tvl-DxjO9xDs.js → get-vault-tvl-YAXePAW3.js} +4 -4
- package/dist/chunks/{get-vault-tvl-DxjO9xDs.js.map → get-vault-tvl-YAXePAW3.js.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js → get-vault-withdrawals-BrpZlt6s.js} +3 -3
- package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js.map → get-vault-withdrawals-BrpZlt6s.js.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs → get-vault-withdrawals-CWcYy_sH.cjs} +2 -2
- package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs.map → get-vault-withdrawals-CWcYy_sH.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-De7as74h.cjs → getSharesByAddress-BEgOf1C0.cjs} +2 -2
- package/dist/chunks/{getSharesByAddress-De7as74h.cjs.map → getSharesByAddress-BEgOf1C0.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-CK2q7gBI.js → getSharesByAddress-BiruCDp6.js} +14 -14
- package/dist/chunks/{getSharesByAddress-CK2q7gBI.js.map → getSharesByAddress-BiruCDp6.js.map} +1 -1
- package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs → getUserStakeAndBakeSignature-BxRq2cI1.cjs} +2 -2
- package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs.map → getUserStakeAndBakeSignature-BxRq2cI1.cjs.map} +1 -1
- package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js → getUserStakeAndBakeSignature-NGGblnJl.js} +11 -11
- package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js.map → getUserStakeAndBakeSignature-NGGblnJl.js.map} +1 -1
- package/dist/chunks/index-BKzxeh1Y.cjs.map +1 -1
- package/dist/chunks/index-CfcQ_g3t.js.map +1 -1
- package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js → lbtc-addresses-BLRmtR3c.js} +2 -2
- package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js.map → lbtc-addresses-BLRmtR3c.js.map} +1 -1
- package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs → lbtc-addresses-xyTYV7hx.cjs} +2 -2
- package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs.map → lbtc-addresses-xyTYV7hx.cjs.map} +1 -1
- package/dist/chunks/{statusConstants-ZJia15m2.js → statusConstants-CZi3v4OC.js} +844 -853
- package/dist/chunks/statusConstants-CZi3v4OC.js.map +1 -0
- package/dist/chunks/statusConstants-JFhg-q-u.cjs +2 -0
- package/dist/chunks/statusConstants-JFhg-q-u.cjs.map +1 -0
- package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js → storeNetworkFeeSignature-BZGL2Zn_.js} +8 -8
- package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js.map → storeNetworkFeeSignature-BZGL2Zn_.js.map} +1 -1
- package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs → storeNetworkFeeSignature-D7yo6lDV.cjs} +2 -2
- package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs.map → storeNetworkFeeSignature-D7yo6lDV.cjs.map} +1 -1
- package/dist/chunks/token-addresses-DRBecUa7.cjs +2 -0
- package/dist/chunks/token-addresses-DRBecUa7.cjs.map +1 -0
- package/dist/chunks/token-addresses-FKpA3uc4.js +541 -0
- package/dist/chunks/token-addresses-FKpA3uc4.js.map +1 -0
- package/dist/chunks/{tokens-Bw35TZqd.js → tokens-C6qZHzph.js} +28 -30
- package/dist/chunks/tokens-C6qZHzph.js.map +1 -0
- package/dist/chunks/tokens-D_HeVB5p.cjs +2 -0
- package/dist/chunks/tokens-D_HeVB5p.cjs.map +1 -0
- package/dist/chunks/{unstakeLBTC-Huy_ncVl.js → unstakeLBTC-DAIR9NO_.js} +373 -360
- package/dist/chunks/unstakeLBTC-DAIR9NO_.js.map +1 -0
- package/dist/chunks/unstakeLBTC-H0zdYQa6.cjs +2 -0
- package/dist/chunks/unstakeLBTC-H0zdYQa6.cjs.map +1 -0
- package/dist/chunks/{withdraw-Z77x7Hj4.cjs → withdraw-C1fMFSwy.cjs} +2 -2
- package/dist/chunks/{withdraw-Z77x7Hj4.cjs.map → withdraw-C1fMFSwy.cjs.map} +1 -1
- package/dist/chunks/{withdraw-CVNVJ7-x.js → withdraw-hHueI2p7.js} +9 -9
- package/dist/chunks/{withdraw-CVNVJ7-x.js.map → withdraw-hHueI2p7.js.map} +1 -1
- package/dist/clients/rpc-url-config.d.ts.map +1 -1
- package/dist/common/chains.d.ts +343 -112
- package/dist/common/chains.d.ts.map +1 -1
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts +27 -0
- package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts.map +1 -1
- package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts +26 -0
- package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +26 -24
- package/dist/core/chains/catalog.d.ts.map +1 -1
- package/dist/core/chains/types.d.ts +0 -1
- package/dist/core/chains/types.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +29 -29
- package/dist/defi.cjs +1 -1
- package/dist/defi.js +3 -3
- package/dist/entries/contracts.d.ts +2 -2
- package/dist/entries/contracts.d.ts.map +1 -1
- package/dist/entries/evm.d.ts +1 -1
- package/dist/entries/evm.d.ts.map +1 -1
- package/dist/entries/utils.d.ts +1 -1
- package/dist/entries/utils.d.ts.map +1 -1
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +34 -35
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +188 -187
- package/dist/metrics.cjs +1 -1
- package/dist/metrics.js +1 -1
- package/dist/stories/components/decorators/wagmi-decorator.d.ts.map +1 -1
- package/dist/tokens/token-addresses.d.ts.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +48 -49
- package/dist/vaults.cjs +1 -1
- package/dist/vaults.js +15 -15
- package/package.json +2 -2
- package/dist/chunks/EvmActions-BOwYPThp.cjs +0 -2
- package/dist/chunks/EvmActions-BOwYPThp.cjs.map +0 -1
- package/dist/chunks/EvmActions-MW5mNmqs.js.map +0 -1
- package/dist/chunks/approveLBTC-DOP0wsm3.js +0 -26
- package/dist/chunks/blockchain-identifier-DtIGGlIi.cjs.map +0 -1
- package/dist/chunks/blockchain-identifier-PNEhu-QU.js +0 -113
- package/dist/chunks/blockchain-identifier-PNEhu-QU.js.map +0 -1
- package/dist/chunks/bridge-DkZMwO7c.cjs +0 -12
- package/dist/chunks/bridge-DkZMwO7c.cjs.map +0 -1
- package/dist/chunks/bridge-DyAiDpxD.js.map +0 -1
- package/dist/chunks/get-exchange-ratio-B0CNEGOB.js +0 -20
- package/dist/chunks/statusConstants-DTDi_4Go.cjs +0 -2
- package/dist/chunks/statusConstants-DTDi_4Go.cjs.map +0 -1
- package/dist/chunks/statusConstants-ZJia15m2.js.map +0 -1
- package/dist/chunks/token-addresses-D859i6tX.cjs +0 -2
- package/dist/chunks/token-addresses-D859i6tX.cjs.map +0 -1
- package/dist/chunks/token-addresses-DmAr89jP.js +0 -579
- package/dist/chunks/token-addresses-DmAr89jP.js.map +0 -1
- package/dist/chunks/tokens-Bw35TZqd.js.map +0 -1
- package/dist/chunks/tokens-DLGMNeqZ.cjs +0 -2
- package/dist/chunks/tokens-DLGMNeqZ.cjs.map +0 -1
- package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs +0 -2
- package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs.map +0 -1
- package/dist/chunks/unstakeLBTC-Huy_ncVl.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-vault-withdrawals-DBA3ok0m.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-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,2 +1,2 @@
|
|
|
1
|
-
"use strict";const s=require("./tokens-
|
|
2
|
-
//# sourceMappingURL=getSharesByAddress-
|
|
1
|
+
"use strict";const s=require("./tokens-D_HeVB5p.cjs"),i=require("./token-addresses-DRBecUa7.cjs"),b=require("./satoshi-CZEsHl5X.cjs"),T=require("./index-BKzxeh1Y.cjs"),w=require("viem"),m=require("./unstakeLBTC-H0zdYQa6.cjs"),f=require("./time-I-BeyUkG.cjs"),u=require("./config-l4ZaZw_g.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-BEgOf1C0.cjs.map
|
package/dist/chunks/{getSharesByAddress-De7as74h.cjs.map → getSharesByAddress-BEgOf1C0.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSharesByAddress-De7as74h.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-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,17 +1,17 @@
|
|
|
1
|
-
import { h as
|
|
2
|
-
import {
|
|
1
|
+
import { h as T, m as d, b as C, g as f } from "./tokens-C6qZHzph.js";
|
|
2
|
+
import { o as b, U as y, A as R, a as V, D as U } from "./token-addresses-FKpA3uc4.js";
|
|
3
3
|
import { f as m } from "./satoshi-Ch6y8aYG.js";
|
|
4
4
|
import { p as _ } from "./index-CfcQ_g3t.js";
|
|
5
|
-
import { zeroAddress as
|
|
6
|
-
import {
|
|
5
|
+
import { zeroAddress as x, parseGwei as B, getContract as g } from "viem";
|
|
6
|
+
import { z as $, A as H } from "./unstakeLBTC-DAIR9NO_.js";
|
|
7
7
|
import { e as p } from "./time-QPeEEEnQ.js";
|
|
8
|
-
import { a as h, b as A, c as E } from "./config-
|
|
9
|
-
async function
|
|
8
|
+
import { a as h, b as A, c as E } from "./config-hFKqUyg3.js";
|
|
9
|
+
async function q({
|
|
10
10
|
chainId: a,
|
|
11
11
|
rpcUrl: s,
|
|
12
12
|
env: o
|
|
13
13
|
}) {
|
|
14
|
-
const t = o ||
|
|
14
|
+
const t = o || T(a), e = d({ chainId: a, rpcUrl: s, env: t }), n = await C(
|
|
15
15
|
b.LBTC,
|
|
16
16
|
a,
|
|
17
17
|
t
|
|
@@ -41,7 +41,7 @@ async function F({
|
|
|
41
41
|
abi: i.abi,
|
|
42
42
|
functionName: "getAssetRouter"
|
|
43
43
|
});
|
|
44
|
-
if (!u || u ===
|
|
44
|
+
if (!u || u === x)
|
|
45
45
|
throw new Error("AssetRouter address not found in token adapter");
|
|
46
46
|
const w = {
|
|
47
47
|
address: u,
|
|
@@ -50,11 +50,11 @@ async function F({
|
|
|
50
50
|
abi: H,
|
|
51
51
|
functionName: "mint",
|
|
52
52
|
args: [p(a), p(s)]
|
|
53
|
-
}, S =
|
|
53
|
+
}, S = U(t) ? await $(c, w, B("1")) : {}, { request: k } = await c.simulateContract({
|
|
54
54
|
...w,
|
|
55
55
|
...S
|
|
56
56
|
});
|
|
57
|
-
return await l.writeContract(
|
|
57
|
+
return await l.writeContract(k);
|
|
58
58
|
}
|
|
59
59
|
async function M({
|
|
60
60
|
chainId: a,
|
|
@@ -113,9 +113,9 @@ async function W({
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
export {
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
M as a,
|
|
117
|
+
W as b,
|
|
118
118
|
F as c,
|
|
119
|
-
|
|
119
|
+
q as g
|
|
120
120
|
};
|
|
121
|
-
//# sourceMappingURL=getSharesByAddress-
|
|
121
|
+
//# sourceMappingURL=getSharesByAddress-BiruCDp6.js.map
|
package/dist/chunks/{getSharesByAddress-CK2q7gBI.js.map → getSharesByAddress-BiruCDp6.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSharesByAddress-CK2q7gBI.js","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-BiruCDp6.js","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,2 +1,2 @@
|
|
|
1
|
-
"use strict";const A=require("axios"),w=require("viem"),T=require("./api-config-DkXqqfCK.cjs"),o=require("./blockchain-identifier-
|
|
2
|
-
//# sourceMappingURL=getUserStakeAndBakeSignature
|
|
1
|
+
"use strict";const A=require("axios"),w=require("viem"),T=require("./api-config-DkXqqfCK.cjs"),o=require("./blockchain-identifier-BzMQWh-C.cjs"),n=require("./token-addresses-DRBecUa7.cjs"),c=require("./tokens-D_HeVB5p.cjs"),S="sanctioned_address",I="api/v1/address/generate",b="destination address is under sanctions",f=[n.Token.LBTC,n.Token.BTCK,n.Token.BTCb],m=[n.Token.LBTC,n.Token.BTCK,n.Token.BTCb];async function N({address:s,token:t=n.Token.LBTC,chainId:a,signature:d,eip712Data:e,env:i,referrerCode:l,partnerId:C,captchaToken:E,signatureData:h,pubKey:g}){const{baseApiUrl:B}=T.getApiConfig(i),u=o.getChainNameById(a);if(!m.includes(t))throw new Error(`Unsupported token: ${t}`);let k={};if(u===o.BlockchainIdentifier.starknet){if(s=w.pad(s,{size:32}),!g)throw new Error("Missing parameter: pubKey");k={public_key:g}}let p={};try{f.includes(t)&&![o.BlockchainIdentifier.sui,o.BlockchainIdentifier.solana,o.BlockchainIdentifier.starknet].includes(u)&&(p={token_address:(await c.getTokenContractInfo(t,a,i,n.AddressKind.Adapter)).address})}catch(r){if(r instanceof Error&&r instanceof c.TokenContractAddressNotFoundError&&f.includes(t))throw new Error(`Unable to generate BTC deposit address for given token: ${t} in ${a}, reason: ${r.message}`)}const D={to_address:s,to_address_signature:d,to_chain:u,partner_id:C,nonce:0,captcha:E,referrer_code:l,eip_712_data:e,sb_signature_data:h,...p,...k};try{const{data:r}=await A.post(I,D,{baseURL:B});return r.address}catch(r){const _=c.getErrorMessage(r);if(U(_))return S;throw new Error(_)}}function U(s){return s.includes(b)}async function R({userDestinationAddress:s,chainId:t,env:a}){const{baseApiUrl:d}=T.getApiConfig(a);try{const{data:e}=await A.get(`${d}/api/v1/claimer/get-user-stake-and-bake-signature`,{params:{userDestinationAddress:s,chainId:t.toString()}});return{userDestinationAddress:e.user_destination_address,signature:e.signature,expirationDate:e.expiration_date,depositAmount:e.deposit_amount,chainId:e.chain_id,nonce:e.nonce}}catch(e){const i=c.getErrorMessage(e);throw new Error(`Failed to get user stake and bake signature: ${i}`)}}exports.SANCTIONED_ADDRESS=S;exports.generateDepositBtcAddress=N;exports.getUserStakeAndBakeSignature=R;
|
|
2
|
+
//# sourceMappingURL=getUserStakeAndBakeSignature-BxRq2cI1.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserStakeAndBakeSignature--XsK93Lb.cjs","sources":["../../src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts","../../src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts"],"sourcesContent":["import axios from 'axios';\nimport { Address, pad } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainNameById,\n} from '../../common/blockchain-identifier';\nimport type {\n ChainId,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport type { IEnvParam } from '../../common/parameters';\nimport { AddressKind, Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport {\n getErrorMessage,\n TokenContractAddressNotFoundError,\n} from '../../utils/err';\n\n/**\n * The address which will be returned if the provided EVM address is sanctioned.\n */\nexport const SANCTIONED_ADDRESS = 'sanctioned_address';\nconst ADDRESS_URL = 'api/v1/address/generate';\nconst SANCTIONS_MESSAGE = 'destination address is under sanctions';\n\ninterface IGenerateNewAddressResponse {\n address: string;\n}\n\nexport interface IGenerateDepositBtcAddressParams extends IEnvParam {\n /**\n * The destination EVM user address where LBTC will be claimed.\n */\n address: string;\n /**\n * The intended destination token, defaults to LBTC.\n */\n token?: Token;\n /**\n * The destination chain ID where LBTC will be claimed.\n */\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n /**\n * The signature of the address. The signature is generated by signing the address using EVM wallet.\n */\n signature: string;\n /**\n * The typed data object used to generate the signature if using a network fee authorization signature.\n */\n eip712Data?: string;\n /**\n * The captcha token.\n */\n captchaToken?: string;\n /**\n * The referrer code.\n */\n referrerCode?: string;\n /**\n * The referral ID.\n */\n partnerId?: string;\n /**\n * The typed data object used to generate the signature if using a stake and bake feature.\n */\n signatureData?: string;\n\n /** The pubKey required for starknet addresses signatures. */\n pubKey?: string;\n}\n\nconst EXTRA_PARAMS_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\nconst SUPPORTED_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\n\n/**\n * Generates a BTC deposit address.\n *\n * If the provided EVM address is sanctioned, the function will return the `SANCTIONED_ADDRESS`.\n *\n * @param {IGenerateDepositBtcAddressParams} parameters - The parameters for generating the deposit address.\n * @param {string} parameters.address - The destination EVM user address where LBTC will be claimed.\n * @param {ChainId} parameters.chainId - The destination chain ID where LBTC will be claimed.\n * @param {string} parameters.signature - The signature of the address. The signature is generated by signing the address using EVM wallet.\n * @param {string} parameters.eip712Data - The typed data object used to generate the signature if using a network fee authorization signature.\n * @param {string} parameters.captchaToken - The captcha token.\n * @param {string} parameters.referrerCode - The referrer code.\n * @param {string} parameters.partnerId - The partner ID.\n * @param {string} parameters.signatureData - The typed data object used to generate the signature if using a stake and bake feature.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<string>} The generated deposit address.\n */\nexport async function generateDepositBtcAddress({\n address,\n token = Token.LBTC,\n chainId,\n signature,\n eip712Data,\n env,\n referrerCode,\n partnerId,\n captchaToken,\n signatureData,\n pubKey,\n}: IGenerateDepositBtcAddressParams): Promise<string> {\n const { baseApiUrl } = getApiConfig(env);\n const toChain = getChainNameById(chainId);\n\n if (!SUPPORTED_TOKENS.includes(token)) {\n throw new Error(`Unsupported token: ${token}`);\n }\n\n let additionalParams = {};\n if (toChain === BlockchainIdentifier.starknet) {\n address = pad(address as Address, { size: 32 });\n if (!pubKey) {\n throw new Error('Missing parameter: pubKey');\n }\n\n additionalParams = {\n public_key: pubKey,\n };\n }\n\n // TODO: Refactor\n // //primaryType: 'feeApproval', - NETWORK FEE\n // //primaryType: 'Permit', - STAKE AND BAKE\n // type generationFrom =\n // | 'network-fee'\n // | 'stake-and-bake'\n // | 'destination-address';\n\n // let generation: generationFrom = 'destination-address';\n // if (signatureData != null) {\n // try {\n // const typedData = JSON.parse(signatureData);\n // if (typedData?.primaryType === 'feeApproval') {\n // generation = 'network-fee';\n // } else if (typedData?.primaryType === 'Permit') {\n // generation = 'stake-and-bake';\n // }\n // } catch {\n // // NOOP\n // }\n // }\n\n /**\n * The deposit address generation requires additional fields for tokens other\n * than LBTC.\n */\n let tokenDataParams = {};\n try {\n if (\n EXTRA_PARAMS_TOKENS.includes(token) &&\n // FIXME: Refactor in order to pull in all token addresses from all supported networks to the sdk-common package.\n // FIXME: Then remove this clause prior two token model.\n !(\n [\n BlockchainIdentifier.sui,\n BlockchainIdentifier.solana,\n BlockchainIdentifier.starknet,\n ] as BlockchainIdentifier[]\n ).includes(toChain)\n ) {\n const tokenContractInfo = await getTokenContractInfo(\n token,\n chainId as ChainId,\n env,\n AddressKind.Adapter,\n );\n tokenDataParams = {\n token_address: tokenContractInfo.address,\n };\n }\n } catch (err) {\n if (\n err instanceof Error &&\n err instanceof TokenContractAddressNotFoundError &&\n EXTRA_PARAMS_TOKENS.includes(token)\n ) {\n throw new Error(\n `Unable to generate BTC deposit address for given token: ${token} in ${chainId}, reason: ${err.message}`,\n );\n }\n }\n\n // TODO: Refactor\n // const signatureDataRequestParams =\n // generation === 'network-fee'\n // ? {\n // eip_712_data: signatureData,\n // }\n // : generation === 'stake-and-bake'\n // ? { sb_signature_data: signatureData }\n // : {};\n\n const requestParams = {\n to_address: address,\n to_address_signature: signature,\n to_chain: toChain,\n partner_id: partnerId,\n nonce: 0,\n captcha: captchaToken,\n referrer_code: referrerCode,\n eip_712_data: eip712Data,\n sb_signature_data: signatureData,\n ...tokenDataParams,\n ...additionalParams,\n };\n\n try {\n const { data } = await axios.post<IGenerateNewAddressResponse>(\n ADDRESS_URL,\n requestParams,\n { baseURL: baseApiUrl },\n );\n\n return data.address;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n\n if (isSanctioned(errorMsg)) {\n return SANCTIONED_ADDRESS;\n }\n throw new Error(errorMsg);\n }\n}\n\nfunction isSanctioned(errorMsg: string): boolean {\n return errorMsg.includes(SANCTIONS_MESSAGE);\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { ChainId } from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport interface IGetUserStakeAndBakeSignatureParams extends IEnvParam {\n /**\n * User's destination address\n */\n userDestinationAddress: string;\n /**\n * Chain ID\n */\n chainId: ChainId;\n}\n\nexport interface IGetUserStakeAndBakeSignatureResponse {\n /**\n * The user's destination address\n */\n userDestinationAddress: string;\n /**\n * The signature (may be empty if signature exists but not returned)\n */\n signature: string;\n /**\n * The expiration date\n */\n expirationDate: string;\n /**\n * The deposit amount\n */\n depositAmount: string;\n /**\n * The chain ID\n */\n chainId: string;\n /**\n * The nonce (increments with each new signature)\n */\n nonce?: string;\n}\n\ninterface IGetUserStakeAndBakeSignatureAPIResponse {\n user_destination_address: string;\n signature: string;\n expiration_date: string;\n deposit_amount: string;\n chain_id: string;\n nonce?: string;\n}\n\n/**\n * Get user's stake and bake signature from the API\n *\n * @param {IGetUserStakeAndBakeSignatureParams} parameters - Parameters for getting the signature\n * @param {string} parameters.userDestinationAddress - The destination account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IGetUserStakeAndBakeSignatureResponse>} Promise that resolves to the signature response\n */\nexport async function getUserStakeAndBakeSignature({\n userDestinationAddress,\n chainId,\n env,\n}: IGetUserStakeAndBakeSignatureParams): Promise<IGetUserStakeAndBakeSignatureResponse> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const { data } = await axios.get<IGetUserStakeAndBakeSignatureAPIResponse>(\n `${baseApiUrl}/api/v1/claimer/get-user-stake-and-bake-signature`,\n {\n params: {\n userDestinationAddress,\n chainId: chainId.toString(),\n },\n },\n );\n\n return {\n userDestinationAddress: data.user_destination_address,\n signature: data.signature,\n expirationDate: data.expiration_date,\n depositAmount: data.deposit_amount,\n chainId: data.chain_id,\n nonce: data.nonce,\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n throw new Error(\n `Failed to get user stake and bake signature: ${errorMessage}`,\n );\n }\n}\n"],"names":["SANCTIONED_ADDRESS","ADDRESS_URL","SANCTIONS_MESSAGE","EXTRA_PARAMS_TOKENS","Token","SUPPORTED_TOKENS","generateDepositBtcAddress","address","token","chainId","signature","eip712Data","env","referrerCode","partnerId","captchaToken","signatureData","pubKey","baseApiUrl","getApiConfig","toChain","getChainNameById","additionalParams","BlockchainIdentifier","pad","tokenDataParams","getTokenContractInfo","AddressKind","err","TokenContractAddressNotFoundError","requestParams","data","axios","error","errorMsg","getErrorMessage","isSanctioned","getUserStakeAndBakeSignature","userDestinationAddress","errorMessage"],"mappings":"gOAyBaA,EAAqB,qBAC5BC,EAAc,0BACdC,EAAoB,yCAgDpBC,EAAsB,CAACC,EAAAA,MAAM,KAAMA,EAAAA,MAAM,KAAMA,EAAAA,MAAM,IAAI,EACzDC,EAAmB,CAACD,EAAAA,MAAM,KAAMA,EAAAA,MAAM,KAAMA,EAAAA,MAAM,IAAI,EAoB5D,eAAsBE,EAA0B,CAC9C,QAAAC,EACA,MAAAC,EAAQJ,EAAAA,MAAM,KACd,QAAAK,EACA,UAAAC,EACA,WAAAC,EACA,IAAAC,EACA,aAAAC,EACA,UAAAC,EACA,aAAAC,EACA,cAAAC,EACA,OAAAC,CACF,EAAsD,CACpD,KAAM,CAAE,WAAAC,CAAA,EAAeC,EAAAA,aAAaP,CAAG,EACjCQ,EAAUC,EAAAA,iBAAiBZ,CAAO,EAExC,GAAI,CAACJ,EAAiB,SAASG,CAAK,EAClC,MAAM,IAAI,MAAM,sBAAsBA,CAAK,EAAE,EAG/C,IAAIc,EAAmB,CAAA,EACvB,GAAIF,IAAYG,EAAAA,qBAAqB,SAAU,CAE7C,GADAhB,EAAUiB,EAAAA,IAAIjB,EAAoB,CAAE,KAAM,GAAI,EAC1C,CAACU,EACH,MAAM,IAAI,MAAM,2BAA2B,EAG7CK,EAAmB,CACjB,WAAYL,CAAA,CAEhB,CA4BA,IAAIQ,EAAkB,CAAA,EACtB,GAAI,CAEAtB,EAAoB,SAASK,CAAK,GAGlC,CACE,CACEe,EAAAA,qBAAqB,IACrBA,EAAAA,qBAAqB,OACrBA,uBAAqB,QAAA,EAEvB,SAASH,CAAO,IAQlBK,EAAkB,CAChB,eAPwB,MAAMC,EAAAA,qBAC9BlB,EACAC,EACAG,EACAe,cAAY,OAAA,GAGqB,OAAA,EAGvC,OAASC,EAAK,CACZ,GACEA,aAAe,OACfA,aAAeC,EAAAA,mCACf1B,EAAoB,SAASK,CAAK,EAElC,MAAM,IAAI,MACR,2DAA2DA,CAAK,OAAOC,CAAO,aAAamB,EAAI,OAAO,EAAA,CAG5G,CAYA,MAAME,EAAgB,CACpB,WAAYvB,EACZ,qBAAsBG,EACtB,SAAUU,EACV,WAAYN,EACZ,MAAO,EACP,QAASC,EACT,cAAeF,EACf,aAAcF,EACd,kBAAmBK,EACnB,GAAGS,EACH,GAAGH,CAAA,EAGL,GAAI,CACF,KAAM,CAAE,KAAAS,CAAA,EAAS,MAAMC,EAAM,KAC3B/B,EACA6B,EACA,CAAE,QAASZ,CAAA,CAAW,EAGxB,OAAOa,EAAK,OACd,OAASE,EAAO,CACd,MAAMC,EAAWC,EAAAA,gBAAgBF,CAAK,EAEtC,GAAIG,EAAaF,CAAQ,EACvB,OAAOlC,EAET,MAAM,IAAI,MAAMkC,CAAQ,CAC1B,CACF,CAEA,SAASE,EAAaF,EAA2B,CAC/C,OAAOA,EAAS,SAAShC,CAAiB,CAC5C,CC1KA,eAAsBmC,EAA6B,CACjD,uBAAAC,EACA,QAAA7B,EACA,IAAAG,CACF,EAAwF,CACtF,KAAM,CAAE,WAAAM,CAAA,EAAeC,EAAAA,aAAaP,CAAG,EAEvC,GAAI,CACF,KAAM,CAAE,KAAAmB,CAAA,EAAS,MAAMC,EAAM,IAC3B,GAAGd,CAAU,oDACb,CACE,OAAQ,CACN,uBAAAoB,EACA,QAAS7B,EAAQ,SAAA,CAAS,CAC5B,CACF,EAGF,MAAO,CACL,uBAAwBsB,EAAK,yBAC7B,UAAWA,EAAK,UAChB,eAAgBA,EAAK,gBACrB,cAAeA,EAAK,eACpB,QAASA,EAAK,SACd,MAAOA,EAAK,KAAA,CAEhB,OAASE,EAAO,CACd,MAAMM,EAAeJ,EAAAA,gBAAgBF,CAAK,EAC1C,MAAM,IAAI,MACR,gDAAgDM,CAAY,EAAA,CAEhE,CACF"}
|
|
1
|
+
{"version":3,"file":"getUserStakeAndBakeSignature-BxRq2cI1.cjs","sources":["../../src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts","../../src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts"],"sourcesContent":["import axios from 'axios';\nimport { Address, pad } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainNameById,\n} from '../../common/blockchain-identifier';\nimport type {\n ChainId,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport type { IEnvParam } from '../../common/parameters';\nimport { AddressKind, Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport {\n getErrorMessage,\n TokenContractAddressNotFoundError,\n} from '../../utils/err';\n\n/**\n * The address which will be returned if the provided EVM address is sanctioned.\n */\nexport const SANCTIONED_ADDRESS = 'sanctioned_address';\nconst ADDRESS_URL = 'api/v1/address/generate';\nconst SANCTIONS_MESSAGE = 'destination address is under sanctions';\n\ninterface IGenerateNewAddressResponse {\n address: string;\n}\n\nexport interface IGenerateDepositBtcAddressParams extends IEnvParam {\n /**\n * The destination EVM user address where LBTC will be claimed.\n */\n address: string;\n /**\n * The intended destination token, defaults to LBTC.\n */\n token?: Token;\n /**\n * The destination chain ID where LBTC will be claimed.\n */\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n /**\n * The signature of the address. The signature is generated by signing the address using EVM wallet.\n */\n signature: string;\n /**\n * The typed data object used to generate the signature if using a network fee authorization signature.\n */\n eip712Data?: string;\n /**\n * The captcha token.\n */\n captchaToken?: string;\n /**\n * The referrer code.\n */\n referrerCode?: string;\n /**\n * The referral ID.\n */\n partnerId?: string;\n /**\n * The typed data object used to generate the signature if using a stake and bake feature.\n */\n signatureData?: string;\n\n /** The pubKey required for starknet addresses signatures. */\n pubKey?: string;\n}\n\nconst EXTRA_PARAMS_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\nconst SUPPORTED_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\n\n/**\n * Generates a BTC deposit address.\n *\n * If the provided EVM address is sanctioned, the function will return the `SANCTIONED_ADDRESS`.\n *\n * @param {IGenerateDepositBtcAddressParams} parameters - The parameters for generating the deposit address.\n * @param {string} parameters.address - The destination EVM user address where LBTC will be claimed.\n * @param {ChainId} parameters.chainId - The destination chain ID where LBTC will be claimed.\n * @param {string} parameters.signature - The signature of the address. The signature is generated by signing the address using EVM wallet.\n * @param {string} parameters.eip712Data - The typed data object used to generate the signature if using a network fee authorization signature.\n * @param {string} parameters.captchaToken - The captcha token.\n * @param {string} parameters.referrerCode - The referrer code.\n * @param {string} parameters.partnerId - The partner ID.\n * @param {string} parameters.signatureData - The typed data object used to generate the signature if using a stake and bake feature.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<string>} The generated deposit address.\n */\nexport async function generateDepositBtcAddress({\n address,\n token = Token.LBTC,\n chainId,\n signature,\n eip712Data,\n env,\n referrerCode,\n partnerId,\n captchaToken,\n signatureData,\n pubKey,\n}: IGenerateDepositBtcAddressParams): Promise<string> {\n const { baseApiUrl } = getApiConfig(env);\n const toChain = getChainNameById(chainId);\n\n if (!SUPPORTED_TOKENS.includes(token)) {\n throw new Error(`Unsupported token: ${token}`);\n }\n\n let additionalParams = {};\n if (toChain === BlockchainIdentifier.starknet) {\n address = pad(address as Address, { size: 32 });\n if (!pubKey) {\n throw new Error('Missing parameter: pubKey');\n }\n\n additionalParams = {\n public_key: pubKey,\n };\n }\n\n // TODO: Refactor\n // //primaryType: 'feeApproval', - NETWORK FEE\n // //primaryType: 'Permit', - STAKE AND BAKE\n // type generationFrom =\n // | 'network-fee'\n // | 'stake-and-bake'\n // | 'destination-address';\n\n // let generation: generationFrom = 'destination-address';\n // if (signatureData != null) {\n // try {\n // const typedData = JSON.parse(signatureData);\n // if (typedData?.primaryType === 'feeApproval') {\n // generation = 'network-fee';\n // } else if (typedData?.primaryType === 'Permit') {\n // generation = 'stake-and-bake';\n // }\n // } catch {\n // // NOOP\n // }\n // }\n\n /**\n * The deposit address generation requires additional fields for tokens other\n * than LBTC.\n */\n let tokenDataParams = {};\n try {\n if (\n EXTRA_PARAMS_TOKENS.includes(token) &&\n // FIXME: Refactor in order to pull in all token addresses from all supported networks to the sdk-common package.\n // FIXME: Then remove this clause prior two token model.\n !(\n [\n BlockchainIdentifier.sui,\n BlockchainIdentifier.solana,\n BlockchainIdentifier.starknet,\n ] as BlockchainIdentifier[]\n ).includes(toChain)\n ) {\n const tokenContractInfo = await getTokenContractInfo(\n token,\n chainId as ChainId,\n env,\n AddressKind.Adapter,\n );\n tokenDataParams = {\n token_address: tokenContractInfo.address,\n };\n }\n } catch (err) {\n if (\n err instanceof Error &&\n err instanceof TokenContractAddressNotFoundError &&\n EXTRA_PARAMS_TOKENS.includes(token)\n ) {\n throw new Error(\n `Unable to generate BTC deposit address for given token: ${token} in ${chainId}, reason: ${err.message}`,\n );\n }\n }\n\n // TODO: Refactor\n // const signatureDataRequestParams =\n // generation === 'network-fee'\n // ? {\n // eip_712_data: signatureData,\n // }\n // : generation === 'stake-and-bake'\n // ? { sb_signature_data: signatureData }\n // : {};\n\n const requestParams = {\n to_address: address,\n to_address_signature: signature,\n to_chain: toChain,\n partner_id: partnerId,\n nonce: 0,\n captcha: captchaToken,\n referrer_code: referrerCode,\n eip_712_data: eip712Data,\n sb_signature_data: signatureData,\n ...tokenDataParams,\n ...additionalParams,\n };\n\n try {\n const { data } = await axios.post<IGenerateNewAddressResponse>(\n ADDRESS_URL,\n requestParams,\n { baseURL: baseApiUrl },\n );\n\n return data.address;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n\n if (isSanctioned(errorMsg)) {\n return SANCTIONED_ADDRESS;\n }\n throw new Error(errorMsg);\n }\n}\n\nfunction isSanctioned(errorMsg: string): boolean {\n return errorMsg.includes(SANCTIONS_MESSAGE);\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { ChainId } from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport interface IGetUserStakeAndBakeSignatureParams extends IEnvParam {\n /**\n * User's destination address\n */\n userDestinationAddress: string;\n /**\n * Chain ID\n */\n chainId: ChainId;\n}\n\nexport interface IGetUserStakeAndBakeSignatureResponse {\n /**\n * The user's destination address\n */\n userDestinationAddress: string;\n /**\n * The signature (may be empty if signature exists but not returned)\n */\n signature: string;\n /**\n * The expiration date\n */\n expirationDate: string;\n /**\n * The deposit amount\n */\n depositAmount: string;\n /**\n * The chain ID\n */\n chainId: string;\n /**\n * The nonce (increments with each new signature)\n */\n nonce?: string;\n}\n\ninterface IGetUserStakeAndBakeSignatureAPIResponse {\n user_destination_address: string;\n signature: string;\n expiration_date: string;\n deposit_amount: string;\n chain_id: string;\n nonce?: string;\n}\n\n/**\n * Get user's stake and bake signature from the API\n *\n * @param {IGetUserStakeAndBakeSignatureParams} parameters - Parameters for getting the signature\n * @param {string} parameters.userDestinationAddress - The destination account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IGetUserStakeAndBakeSignatureResponse>} Promise that resolves to the signature response\n */\nexport async function getUserStakeAndBakeSignature({\n userDestinationAddress,\n chainId,\n env,\n}: IGetUserStakeAndBakeSignatureParams): Promise<IGetUserStakeAndBakeSignatureResponse> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const { data } = await axios.get<IGetUserStakeAndBakeSignatureAPIResponse>(\n `${baseApiUrl}/api/v1/claimer/get-user-stake-and-bake-signature`,\n {\n params: {\n userDestinationAddress,\n chainId: chainId.toString(),\n },\n },\n );\n\n return {\n userDestinationAddress: data.user_destination_address,\n signature: data.signature,\n expirationDate: data.expiration_date,\n depositAmount: data.deposit_amount,\n chainId: data.chain_id,\n nonce: data.nonce,\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n throw new Error(\n `Failed to get user stake and bake signature: ${errorMessage}`,\n );\n }\n}\n"],"names":["SANCTIONED_ADDRESS","ADDRESS_URL","SANCTIONS_MESSAGE","EXTRA_PARAMS_TOKENS","Token","SUPPORTED_TOKENS","generateDepositBtcAddress","address","token","chainId","signature","eip712Data","env","referrerCode","partnerId","captchaToken","signatureData","pubKey","baseApiUrl","getApiConfig","toChain","getChainNameById","additionalParams","BlockchainIdentifier","pad","tokenDataParams","getTokenContractInfo","AddressKind","err","TokenContractAddressNotFoundError","requestParams","data","axios","error","errorMsg","getErrorMessage","isSanctioned","getUserStakeAndBakeSignature","userDestinationAddress","errorMessage"],"mappings":"gOAyBaA,EAAqB,qBAC5BC,EAAc,0BACdC,EAAoB,yCAgDpBC,EAAsB,CAACC,EAAAA,MAAM,KAAMA,EAAAA,MAAM,KAAMA,EAAAA,MAAM,IAAI,EACzDC,EAAmB,CAACD,EAAAA,MAAM,KAAMA,EAAAA,MAAM,KAAMA,EAAAA,MAAM,IAAI,EAoB5D,eAAsBE,EAA0B,CAC9C,QAAAC,EACA,MAAAC,EAAQJ,EAAAA,MAAM,KACd,QAAAK,EACA,UAAAC,EACA,WAAAC,EACA,IAAAC,EACA,aAAAC,EACA,UAAAC,EACA,aAAAC,EACA,cAAAC,EACA,OAAAC,CACF,EAAsD,CACpD,KAAM,CAAE,WAAAC,CAAA,EAAeC,EAAAA,aAAaP,CAAG,EACjCQ,EAAUC,EAAAA,iBAAiBZ,CAAO,EAExC,GAAI,CAACJ,EAAiB,SAASG,CAAK,EAClC,MAAM,IAAI,MAAM,sBAAsBA,CAAK,EAAE,EAG/C,IAAIc,EAAmB,CAAA,EACvB,GAAIF,IAAYG,EAAAA,qBAAqB,SAAU,CAE7C,GADAhB,EAAUiB,EAAAA,IAAIjB,EAAoB,CAAE,KAAM,GAAI,EAC1C,CAACU,EACH,MAAM,IAAI,MAAM,2BAA2B,EAG7CK,EAAmB,CACjB,WAAYL,CAAA,CAEhB,CA4BA,IAAIQ,EAAkB,CAAA,EACtB,GAAI,CAEAtB,EAAoB,SAASK,CAAK,GAGlC,CACE,CACEe,EAAAA,qBAAqB,IACrBA,EAAAA,qBAAqB,OACrBA,uBAAqB,QAAA,EAEvB,SAASH,CAAO,IAQlBK,EAAkB,CAChB,eAPwB,MAAMC,EAAAA,qBAC9BlB,EACAC,EACAG,EACAe,cAAY,OAAA,GAGqB,OAAA,EAGvC,OAASC,EAAK,CACZ,GACEA,aAAe,OACfA,aAAeC,EAAAA,mCACf1B,EAAoB,SAASK,CAAK,EAElC,MAAM,IAAI,MACR,2DAA2DA,CAAK,OAAOC,CAAO,aAAamB,EAAI,OAAO,EAAA,CAG5G,CAYA,MAAME,EAAgB,CACpB,WAAYvB,EACZ,qBAAsBG,EACtB,SAAUU,EACV,WAAYN,EACZ,MAAO,EACP,QAASC,EACT,cAAeF,EACf,aAAcF,EACd,kBAAmBK,EACnB,GAAGS,EACH,GAAGH,CAAA,EAGL,GAAI,CACF,KAAM,CAAE,KAAAS,CAAA,EAAS,MAAMC,EAAM,KAC3B/B,EACA6B,EACA,CAAE,QAASZ,CAAA,CAAW,EAGxB,OAAOa,EAAK,OACd,OAASE,EAAO,CACd,MAAMC,EAAWC,EAAAA,gBAAgBF,CAAK,EAEtC,GAAIG,EAAaF,CAAQ,EACvB,OAAOlC,EAET,MAAM,IAAI,MAAMkC,CAAQ,CAC1B,CACF,CAEA,SAASE,EAAaF,EAA2B,CAC/C,OAAOA,EAAS,SAAShC,CAAiB,CAC5C,CC1KA,eAAsBmC,EAA6B,CACjD,uBAAAC,EACA,QAAA7B,EACA,IAAAG,CACF,EAAwF,CACtF,KAAM,CAAE,WAAAM,CAAA,EAAeC,EAAAA,aAAaP,CAAG,EAEvC,GAAI,CACF,KAAM,CAAE,KAAAmB,CAAA,EAAS,MAAMC,EAAM,IAC3B,GAAGd,CAAU,oDACb,CACE,OAAQ,CACN,uBAAAoB,EACA,QAAS7B,EAAQ,SAAA,CAAS,CAC5B,CACF,EAGF,MAAO,CACL,uBAAwBsB,EAAK,yBAC7B,UAAWA,EAAK,UAChB,eAAgBA,EAAK,gBACrB,cAAeA,EAAK,eACpB,QAASA,EAAK,SACd,MAAOA,EAAK,KAAA,CAEhB,OAASE,EAAO,CACd,MAAMM,EAAeJ,EAAAA,gBAAgBF,CAAK,EAC1C,MAAM,IAAI,MACR,gDAAgDM,CAAY,EAAA,CAEhE,CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import m from "axios";
|
|
2
2
|
import { pad as w } from "viem";
|
|
3
|
-
import { g as
|
|
4
|
-
import { c as B, B as i } from "./blockchain-identifier-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { g as A } from "./api-config-CtcP3TVl.js";
|
|
4
|
+
import { c as B, B as i } from "./blockchain-identifier-BmadkNtK.js";
|
|
5
|
+
import { o as s, A as b } from "./token-addresses-FKpA3uc4.js";
|
|
6
|
+
import { b as D, T as N, g as S } from "./tokens-C6qZHzph.js";
|
|
7
7
|
const U = "sanctioned_address", y = "api/v1/address/generate", I = "destination address is under sanctions", _ = [s.LBTC, s.BTCK, s.BTCb], R = [s.LBTC, s.BTCK, s.BTCb];
|
|
8
8
|
async function v({
|
|
9
9
|
address: a,
|
|
@@ -12,13 +12,13 @@ async function v({
|
|
|
12
12
|
signature: d,
|
|
13
13
|
eip712Data: r,
|
|
14
14
|
env: o,
|
|
15
|
-
referrerCode:
|
|
15
|
+
referrerCode: T,
|
|
16
16
|
partnerId: C,
|
|
17
17
|
captchaToken: E,
|
|
18
18
|
signatureData: l,
|
|
19
19
|
pubKey: u
|
|
20
20
|
}) {
|
|
21
|
-
const { baseApiUrl: h } =
|
|
21
|
+
const { baseApiUrl: h } = A(o), c = B(n);
|
|
22
22
|
if (!R.includes(e))
|
|
23
23
|
throw new Error(`Unsupported token: ${e}`);
|
|
24
24
|
let g = {};
|
|
@@ -58,7 +58,7 @@ async function v({
|
|
|
58
58
|
partner_id: C,
|
|
59
59
|
nonce: 0,
|
|
60
60
|
captcha: E,
|
|
61
|
-
referrer_code:
|
|
61
|
+
referrer_code: T,
|
|
62
62
|
eip_712_data: r,
|
|
63
63
|
sb_signature_data: l,
|
|
64
64
|
...p,
|
|
@@ -72,7 +72,7 @@ async function v({
|
|
|
72
72
|
);
|
|
73
73
|
return t.address;
|
|
74
74
|
} catch (t) {
|
|
75
|
-
const f =
|
|
75
|
+
const f = S(t);
|
|
76
76
|
if (M(f))
|
|
77
77
|
return U;
|
|
78
78
|
throw new Error(f);
|
|
@@ -86,7 +86,7 @@ async function F({
|
|
|
86
86
|
chainId: e,
|
|
87
87
|
env: n
|
|
88
88
|
}) {
|
|
89
|
-
const { baseApiUrl: d } =
|
|
89
|
+
const { baseApiUrl: d } = A(n);
|
|
90
90
|
try {
|
|
91
91
|
const { data: r } = await m.get(
|
|
92
92
|
`${d}/api/v1/claimer/get-user-stake-and-bake-signature`,
|
|
@@ -106,7 +106,7 @@ async function F({
|
|
|
106
106
|
nonce: r.nonce
|
|
107
107
|
};
|
|
108
108
|
} catch (r) {
|
|
109
|
-
const o =
|
|
109
|
+
const o = S(r);
|
|
110
110
|
throw new Error(
|
|
111
111
|
`Failed to get user stake and bake signature: ${o}`
|
|
112
112
|
);
|
|
@@ -117,4 +117,4 @@ export {
|
|
|
117
117
|
F as a,
|
|
118
118
|
v as g
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=getUserStakeAndBakeSignature-
|
|
120
|
+
//# sourceMappingURL=getUserStakeAndBakeSignature-NGGblnJl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserStakeAndBakeSignature-2xPkL9v_.js","sources":["../../src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts","../../src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts"],"sourcesContent":["import axios from 'axios';\nimport { Address, pad } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainNameById,\n} from '../../common/blockchain-identifier';\nimport type {\n ChainId,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport type { IEnvParam } from '../../common/parameters';\nimport { AddressKind, Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport {\n getErrorMessage,\n TokenContractAddressNotFoundError,\n} from '../../utils/err';\n\n/**\n * The address which will be returned if the provided EVM address is sanctioned.\n */\nexport const SANCTIONED_ADDRESS = 'sanctioned_address';\nconst ADDRESS_URL = 'api/v1/address/generate';\nconst SANCTIONS_MESSAGE = 'destination address is under sanctions';\n\ninterface IGenerateNewAddressResponse {\n address: string;\n}\n\nexport interface IGenerateDepositBtcAddressParams extends IEnvParam {\n /**\n * The destination EVM user address where LBTC will be claimed.\n */\n address: string;\n /**\n * The intended destination token, defaults to LBTC.\n */\n token?: Token;\n /**\n * The destination chain ID where LBTC will be claimed.\n */\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n /**\n * The signature of the address. The signature is generated by signing the address using EVM wallet.\n */\n signature: string;\n /**\n * The typed data object used to generate the signature if using a network fee authorization signature.\n */\n eip712Data?: string;\n /**\n * The captcha token.\n */\n captchaToken?: string;\n /**\n * The referrer code.\n */\n referrerCode?: string;\n /**\n * The referral ID.\n */\n partnerId?: string;\n /**\n * The typed data object used to generate the signature if using a stake and bake feature.\n */\n signatureData?: string;\n\n /** The pubKey required for starknet addresses signatures. */\n pubKey?: string;\n}\n\nconst EXTRA_PARAMS_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\nconst SUPPORTED_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\n\n/**\n * Generates a BTC deposit address.\n *\n * If the provided EVM address is sanctioned, the function will return the `SANCTIONED_ADDRESS`.\n *\n * @param {IGenerateDepositBtcAddressParams} parameters - The parameters for generating the deposit address.\n * @param {string} parameters.address - The destination EVM user address where LBTC will be claimed.\n * @param {ChainId} parameters.chainId - The destination chain ID where LBTC will be claimed.\n * @param {string} parameters.signature - The signature of the address. The signature is generated by signing the address using EVM wallet.\n * @param {string} parameters.eip712Data - The typed data object used to generate the signature if using a network fee authorization signature.\n * @param {string} parameters.captchaToken - The captcha token.\n * @param {string} parameters.referrerCode - The referrer code.\n * @param {string} parameters.partnerId - The partner ID.\n * @param {string} parameters.signatureData - The typed data object used to generate the signature if using a stake and bake feature.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<string>} The generated deposit address.\n */\nexport async function generateDepositBtcAddress({\n address,\n token = Token.LBTC,\n chainId,\n signature,\n eip712Data,\n env,\n referrerCode,\n partnerId,\n captchaToken,\n signatureData,\n pubKey,\n}: IGenerateDepositBtcAddressParams): Promise<string> {\n const { baseApiUrl } = getApiConfig(env);\n const toChain = getChainNameById(chainId);\n\n if (!SUPPORTED_TOKENS.includes(token)) {\n throw new Error(`Unsupported token: ${token}`);\n }\n\n let additionalParams = {};\n if (toChain === BlockchainIdentifier.starknet) {\n address = pad(address as Address, { size: 32 });\n if (!pubKey) {\n throw new Error('Missing parameter: pubKey');\n }\n\n additionalParams = {\n public_key: pubKey,\n };\n }\n\n // TODO: Refactor\n // //primaryType: 'feeApproval', - NETWORK FEE\n // //primaryType: 'Permit', - STAKE AND BAKE\n // type generationFrom =\n // | 'network-fee'\n // | 'stake-and-bake'\n // | 'destination-address';\n\n // let generation: generationFrom = 'destination-address';\n // if (signatureData != null) {\n // try {\n // const typedData = JSON.parse(signatureData);\n // if (typedData?.primaryType === 'feeApproval') {\n // generation = 'network-fee';\n // } else if (typedData?.primaryType === 'Permit') {\n // generation = 'stake-and-bake';\n // }\n // } catch {\n // // NOOP\n // }\n // }\n\n /**\n * The deposit address generation requires additional fields for tokens other\n * than LBTC.\n */\n let tokenDataParams = {};\n try {\n if (\n EXTRA_PARAMS_TOKENS.includes(token) &&\n // FIXME: Refactor in order to pull in all token addresses from all supported networks to the sdk-common package.\n // FIXME: Then remove this clause prior two token model.\n !(\n [\n BlockchainIdentifier.sui,\n BlockchainIdentifier.solana,\n BlockchainIdentifier.starknet,\n ] as BlockchainIdentifier[]\n ).includes(toChain)\n ) {\n const tokenContractInfo = await getTokenContractInfo(\n token,\n chainId as ChainId,\n env,\n AddressKind.Adapter,\n );\n tokenDataParams = {\n token_address: tokenContractInfo.address,\n };\n }\n } catch (err) {\n if (\n err instanceof Error &&\n err instanceof TokenContractAddressNotFoundError &&\n EXTRA_PARAMS_TOKENS.includes(token)\n ) {\n throw new Error(\n `Unable to generate BTC deposit address for given token: ${token} in ${chainId}, reason: ${err.message}`,\n );\n }\n }\n\n // TODO: Refactor\n // const signatureDataRequestParams =\n // generation === 'network-fee'\n // ? {\n // eip_712_data: signatureData,\n // }\n // : generation === 'stake-and-bake'\n // ? { sb_signature_data: signatureData }\n // : {};\n\n const requestParams = {\n to_address: address,\n to_address_signature: signature,\n to_chain: toChain,\n partner_id: partnerId,\n nonce: 0,\n captcha: captchaToken,\n referrer_code: referrerCode,\n eip_712_data: eip712Data,\n sb_signature_data: signatureData,\n ...tokenDataParams,\n ...additionalParams,\n };\n\n try {\n const { data } = await axios.post<IGenerateNewAddressResponse>(\n ADDRESS_URL,\n requestParams,\n { baseURL: baseApiUrl },\n );\n\n return data.address;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n\n if (isSanctioned(errorMsg)) {\n return SANCTIONED_ADDRESS;\n }\n throw new Error(errorMsg);\n }\n}\n\nfunction isSanctioned(errorMsg: string): boolean {\n return errorMsg.includes(SANCTIONS_MESSAGE);\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { ChainId } from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport interface IGetUserStakeAndBakeSignatureParams extends IEnvParam {\n /**\n * User's destination address\n */\n userDestinationAddress: string;\n /**\n * Chain ID\n */\n chainId: ChainId;\n}\n\nexport interface IGetUserStakeAndBakeSignatureResponse {\n /**\n * The user's destination address\n */\n userDestinationAddress: string;\n /**\n * The signature (may be empty if signature exists but not returned)\n */\n signature: string;\n /**\n * The expiration date\n */\n expirationDate: string;\n /**\n * The deposit amount\n */\n depositAmount: string;\n /**\n * The chain ID\n */\n chainId: string;\n /**\n * The nonce (increments with each new signature)\n */\n nonce?: string;\n}\n\ninterface IGetUserStakeAndBakeSignatureAPIResponse {\n user_destination_address: string;\n signature: string;\n expiration_date: string;\n deposit_amount: string;\n chain_id: string;\n nonce?: string;\n}\n\n/**\n * Get user's stake and bake signature from the API\n *\n * @param {IGetUserStakeAndBakeSignatureParams} parameters - Parameters for getting the signature\n * @param {string} parameters.userDestinationAddress - The destination account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IGetUserStakeAndBakeSignatureResponse>} Promise that resolves to the signature response\n */\nexport async function getUserStakeAndBakeSignature({\n userDestinationAddress,\n chainId,\n env,\n}: IGetUserStakeAndBakeSignatureParams): Promise<IGetUserStakeAndBakeSignatureResponse> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const { data } = await axios.get<IGetUserStakeAndBakeSignatureAPIResponse>(\n `${baseApiUrl}/api/v1/claimer/get-user-stake-and-bake-signature`,\n {\n params: {\n userDestinationAddress,\n chainId: chainId.toString(),\n },\n },\n );\n\n return {\n userDestinationAddress: data.user_destination_address,\n signature: data.signature,\n expirationDate: data.expiration_date,\n depositAmount: data.deposit_amount,\n chainId: data.chain_id,\n nonce: data.nonce,\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n throw new Error(\n `Failed to get user stake and bake signature: ${errorMessage}`,\n );\n }\n}\n"],"names":["SANCTIONED_ADDRESS","ADDRESS_URL","SANCTIONS_MESSAGE","EXTRA_PARAMS_TOKENS","Token","SUPPORTED_TOKENS","generateDepositBtcAddress","address","token","chainId","signature","eip712Data","env","referrerCode","partnerId","captchaToken","signatureData","pubKey","baseApiUrl","getApiConfig","toChain","getChainNameById","additionalParams","BlockchainIdentifier","pad","tokenDataParams","getTokenContractInfo","AddressKind","err","TokenContractAddressNotFoundError","requestParams","data","axios","error","errorMsg","getErrorMessage","isSanctioned","getUserStakeAndBakeSignature","userDestinationAddress","errorMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getUserStakeAndBakeSignature-NGGblnJl.js","sources":["../../src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts","../../src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts"],"sourcesContent":["import axios from 'axios';\nimport { Address, pad } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainNameById,\n} from '../../common/blockchain-identifier';\nimport type {\n ChainId,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport type { IEnvParam } from '../../common/parameters';\nimport { AddressKind, Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport {\n getErrorMessage,\n TokenContractAddressNotFoundError,\n} from '../../utils/err';\n\n/**\n * The address which will be returned if the provided EVM address is sanctioned.\n */\nexport const SANCTIONED_ADDRESS = 'sanctioned_address';\nconst ADDRESS_URL = 'api/v1/address/generate';\nconst SANCTIONS_MESSAGE = 'destination address is under sanctions';\n\ninterface IGenerateNewAddressResponse {\n address: string;\n}\n\nexport interface IGenerateDepositBtcAddressParams extends IEnvParam {\n /**\n * The destination EVM user address where LBTC will be claimed.\n */\n address: string;\n /**\n * The intended destination token, defaults to LBTC.\n */\n token?: Token;\n /**\n * The destination chain ID where LBTC will be claimed.\n */\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n /**\n * The signature of the address. The signature is generated by signing the address using EVM wallet.\n */\n signature: string;\n /**\n * The typed data object used to generate the signature if using a network fee authorization signature.\n */\n eip712Data?: string;\n /**\n * The captcha token.\n */\n captchaToken?: string;\n /**\n * The referrer code.\n */\n referrerCode?: string;\n /**\n * The referral ID.\n */\n partnerId?: string;\n /**\n * The typed data object used to generate the signature if using a stake and bake feature.\n */\n signatureData?: string;\n\n /** The pubKey required for starknet addresses signatures. */\n pubKey?: string;\n}\n\nconst EXTRA_PARAMS_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\nconst SUPPORTED_TOKENS = [Token.LBTC, Token.BTCK, Token.BTCb];\n\n/**\n * Generates a BTC deposit address.\n *\n * If the provided EVM address is sanctioned, the function will return the `SANCTIONED_ADDRESS`.\n *\n * @param {IGenerateDepositBtcAddressParams} parameters - The parameters for generating the deposit address.\n * @param {string} parameters.address - The destination EVM user address where LBTC will be claimed.\n * @param {ChainId} parameters.chainId - The destination chain ID where LBTC will be claimed.\n * @param {string} parameters.signature - The signature of the address. The signature is generated by signing the address using EVM wallet.\n * @param {string} parameters.eip712Data - The typed data object used to generate the signature if using a network fee authorization signature.\n * @param {string} parameters.captchaToken - The captcha token.\n * @param {string} parameters.referrerCode - The referrer code.\n * @param {string} parameters.partnerId - The partner ID.\n * @param {string} parameters.signatureData - The typed data object used to generate the signature if using a stake and bake feature.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<string>} The generated deposit address.\n */\nexport async function generateDepositBtcAddress({\n address,\n token = Token.LBTC,\n chainId,\n signature,\n eip712Data,\n env,\n referrerCode,\n partnerId,\n captchaToken,\n signatureData,\n pubKey,\n}: IGenerateDepositBtcAddressParams): Promise<string> {\n const { baseApiUrl } = getApiConfig(env);\n const toChain = getChainNameById(chainId);\n\n if (!SUPPORTED_TOKENS.includes(token)) {\n throw new Error(`Unsupported token: ${token}`);\n }\n\n let additionalParams = {};\n if (toChain === BlockchainIdentifier.starknet) {\n address = pad(address as Address, { size: 32 });\n if (!pubKey) {\n throw new Error('Missing parameter: pubKey');\n }\n\n additionalParams = {\n public_key: pubKey,\n };\n }\n\n // TODO: Refactor\n // //primaryType: 'feeApproval', - NETWORK FEE\n // //primaryType: 'Permit', - STAKE AND BAKE\n // type generationFrom =\n // | 'network-fee'\n // | 'stake-and-bake'\n // | 'destination-address';\n\n // let generation: generationFrom = 'destination-address';\n // if (signatureData != null) {\n // try {\n // const typedData = JSON.parse(signatureData);\n // if (typedData?.primaryType === 'feeApproval') {\n // generation = 'network-fee';\n // } else if (typedData?.primaryType === 'Permit') {\n // generation = 'stake-and-bake';\n // }\n // } catch {\n // // NOOP\n // }\n // }\n\n /**\n * The deposit address generation requires additional fields for tokens other\n * than LBTC.\n */\n let tokenDataParams = {};\n try {\n if (\n EXTRA_PARAMS_TOKENS.includes(token) &&\n // FIXME: Refactor in order to pull in all token addresses from all supported networks to the sdk-common package.\n // FIXME: Then remove this clause prior two token model.\n !(\n [\n BlockchainIdentifier.sui,\n BlockchainIdentifier.solana,\n BlockchainIdentifier.starknet,\n ] as BlockchainIdentifier[]\n ).includes(toChain)\n ) {\n const tokenContractInfo = await getTokenContractInfo(\n token,\n chainId as ChainId,\n env,\n AddressKind.Adapter,\n );\n tokenDataParams = {\n token_address: tokenContractInfo.address,\n };\n }\n } catch (err) {\n if (\n err instanceof Error &&\n err instanceof TokenContractAddressNotFoundError &&\n EXTRA_PARAMS_TOKENS.includes(token)\n ) {\n throw new Error(\n `Unable to generate BTC deposit address for given token: ${token} in ${chainId}, reason: ${err.message}`,\n );\n }\n }\n\n // TODO: Refactor\n // const signatureDataRequestParams =\n // generation === 'network-fee'\n // ? {\n // eip_712_data: signatureData,\n // }\n // : generation === 'stake-and-bake'\n // ? { sb_signature_data: signatureData }\n // : {};\n\n const requestParams = {\n to_address: address,\n to_address_signature: signature,\n to_chain: toChain,\n partner_id: partnerId,\n nonce: 0,\n captcha: captchaToken,\n referrer_code: referrerCode,\n eip_712_data: eip712Data,\n sb_signature_data: signatureData,\n ...tokenDataParams,\n ...additionalParams,\n };\n\n try {\n const { data } = await axios.post<IGenerateNewAddressResponse>(\n ADDRESS_URL,\n requestParams,\n { baseURL: baseApiUrl },\n );\n\n return data.address;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n\n if (isSanctioned(errorMsg)) {\n return SANCTIONED_ADDRESS;\n }\n throw new Error(errorMsg);\n }\n}\n\nfunction isSanctioned(errorMsg: string): boolean {\n return errorMsg.includes(SANCTIONS_MESSAGE);\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { ChainId } from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport interface IGetUserStakeAndBakeSignatureParams extends IEnvParam {\n /**\n * User's destination address\n */\n userDestinationAddress: string;\n /**\n * Chain ID\n */\n chainId: ChainId;\n}\n\nexport interface IGetUserStakeAndBakeSignatureResponse {\n /**\n * The user's destination address\n */\n userDestinationAddress: string;\n /**\n * The signature (may be empty if signature exists but not returned)\n */\n signature: string;\n /**\n * The expiration date\n */\n expirationDate: string;\n /**\n * The deposit amount\n */\n depositAmount: string;\n /**\n * The chain ID\n */\n chainId: string;\n /**\n * The nonce (increments with each new signature)\n */\n nonce?: string;\n}\n\ninterface IGetUserStakeAndBakeSignatureAPIResponse {\n user_destination_address: string;\n signature: string;\n expiration_date: string;\n deposit_amount: string;\n chain_id: string;\n nonce?: string;\n}\n\n/**\n * Get user's stake and bake signature from the API\n *\n * @param {IGetUserStakeAndBakeSignatureParams} parameters - Parameters for getting the signature\n * @param {string} parameters.userDestinationAddress - The destination account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IGetUserStakeAndBakeSignatureResponse>} Promise that resolves to the signature response\n */\nexport async function getUserStakeAndBakeSignature({\n userDestinationAddress,\n chainId,\n env,\n}: IGetUserStakeAndBakeSignatureParams): Promise<IGetUserStakeAndBakeSignatureResponse> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const { data } = await axios.get<IGetUserStakeAndBakeSignatureAPIResponse>(\n `${baseApiUrl}/api/v1/claimer/get-user-stake-and-bake-signature`,\n {\n params: {\n userDestinationAddress,\n chainId: chainId.toString(),\n },\n },\n );\n\n return {\n userDestinationAddress: data.user_destination_address,\n signature: data.signature,\n expirationDate: data.expiration_date,\n depositAmount: data.deposit_amount,\n chainId: data.chain_id,\n nonce: data.nonce,\n };\n } catch (error) {\n const errorMessage = getErrorMessage(error);\n throw new Error(\n `Failed to get user stake and bake signature: ${errorMessage}`,\n );\n }\n}\n"],"names":["SANCTIONED_ADDRESS","ADDRESS_URL","SANCTIONS_MESSAGE","EXTRA_PARAMS_TOKENS","Token","SUPPORTED_TOKENS","generateDepositBtcAddress","address","token","chainId","signature","eip712Data","env","referrerCode","partnerId","captchaToken","signatureData","pubKey","baseApiUrl","getApiConfig","toChain","getChainNameById","additionalParams","BlockchainIdentifier","pad","tokenDataParams","getTokenContractInfo","AddressKind","err","TokenContractAddressNotFoundError","requestParams","data","axios","error","errorMsg","getErrorMessage","isSanctioned","getUserStakeAndBakeSignature","userDestinationAddress","errorMessage"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-BKzxeh1Y.cjs","sources":["../../../sdk-common/dist/index.js"],"sourcesContent":["const r = {\n prod: \"prod\",\n testnet: \"testnet\",\n stage: \"stage\",\n dev: \"dev\",\n ibc: \"ibc\"\n}, p = r.prod, u = [\n \"evm\",\n \"bitcoin\",\n \"solana\",\n \"sui\",\n \"starknet\"\n];\nlet n = null;\nconst o = async () => {\n try {\n const t = await import(\"bitcoinjs-lib\"), e = await import(\"@bitcoinerlab/secp256k1\");\n try {\n t.initEccLib(e);\n } catch (i) {\n if (!/already initialized/i.test(String(i)))\n throw i;\n }\n return t;\n } catch (t) {\n throw n = null, new Error(\n `Failed to initialize bitcoinjs-lib: ${t instanceof Error ? t.message : String(t)}. Ensure bitcoinjs-lib and @bitcoinerlab/secp256k1 peer dependencies are installed.`\n );\n }\n}, c = async () => (n || (n = o()), n);\nasync function d(t, e = r.prod) {\n const i = await c();\n return `0x${i.address.toOutputScript(\n t,\n e === r.prod ? i.networks.bitcoin : i.networks.testnet\n ).toString(\"hex\")}`;\n}\nexport {\n p as DEFAULT_ENV,\n r as Env,\n u as ProviderKeys,\n d as getOutputScript\n};\n
|
|
1
|
+
{"version":3,"file":"index-BKzxeh1Y.cjs","sources":["../../../sdk-common/dist/index.js"],"sourcesContent":["const r = {\n prod: \"prod\",\n testnet: \"testnet\",\n stage: \"stage\",\n dev: \"dev\",\n ibc: \"ibc\"\n}, p = r.prod, u = [\n \"evm\",\n \"bitcoin\",\n \"solana\",\n \"sui\",\n \"starknet\"\n];\nlet n = null;\nconst o = async () => {\n try {\n const t = await import(\"bitcoinjs-lib\"), e = await import(\"@bitcoinerlab/secp256k1\");\n try {\n t.initEccLib(e);\n } catch (i) {\n if (!/already initialized/i.test(String(i)))\n throw i;\n }\n return t;\n } catch (t) {\n throw n = null, new Error(\n `Failed to initialize bitcoinjs-lib: ${t instanceof Error ? t.message : String(t)}. Ensure bitcoinjs-lib and @bitcoinerlab/secp256k1 peer dependencies are installed.`\n );\n }\n}, c = async () => (n || (n = o()), n);\nasync function d(t, e = r.prod) {\n const i = await c();\n return `0x${i.address.toOutputScript(\n t,\n e === r.prod ? i.networks.bitcoin : i.networks.testnet\n ).toString(\"hex\")}`;\n}\nexport {\n p as DEFAULT_ENV,\n r as Env,\n u as ProviderKeys,\n d as getOutputScript\n};\n"],"names":["r","p","n","o","e","i","c","d"],"mappings":"wdAAK,MAACA,EAAI,CACR,KAAM,OACN,QAAS,UACT,MAAO,QACP,IAAK,MACL,IAAK,KACP,EAAGC,EAAID,EAAE,KAOT,IAAIE,EAAI,KACR,MAAMC,EAAI,SAAY,CACpB,GAAI,CACF,MAAM,EAAI,KAAM,QAAO,eAAe,EAAGC,EAAI,KAAM,QAAO,yBAAyB,EACnF,GAAI,CACF,EAAE,WAAWA,CAAC,CAChB,OAASC,EAAG,CACV,GAAI,CAAC,uBAAuB,KAAK,OAAOA,CAAC,CAAC,EACxC,MAAMA,CACV,CACA,OAAO,CACT,OAAS,EAAG,CACV,MAAMH,EAAI,KAAM,IAAI,MAClB,uCAAuC,aAAa,MAAQ,EAAE,QAAU,OAAO,CAAC,CAAC,qFACvF,CACE,CACF,EAAGI,EAAI,UAAaJ,IAAMA,EAAIC,EAAC,GAAKD,GACpC,eAAeK,EAAE,EAAGH,EAAIJ,EAAE,KAAM,CAC9B,MAAMK,EAAI,MAAMC,EAAC,EACjB,MAAO,KAAKD,EAAE,QAAQ,eACpB,EACAD,IAAMJ,EAAE,KAAOK,EAAE,SAAS,QAAUA,EAAE,SAAS,OACnD,EAAI,SAAS,KAAK,CAAC,EACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-CfcQ_g3t.js","sources":["../../../sdk-common/dist/index.js"],"sourcesContent":["const r = {\n prod: \"prod\",\n testnet: \"testnet\",\n stage: \"stage\",\n dev: \"dev\",\n ibc: \"ibc\"\n}, p = r.prod, u = [\n \"evm\",\n \"bitcoin\",\n \"solana\",\n \"sui\",\n \"starknet\"\n];\nlet n = null;\nconst o = async () => {\n try {\n const t = await import(\"bitcoinjs-lib\"), e = await import(\"@bitcoinerlab/secp256k1\");\n try {\n t.initEccLib(e);\n } catch (i) {\n if (!/already initialized/i.test(String(i)))\n throw i;\n }\n return t;\n } catch (t) {\n throw n = null, new Error(\n `Failed to initialize bitcoinjs-lib: ${t instanceof Error ? t.message : String(t)}. Ensure bitcoinjs-lib and @bitcoinerlab/secp256k1 peer dependencies are installed.`\n );\n }\n}, c = async () => (n || (n = o()), n);\nasync function d(t, e = r.prod) {\n const i = await c();\n return `0x${i.address.toOutputScript(\n t,\n e === r.prod ? i.networks.bitcoin : i.networks.testnet\n ).toString(\"hex\")}`;\n}\nexport {\n p as DEFAULT_ENV,\n r as Env,\n u as ProviderKeys,\n d as getOutputScript\n};\n
|
|
1
|
+
{"version":3,"file":"index-CfcQ_g3t.js","sources":["../../../sdk-common/dist/index.js"],"sourcesContent":["const r = {\n prod: \"prod\",\n testnet: \"testnet\",\n stage: \"stage\",\n dev: \"dev\",\n ibc: \"ibc\"\n}, p = r.prod, u = [\n \"evm\",\n \"bitcoin\",\n \"solana\",\n \"sui\",\n \"starknet\"\n];\nlet n = null;\nconst o = async () => {\n try {\n const t = await import(\"bitcoinjs-lib\"), e = await import(\"@bitcoinerlab/secp256k1\");\n try {\n t.initEccLib(e);\n } catch (i) {\n if (!/already initialized/i.test(String(i)))\n throw i;\n }\n return t;\n } catch (t) {\n throw n = null, new Error(\n `Failed to initialize bitcoinjs-lib: ${t instanceof Error ? t.message : String(t)}. Ensure bitcoinjs-lib and @bitcoinerlab/secp256k1 peer dependencies are installed.`\n );\n }\n}, c = async () => (n || (n = o()), n);\nasync function d(t, e = r.prod) {\n const i = await c();\n return `0x${i.address.toOutputScript(\n t,\n e === r.prod ? i.networks.bitcoin : i.networks.testnet\n ).toString(\"hex\")}`;\n}\nexport {\n p as DEFAULT_ENV,\n r as Env,\n u as ProviderKeys,\n d as getOutputScript\n};\n"],"names":["p","n","e","c","d"],"mappings":"AAAK,MAAC,IAAI;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,KAAK;AAAA,EACL,KAAK;AACP,GAAGA,IAAI,EAAE;AAOT,IAAIC,IAAI;AACR,MAAM,IAAI,YAAY;AACpB,MAAI;AACF,UAAM,IAAI,MAAM,OAAO,eAAe,GAAGC,IAAI,MAAM,OAAO,yBAAyB;AACnF,QAAI;AACF,QAAE,WAAWA,CAAC;AAAA,IAChB,SAAS,GAAG;AACV,UAAI,CAAC,uBAAuB,KAAK,OAAO,CAAC,CAAC;AACxC,cAAM;AAAA,IACV;AACA,WAAO;AAAA,EACT,SAAS,GAAG;AACV,UAAMD,IAAI,MAAM,IAAI;AAAA,MAClB,uCAAuC,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,IACvF;AAAA,EACE;AACF,GAAGE,IAAI,aAAaF,MAAMA,IAAI,EAAC,IAAKA;AACpC,eAAeG,EAAE,GAAGF,IAAI,EAAE,MAAM;AAC9B,QAAM,IAAI,MAAMC,EAAC;AACjB,SAAO,KAAK,EAAE,QAAQ;AAAA,IACpB;AAAA,IACAD,MAAM,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,SAAS;AAAA,EACnD,EAAI,SAAS,KAAK,CAAC;AACnB;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as r } from "./index-CfcQ_g3t.js";
|
|
2
|
-
import {
|
|
2
|
+
import { E as n } from "./token-addresses-FKpA3uc4.js";
|
|
3
3
|
function c(t = r) {
|
|
4
4
|
var o;
|
|
5
5
|
return ((o = n) == null ? void 0 : o[t]) || {};
|
|
@@ -7,4 +7,4 @@ function c(t = r) {
|
|
|
7
7
|
export {
|
|
8
8
|
c as g
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=lbtc-addresses-
|
|
10
|
+
//# sourceMappingURL=lbtc-addresses-BLRmtR3c.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lbtc-addresses-
|
|
1
|
+
{"version":3,"file":"lbtc-addresses-BLRmtR3c.js","sources":["../../src/tokens/lbtc-addresses.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\nimport { Address } from 'viem';\n\nimport { ChainId } from '../common/chains';\nimport { EVM_LBTC_ADDRESSES } from './token-addresses';\n\ntype LbtcContractAddresses = Partial<Record<ChainId, Address>>;\n\n/**\n * Gets the collection of LBTC contract addresses based on the provided\n * environment.\n */\nexport function getLbtcContractAddresses(\n env: Env = DEFAULT_ENV,\n): LbtcContractAddresses {\n const found = EVM_LBTC_ADDRESSES?.[env];\n return found || {};\n}\n"],"names":["getLbtcContractAddresses","env","DEFAULT_ENV","_a","EVM_LBTC_ADDRESSES"],"mappings":";;AAYO,SAASA,EACdC,IAAWC,GACY;;AAEvB,WADcC,IAAAC,MAAA,gBAAAD,EAAqBF,OACnB,CAAA;AAClB;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const s=require("./index-BKzxeh1Y.cjs"),n=require("./token-addresses-
|
|
2
|
-
//# sourceMappingURL=lbtc-addresses-
|
|
1
|
+
"use strict";const s=require("./index-BKzxeh1Y.cjs"),n=require("./token-addresses-DRBecUa7.cjs");function r(t=s.p){var e;return((e=n.EVM_LBTC_ADDRESSES)==null?void 0:e[t])||{}}exports.getLbtcContractAddresses=r;
|
|
2
|
+
//# sourceMappingURL=lbtc-addresses-xyTYV7hx.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lbtc-addresses-
|
|
1
|
+
{"version":3,"file":"lbtc-addresses-xyTYV7hx.cjs","sources":["../../src/tokens/lbtc-addresses.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\nimport { Address } from 'viem';\n\nimport { ChainId } from '../common/chains';\nimport { EVM_LBTC_ADDRESSES } from './token-addresses';\n\ntype LbtcContractAddresses = Partial<Record<ChainId, Address>>;\n\n/**\n * Gets the collection of LBTC contract addresses based on the provided\n * environment.\n */\nexport function getLbtcContractAddresses(\n env: Env = DEFAULT_ENV,\n): LbtcContractAddresses {\n const found = EVM_LBTC_ADDRESSES?.[env];\n return found || {};\n}\n"],"names":["getLbtcContractAddresses","env","DEFAULT_ENV","EVM_LBTC_ADDRESSES"],"mappings":"iGAYO,SAASA,EACdC,EAAWC,IACY,OAEvB,QADcC,EAAAA,EAAAA,qBAAAA,YAAAA,EAAqBF,KACnB,CAAA,CAClB"}
|