@lombard.finance/sdk 4.3.2 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +6 -6
- package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.d.ts.map +1 -1
- package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.d.ts.map +1 -1
- package/dist/api.cjs +1 -1
- package/dist/api.js +29 -29
- package/dist/bridge.cjs +1 -1
- package/dist/bridge.js +7 -7
- package/dist/btc.cjs +1 -1
- package/dist/btc.js +10 -10
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts +7 -4
- package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/config/index.d.ts +16 -8
- package/dist/chains/btc/actions/deposit/config/index.d.ts.map +1 -1
- package/dist/chains/btc/actions/deposit/config/solana.d.ts +20 -0
- package/dist/chains/btc/actions/deposit/config/solana.d.ts.map +1 -0
- package/dist/chains/btc/actions/deposit/config/types.d.ts +4 -3
- package/dist/chains/btc/actions/deposit/config/types.d.ts.map +1 -1
- package/dist/chains/evm/EvmActions.d.ts +4 -4
- package/dist/chains/evm/actions/deposit/config/evm.d.ts +3 -3
- package/dist/chains/evm/actions/deposit/config/evm.d.ts.map +1 -1
- package/dist/chains/evm/actions/deposit/config/types.d.ts +1 -1
- package/dist/chains/evm/actions/deposit/config/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/deposit/factory.d.ts +1 -1
- package/dist/chains/evm/actions/deposit/types.d.ts +1 -1
- package/dist/chains/evm/actions/deposit/types.d.ts.map +1 -1
- package/dist/chains/evm/actions/redeem/EvmRedeem.d.ts.map +1 -1
- package/dist/chains/evm/actions/unstake/EvmUnstake.d.ts.map +1 -1
- package/dist/chains/solana/SolanaActions.d.ts +10 -0
- package/dist/chains/solana/SolanaActions.d.ts.map +1 -1
- package/dist/chains/solana/actions/index.d.ts +1 -0
- package/dist/chains/solana/actions/index.d.ts.map +1 -1
- package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts +37 -0
- package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/config/index.d.ts +8 -0
- package/dist/chains/solana/actions/redeem/config/index.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/config/solana.d.ts +22 -0
- package/dist/chains/solana/actions/redeem/config/solana.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/config/types.d.ts +35 -0
- package/dist/chains/solana/actions/redeem/config/types.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/factory.d.ts +12 -0
- package/dist/chains/solana/actions/redeem/factory.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/index.d.ts +9 -0
- package/dist/chains/solana/actions/redeem/index.d.ts.map +1 -0
- package/dist/chains/solana/actions/redeem/types.d.ts +52 -0
- package/dist/chains/solana/actions/redeem/types.d.ts.map +1 -0
- package/dist/chains/solana/utils.d.ts +15 -0
- package/dist/chains/solana/utils.d.ts.map +1 -0
- package/dist/chunks/BtcActions-BOVJrdTI.cjs +2 -0
- package/dist/chunks/BtcActions-BOVJrdTI.cjs.map +1 -0
- package/dist/chunks/{BtcActions-k-qs1uO0.js → BtcActions-_a8r3Q7c.js} +457 -414
- package/dist/chunks/BtcActions-_a8r3Q7c.js.map +1 -0
- package/dist/chunks/{EvmActions-B_dF42So.js → EvmActions-D4vFpbYk.js} +163 -173
- package/dist/chunks/EvmActions-D4vFpbYk.js.map +1 -0
- package/dist/chunks/EvmActions-VrDbgMDy.cjs +2 -0
- package/dist/chunks/EvmActions-VrDbgMDy.cjs.map +1 -0
- package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs +2 -0
- package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs.map +1 -0
- package/dist/chunks/{ReferralsClient-DbFWWtVi.js → ReferralsClient-DvEsA3II.js} +160 -160
- package/dist/chunks/ReferralsClient-DvEsA3II.js.map +1 -0
- package/dist/chunks/{api-config-CtcP3TVl.js → api-config-Dm6dR85f.js} +6 -6
- package/dist/chunks/{api-config-CtcP3TVl.js.map → api-config-Dm6dR85f.js.map} +1 -1
- package/dist/chunks/{approveLBTC-CZiZmdcX.cjs → approveLBTC-CUXEC3kw.cjs} +2 -2
- package/dist/chunks/{approveLBTC-CZiZmdcX.cjs.map → approveLBTC-CUXEC3kw.cjs.map} +1 -1
- package/dist/chunks/approveLBTC-Du2El1tW.js +26 -0
- package/dist/chunks/{approveLBTC-B5-ZWqct.js.map → approveLBTC-Du2El1tW.js.map} +1 -1
- package/dist/chunks/{array-Cev6kyLJ.js → array-DYttUPf5.js} +7 -7
- package/dist/chunks/{array-Cev6kyLJ.js.map → array-DYttUPf5.js.map} +1 -1
- package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs → blockchain-identifier-BTPGxLio.cjs} +2 -2
- package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs.map → blockchain-identifier-BTPGxLio.cjs.map} +1 -1
- package/dist/chunks/{blockchain-identifier-BmadkNtK.js → blockchain-identifier-CTVaEPpY.js} +24 -24
- package/dist/chunks/{blockchain-identifier-BmadkNtK.js.map → blockchain-identifier-CTVaEPpY.js.map} +1 -1
- package/dist/chunks/{bridge-CTsiodO1.js → bridge-DqGabhIY.js} +13 -13
- package/dist/chunks/{bridge-CTsiodO1.js.map → bridge-DqGabhIY.js.map} +1 -1
- package/dist/chunks/{bridge-BzRlY9pP.cjs → bridge-dWaKrMKm.cjs} +2 -2
- package/dist/chunks/{bridge-BzRlY9pP.cjs.map → bridge-dWaKrMKm.cjs.map} +1 -1
- package/dist/chunks/{config-hFKqUyg3.js → config-DghboRx0.js} +10 -10
- package/dist/chunks/{config-hFKqUyg3.js.map → config-DghboRx0.js.map} +1 -1
- package/dist/chunks/{config-l4ZaZw_g.cjs → config-DmCmanM_.cjs} +2 -2
- package/dist/chunks/{config-l4ZaZw_g.cjs.map → config-DmCmanM_.cjs.map} +1 -1
- package/dist/chunks/constants-D1FnS2Z8.js +6 -0
- package/dist/chunks/constants-D1FnS2Z8.js.map +1 -0
- package/dist/chunks/constants-ueShGH9R.cjs +2 -0
- package/dist/chunks/constants-ueShGH9R.cjs.map +1 -0
- package/dist/chunks/{defi-registry-BIRv_zkp.cjs → defi-registry-DDNavtO1.cjs} +2 -2
- package/dist/chunks/{defi-registry-BIRv_zkp.cjs.map → defi-registry-DDNavtO1.cjs.map} +1 -1
- package/dist/chunks/{defi-registry-wNFN3qyB.js → defi-registry-DxjjBQTV.js} +13 -13
- package/dist/chunks/{defi-registry-wNFN3qyB.js.map → defi-registry-DxjjBQTV.js.map} +1 -1
- package/dist/chunks/{depositStatus-DM7fRmbN.js → depositStatus-05_X7FVs.js} +42 -42
- package/dist/chunks/{depositStatus-DM7fRmbN.js.map → depositStatus-05_X7FVs.js.map} +1 -1
- package/dist/chunks/{depositStatus-C3-EgT2a.cjs → depositStatus-CUjHpXFJ.cjs} +2 -2
- package/dist/chunks/{depositStatus-C3-EgT2a.cjs.map → depositStatus-CUjHpXFJ.cjs.map} +1 -1
- package/dist/chunks/events-5c8IHjEF.cjs +2 -0
- package/dist/chunks/events-5c8IHjEF.cjs.map +1 -0
- package/dist/chunks/{events-DdV_xi-2.js → events-rgJZNpHd.js} +414 -303
- package/dist/chunks/events-rgJZNpHd.js.map +1 -0
- package/dist/chunks/evm-by-btc-address-CZvE15lx.js +39 -0
- package/dist/chunks/{evm-by-btc-address-CwLiENtM.js.map → evm-by-btc-address-CZvE15lx.js.map} +1 -1
- package/dist/chunks/fee-requirements-CCNsxAvJ.js +14 -0
- package/dist/chunks/{fee-requirements-x8-8mpJ7.js.map → fee-requirements-CCNsxAvJ.js.map} +1 -1
- package/dist/chunks/get-exchange-ratio-B-xzYND1.js +20 -0
- package/dist/chunks/{get-exchange-ratio-NtnkG1kZ.js.map → get-exchange-ratio-B-xzYND1.js.map} +1 -1
- package/dist/chunks/{get-exchange-ratio-C-7DadfD.cjs → get-exchange-ratio-BEhD4gLB.cjs} +2 -2
- package/dist/chunks/{get-exchange-ratio-C-7DadfD.cjs.map → get-exchange-ratio-BEhD4gLB.cjs.map} +1 -1
- package/dist/chunks/{get-positions-summary-DkZZYbGP.cjs → get-positions-summary-Dh1QPLYO.cjs} +2 -2
- package/dist/chunks/{get-positions-summary-DkZZYbGP.cjs.map → get-positions-summary-Dh1QPLYO.cjs.map} +1 -1
- package/dist/chunks/{get-positions-summary-B_MmGHLv.js → get-positions-summary-iYshN1RQ.js} +28 -28
- package/dist/chunks/{get-positions-summary-B_MmGHLv.js.map → get-positions-summary-iYshN1RQ.js.map} +1 -1
- package/dist/chunks/{get-vault-tvl-YAXePAW3.js → get-vault-tvl-Ct_Zkg7C.js} +41 -41
- package/dist/chunks/{get-vault-tvl-YAXePAW3.js.map → get-vault-tvl-Ct_Zkg7C.js.map} +1 -1
- package/dist/chunks/{get-vault-tvl-DmTUbOY7.cjs → get-vault-tvl-D_tQIDAs.cjs} +2 -2
- package/dist/chunks/{get-vault-tvl-DmTUbOY7.cjs.map → get-vault-tvl-D_tQIDAs.cjs.map} +1 -1
- package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs → get-vault-withdrawals-8ALlEiAC.cjs} +2 -2
- package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs.map → get-vault-withdrawals-8ALlEiAC.cjs.map} +1 -1
- package/dist/chunks/get-vault-withdrawals-jk7Sv4S4.js +161 -0
- package/dist/chunks/{get-vault-withdrawals-BrpZlt6s.js.map → get-vault-withdrawals-jk7Sv4S4.js.map} +1 -1
- package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs → getSharesByAddress-D8hehnP1.cjs} +2 -2
- package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs.map → getSharesByAddress-D8hehnP1.cjs.map} +1 -1
- package/dist/chunks/{getSharesByAddress-BiruCDp6.js → getSharesByAddress-_tBaIBsw.js} +38 -38
- package/dist/chunks/{getSharesByAddress-BiruCDp6.js.map → getSharesByAddress-_tBaIBsw.js.map} +1 -1
- package/dist/chunks/getUserStakeAndBakeSignature-CSEyzgMc.cjs +2 -0
- package/dist/chunks/getUserStakeAndBakeSignature-CSEyzgMc.cjs.map +1 -0
- package/dist/chunks/getUserStakeAndBakeSignature-Su-k10ap.js +125 -0
- package/dist/chunks/getUserStakeAndBakeSignature-Su-k10ap.js.map +1 -0
- package/dist/chunks/lbtc-addresses-D8MYCdsx.js +10 -0
- package/dist/chunks/{lbtc-addresses-BLRmtR3c.js.map → lbtc-addresses-D8MYCdsx.js.map} +1 -1
- package/dist/chunks/{lbtc-addresses-xyTYV7hx.cjs → lbtc-addresses-Kil252DX.cjs} +2 -2
- package/dist/chunks/{lbtc-addresses-xyTYV7hx.cjs.map → lbtc-addresses-Kil252DX.cjs.map} +1 -1
- package/dist/chunks/numbers-CclN2Ohk.js +15 -0
- package/dist/chunks/{numbers-CM-lcmt4.js.map → numbers-CclN2Ohk.js.map} +1 -1
- package/dist/chunks/parameters-C_16L5ft.js +11 -0
- package/dist/chunks/{parameters-CDV-6Hk5.js.map → parameters-C_16L5ft.js.map} +1 -1
- package/dist/chunks/satoshi-CSoJBXc6.js +19 -0
- package/dist/chunks/{satoshi-Ch6y8aYG.js.map → satoshi-CSoJBXc6.js.map} +1 -1
- package/dist/chunks/statusConstants-Cri7yswV.cjs +2 -0
- package/dist/chunks/statusConstants-Cri7yswV.cjs.map +1 -0
- package/dist/chunks/{statusConstants-DFxMrVob.js → statusConstants-Zii1786K.js} +1134 -1113
- package/dist/chunks/statusConstants-Zii1786K.js.map +1 -0
- package/dist/chunks/{storeNetworkFeeSignature-BZGL2Zn_.js → storeNetworkFeeSignature-BODIpq3Y.js} +26 -26
- package/dist/chunks/{storeNetworkFeeSignature-BZGL2Zn_.js.map → storeNetworkFeeSignature-BODIpq3Y.js.map} +1 -1
- package/dist/chunks/{storeNetworkFeeSignature-D7yo6lDV.cjs → storeNetworkFeeSignature-Buk4091C.cjs} +2 -2
- package/dist/chunks/{storeNetworkFeeSignature-D7yo6lDV.cjs.map → storeNetworkFeeSignature-Buk4091C.cjs.map} +1 -1
- package/dist/chunks/time-Sa5gggPG.js +24 -0
- package/dist/chunks/{time-QPeEEEnQ.js.map → time-Sa5gggPG.js.map} +1 -1
- package/dist/chunks/{token-addresses-FKpA3uc4.js → token-addresses-D0v5cR1j.js} +174 -163
- package/dist/chunks/{token-addresses-FKpA3uc4.js.map → token-addresses-D0v5cR1j.js.map} +1 -1
- package/dist/chunks/{token-addresses-DRBecUa7.cjs → token-addresses-nzvTOi24.cjs} +2 -2
- package/dist/chunks/{token-addresses-DRBecUa7.cjs.map → token-addresses-nzvTOi24.cjs.map} +1 -1
- package/dist/chunks/{tokens-D_HeVB5p.cjs → tokens-BkvA0Gp1.cjs} +2 -2
- package/dist/chunks/{tokens-D_HeVB5p.cjs.map → tokens-BkvA0Gp1.cjs.map} +1 -1
- package/dist/chunks/{tokens-C6qZHzph.js → tokens-DgC1hfkm.js} +18 -18
- package/dist/chunks/{tokens-C6qZHzph.js.map → tokens-DgC1hfkm.js.map} +1 -1
- package/dist/chunks/{unstakeLBTC-H0zdYQa6.cjs → unstakeLBTC-CmoCaGX9.cjs} +2 -2
- package/dist/chunks/{unstakeLBTC-H0zdYQa6.cjs.map → unstakeLBTC-CmoCaGX9.cjs.map} +1 -1
- package/dist/chunks/{unstakeLBTC-DAIR9NO_.js → unstakeLBTC-DtvVbpbU.js} +50 -50
- package/dist/chunks/{unstakeLBTC-DAIR9NO_.js.map → unstakeLBTC-DtvVbpbU.js.map} +1 -1
- package/dist/chunks/{withdraw-hHueI2p7.js → withdraw-DgjuaUN3.js} +45 -45
- package/dist/chunks/{withdraw-hHueI2p7.js.map → withdraw-DgjuaUN3.js.map} +1 -1
- package/dist/chunks/{withdraw-C1fMFSwy.cjs → withdraw-i0AueZ_C.cjs} +2 -2
- package/dist/chunks/{withdraw-C1fMFSwy.cjs.map → withdraw-i0AueZ_C.cjs.map} +1 -1
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/contracts.cjs +1 -1
- package/dist/contracts.js +16 -16
- package/dist/core/assets/catalog.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +85 -85
- package/dist/debug.js +4 -4
- package/dist/defi.cjs +1 -1
- package/dist/defi.js +10 -10
- package/dist/evm.cjs +1 -1
- package/dist/evm.js +34 -34
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +287 -283
- package/dist/index.js.map +1 -1
- package/dist/metrics.cjs +1 -1
- package/dist/metrics.js +6 -6
- package/dist/stories/arg-types.d.ts +1 -0
- package/dist/stories/arg-types.d.ts.map +1 -1
- package/dist/tokens/token-addresses.d.ts +2 -2
- package/dist/tokens/token-addresses.d.ts.map +1 -1
- package/dist/utils/chain.d.ts +7 -0
- package/dist/utils/chain.d.ts.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +76 -76
- package/dist/vaults.cjs +1 -1
- package/dist/vaults.js +14 -14
- package/package.json +19 -6
- package/dist/chunks/BtcActions-XbVRQEcM.cjs +0 -2
- package/dist/chunks/BtcActions-XbVRQEcM.cjs.map +0 -1
- package/dist/chunks/BtcActions-k-qs1uO0.js.map +0 -1
- package/dist/chunks/EvmActions-BVzQ3fLK.cjs +0 -2
- package/dist/chunks/EvmActions-BVzQ3fLK.cjs.map +0 -1
- package/dist/chunks/EvmActions-B_dF42So.js.map +0 -1
- package/dist/chunks/ReferralsClient-BC-1wT1q.cjs +0 -2
- package/dist/chunks/ReferralsClient-BC-1wT1q.cjs.map +0 -1
- package/dist/chunks/ReferralsClient-DbFWWtVi.js.map +0 -1
- package/dist/chunks/approveLBTC-B5-ZWqct.js +0 -26
- package/dist/chunks/constants-BBK-JNcY.cjs +0 -2
- package/dist/chunks/constants-BBK-JNcY.cjs.map +0 -1
- package/dist/chunks/constants-CuT4axsy.js +0 -5
- package/dist/chunks/constants-CuT4axsy.js.map +0 -1
- package/dist/chunks/events-DdV_xi-2.js.map +0 -1
- package/dist/chunks/events-DqIJRzJo.cjs +0 -2
- package/dist/chunks/events-DqIJRzJo.cjs.map +0 -1
- package/dist/chunks/evm-by-btc-address-CwLiENtM.js +0 -39
- package/dist/chunks/fee-requirements-x8-8mpJ7.js +0 -14
- package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +0 -20
- package/dist/chunks/get-vault-withdrawals-BrpZlt6s.js +0 -161
- package/dist/chunks/getUserStakeAndBakeSignature-BxRq2cI1.cjs +0 -2
- package/dist/chunks/getUserStakeAndBakeSignature-BxRq2cI1.cjs.map +0 -1
- package/dist/chunks/getUserStakeAndBakeSignature-NGGblnJl.js +0 -120
- package/dist/chunks/getUserStakeAndBakeSignature-NGGblnJl.js.map +0 -1
- package/dist/chunks/lbtc-addresses-BLRmtR3c.js +0 -10
- package/dist/chunks/numbers-CM-lcmt4.js +0 -15
- package/dist/chunks/parameters-CDV-6Hk5.js +0 -11
- package/dist/chunks/satoshi-Ch6y8aYG.js +0 -19
- package/dist/chunks/statusConstants-BLiNBT6s.cjs +0 -2
- package/dist/chunks/statusConstants-BLiNBT6s.cjs.map +0 -1
- package/dist/chunks/statusConstants-DFxMrVob.js.map +0 -1
- package/dist/chunks/time-QPeEEEnQ.js +0 -24
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReferralsClient-DvEsA3II.js","sources":["../../src/api-functions/getDepositBtcAddress/make-request.ts","../../src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts","../../src/utils/pagination.ts","../../src/api-functions/getDepositsByAddress/getDepositsByAddress.ts","../../src/api-functions/getPointsByAddress/getPointsByAddress.ts","../../src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts","../../src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts","../../src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts","../../src/referrals/ReferralsClient.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 {\n IApiError,\n IDepositAddressesResponse,\n IGetDepositBtcAddressesParameters,\n} from './types';\n\nexport async function makeRequest({\n address,\n chainId,\n env,\n limit,\n offset,\n partnerId,\n}: IGetDepositBtcAddressesParameters) {\n const { baseApiUrl } = getApiConfig(env);\n\n // throws an error if `chainId` is unknown\n const destinationBlockchain = getChainNameById(chainId);\n if (destinationBlockchain === BlockchainIdentifier.starknet) {\n address = pad(address as Address, { size: 32 });\n }\n\n const params = {\n asc: false,\n limit,\n offset,\n referralId: partnerId || 'lombard',\n };\n\n // remove undefined fields, undefined limit and offset params cause error\n for (const [k, v] of Object.entries(params)) {\n if (v === undefined) {\n delete params[k as keyof typeof params];\n }\n }\n\n const url = `api/v1/address/destination/${destinationBlockchain}/${address}`;\n try {\n const { data } = await axios.get<IDepositAddressesResponse>(url, {\n baseURL: baseApiUrl,\n params,\n });\n\n return data.addresses || [];\n } catch (err) {\n if (axios.isAxiosError<IApiError>(err)) {\n const message = err.response?.data.message;\n throw new Error(message);\n }\n }\n}\n","import { Address, pad } from 'viem';\n\nimport { getChainNameById } from '../../common/blockchain-identifier';\nimport {\n isSolanaChain,\n isStarknetChainId,\n isSuiChain,\n isValidChain,\n} from '../../common/chains';\nimport {\n AddressKind,\n getSolanaTokenAddress,\n getStarknetTokenAddress,\n getSuiTokenAddress,\n Token,\n} from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { makeRequest } from './make-request';\nimport type {\n IGetDepositBtcAddressesParameters,\n IGetDepositBtcAddressParameters,\n} from './types';\n\n/**\n * Returns the current address for depositing BTC by given parameters.\n *\n * @throws {Error} - Throws an error if no address found or the provided chain id is not supported.\n */\nexport async function getDepositBtcAddress({\n address,\n chainId,\n env,\n partnerId,\n token: tokenParam = Token.LBTC,\n}: IGetDepositBtcAddressParameters) {\n const _addresses = await makeRequest({\n address,\n chainId,\n env,\n partnerId,\n });\n\n let depositAddress: string | undefined = undefined;\n\n if (![Token.LBTC, Token.BTCK, Token.BTCb].includes(tokenParam)) {\n throw new Error('Unsupported token');\n }\n\n // Filter deposit addresses by the destination token\n let tokenAddressFilter:\n | { token_address: string; aux_version?: number }\n | undefined = undefined;\n try {\n if (isValidChain(chainId)) {\n const tokenContractInfo = await getTokenContractInfo(\n tokenParam,\n chainId,\n env,\n AddressKind.Adapter,\n );\n tokenAddressFilter = {\n token_address: tokenContractInfo.address.toLowerCase(),\n };\n }\n\n if (isSuiChain(chainId)) {\n const tokenAddress = getSuiTokenAddress(chainId, env);\n if (tokenAddress) {\n tokenAddressFilter = {\n token_address: tokenAddress.toLowerCase(),\n };\n }\n }\n\n if (isSolanaChain(chainId)) {\n const solanaToken =\n tokenParam === Token.BTCb ? Token.BTCb : Token.LBTC;\n const tokenAddress = getSolanaTokenAddress(chainId, env, solanaToken);\n if (tokenAddress) {\n tokenAddressFilter = {\n token_address: tokenAddress.toLowerCase(),\n };\n }\n }\n\n if (isStarknetChainId(chainId)) {\n // api returns the address of the asset router contract\n const tokenAddress = getStarknetTokenAddress(chainId, env, 'assetRouter');\n if (tokenAddress) {\n tokenAddressFilter = {\n token_address: tokenAddress.toLowerCase(),\n };\n }\n }\n } catch {\n // NOOP\n }\n\n if (isStarknetChainId(chainId)) {\n address = pad(address as Address, { size: 32 }).toLowerCase();\n }\n\n const addresses = (_addresses || [])\n .filter(\n a =>\n // filter by chain id\n a.deposit_metadata.to_blockchain.toLowerCase() ===\n getChainNameById(chainId).toLowerCase() &&\n // filter by address\n a.deposit_metadata.to_address.toLowerCase() === address.toLowerCase(),\n )\n .filter(a => {\n if (!tokenAddressFilter) {\n return false;\n }\n\n // check if token addresses are matched\n let isForToken =\n a.deposit_metadata.token_address?.toLowerCase() ===\n tokenAddressFilter.token_address;\n // check if aux version is matched (if provided)\n if (tokenAddressFilter.aux_version != null) {\n isForToken =\n isForToken &&\n a.deposit_metadata.aux_version === tokenAddressFilter.aux_version;\n }\n\n // token_address can also be empty (null) when the address is for LBTC.\n // nosemgrep: codacy.tools-configs.rules_lgpl_javascript_crypto_rule-node-timing-attack -- comparing Token enum values, not secrets\n if (tokenParam === Token.LBTC) {\n isForToken = isForToken || !a.deposit_metadata.token_address;\n }\n\n // Solana backend may omit token_address and use aux_version instead.\n if (\n isSolanaChain(chainId) &&\n !isForToken &&\n !a.deposit_metadata.token_address\n ) {\n if (tokenParam === Token.BTCb || tokenParam === Token.BTCK) {\n isForToken = a.deposit_metadata.aux_version != null;\n } else if (tokenParam === Token.LBTC) {\n isForToken = a.deposit_metadata.aux_version == null;\n }\n }\n\n // Get only the addresses for the specified token.\n return isForToken;\n });\n\n if (addresses && addresses.length > 0) {\n const mostRecentAddress = addresses.reduce((mostRecent, cur) => {\n if (cur.created_at > mostRecent.created_at) {\n return cur;\n }\n return mostRecent;\n }, addresses[0]);\n\n if (!mostRecentAddress.deprecated) {\n depositAddress = mostRecentAddress.btc_address;\n }\n }\n\n if (!depositAddress) {\n throw new Error(\n `No deposit address found for ${address} on chain ${chainId}`,\n );\n }\n\n return depositAddress;\n}\n\n/**\n * Returns the addresses for depositing BTC by given parameters.\n * @throws {Error} - Throws an error if chain id is not supported.\n */\nexport async function getDepositBtcAddresses(\n parameters: IGetDepositBtcAddressesParameters,\n) {\n const addresses = await makeRequest(parameters);\n return addresses;\n}\n","import axios from 'axios';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\ntype FetchAllPaginatedParameters<T> = {\n /** The API endpoint. */\n endpoint: string | URL;\n /** Function to extract items array from API response. */\n extractItems: (data: unknown) => T[];\n /** The additional query parameters. */\n query?: Record<string, string | undefined>;\n /** The page size, default: 1000 */\n pageSize?: number;\n /** The maximum amount of expected records. */\n maxRecords?: number;\n};\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Generic helper to fetch all paginated items from an API endpoint.\n * Automatically handles `limit`, `offset` and the `has_more` flag.\n * If `has_more` is missing, pagination stops.\n *\n * @template T - Type of individual item\n * @param {FetchAllPaginatedParameters<T>} params - Parameters for fetching all items\n\n *\n * @returns {Promise<T[]>} - All items fetched across pages\n */\nexport async function fetchAllPaginated<T>({\n endpoint,\n extractItems,\n query = {},\n pageSize = 1_000,\n maxRecords,\n}: FetchAllPaginatedParameters<T>): Promise<T[]> {\n let allItems: T[] = [];\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n const url = new URL(endpoint);\n\n url.searchParams.set('limit', pageSize.toString());\n url.searchParams.set('offset', offset.toString());\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) url.searchParams.set(key, String(value));\n }\n\n const { data } = await axios.get(url.toString());\n const items = extractItems(data);\n\n allItems = allItems.concat(items);\n offset += items.length;\n\n if (maxRecords && allItems.length >= maxRecords) {\n allItems = allItems.slice(0, maxRecords);\n break;\n }\n\n hasMore = items.length > 0 && (data.has_more ?? false);\n }\n\n return allItems;\n}\n","import { Env } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { getChainIdByName } from '../../common/blockchain-identifier';\nimport {\n ChainId,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport {\n AddressKind,\n getTokenByAddress,\n Token,\n} from '../../tokens/token-addresses';\nimport { fromBaseDenomination } from '../../tokens/tokens';\nimport { fetchAllPaginated } from '../../utils/pagination';\nimport { BTC_DECIMALS, fromSatoshi } from '../../utils/satoshi';\n\n/** The default number of decimals for the deposit amount (value). */\nconst DECIMALS = BTC_DECIMALS;\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\ntype Address = string;\n\n/**\n * Enum representing the notarization status of a deposit transaction.\n */\nexport enum ENotarizationStatus {\n /** Status is unspecified or unknown */\n NOTARIZATION_STATUS_UNSPECIFIED = 'NOTARIZATION_STATUS_UNSPECIFIED',\n\n /** Initial status when a deposit transaction is created but not yet processed */\n NOTARIZATION_STATUS_PENDING = 'NOTARIZATION_STATUS_PENDING',\n\n /** The deposit has been submitted for notarization */\n NOTARIZATION_STATUS_SUBMITTED = 'NOTARIZATION_STATUS_SUBMITTED',\n\n /** The notarization session was approved successfully */\n NOTARIZATION_STATUS_SESSION_APPROVED = 'NOTARIZATION_STATUS_SESSION_APPROVED',\n\n /** The notarization session failed */\n NOTARIZATION_STATUS_FAILED = 'NOTARIZATION_STATUS_FAILED',\n\n /** The notarization session was handled by GMP */\n NOTARIZATION_STATUS_GMP_HANDLED = 'NOTARIZATION_STATUS_GMP_HANDLED',\n}\n\n/**\n * Enum representing the state of a notarization session.\n */\nexport enum ESessionState {\n /** Session state is unspecified or unknown */\n SESSION_STATE_UNSPECIFIED = 'SESSION_STATE_UNSPECIFIED',\n\n /** Session is currently pending */\n SESSION_STATE_PENDING = 'SESSION_STATE_PENDING',\n\n /** Session has completed successfully */\n SESSION_STATE_COMPLETED = 'SESSION_STATE_COMPLETED',\n\n /** Session has expired without completion */\n SESSION_STATE_EXPIRED = 'SESSION_STATE_EXPIRED',\n}\n\nexport interface NativeDeposit {\n /** Transaction hash on the source blockchain */\n tx_hash: string;\n\n /** Event index inside the transaction (for multi-event transactions) */\n event_index: number;\n\n /** Source blockchain identifier (e.g., BLOCKCHAIN_KATANA) */\n from_blockchain: string;\n\n /** Destination blockchain identifier */\n to_blockchain: string;\n\n /** Sender address on the source chain */\n from_address: string;\n\n /** Receiver address on the destination chain */\n to_address: string;\n\n /** Destination token contract address (if applicable) */\n to_token_address: string;\n\n /** Block height of the source chain confirmation */\n block_height: string;\n\n /** Block time of the source chain confirmation (ISO 8601) */\n block_time: string;\n\n /** Amount deposited (string to preserve precision) */\n amount: string;\n\n /** Hash of the payload that proves the deposit details */\n payload_hash: string;\n\n /** Raw payload bytes (hex-encoded) */\n raw_payload: string;\n\n /** Cryptographic proof (hex-encoded) */\n proof: string;\n\n /** ID of the notarization session linked to this deposit */\n session_id: string;\n\n /** Current notarization status of this deposit */\n notarization_status: ENotarizationStatus;\n\n /** Current session state of this deposit */\n session_state: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed */\n claim_tx?: string;\n\n /** True if the deposit is sanctioned */\n sanctioned?: boolean;\n}\n\n/** Top-level response from the Native Deposits API */\nexport interface NativeDepositsResponse {\n /** List of native deposit records */\n deposits: NativeDeposit[];\n\n /** True if there are more deposits available */\n has_more: boolean;\n}\n\nexport interface DirectDeposit {\n /** Transaction ID on the source chain */\n txid: string;\n\n /** Event index inside the transaction (useful for multi-event transactions) */\n index: string;\n\n /** Block height of the source chain confirmation */\n block_height: string;\n\n /** Amount deposited (string to preserve precision) */\n value: string;\n\n /** Destination address (EVM or BTC) */\n address: string;\n\n /** Hash of the payload proving the deposit */\n payload_hash: string;\n\n /** Raw payload bytes (hex-encoded) */\n raw_payload: string;\n\n /** Cryptographic proof (hex-encoded) */\n proof: string;\n\n /** Notarization session ID */\n session_id: string;\n\n /** Current notarization status */\n notarization_status: ENotarizationStatus;\n\n /** Current session state */\n session_state: ESessionState;\n\n /** Destination blockchain identifier */\n to_chain: string;\n\n /** Claim transaction hash on the destination chain, if claimed */\n claim_tx?: string;\n\n /** True if the deposit is sanctioned */\n sanctioned?: boolean;\n\n /** Block time of the source chain confirmation (timestamp as string) */\n block_time: string;\n\n /** Notarization wait duration (optional) */\n notarization_wait_dur?: string;\n\n /** Token address for the deposit */\n token_address?: string;\n\n /** Auxiliary version (if applicable) */\n aux_version?: number;\n\n /** Amount minted */\n token_amount?: string;\n}\n\n/** Top-level response from the Direct BTC Deposits API */\nexport interface DirectDepositsResponse {\n /** List of direct deposit records */\n outputs: DirectDeposit[];\n\n /** True if there are more deposits available */\n has_more: boolean;\n}\n\n/**\n * A unified deposit record returned from either\n * Direct BTC Deposits or Native Deposits APIs.\n */\nexport interface Deposit {\n /** True if the record originates from the Native Deposits API. */\n isNative: boolean;\n\n /** Transaction hash on the source blockchain. */\n txHash: string;\n\n /** Event index inside the transaction (Direct BTC uses output index). */\n eventIndex: number;\n\n /** Amount deposited (always normalized to satoshis/smallest unit). */\n amount: BigNumber;\n\n /** Amount minted (if applicable). */\n tokenAmount?: BigNumber;\n\n /** BTC address where the user deposited (direct BTC only). */\n depositAddress?: string;\n\n /** Sender address on the source chain (native only). */\n fromAddress?: string;\n\n /** Receiver address on the destination chain (if applicable). */\n toAddress?: string;\n\n /** Destination token contract (if applicable). */\n toTokenAddress?: string;\n\n /** Destination token (if applicable). */\n toToken?: Token;\n\n /** Destination chain identifier. */\n toChainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n\n /** Source chain identifier (native only). */\n fromChainId?: ChainId | SuiChain | SolanaChain | StarknetChainId;\n\n /** Block height where the deposit was confirmed (as a number). */\n blockHeight?: number;\n\n /**\n * Unix timestamp (seconds) of confirmation.\n * Converted from ISO8601 (native) or string epoch (direct BTC).\n */\n blockTime?: number;\n\n /** Hash of the payload proving the deposit details. */\n payloadHash?: string;\n\n /** Raw payload bytes (hex-encoded). */\n rawPayload?: string;\n\n /** Merkle/cryptographic proof (hex-encoded). */\n proof?: string;\n\n /** ID of the notarization session (string to preserve both APIs). */\n sessionId: string;\n\n /** Current notarization status. */\n notarizationStatus: ENotarizationStatus;\n\n /** Current session state. */\n sessionState: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed. */\n claimTxHash?: string;\n\n /** True if the deposit was claimed (derived). */\n isClaimed: boolean;\n\n /** True if deposit is sanctioned (present in both APIs). */\n sanctioned?: boolean;\n\n /** Optional auxiliary version (direct BTC only). */\n auxVersion?: number;\n\n /** Optional wait duration for notarization (direct BTC only, in seconds). */\n notarizationWaitDur?: number;\n}\n\nexport interface IGetDepositsByAddressParams extends IEnvParam {\n /**\n * The EVM address to get deposits for\n */\n address: Address;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Fetchers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches deposits from the Direct BTC Deposits API for a given address.\n *\n * Converts the API response into a unified `Deposit` format.\n *\n * @param {IGetDepositsByAddressParams} params - Parameters including address and environment\n * @param {string} params.address - The EVM/BTC address to fetch deposits for\n * @param {Env} params.env - The environment (e.g., 'mainnet', 'testnet')\n *\n * @returns {Promise<Deposit[]>} A list of direct BTC deposits in unified format\n *\n * @example\n * const directDeposits = await fetchDirectDeposits({ address: 'tb1q...', env: 'testnet' });\n */\nexport async function fetchDirectDeposits({\n address,\n env,\n}: IGetDepositsByAddressParams): Promise<Deposit[]> {\n const { baseApiUrl } = getApiConfig(env);\n\n // pad address to 64 characters if needed\n if (address.startsWith('0x') && address.slice(2).length === 63) {\n address = `0x0${address.slice(2)}`;\n }\n\n const endpoint = new URL(`/api/v1/address/outputs-v2/${address}`, baseApiUrl);\n\n const outputs = await fetchAllPaginated({\n endpoint,\n extractItems: data => (data as DirectDepositsResponse)?.outputs ?? [],\n });\n\n return outputs.map(d => mapDirectBtcDeposit(d, env, address));\n}\n\n/**\n * Fetches deposits from the Native Deposits API for a given address.\n *\n * Converts the API response into a unified `Deposit` format.\n *\n * @param {IGetDepositsByAddressParams} params - Parameters including address and environment\n * @param {string} params.address - The EVM/BTC address to fetch deposits for\n * @param {Env} params.env - The environment (e.g., 'mainnet', 'testnet')\n *\n * @returns {Promise<Deposit[]>} A list of native deposits in unified format\n *\n * @example\n * const nativeDeposits = await fetchNativeDeposits({ address: 'tb1q...', env: 'testnet' });\n */\nexport async function fetchBTCbDeposits({\n address,\n env,\n}: IGetDepositsByAddressParams): Promise<Deposit[]> {\n const { baseApiUrl } = getApiConfig(env);\n\n const endpoint = new URL(\n `/api/v1/address/native-deposits/${address}`,\n baseApiUrl,\n );\n\n const deposits = await fetchAllPaginated({\n endpoint,\n extractItems: data => (data as NativeDepositsResponse)?.deposits ?? [],\n });\n\n return deposits.map(d => mapBTCbDeposits(d, env));\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\nfunction mapDirectBtcDeposit(\n d: DirectDeposit,\n env?: Env,\n accountAddress?: string,\n): Deposit {\n return {\n isNative: false,\n txHash: d.txid,\n eventIndex: d.index ? Number(d.index) : 0,\n amount: fromSatoshi(d.value),\n tokenAmount: d.token_amount\n ? fromBaseDenomination(d.token_amount, DECIMALS)\n : undefined,\n depositAddress: d.address,\n toAddress: accountAddress,\n toChainId: getChainIdByName(d.to_chain, env),\n blockHeight: d.block_height ? Number(d.block_height) : undefined,\n blockTime: d.block_time ? Number(d.block_time) : undefined, // epoch seconds\n payloadHash: d.payload_hash,\n rawPayload: d.raw_payload,\n proof: d.proof,\n sessionId: d.session_id,\n notarizationStatus: d.notarization_status,\n sessionState: d.session_state,\n claimTxHash: d.claim_tx,\n isClaimed: !!d.claim_tx,\n sanctioned: d.sanctioned,\n toTokenAddress: d.token_address,\n toToken: getTokenByAddress(\n d.token_address,\n getChainIdByName(d.to_chain, env),\n env,\n AddressKind.Adapter,\n ),\n auxVersion: d.aux_version,\n notarizationWaitDur: d.notarization_wait_dur\n ? Number(d.notarization_wait_dur)\n : undefined,\n };\n}\n\nfunction mapBTCbDeposits(d: NativeDeposit, env?: Env): Deposit {\n return {\n isNative: true,\n txHash: d.tx_hash,\n eventIndex: d.event_index,\n amount: fromBaseDenomination(d.amount, DECIMALS),\n tokenAmount: undefined,\n fromAddress: d.from_address,\n toAddress: d.to_address,\n toTokenAddress: d.to_token_address,\n toToken: getTokenByAddress(\n d.to_token_address,\n getChainIdByName(d.to_blockchain, env),\n env,\n AddressKind.Adapter,\n ),\n toChainId: getChainIdByName(d.to_blockchain, env),\n fromChainId: getChainIdByName(d.from_blockchain, env),\n blockHeight: d.block_height ? Number(d.block_height) : undefined,\n blockTime: d.block_time\n ? Math.floor(new Date(d.block_time).getTime() / 1000) // seconds\n : undefined,\n payloadHash: d.payload_hash,\n rawPayload: d.raw_payload,\n proof: d.proof,\n sessionId: d.session_id,\n notarizationStatus: d.notarization_status,\n sessionState: d.session_state,\n claimTxHash: d.claim_tx,\n isClaimed: !!d.claim_tx,\n sanctioned: d.sanctioned,\n };\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches all deposits for a given address from both Direct BTC Deposits\n * and Native Deposits APIs, unifying them into a single list.\n *\n * Both APIs are called concurrently. If one API fails, the other still returns results.\n *\n * Deposits are returned sorted by `blockTime` descending (newest first).\n *\n * @param {IGetDepositsByAddressParams} params - Parameters including the address and environment\n * @param {string} params.address - The EVM/BTC address to fetch deposits for\n * @param {Env} params.env - The environment (e.g., 'mainnet', 'testnet')\n *\n * @returns {Promise<Deposit[]>} A unified list of deposits from both APIs\n *\n * @example\n * const deposits = await getDepositsByAddress({ address: 'tb1q...', env: 'testnet' });\n * console.log(deposits);\n */\nexport async function getDepositsByAddress({\n address,\n env,\n}: IGetDepositsByAddressParams): Promise<Deposit[]> {\n const results = await Promise.allSettled([\n fetchDirectDeposits({ address, env }),\n fetchBTCbDeposits({ address, env }),\n ]);\n\n let directDeposits: Deposit[] = [];\n let nativeDeposits: Deposit[] = [];\n\n results.forEach((result, idx) => {\n if (result.status === 'fulfilled') {\n if (idx === 0)\n directDeposits = result.value; // Direct BTC deposits\n else nativeDeposits = result.value; // Native deposits\n } else {\n console.error(\n idx === 0\n ? 'Failed to fetch direct BTC deposits:'\n : 'Failed to fetch native deposits:',\n result.reason,\n );\n }\n });\n\n const allDeposits = [...directDeposits, ...nativeDeposits].sort((a, b) => {\n const aTime = a.blockTime ?? 0;\n const bTime = b.blockTime ?? 0;\n return bTime - aTime;\n });\n\n return allDeposits;\n}\n","import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\nimport axios from 'axios';\nimport BigNumber from 'bignumber.js';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { IEnvParam } from '../../common/parameters';\n\nconst CURRENT_SEASON = 2;\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Parameters for fetching points by address.\n */\nexport interface IGetPointsByAddressParameters extends IEnvParam {\n /** The address of the points earner. */\n address: string;\n /** The season to fetch (defaults to CURRENT_SEASON). */\n season?: number;\n}\n\n/**\n * Breakdown of points earned from each supported DeFi protocol.\n */\nexport interface IProtocolPointsBreakdown {\n [protocolName: string]: number;\n}\n\n/**\n * Core points shared across all seasons.\n */\nexport interface IPointsBase {\n /** Points earned by holding LBTC. */\n holdingPoints: number;\n /** Points earned by taking positions in DeFi vaults. */\n protocolPoints: number;\n /** Points earned from referrals. */\n referralPoints: number;\n /** Total points earned. */\n totalPoints: number;\n /** Detailed breakdown of protocol-specific points. */\n protocolPointsBreakdown: IProtocolPointsBreakdown;\n /** Lux points earned from badges. */\n badgesPoints: number;\n /** Total Lux points excluding badges (only required in some seasons). */\n totalWithoutBadgesPoints?: number;\n}\n\n/**\n * Points specific to Season 1.\n */\nexport interface IPointsByAddressSeason1 extends IPointsBase {\n /** Points earned in the OKX campaign. */\n okxPoints: number;\n /** Points earned in the first flash event. */\n flashEvent1Points: number;\n /** Points earned in the second flash event. */\n flashEvent2Points: number;\n}\n\n/**\n * Points specific to Season 2.\n */\nexport interface IPointsByAddressSeason2 extends IPointsBase {\n /** Points earned from referees. */\n refereePoints: number;\n /** Points earned by checking in. */\n checkinPoints: number;\n}\n\n/**\n * Raw API response format for Season 1.\n */\ninterface IPointsResponseSeason1 {\n holding_points: number;\n protocol_points: number;\n referee_points: number;\n referrals_points: number;\n total: number;\n flash_event: number;\n badges: number;\n total_without_badges: number;\n okx_campaign: number;\n flash_event2: number;\n protocol_points_map?: IProtocolPointsBreakdown;\n}\n\n/**\n * Raw API response format for Season 2.\n */\ninterface IPointsResponseSeason2 {\n holding_points: number;\n protocol_points: number;\n referee_points: number;\n referrals_points: number;\n total: number;\n protocol_points_map?: IProtocolPointsBreakdown;\n badge_points: number;\n checkin_points: number;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Parses a number-like input into a BigNumber.\n *\n * @param input - The value to parse.\n * @param defaultValue - Value to use if input is invalid or undefined.\n * @returns A BigNumber representing the parsed value.\n */\nfunction parse(\n input: string | number | null | undefined,\n defaultValue = 0,\n): BigNumber {\n return BigNumber(Number(input) || defaultValue);\n}\n\n/**\n * Converts a protocol points map to a strongly typed breakdown object.\n *\n * @param map - Optional protocol points map from the API.\n * @returns A normalized breakdown object with numeric values.\n */\nfunction toProtocolBreakdown(\n map: IProtocolPointsBreakdown | undefined,\n): IProtocolPointsBreakdown {\n return Object.entries(map || {}).reduce((acc, [k, v]) => {\n acc[k] = parse(v).toNumber();\n return acc;\n }, {} as IProtocolPointsBreakdown);\n}\n\n/**\n * Constructs the Lombard points API endpoint for the given season and address.\n *\n * @param season - The Lux points season (e.g., 1 or 2).\n * @param address - Wallet address to query.\n * @param env - Target environment (defaults to DEFAULT_ENV).\n * @throws If the API endpoint cannot be determined or the season is invalid.\n */\nfunction getLombardPointsUrl(\n season: number,\n address: string,\n env: Env = DEFAULT_ENV,\n): string {\n const { baseApiUrl } = getApiConfig(env);\n if (!baseApiUrl) {\n throw new Error(\n `Could not determine the API endpoint for the provided environment: ${\n env || DEFAULT_ENV\n }`,\n );\n }\n\n switch (season) {\n case 1:\n return `${baseApiUrl}/api/v1/referral-system/season-1/points/${address}`;\n case 2:\n return `${baseApiUrl}/api/v1/referral-system/season-2/points/${address}`;\n default:\n throw new Error(`Invalid Lux season: ${season}`);\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Fetchers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches and parses Season 1 points for a given address.\n *\n * @param params - Address and environment parameters.\n * @returns A typed object containing all Season 1 point metrics.\n */\nasync function fetchPointsSeason1({\n address,\n env,\n}: Omit<\n IGetPointsByAddressParameters,\n 'season'\n>): Promise<IPointsByAddressSeason1> {\n const { data } = await axios.get<IPointsResponseSeason1>(\n getLombardPointsUrl(1, address, env),\n );\n\n const referralPoints = parse(data.referee_points).plus(\n parse(data.referrals_points),\n );\n\n return {\n holdingPoints: parse(data.holding_points).toNumber(),\n protocolPoints: parse(data.protocol_points).toNumber(),\n referralPoints: referralPoints.toNumber(),\n okxPoints: parse(data.okx_campaign).toNumber(),\n flashEvent1Points: parse(data.flash_event).toNumber(),\n flashEvent2Points: parse(data.flash_event2).toNumber(),\n totalPoints: parse(data.total).toNumber(),\n protocolPointsBreakdown: toProtocolBreakdown(data.protocol_points_map),\n badgesPoints: parse(data.badges).toNumber(),\n totalWithoutBadgesPoints: parse(data.total_without_badges).toNumber(),\n };\n}\n\n/**\n * Fetches and parses Season 2 points for a given address.\n *\n * @param params - Address and environment parameters.\n * @returns A typed object containing all Season 2 point metrics.\n */\nasync function fetchPointsSeason2({\n address,\n env,\n}: Omit<\n IGetPointsByAddressParameters,\n 'season'\n>): Promise<IPointsByAddressSeason2> {\n const { data } = await axios.get<IPointsResponseSeason2>(\n getLombardPointsUrl(2, address, env),\n );\n\n return {\n holdingPoints: parse(data.holding_points).toNumber(),\n protocolPoints: parse(data.protocol_points).toNumber(),\n referralPoints: parse(data.referrals_points).toNumber(),\n refereePoints: parse(data.referee_points).toNumber(),\n badgesPoints: parse(data.badge_points).toNumber(),\n checkinPoints: parse(data.checkin_points).toNumber(),\n totalPoints: parse(data.total).toNumber(),\n protocolPointsBreakdown: toProtocolBreakdown(data.protocol_points_map),\n totalWithoutBadgesPoints: parse(data.total).toNumber(),\n };\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Retrieves Season 1 points for a given address.\n *\n * @param parameters - Address and environment parameters.\n * @returns A Season 1 points object.\n */\nexport async function getPointsByAddress(\n parameters: IGetPointsByAddressParameters & { season: 1 },\n): Promise<IPointsByAddressSeason1>;\n\n/**\n * Retrieves Season 2 points for a given address.\n *\n * @param parameters - Address and environment parameters.\n * @returns A Season 2 points object.\n */\nexport async function getPointsByAddress(\n parameters: IGetPointsByAddressParameters & { season: 2 },\n): Promise<IPointsByAddressSeason2>;\n\n/**\n * Retrieves points for the given address.\n * Defaults to the current season if none is specified.\n *\n * @param parameters - Address and optional environment/season parameters.\n * @returns A points object matching the requested or current season.\n */\nexport async function getPointsByAddress(\n parameters: IGetPointsByAddressParameters,\n): Promise<IPointsByAddressSeason1 | IPointsByAddressSeason2>;\n\n/**\n * Implementation of getPointsByAddress with overloads.\n */\nexport async function getPointsByAddress({\n address,\n env,\n season = CURRENT_SEASON,\n}: IGetPointsByAddressParameters): Promise<\n IPointsByAddressSeason1 | IPointsByAddressSeason2\n> {\n return season === 2\n ? fetchPointsSeason2({ address, env })\n : fetchPointsSeason1({ address, env });\n}\n\n/**\n * Convenience wrapper for fetching Season 1 points.\n *\n * @param params - Address and environment parameters.\n */\nexport const getLuxSeason1Points = (\n params: Omit<IGetPointsByAddressParameters, 'season'>,\n) => getPointsByAddress({ ...params, season: 1 });\n\n/**\n * Convenience wrapper for fetching Season 2 points.\n *\n * @param params - Address and environment parameters.\n */\nexport const getLuxSeason2Points = (\n params: Omit<IGetPointsByAddressParameters, 'season'>,\n) => getPointsByAddress({ ...params, season: 2 });\n","import { DEFAULT_ENV } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\nimport * as bitcoin from 'bitcoinjs-lib';\nimport { Hex, trim } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainIdByName,\n} from '../../common/blockchain-identifier';\nimport {\n ChainId,\n isSolanaChain,\n isStarknetChainId,\n isSuiChain,\n isValidChain,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport {\n AddressKind,\n getSolanaTokenAddress,\n getStarknetTokenAddress,\n getSuiTokenAddress,\n Token,\n TOKEN_ADDRESSES,\n} from '../../tokens/token-addresses';\nimport { fetchAllPaginated } from '../../utils/pagination';\nimport { fromSatoshi } from '../../utils/satoshi';\nimport {\n ENotarizationStatus,\n ESessionState,\n} from '../getDepositsByAddress/getDepositsByAddress';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Status of a payout transaction corresponding to an unstake.\n */\nexport enum PayoutTxStatus {\n /** The payout transaction has been sent; unstake completed */\n Completed = 'Completed',\n\n /** The payout transaction has not been sent; unstake pending */\n Pending = 'Pending',\n}\n\n/**\n * Response object for a single unstake record from the API.\n */\ninterface UnstakeEntry {\n /** Transaction hash of the unstake on the source blockchain. */\n tx_hash: string;\n\n /** Source blockchain identifier (e.g., BLOCKCHAIN_BSC, BLOCKCHAIN_ETHEREUM). */\n blockchain: BlockchainIdentifier;\n\n /** Block height where the unstake was confirmed. */\n block_height: string;\n\n /** Block time of the unstake transaction (as a string timestamp). */\n block_time: string;\n\n /** Address of the initiator of the unstake. */\n from_address: string;\n\n /** Destination address for the payout. */\n to_address?: string;\n\n /** Destination blockchain identifier for the payout. */\n to_chain?: string;\n\n /** Output script used to derive BTC address, present for BTC unstakes. */\n output_script?: string;\n\n /** Amount unstaked (string to preserve precision). */\n amount: string;\n\n /** Payout transaction hash on the destination chain, if already completed. */\n payout_txid?: string;\n\n /** Index of the payout transaction, if applicable. */\n payout_index?: string;\n\n /** True if the unstake transaction has been sanctioned or flagged as suspicious. */\n sanctioned?: boolean;\n\n /** Cryptographic proof (hex-encoded) */\n proof?: string;\n\n /** Raw payload bytes (hex-encoded) */\n payload?: string;\n\n /** Current notarization status (for native chain redemptions) */\n notarization_status?: ENotarizationStatus;\n\n /** Current session state (for native chain redemptions) */\n session_state?: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed (for native chain redemptions) */\n claim_tx?: string;\n\n /** Token address on the source chain */\n from_token_address?: string;\n}\n\n/**\n * Top-level API response for unstakes.\n */\ninterface UnstakesResponse {\n unstakes?: UnstakeEntry[];\n\n /** True if there are more unstakes available */\n has_more: boolean;\n}\n\n/**\n * Parameters for fetching unstakes by address.\n */\nexport interface IGetUnstakesByAddressParameters extends IEnvParam {\n /** Address of the unstake initiator */\n address: string;\n\n /** Optional filtering */\n options?: {\n /** Show only direct BTC unstakes */\n show_unstakes?: boolean;\n /** Show only native chain redemptions */\n show_redeems?: boolean;\n /** Show only redeems to native chain (LBTC -> BTC.b) */\n to_native?: boolean;\n };\n}\n\n/**\n * A unified unstake record returned from either\n * direct BTC unstakes or native blockchain redemptions.\n */\nexport interface Unstake {\n /** True if the record originates from the native blockchain redemption. */\n isNative: boolean;\n\n /** Transaction hash of the unstake. */\n txHash: string;\n\n /** Source chain identifier (where the unstake originated). */\n fromChainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n\n /** Destination chain identifier (undefined for BTC unstakes). */\n toChainId?: ChainId | SuiChain | SolanaChain | StarknetChainId | 'bitcoin';\n\n /** Block height where the unstake was confirmed. */\n blockHeight: number;\n\n /** Block time (as epoch seconds) of the unstake. */\n blockTime: number;\n\n /** Initiator of the unstake transaction. */\n fromAddress: string;\n\n /** Destination address (BTC, EVM, or Solana). */\n toAddress?: string;\n\n /** Amount unstaked (normalized to satoshis / smallest unit). */\n amount: BigNumber;\n\n /** Payout transaction hash on the destination chain, if claimed. */\n payoutTxHash?: string;\n\n /** Payout transaction index, if applicable. */\n payoutTxIndex?: number;\n\n /** Status of the payout transaction. */\n payoutTxStatus: PayoutTxStatus;\n\n /** True if the unstake transaction has been sanctioned. */\n sanctioned?: boolean;\n\n /** Raw payload bytes (hex-encoded). */\n rawPayload?: string;\n\n /** Merkle/cryptographic proof (hex-encoded). */\n proof?: string;\n\n /** The output token. */\n toToken?: Token;\n\n /** The output token address. */\n toTokenAddress?: string;\n\n /** Current notarization status (for native chain redemptions). */\n notarizationStatus?: ENotarizationStatus;\n\n /** Current session state (for native chain redemptions). */\n sessionState?: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed (for native chain redemptions). */\n claimTxHash?: string;\n\n /** Token address on the source chain */\n fromTokenAddress?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Fetchers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches all unstakes initiated by a given address.\n *\n * @param {IGetUnstakesByAddressParameters} params - Parameters for fetching unstakes.\n * @param {string} params.address - Address of the unstake initiator.\n * @param {Env} [params.env='prod'] - Environment to use (prod/testnet).\n * @param {object} [params.options] - Optional pagination and filter options.\n *\n * @returns {Promise<Unstake[]>} - List of mapped unstakes.\n *\n * @throws {Error} - Throws if no address is specified.\n */\nexport async function fetchUnstakesByAddress({\n address,\n env = DEFAULT_ENV,\n options,\n}: IGetUnstakesByAddressParameters): Promise<Unstake[]> {\n if (!address) throw new Error('No address specified.');\n\n const { baseApiUrl } = getApiConfig(env);\n\n // pad address to 64 characters if needed\n if (address.startsWith('0x') && address.slice(2).length === 63) {\n address = `0x0${address.slice(2)}`;\n }\n\n const endpoint = new URL(`/api/v1/address/unstakes/${address}`, baseApiUrl);\n\n const unstakes = await fetchAllPaginated({\n endpoint,\n extractItems: data => (data as UnstakesResponse)?.unstakes ?? [],\n query: {\n show_redeems: options?.show_redeems ? 'true' : undefined,\n show_unstakes: options?.show_unstakes ? 'true' : undefined,\n to_native: options?.to_native ? 'true' : undefined,\n },\n });\n\n return unstakes.map(d => mapUnstakeEntry(d, env));\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Maps a raw API unstake response to the unified `Unstake` object.\n *\n * @param {UnstakeEntry} d - Raw unstake data from API\n * @param {Env} env - Environment to use for chain/network resolution\n *\n * @returns {Unstake} - Unified unstake object\n */\nfunction mapUnstakeEntry(\n d: UnstakeEntry,\n env: IEnvParam['env'] = DEFAULT_ENV,\n): Unstake {\n const isNative = Boolean(d.to_chain && d.to_address);\n\n let toAddress: string | undefined = d.to_address;\n if (!isNative && d.output_script) {\n try {\n toAddress = bitcoin.address.fromOutputScript(\n Buffer.from(d.output_script.replace(/^0x/, ''), 'hex'),\n env === 'prod' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,\n );\n } catch {\n toAddress = undefined;\n }\n } else if (toAddress?.startsWith('0x')) {\n toAddress = trim(toAddress as Hex);\n }\n\n const payoutTxStatus = d.payout_txid\n ? PayoutTxStatus.Completed\n : PayoutTxStatus.Pending;\n\n const toToken = isNative ? Token.BTCb : undefined;\n const toChainId = d.to_chain\n ? d.to_chain === BlockchainIdentifier.bitcoin ||\n d.to_chain === BlockchainIdentifier.bitcoinOld\n ? 'bitcoin'\n : getChainIdByName(d.to_chain, env)\n : undefined;\n\n let toTokenAddress: string | undefined = undefined;\n if (toToken) {\n if (isValidChain(toChainId)) {\n let address = TOKEN_ADDRESSES?.[toToken]?.[env]?.[toChainId];\n if (address) {\n address =\n typeof address === 'string' ? address : address[AddressKind.Adapter];\n }\n toTokenAddress = address;\n }\n\n if (isSolanaChain(toChainId)) {\n toTokenAddress = getSolanaTokenAddress(toChainId, env);\n }\n\n if (isSuiChain(toChainId)) {\n toTokenAddress = getSuiTokenAddress(toChainId, env);\n }\n\n if (isStarknetChainId(toChainId)) {\n toTokenAddress = getStarknetTokenAddress(toChainId, env);\n }\n }\n\n return {\n isNative,\n txHash: d.tx_hash,\n fromChainId: getChainIdByName(d.blockchain, env),\n toChainId,\n blockHeight: Number(d.block_height),\n blockTime: Number(d.block_time),\n fromAddress: d.from_address,\n toAddress,\n amount: fromSatoshi(d.amount),\n payoutTxHash: d.payout_txid,\n payoutTxIndex: d.payout_index ? Number(d.payout_index) : undefined,\n payoutTxStatus,\n sanctioned: d.sanctioned,\n proof: d.proof,\n rawPayload: d.payload,\n toToken,\n toTokenAddress,\n notarizationStatus: d.notarization_status,\n sessionState: d.session_state,\n claimTxHash: d.claim_tx,\n fromTokenAddress: d.from_token_address,\n };\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Returns all unstakes (direct BTC or native chain redemptions) for a given address.\n *\n * @param {IGetUnstakesByAddressParameters} params - Parameters for fetching unstakes.\n * @param {string} params.address - Address of the unstake initiator.\n * @param {Env} [params.env=DEFAULT_ENV] - Environment to use.\n * @param {object} [params.options] - Optional pagination and filter options.\n *\n * @returns {Promise<Unstake[]>} - Array of unified unstake records.\n *\n * @throws {Error} - Throws if no address is specified.\n */\nexport async function getUnstakesByAddress({\n address,\n env = DEFAULT_ENV,\n options,\n}: IGetUnstakesByAddressParameters): Promise<Unstake[]> {\n return fetchUnstakesByAddress({ address, env, options });\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport type IStoreStakeAndBakeSignatureStatus = 'success';\n\ninterface IStoreStakeAndBakeSignatureResponse {\n status: IStoreStakeAndBakeSignatureStatus;\n}\n\nconst EMPTY_SIGNATURE = '0x00';\n\nexport interface IStoreStakeAndBakeSignatureParams extends IEnvParam {\n /**\n * signature\n */\n signature: string;\n /**\n * JSON typed data used for the signature\n */\n typedData: string;\n}\n\n/**\n * Store stake and bake signature\n *\n * @param {IStoreStakeAndBakeSignatureParams} parameters - The parameters for storing stake and bake signature\n * @param {string} parameters.signature - The signature.\n * @param {string} parameters.typedData - The serialized typed data.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IStoreStakeAndBakeSignatureStatus>}\n */\nexport async function storeStakeAndBakeSignature({\n signature,\n typedData,\n env,\n}: IStoreStakeAndBakeSignatureParams): Promise<IStoreStakeAndBakeSignatureStatus> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const { data } = await axios.post<IStoreStakeAndBakeSignatureResponse>(\n `${baseApiUrl}/api/v1/claimer/save-stake-and-bake-signature`,\n null,\n {\n params: {\n typed_data: typedData,\n signature: signature || EMPTY_SIGNATURE,\n },\n },\n );\n\n return data.status;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n\n throw new Error(errorMsg);\n }\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport type { IEnvParam } from '../../common/parameters';\n\ninterface ApiResponse {\n exists?: boolean;\n referrer?: string;\n}\n\nexport interface GetDepositAddressReferrerParams extends IEnvParam {\n address: string;\n}\n\nexport interface DepositAddressReferrerResult {\n hasDepositAddress: boolean;\n referrer?: string;\n}\n\n/**\n * Fetch the referrer associated with a previously generated BTC deposit address.\n *\n * @param params - Address lookup parameters\n */\nexport async function getDepositAddressReferrer({\n address,\n env,\n}: GetDepositAddressReferrerParams): Promise<DepositAddressReferrerResult> {\n const { baseApiUrl } = getApiConfig(env);\n const { data } = await axios.get<ApiResponse>(\n `${baseApiUrl}/api/v1/address/exists/${address}`,\n );\n\n return {\n hasDepositAddress: Boolean(data.exists),\n referrer: data.referrer,\n };\n}\n","import { getDepositAddressReferrer } from '../api-functions/getDepositAddressReferrer';\nimport type { LombardSDK } from '../client/LombardSDK';\n\nexport interface ReferralLookupParams {\n /** Destination account that previously generated a BTC deposit address */\n address: string;\n}\n\nexport interface ReferralLookupResult {\n hasDepositAddress: boolean;\n referrer?: string;\n}\n\n/**\n * Referral helper namespace.\n *\n * Provides read APIs for referral metadata so partners do not need to query\n * Lombard REST endpoints directly.\n */\nexport class ReferralsClient {\n constructor(private readonly sdk: LombardSDK) {}\n\n /**\n * Fetch the referrer bound to a previously generated BTC deposit address.\n */\n async lookupReferrer({\n address,\n }: ReferralLookupParams): Promise<ReferralLookupResult> {\n return getDepositAddressReferrer({\n address,\n env: this.sdk.config.env,\n });\n }\n}\n"],"names":["makeRequest","address","chainId","env","limit","offset","partnerId","baseApiUrl","getApiConfig","destinationBlockchain","getChainNameById","BlockchainIdentifier","pad","params","k","v","url","data","axios","err","message","_a","getDepositBtcAddress","tokenParam","Token","_addresses","depositAddress","tokenAddressFilter","isValidChain","getTokenContractInfo","AddressKind","isSuiChain","tokenAddress","getSuiTokenAddress","isSolanaChain","solanaToken","getSolanaTokenAddress","isStarknetChainId","getStarknetTokenAddress","addresses","a","isForToken","mostRecentAddress","mostRecent","cur","getDepositBtcAddresses","parameters","fetchAllPaginated","endpoint","extractItems","query","pageSize","maxRecords","allItems","hasMore","key","value","items","DECIMALS","BTC_DECIMALS","ENotarizationStatus","ESessionState","fetchDirectDeposits","d","mapDirectBtcDeposit","fetchBTCbDeposits","mapBTCbDeposits","accountAddress","fromSatoshi","fromBaseDenomination","getChainIdByName","getTokenByAddress","getDepositsByAddress","results","directDeposits","nativeDeposits","result","idx","b","aTime","CURRENT_SEASON","parse","input","defaultValue","BigNumber","toProtocolBreakdown","map","acc","getLombardPointsUrl","season","DEFAULT_ENV","fetchPointsSeason1","referralPoints","fetchPointsSeason2","getPointsByAddress","getLuxSeason1Points","getLuxSeason2Points","PayoutTxStatus","fetchUnstakesByAddress","options","mapUnstakeEntry","isNative","toAddress","bitcoin","trim","payoutTxStatus","toToken","toChainId","toTokenAddress","_c","_b","TOKEN_ADDRESSES","getUnstakesByAddress","EMPTY_SIGNATURE","storeStakeAndBakeSignature","signature","typedData","error","errorMsg","getErrorMessage","getDepositAddressReferrer","ReferralsClient","sdk"],"mappings":"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"}
|
|
@@ -8,28 +8,28 @@ const o = {
|
|
|
8
8
|
}, e = {
|
|
9
9
|
baseApiUrl: "https://mainnet.prod.lombard.finance",
|
|
10
10
|
bffApiUrl: "https://bff.prod.lombard-fi.com"
|
|
11
|
-
},
|
|
11
|
+
}, i = {
|
|
12
12
|
baseApiUrl: "https://bft-dev.stage.lombard-fi.com",
|
|
13
13
|
// Note, bff on localhost works on 8001
|
|
14
14
|
bffApiUrl: "https://bff.stage.lombard-fi.com"
|
|
15
|
-
},
|
|
15
|
+
}, a = {
|
|
16
16
|
baseApiUrl: "https://ibc.stage.lombard-fi.com",
|
|
17
17
|
bffApiUrl: "https://bff.stage.lombard-fi.com"
|
|
18
18
|
}, b = (r = f) => {
|
|
19
19
|
switch (r) {
|
|
20
20
|
case t.dev:
|
|
21
|
-
return
|
|
21
|
+
return i;
|
|
22
22
|
case t.prod:
|
|
23
23
|
return e;
|
|
24
24
|
case t.testnet:
|
|
25
25
|
return s;
|
|
26
26
|
case t.ibc:
|
|
27
|
-
return
|
|
27
|
+
return a;
|
|
28
28
|
default:
|
|
29
29
|
return o;
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
export {
|
|
33
|
-
b as
|
|
33
|
+
b as getApiConfig
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=api-config-
|
|
35
|
+
//# sourceMappingURL=api-config-Dm6dR85f.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-config-
|
|
1
|
+
{"version":3,"file":"api-config-Dm6dR85f.js","sources":["../../src/common/api-config.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\n\nexport interface IApiConfig {\n baseApiUrl: string;\n bffApiUrl: string | undefined;\n}\n\nconst stageConfig: IApiConfig = {\n baseApiUrl: 'https://staging.prod.lombard.finance',\n bffApiUrl: 'https://bff.stage.lombard-fi.com',\n};\n\nconst testnetConfig: IApiConfig = {\n baseApiUrl: 'https://gastald-testnet.prod.lombard-fi.com',\n bffApiUrl: 'https://bff.stage.lombard-fi.com',\n};\n\nconst prodConfig: IApiConfig = {\n baseApiUrl: 'https://mainnet.prod.lombard.finance',\n bffApiUrl: 'https://bff.prod.lombard-fi.com',\n};\n\nconst devConfig: IApiConfig = {\n baseApiUrl: 'https://bft-dev.stage.lombard-fi.com',\n // Note, bff on localhost works on 8001\n bffApiUrl: 'https://bff.stage.lombard-fi.com',\n};\n\n// IBC environment configuration for Avalanche BTC.b testing\nconst ibcConfig: IApiConfig = {\n baseApiUrl: 'https://ibc.stage.lombard-fi.com',\n bffApiUrl: 'https://bff.stage.lombard-fi.com',\n};\n\nexport const getApiConfig = (env: Env = DEFAULT_ENV): IApiConfig => {\n switch (env) {\n case Env.dev:\n return devConfig;\n case Env.prod:\n return prodConfig;\n case Env.testnet:\n return testnetConfig;\n case Env.ibc:\n return ibcConfig;\n default:\n return stageConfig;\n }\n};\n"],"names":["stageConfig","testnetConfig","prodConfig","devConfig","ibcConfig","getApiConfig","env","DEFAULT_ENV","Env"],"mappings":";AAOA,MAAMA,IAA0B;AAAA,EAC9B,YAAY;AAAA,EACZ,WAAW;AACb,GAEMC,IAA4B;AAAA,EAChC,YAAY;AAAA,EACZ,WAAW;AACb,GAEMC,IAAyB;AAAA,EAC7B,YAAY;AAAA,EACZ,WAAW;AACb,GAEMC,IAAwB;AAAA,EAC5B,YAAY;AAAA;AAAA,EAEZ,WAAW;AACb,GAGMC,IAAwB;AAAA,EAC5B,YAAY;AAAA,EACZ,WAAW;AACb,GAEaC,IAAe,CAACC,IAAWC,MAA4B;AAClE,UAAQD,GAAA;AAAA,IACN,KAAKE,EAAI;AACP,aAAOL;AAAA,IACT,KAAKK,EAAI;AACP,aAAON;AAAA,IACT,KAAKM,EAAI;AACP,aAAOP;AAAA,IACT,KAAKO,EAAI;AACP,aAAOJ;AAAA,IACT;AACE,aAAOJ;AAAA,EAAA;AAEb;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const n=require("./tokens-
|
|
2
|
-
//# sourceMappingURL=approveLBTC-
|
|
1
|
+
"use strict";const n=require("./tokens-BkvA0Gp1.cjs"),e=require("./token-addresses-nzvTOi24.cjs"),k=require("./satoshi-CZEsHl5X.cjs");async function m({account:o,spender:s,amount:r,chainId:t,provider:i,rpcUrl:c,env:u}){const C=n.makePublicClient({chainId:t,rpcUrl:c}),l=e.makeWalletClient({chainId:t,provider:i}),a=await n.getTokenContractInfo(e.Token.LBTC,t,u),p=k.toSatoshi(r).toNumber(),{request:b}=await C.simulateContract({address:a.address,account:o,chain:e.CHAIN_ID_TO_VIEM_CHAIN_MAP[t],abi:a.abi,functionName:"approve",args:[s,BigInt(p)]});return await l.writeContract(b)}exports.approveLBTC=m;
|
|
2
|
+
//# sourceMappingURL=approveLBTC-CUXEC3kw.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approveLBTC-
|
|
1
|
+
{"version":3,"file":"approveLBTC-CUXEC3kw.cjs","sources":["../../src/contract-functions/approveLBTC/approveLBTC.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { toSatoshi } from '../../utils/satoshi';\n\nexport interface IApproveLBTCParams extends CommonWriteParameters {\n /**\n * The spender account address.\n */\n spender: Address;\n /**\n * The approved amount of LBTC.\n */\n amount: BigNumber.Value;\n}\n\n/**\n * Approves the provided spender to withdraw a specified amount of LBTC from\n * your account.\n *\n * @param {IApproveLBTCParams} parameters - The parameters.\n * @param {Address} spender - The spender account address.\n * @param {BigNumber.Value} - The amount of LBTC.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<Hash>}\n */\nexport async function approveLBTC({\n account,\n spender,\n amount,\n chainId,\n provider,\n rpcUrl,\n env,\n}: IApproveLBTCParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ chainId, provider });\n\n const lbtcContract = await getTokenContractInfo(Token.LBTC, chainId, env);\n\n const amountSat = toSatoshi(amount).toNumber();\n\n const { request } = await publicClient.simulateContract({\n address: lbtcContract.address,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: lbtcContract.abi,\n functionName: 'approve',\n args: [spender, BigInt(amountSat)],\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n"],"names":["approveLBTC","account","spender","amount","chainId","provider","rpcUrl","env","publicClient","makePublicClient","walletClient","makeWalletClient","lbtcContract","getTokenContractInfo","Token","amountSat","toSatoshi","request","CHAIN_ID_TO_VIEM_CHAIN_MAP"],"mappings":"sIAqCA,eAAsBA,EAAY,CAChC,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,OAAAC,EACA,IAAAC,CACF,EAAsC,CACpC,MAAMC,EAAeC,EAAAA,iBAAiB,CAAE,QAAAL,EAAS,OAAAE,EAAQ,EACnDI,EAAeC,EAAAA,iBAAiB,CAAE,QAAAP,EAAS,SAAAC,EAAU,EAErDO,EAAe,MAAMC,EAAAA,qBAAqBC,EAAAA,MAAM,KAAMV,EAASG,CAAG,EAElEQ,EAAYC,EAAAA,UAAUb,CAAM,EAAE,SAAA,EAE9B,CAAE,QAAAc,CAAA,EAAY,MAAMT,EAAa,iBAAiB,CACtD,QAASI,EAAa,QACtB,QAAAX,EACA,MAAOiB,EAAAA,2BAA2Bd,CAAO,EACzC,IAAKQ,EAAa,IAClB,aAAc,UACd,KAAM,CAACV,EAAS,OAAOa,CAAS,CAAC,CAAA,CAClC,EAID,OAFe,MAAML,EAAa,cAAcO,CAAO,CAGzD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { makePublicClient as p, getTokenContractInfo as u } from "./tokens-DgC1hfkm.js";
|
|
2
|
+
import { makeWalletClient as b, Token as f, CHAIN_ID_TO_VIEM_CHAIN_MAP as w } from "./token-addresses-D0v5cR1j.js";
|
|
3
|
+
import { toSatoshi as T } from "./satoshi-CSoJBXc6.js";
|
|
4
|
+
async function g({
|
|
5
|
+
account: a,
|
|
6
|
+
spender: e,
|
|
7
|
+
amount: n,
|
|
8
|
+
chainId: t,
|
|
9
|
+
provider: r,
|
|
10
|
+
rpcUrl: i,
|
|
11
|
+
env: s
|
|
12
|
+
}) {
|
|
13
|
+
const c = p({ chainId: t, rpcUrl: i }), l = b({ chainId: t, provider: r }), o = await u(f.LBTC, t, s), m = T(n).toNumber(), { request: C } = await c.simulateContract({
|
|
14
|
+
address: o.address,
|
|
15
|
+
account: a,
|
|
16
|
+
chain: w[t],
|
|
17
|
+
abi: o.abi,
|
|
18
|
+
functionName: "approve",
|
|
19
|
+
args: [e, BigInt(m)]
|
|
20
|
+
});
|
|
21
|
+
return await l.writeContract(C);
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
g as approveLBTC
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=approveLBTC-Du2El1tW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approveLBTC-
|
|
1
|
+
{"version":3,"file":"approveLBTC-Du2El1tW.js","sources":["../../src/contract-functions/approveLBTC/approveLBTC.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { toSatoshi } from '../../utils/satoshi';\n\nexport interface IApproveLBTCParams extends CommonWriteParameters {\n /**\n * The spender account address.\n */\n spender: Address;\n /**\n * The approved amount of LBTC.\n */\n amount: BigNumber.Value;\n}\n\n/**\n * Approves the provided spender to withdraw a specified amount of LBTC from\n * your account.\n *\n * @param {IApproveLBTCParams} parameters - The parameters.\n * @param {Address} spender - The spender account address.\n * @param {BigNumber.Value} - The amount of LBTC.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<Hash>}\n */\nexport async function approveLBTC({\n account,\n spender,\n amount,\n chainId,\n provider,\n rpcUrl,\n env,\n}: IApproveLBTCParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ chainId, provider });\n\n const lbtcContract = await getTokenContractInfo(Token.LBTC, chainId, env);\n\n const amountSat = toSatoshi(amount).toNumber();\n\n const { request } = await publicClient.simulateContract({\n address: lbtcContract.address,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: lbtcContract.abi,\n functionName: 'approve',\n args: [spender, BigInt(amountSat)],\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n"],"names":["approveLBTC","account","spender","amount","chainId","provider","rpcUrl","env","publicClient","makePublicClient","walletClient","makeWalletClient","lbtcContract","getTokenContractInfo","Token","amountSat","toSatoshi","request","CHAIN_ID_TO_VIEM_CHAIN_MAP"],"mappings":";;;AAqCA,eAAsBA,EAAY;AAAA,EAChC,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AACF,GAAsC;AACpC,QAAMC,IAAeC,EAAiB,EAAE,SAAAL,GAAS,QAAAE,GAAQ,GACnDI,IAAeC,EAAiB,EAAE,SAAAP,GAAS,UAAAC,GAAU,GAErDO,IAAe,MAAMC,EAAqBC,EAAM,MAAMV,GAASG,CAAG,GAElEQ,IAAYC,EAAUb,CAAM,EAAE,SAAA,GAE9B,EAAE,SAAAc,EAAA,IAAY,MAAMT,EAAa,iBAAiB;AAAA,IACtD,SAASI,EAAa;AAAA,IACtB,SAAAX;AAAA,IACA,OAAOiB,EAA2Bd,CAAO;AAAA,IACzC,KAAKQ,EAAa;AAAA,IAClB,cAAc;AAAA,IACd,MAAM,CAACV,GAAS,OAAOa,CAAS,CAAC;AAAA,EAAA,CAClC;AAID,SAFe,MAAML,EAAa,cAAcO,CAAO;AAGzD;"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
function
|
|
1
|
+
function c(t) {
|
|
2
2
|
return t.filter((e, o, r) => r.indexOf(e) === o);
|
|
3
3
|
}
|
|
4
|
-
function
|
|
4
|
+
function s(t, e, o = "asc") {
|
|
5
5
|
const r = [...t];
|
|
6
|
-
return r.sort((
|
|
7
|
-
const n = e(
|
|
6
|
+
return r.sort((f, i) => {
|
|
7
|
+
const n = e(f), u = e(i);
|
|
8
8
|
return typeof n == "number" ? n - u : typeof n == "string" ? n.localeCompare(u) : 0;
|
|
9
9
|
}), o === "desc" && r.reverse(), r;
|
|
10
10
|
}
|
|
11
11
|
export {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
s as orderBy,
|
|
13
|
+
c as unique
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=array-
|
|
15
|
+
//# sourceMappingURL=array-DYttUPf5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-
|
|
1
|
+
{"version":3,"file":"array-DYttUPf5.js","sources":["../../src/utils/array.ts"],"sourcesContent":["export function unique<T>(arr: T[]): T[] {\n return arr.filter((v, i, a) => a.indexOf(v) === i);\n}\n\nexport function orderBy<T>(\n arr: T[],\n property: (arrEntry: T) => string | number,\n direction: 'asc' | 'desc' = 'asc',\n): T[] {\n const array = [...arr];\n array.sort((a, b) => {\n const propA = property(a);\n const propB = property(b);\n\n if (typeof propA === 'number') {\n return propA - (propB as number);\n }\n\n if (typeof propA === 'string') {\n return propA.localeCompare(propB as string);\n }\n\n return 0;\n });\n\n if (direction === 'desc') {\n array.reverse();\n }\n\n return array;\n}\n"],"names":["unique","arr","v","i","a","orderBy","property","direction","array","b","propA","propB"],"mappings":"AAAO,SAASA,EAAUC,GAAe;AACvC,SAAOA,EAAI,OAAO,CAACC,GAAGC,GAAGC,MAAMA,EAAE,QAAQF,CAAC,MAAMC,CAAC;AACnD;AAEO,SAASE,EACdJ,GACAK,GACAC,IAA4B,OACvB;AACL,QAAMC,IAAQ,CAAC,GAAGP,CAAG;AACrB,SAAAO,EAAM,KAAK,CAACJ,GAAGK,MAAM;AACnB,UAAMC,IAAQJ,EAASF,CAAC,GAClBO,IAAQL,EAASG,CAAC;AAExB,WAAI,OAAOC,KAAU,WACZA,IAASC,IAGd,OAAOD,KAAU,WACZA,EAAM,cAAcC,CAAe,IAGrC;AAAA,EACT,CAAC,GAEGJ,MAAc,UAChBC,EAAM,QAAA,GAGDA;AACT;"}
|
package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs → blockchain-identifier-BTPGxLio.cjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const n=require("./index-BKzxeh1Y.cjs"),e=require("./token-addresses-
|
|
2
|
-
//# sourceMappingURL=blockchain-identifier-
|
|
1
|
+
"use strict";const n=require("./index-BKzxeh1Y.cjs"),e=require("./token-addresses-nzvTOi24.cjs"),t={eth:"DESTINATION_BLOCKCHAIN_ETHEREUM",ethOld:"BLOCKCHAIN_ETHEREUM",avalanche:"DESTINATION_BLOCKCHAIN_AVALANCHE",avalancheOld:"BLOCKCHAIN_AVALANCHE",base:"DESTINATION_BLOCKCHAIN_BASE",baseOld:"BLOCKCHAIN_BASE",bsc:"DESTINATION_BLOCKCHAIN_BSC",bscOld:"BLOCKCHAIN_BSC",katana:"DESTINATION_BLOCKCHAIN_KATANA",katanaOld:"BLOCKCHAIN_KATANA",sui:"DESTINATION_BLOCKCHAIN_SUI",suiOld:"BLOCKCHAIN_SUI",sonic:"DESTINATION_BLOCKCHAIN_SONIC",sonicOld:"BLOCKCHAIN_SONIC",solana:"DESTINATION_BLOCKCHAIN_SOLANA",solanaOld:"BLOCKCHAIN_SOLANA",starknet:"DESTINATION_BLOCKCHAIN_STARKNET",starknetOld:"BLOCKCHAIN_STARKNET",monad:"DESTINATION_BLOCKCHAIN_MONAD",monadOld:"BLOCKCHAIN_MONAD",stable:"DESTINATION_BLOCKCHAIN_STABLE",stableOld:"BLOCKCHAIN_STABLE",megaeth:"DESTINATION_BLOCKCHAIN_MEGAETH",megaethOld:"BLOCKCHAIN_MEGAETH",bitcoin:"DESTINATION_BLOCKCHAIN_BITCOIN",bitcoinOld:"BLOCKCHAIN_BITCOIN"};function o(a){if(a===e.ChainId.ethereum||a===e.ChainId.holesky||a===e.ChainId.sepolia)return t.eth;if(a===e.ChainId.avalanche||a===e.ChainId.avalancheFuji)return t.avalanche;if(a===e.ChainId.base||a===e.ChainId.baseSepoliaTestnet)return t.base;if(a===e.ChainId.binanceSmartChain||a===e.ChainId.binanceSmartChainTestnet)return t.bsc;if(a===e.ChainId.katana)return t.katana;if(a===e.ChainId.sonic||a===e.ChainId.sonicBlazeTestnet)return t.sonic;if(a===e.ChainId.monad)return t.monad;if(a===e.ChainId.megaeth)return t.megaeth;if(a===e.ChainId.stable)return t.stable;if(a===e.SUI_TESTNET_CHAIN||a===e.SUI_MAINNET_CHAIN)return t.sui;if(a===e.SOLANA_DEVNET_CHAIN||a===e.SOLANA_TESTNET_CHAIN||a===e.SOLANA_MAINNET_CHAIN)return t.solana;if(a===e.STARKNET_MAINNET_CHAIN||a===e.STARKNET_SEPOLIA_CHAIN)return t.starknet;throw new Error(`Unknown chain ID: ${a}`)}const C=a=>a===n.r.prod?e.ChainId.ethereum:e.ChainId.sepolia,r=a=>a===n.r.prod?e.ChainId.binanceSmartChain:e.ChainId.binanceSmartChainTestnet,A=a=>a===n.r.prod?e.ChainId.base:e.ChainId.baseSepoliaTestnet,I=a=>a===n.r.prod?e.SUI_MAINNET_CHAIN:e.SUI_TESTNET_CHAIN,s=a=>a===n.r.prod?e.ChainId.sonic:e.ChainId.sonicBlazeTestnet,O=a=>a===n.r.prod?e.SOLANA_MAINNET_CHAIN:e.SOLANA_DEVNET_CHAIN,i=a=>a===n.r.prod?e.STARKNET_MAINNET_CHAIN:e.STARKNET_SEPOLIA_CHAIN;function T(a,N=n.p){switch(a){case t.eth:case t.ethOld:return C(N);case t.avalanche:case t.avalancheOld:return N===n.r.prod?e.ChainId.avalanche:e.ChainId.avalancheFuji;case t.base:case t.baseOld:return A(N);case t.bsc:case t.bscOld:return r(N);case t.katana:case t.katanaOld:return e.ChainId.katana;case t.sui:case t.suiOld:return I(N);case t.sonic:case t.sonicOld:return s(N);case t.solana:case t.solanaOld:return O(N);case t.starknet:case t.starknetOld:return i(N);case t.monad:case t.monadOld:return e.ChainId.monad;case t.stable:case t.stableOld:return e.ChainId.stable;case t.megaeth:case t.megaethOld:return e.ChainId.megaeth;default:return e.ChainId.ethereum}}exports.BlockchainIdentifier=t;exports.getBaseNetworkByEnv=A;exports.getBscNetworkByEnv=r;exports.getChainIdByName=T;exports.getChainNameById=o;exports.getEthNetworkByEnv=C;exports.getSolanaNetworkByEnv=O;exports.getSonicNetworkByEnv=s;exports.getStarknetNetworkByEnv=i;exports.getSuiNetworkByEnv=I;
|
|
2
|
+
//# sourceMappingURL=blockchain-identifier-BTPGxLio.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockchain-identifier-
|
|
1
|
+
{"version":3,"file":"blockchain-identifier-BTPGxLio.cjs","sources":["../../src/common/blockchain-identifier.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\n\nimport {\n ChainId,\n SOLANA_DEVNET_CHAIN,\n SOLANA_MAINNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n SolanaChain,\n STARKNET_MAINNET_CHAIN,\n STARKNET_SEPOLIA_CHAIN,\n StarknetChainId,\n SUI_MAINNET_CHAIN,\n SUI_TESTNET_CHAIN,\n SuiChain,\n} from './chains';\nimport { featureConfig } from './feature-config';\n\nexport const BlockchainIdentifier = {\n eth: 'DESTINATION_BLOCKCHAIN_ETHEREUM',\n ethOld: 'BLOCKCHAIN_ETHEREUM',\n\n avalanche: 'DESTINATION_BLOCKCHAIN_AVALANCHE',\n avalancheOld: 'BLOCKCHAIN_AVALANCHE',\n\n base: 'DESTINATION_BLOCKCHAIN_BASE',\n baseOld: 'BLOCKCHAIN_BASE',\n\n bsc: 'DESTINATION_BLOCKCHAIN_BSC',\n bscOld: 'BLOCKCHAIN_BSC',\n\n katana: 'DESTINATION_BLOCKCHAIN_KATANA',\n katanaOld: 'BLOCKCHAIN_KATANA',\n\n sui: 'DESTINATION_BLOCKCHAIN_SUI',\n suiOld: 'BLOCKCHAIN_SUI',\n\n sonic: 'DESTINATION_BLOCKCHAIN_SONIC',\n sonicOld: 'BLOCKCHAIN_SONIC',\n\n solana: 'DESTINATION_BLOCKCHAIN_SOLANA',\n solanaOld: 'BLOCKCHAIN_SOLANA',\n\n starknet: 'DESTINATION_BLOCKCHAIN_STARKNET',\n starknetOld: 'BLOCKCHAIN_STARKNET',\n\n monad: 'DESTINATION_BLOCKCHAIN_MONAD',\n monadOld: 'BLOCKCHAIN_MONAD',\n\n stable: 'DESTINATION_BLOCKCHAIN_STABLE',\n stableOld: 'BLOCKCHAIN_STABLE',\n\n megaeth: 'DESTINATION_BLOCKCHAIN_MEGAETH',\n megaethOld: 'BLOCKCHAIN_MEGAETH',\n\n bitcoin: 'DESTINATION_BLOCKCHAIN_BITCOIN',\n bitcoinOld: 'BLOCKCHAIN_BITCOIN',\n} as const;\n\nexport type BlockchainIdentifier =\n (typeof BlockchainIdentifier)[keyof typeof BlockchainIdentifier];\n\nexport function getChainNameById(\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId,\n): BlockchainIdentifier {\n if (\n chainId === ChainId.ethereum ||\n chainId === ChainId.holesky ||\n chainId === ChainId.sepolia\n ) {\n return BlockchainIdentifier.eth;\n }\n\n if (\n (featureConfig.isAvalancheMainnetEnabled && chainId === ChainId.avalanche) ||\n (featureConfig.isAvalancheFujiEnabled && chainId === ChainId.avalancheFuji)\n ) {\n return BlockchainIdentifier.avalanche;\n }\n\n if (chainId === ChainId.base || chainId === ChainId.baseSepoliaTestnet) {\n return BlockchainIdentifier.base;\n }\n\n if (\n chainId === ChainId.binanceSmartChain ||\n chainId === ChainId.binanceSmartChainTestnet\n ) {\n return BlockchainIdentifier.bsc;\n }\n\n if (chainId === ChainId.katana) {\n return BlockchainIdentifier.katana;\n }\n\n if (chainId === ChainId.sonic || chainId === ChainId.sonicBlazeTestnet) {\n return BlockchainIdentifier.sonic;\n }\n\n if (featureConfig.isMonadEnabled && chainId === ChainId.monad) {\n return BlockchainIdentifier.monad;\n }\n\n if (chainId === ChainId.megaeth) {\n return BlockchainIdentifier.megaeth;\n }\n\n if (chainId === ChainId.stable) {\n return BlockchainIdentifier.stable;\n }\n\n if (chainId === SUI_TESTNET_CHAIN || chainId === SUI_MAINNET_CHAIN) {\n return BlockchainIdentifier.sui;\n }\n\n if (\n chainId === SOLANA_DEVNET_CHAIN ||\n chainId === SOLANA_TESTNET_CHAIN ||\n chainId === SOLANA_MAINNET_CHAIN\n ) {\n return BlockchainIdentifier.solana;\n }\n\n if (\n chainId === STARKNET_MAINNET_CHAIN ||\n chainId === STARKNET_SEPOLIA_CHAIN\n ) {\n return BlockchainIdentifier.starknet;\n }\n\n throw new Error(`Unknown chain ID: ${chainId}`);\n}\n\nexport const getEthNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.ethereum : ChainId.sepolia;\n\nexport const getBscNetworkByEnv = (env: Env) =>\n env === Env.prod\n ? ChainId.binanceSmartChain\n : ChainId.binanceSmartChainTestnet;\n\nexport const getBaseNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.base : ChainId.baseSepoliaTestnet;\n\nexport const getSuiNetworkByEnv = (env: Env) =>\n env === Env.prod ? SUI_MAINNET_CHAIN : SUI_TESTNET_CHAIN;\n\nexport const getSonicNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.sonic : ChainId.sonicBlazeTestnet;\n\nexport const getSolanaNetworkByEnv = (env: Env) =>\n env === Env.prod ? SOLANA_MAINNET_CHAIN : SOLANA_DEVNET_CHAIN;\n\nexport const getStarknetNetworkByEnv = (env: Env) =>\n env === Env.prod ? STARKNET_MAINNET_CHAIN : STARKNET_SEPOLIA_CHAIN;\n\n/**\n * @param chain the chain ID\n * @param env\n * @returns the chain name\n */\nexport function getChainIdByName(\n chain: string,\n env: Env = DEFAULT_ENV,\n): ChainId | SuiChain | SolanaChain | StarknetChainId {\n switch (chain as BlockchainIdentifier) {\n case BlockchainIdentifier.eth:\n case BlockchainIdentifier.ethOld:\n return getEthNetworkByEnv(env);\n\n case BlockchainIdentifier.avalanche:\n case BlockchainIdentifier.avalancheOld:\n return env === Env.prod ? ChainId.avalanche : ChainId.avalancheFuji;\n\n case BlockchainIdentifier.base:\n case BlockchainIdentifier.baseOld:\n return getBaseNetworkByEnv(env);\n\n case BlockchainIdentifier.bsc:\n case BlockchainIdentifier.bscOld:\n return getBscNetworkByEnv(env);\n\n case BlockchainIdentifier.katana:\n case BlockchainIdentifier.katanaOld:\n return ChainId.katana;\n\n case BlockchainIdentifier.sui:\n case BlockchainIdentifier.suiOld:\n return getSuiNetworkByEnv(env);\n\n case BlockchainIdentifier.sonic:\n case BlockchainIdentifier.sonicOld:\n return getSonicNetworkByEnv(env);\n\n case BlockchainIdentifier.solana:\n case BlockchainIdentifier.solanaOld:\n return getSolanaNetworkByEnv(env);\n\n case BlockchainIdentifier.starknet:\n case BlockchainIdentifier.starknetOld:\n return getStarknetNetworkByEnv(env);\n\n case BlockchainIdentifier.monad:\n case BlockchainIdentifier.monadOld:\n return ChainId.monad;\n\n case BlockchainIdentifier.stable:\n case BlockchainIdentifier.stableOld:\n return ChainId.stable;\n\n case BlockchainIdentifier.megaeth:\n case BlockchainIdentifier.megaethOld:\n return ChainId.megaeth;\n\n default:\n return ChainId.ethereum;\n }\n}\n"],"names":["BlockchainIdentifier","getChainNameById","chainId","ChainId","SUI_TESTNET_CHAIN","SUI_MAINNET_CHAIN","SOLANA_DEVNET_CHAIN","SOLANA_TESTNET_CHAIN","SOLANA_MAINNET_CHAIN","STARKNET_MAINNET_CHAIN","STARKNET_SEPOLIA_CHAIN","getEthNetworkByEnv","env","Env","getBscNetworkByEnv","getBaseNetworkByEnv","getSuiNetworkByEnv","getSonicNetworkByEnv","getSolanaNetworkByEnv","getStarknetNetworkByEnv","getChainIdByName","chain","DEFAULT_ENV"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { p as T, r as
|
|
2
|
-
import {
|
|
1
|
+
import { p as T, r as n } from "./index-CfcQ_g3t.js";
|
|
2
|
+
import { ChainId as t, SOLANA_MAINNET_CHAIN as r, SOLANA_DEVNET_CHAIN as s, STARKNET_MAINNET_CHAIN as A, STARKNET_SEPOLIA_CHAIN as O, SUI_MAINNET_CHAIN as C, SUI_TESTNET_CHAIN as o, SOLANA_TESTNET_CHAIN as l } from "./token-addresses-D0v5cR1j.js";
|
|
3
3
|
const a = {
|
|
4
4
|
eth: "DESTINATION_BLOCKCHAIN_ETHEREUM",
|
|
5
5
|
ethOld: "BLOCKCHAIN_ETHEREUM",
|
|
@@ -49,42 +49,42 @@ function L(e) {
|
|
|
49
49
|
return a.stable;
|
|
50
50
|
if (e === o || e === C)
|
|
51
51
|
return a.sui;
|
|
52
|
-
if (e ===
|
|
52
|
+
if (e === s || e === l || e === r)
|
|
53
53
|
return a.solana;
|
|
54
54
|
if (e === A || e === O)
|
|
55
55
|
return a.starknet;
|
|
56
56
|
throw new Error(`Unknown chain ID: ${e}`);
|
|
57
57
|
}
|
|
58
|
-
const I = (e) => e ===
|
|
59
|
-
function K(e,
|
|
58
|
+
const I = (e) => e === n.prod ? t.ethereum : t.sepolia, _ = (e) => e === n.prod ? t.binanceSmartChain : t.binanceSmartChainTestnet, E = (e) => e === n.prod ? t.base : t.baseSepoliaTestnet, B = (e) => e === n.prod ? C : o, c = (e) => e === n.prod ? t.sonic : t.sonicBlazeTestnet, S = (e) => e === n.prod ? r : s, u = (e) => e === n.prod ? A : O;
|
|
59
|
+
function K(e, N = T) {
|
|
60
60
|
switch (e) {
|
|
61
61
|
case a.eth:
|
|
62
62
|
case a.ethOld:
|
|
63
|
-
return I(
|
|
63
|
+
return I(N);
|
|
64
64
|
case a.avalanche:
|
|
65
65
|
case a.avalancheOld:
|
|
66
|
-
return
|
|
66
|
+
return N === n.prod ? t.avalanche : t.avalancheFuji;
|
|
67
67
|
case a.base:
|
|
68
68
|
case a.baseOld:
|
|
69
|
-
return E(
|
|
69
|
+
return E(N);
|
|
70
70
|
case a.bsc:
|
|
71
71
|
case a.bscOld:
|
|
72
|
-
return _(
|
|
72
|
+
return _(N);
|
|
73
73
|
case a.katana:
|
|
74
74
|
case a.katanaOld:
|
|
75
75
|
return t.katana;
|
|
76
76
|
case a.sui:
|
|
77
77
|
case a.suiOld:
|
|
78
|
-
return
|
|
78
|
+
return B(N);
|
|
79
79
|
case a.sonic:
|
|
80
80
|
case a.sonicOld:
|
|
81
|
-
return
|
|
81
|
+
return c(N);
|
|
82
82
|
case a.solana:
|
|
83
83
|
case a.solanaOld:
|
|
84
|
-
return S(
|
|
84
|
+
return S(N);
|
|
85
85
|
case a.starknet:
|
|
86
86
|
case a.starknetOld:
|
|
87
|
-
return u(
|
|
87
|
+
return u(N);
|
|
88
88
|
case a.monad:
|
|
89
89
|
case a.monadOld:
|
|
90
90
|
return t.monad;
|
|
@@ -99,15 +99,15 @@ function K(e, s = T) {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
export {
|
|
102
|
-
a as
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
u as
|
|
111
|
-
|
|
102
|
+
a as BlockchainIdentifier,
|
|
103
|
+
E as getBaseNetworkByEnv,
|
|
104
|
+
_ as getBscNetworkByEnv,
|
|
105
|
+
K as getChainIdByName,
|
|
106
|
+
L as getChainNameById,
|
|
107
|
+
I as getEthNetworkByEnv,
|
|
108
|
+
S as getSolanaNetworkByEnv,
|
|
109
|
+
c as getSonicNetworkByEnv,
|
|
110
|
+
u as getStarknetNetworkByEnv,
|
|
111
|
+
B as getSuiNetworkByEnv
|
|
112
112
|
};
|
|
113
|
-
//# sourceMappingURL=blockchain-identifier-
|
|
113
|
+
//# sourceMappingURL=blockchain-identifier-CTVaEPpY.js.map
|
package/dist/chunks/{blockchain-identifier-BmadkNtK.js.map → blockchain-identifier-CTVaEPpY.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockchain-identifier-
|
|
1
|
+
{"version":3,"file":"blockchain-identifier-CTVaEPpY.js","sources":["../../src/common/blockchain-identifier.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\n\nimport {\n ChainId,\n SOLANA_DEVNET_CHAIN,\n SOLANA_MAINNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n SolanaChain,\n STARKNET_MAINNET_CHAIN,\n STARKNET_SEPOLIA_CHAIN,\n StarknetChainId,\n SUI_MAINNET_CHAIN,\n SUI_TESTNET_CHAIN,\n SuiChain,\n} from './chains';\nimport { featureConfig } from './feature-config';\n\nexport const BlockchainIdentifier = {\n eth: 'DESTINATION_BLOCKCHAIN_ETHEREUM',\n ethOld: 'BLOCKCHAIN_ETHEREUM',\n\n avalanche: 'DESTINATION_BLOCKCHAIN_AVALANCHE',\n avalancheOld: 'BLOCKCHAIN_AVALANCHE',\n\n base: 'DESTINATION_BLOCKCHAIN_BASE',\n baseOld: 'BLOCKCHAIN_BASE',\n\n bsc: 'DESTINATION_BLOCKCHAIN_BSC',\n bscOld: 'BLOCKCHAIN_BSC',\n\n katana: 'DESTINATION_BLOCKCHAIN_KATANA',\n katanaOld: 'BLOCKCHAIN_KATANA',\n\n sui: 'DESTINATION_BLOCKCHAIN_SUI',\n suiOld: 'BLOCKCHAIN_SUI',\n\n sonic: 'DESTINATION_BLOCKCHAIN_SONIC',\n sonicOld: 'BLOCKCHAIN_SONIC',\n\n solana: 'DESTINATION_BLOCKCHAIN_SOLANA',\n solanaOld: 'BLOCKCHAIN_SOLANA',\n\n starknet: 'DESTINATION_BLOCKCHAIN_STARKNET',\n starknetOld: 'BLOCKCHAIN_STARKNET',\n\n monad: 'DESTINATION_BLOCKCHAIN_MONAD',\n monadOld: 'BLOCKCHAIN_MONAD',\n\n stable: 'DESTINATION_BLOCKCHAIN_STABLE',\n stableOld: 'BLOCKCHAIN_STABLE',\n\n megaeth: 'DESTINATION_BLOCKCHAIN_MEGAETH',\n megaethOld: 'BLOCKCHAIN_MEGAETH',\n\n bitcoin: 'DESTINATION_BLOCKCHAIN_BITCOIN',\n bitcoinOld: 'BLOCKCHAIN_BITCOIN',\n} as const;\n\nexport type BlockchainIdentifier =\n (typeof BlockchainIdentifier)[keyof typeof BlockchainIdentifier];\n\nexport function getChainNameById(\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId,\n): BlockchainIdentifier {\n if (\n chainId === ChainId.ethereum ||\n chainId === ChainId.holesky ||\n chainId === ChainId.sepolia\n ) {\n return BlockchainIdentifier.eth;\n }\n\n if (\n (featureConfig.isAvalancheMainnetEnabled && chainId === ChainId.avalanche) ||\n (featureConfig.isAvalancheFujiEnabled && chainId === ChainId.avalancheFuji)\n ) {\n return BlockchainIdentifier.avalanche;\n }\n\n if (chainId === ChainId.base || chainId === ChainId.baseSepoliaTestnet) {\n return BlockchainIdentifier.base;\n }\n\n if (\n chainId === ChainId.binanceSmartChain ||\n chainId === ChainId.binanceSmartChainTestnet\n ) {\n return BlockchainIdentifier.bsc;\n }\n\n if (chainId === ChainId.katana) {\n return BlockchainIdentifier.katana;\n }\n\n if (chainId === ChainId.sonic || chainId === ChainId.sonicBlazeTestnet) {\n return BlockchainIdentifier.sonic;\n }\n\n if (featureConfig.isMonadEnabled && chainId === ChainId.monad) {\n return BlockchainIdentifier.monad;\n }\n\n if (chainId === ChainId.megaeth) {\n return BlockchainIdentifier.megaeth;\n }\n\n if (chainId === ChainId.stable) {\n return BlockchainIdentifier.stable;\n }\n\n if (chainId === SUI_TESTNET_CHAIN || chainId === SUI_MAINNET_CHAIN) {\n return BlockchainIdentifier.sui;\n }\n\n if (\n chainId === SOLANA_DEVNET_CHAIN ||\n chainId === SOLANA_TESTNET_CHAIN ||\n chainId === SOLANA_MAINNET_CHAIN\n ) {\n return BlockchainIdentifier.solana;\n }\n\n if (\n chainId === STARKNET_MAINNET_CHAIN ||\n chainId === STARKNET_SEPOLIA_CHAIN\n ) {\n return BlockchainIdentifier.starknet;\n }\n\n throw new Error(`Unknown chain ID: ${chainId}`);\n}\n\nexport const getEthNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.ethereum : ChainId.sepolia;\n\nexport const getBscNetworkByEnv = (env: Env) =>\n env === Env.prod\n ? ChainId.binanceSmartChain\n : ChainId.binanceSmartChainTestnet;\n\nexport const getBaseNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.base : ChainId.baseSepoliaTestnet;\n\nexport const getSuiNetworkByEnv = (env: Env) =>\n env === Env.prod ? SUI_MAINNET_CHAIN : SUI_TESTNET_CHAIN;\n\nexport const getSonicNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.sonic : ChainId.sonicBlazeTestnet;\n\nexport const getSolanaNetworkByEnv = (env: Env) =>\n env === Env.prod ? SOLANA_MAINNET_CHAIN : SOLANA_DEVNET_CHAIN;\n\nexport const getStarknetNetworkByEnv = (env: Env) =>\n env === Env.prod ? STARKNET_MAINNET_CHAIN : STARKNET_SEPOLIA_CHAIN;\n\n/**\n * @param chain the chain ID\n * @param env\n * @returns the chain name\n */\nexport function getChainIdByName(\n chain: string,\n env: Env = DEFAULT_ENV,\n): ChainId | SuiChain | SolanaChain | StarknetChainId {\n switch (chain as BlockchainIdentifier) {\n case BlockchainIdentifier.eth:\n case BlockchainIdentifier.ethOld:\n return getEthNetworkByEnv(env);\n\n case BlockchainIdentifier.avalanche:\n case BlockchainIdentifier.avalancheOld:\n return env === Env.prod ? ChainId.avalanche : ChainId.avalancheFuji;\n\n case BlockchainIdentifier.base:\n case BlockchainIdentifier.baseOld:\n return getBaseNetworkByEnv(env);\n\n case BlockchainIdentifier.bsc:\n case BlockchainIdentifier.bscOld:\n return getBscNetworkByEnv(env);\n\n case BlockchainIdentifier.katana:\n case BlockchainIdentifier.katanaOld:\n return ChainId.katana;\n\n case BlockchainIdentifier.sui:\n case BlockchainIdentifier.suiOld:\n return getSuiNetworkByEnv(env);\n\n case BlockchainIdentifier.sonic:\n case BlockchainIdentifier.sonicOld:\n return getSonicNetworkByEnv(env);\n\n case BlockchainIdentifier.solana:\n case BlockchainIdentifier.solanaOld:\n return getSolanaNetworkByEnv(env);\n\n case BlockchainIdentifier.starknet:\n case BlockchainIdentifier.starknetOld:\n return getStarknetNetworkByEnv(env);\n\n case BlockchainIdentifier.monad:\n case BlockchainIdentifier.monadOld:\n return ChainId.monad;\n\n case BlockchainIdentifier.stable:\n case BlockchainIdentifier.stableOld:\n return ChainId.stable;\n\n case BlockchainIdentifier.megaeth:\n case BlockchainIdentifier.megaethOld:\n return ChainId.megaeth;\n\n default:\n return ChainId.ethereum;\n }\n}\n"],"names":["BlockchainIdentifier","getChainNameById","chainId","ChainId","SUI_TESTNET_CHAIN","SUI_MAINNET_CHAIN","SOLANA_DEVNET_CHAIN","SOLANA_TESTNET_CHAIN","SOLANA_MAINNET_CHAIN","STARKNET_MAINNET_CHAIN","STARKNET_SEPOLIA_CHAIN","getEthNetworkByEnv","env","Env","getBscNetworkByEnv","getBaseNetworkByEnv","getSuiNetworkByEnv","getSonicNetworkByEnv","getSolanaNetworkByEnv","getStarknetNetworkByEnv","getChainIdByName","chain","DEFAULT_ENV"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import k from "bignumber.js";
|
|
2
2
|
import { encodeAbiParameters as ee, parseAbiParameters as te, encodePacked as ne, pad as ae } from "viem";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { getTokenInfo as U, makePublicClient as q, toBaseDenomination as Z, fromBaseDenomination as R, getErrorMessage as j } from "./tokens-DgC1hfkm.js";
|
|
4
|
+
import { ChainId as e, Token as W, makeWalletClient as J } from "./token-addresses-D0v5cR1j.js";
|
|
5
|
+
import { toBigInt as K } from "./numbers-CclN2Ohk.js";
|
|
6
|
+
import { unique as ie } from "./array-DYttUPf5.js";
|
|
7
|
+
import { approveLBTC as X } from "./approveLBTC-Du2El1tW.js";
|
|
8
8
|
import { Options as se } from "@layerzerolabs/lz-v2-utilities";
|
|
9
9
|
const V = /* @__PURE__ */ JSON.parse('[{"inputs":[{"internalType":"address","name":"wrappedNative","type":"address"},{"internalType":"address","name":"armProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadARMSignal","type":"error"},{"inputs":[],"name":"FailedToSendValue","type":"error"},{"inputs":[],"name":"InsufficientFeeTokenAmount","type":"error"},{"inputs":[],"name":"InvalidMsgValue","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"InvalidRecipientAddress","type":"error"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampMismatch","type":"error"},{"inputs":[],"name":"OnlyOffRamp","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"UnsupportedDestinationChain","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"},{"indexed":false,"internalType":"bytes32","name":"calldataHash","type":"bytes32"}],"name":"MessageExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"onRamp","type":"address"}],"name":"OnRampSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MAX_RET_BYTES","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"onRamp","type":"address"}],"internalType":"struct Router.OnRamp[]","name":"onRampUpdates","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"offRampRemoves","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"offRampAdds","type":"tuple[]"}],"name":"applyRampUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"destinationChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"ccipSend","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getArmProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destinationChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"getFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOffRamps","outputs":[{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getOnRamp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"getSupportedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWrappedNative","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"isChainSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"name":"isOffRamp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"bytes","name":"sender","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"destTokenAmounts","type":"tuple[]"}],"internalType":"struct Client.Any2EVMMessage","name":"message","type":"tuple"},{"internalType":"uint16","name":"gasForCallExactCheck","type":"uint16"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"routeMessage","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"retData","type":"bytes"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wrappedNative","type":"address"}],"name":"setWrappedNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]'), re = {
|
|
10
10
|
[e.ethereum]: {
|
|
@@ -659,12 +659,12 @@ async function De({
|
|
|
659
659
|
}
|
|
660
660
|
}
|
|
661
661
|
export {
|
|
662
|
-
pe as
|
|
663
|
-
ye as
|
|
664
|
-
oe as
|
|
665
|
-
De as
|
|
666
|
-
ge as
|
|
667
|
-
xe as
|
|
668
|
-
$ as
|
|
662
|
+
pe as OFT_GAS_LIMIT,
|
|
663
|
+
ye as OFT_HI_GAS_LIMIT,
|
|
664
|
+
oe as OFT_HI_GAS_LIMIT_CHAINS,
|
|
665
|
+
De as bridge,
|
|
666
|
+
ge as bridgeCCIP,
|
|
667
|
+
xe as bridgeOFT,
|
|
668
|
+
$ as getBridgeInfo
|
|
669
669
|
};
|
|
670
|
-
//# sourceMappingURL=bridge-
|
|
670
|
+
//# sourceMappingURL=bridge-DqGabhIY.js.map
|