@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-BzRlY9pP.cjs","sources":["../../src/bridge/lib/ccip-config.ts","../../src/bridge/lib/config.ts","../../src/bridge/lib/ccip-bridge.ts","../../src/bridge/lib/oft-bridge.ts","../../src/bridge/lib/bridge.ts"],"sourcesContent":["import { Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\n\nexport type CCIPChainConfig = {\n routerAddress: Address;\n chainSelector: string;\n};\n\ntype CCIPConfig = Record<number, CCIPChainConfig>;\n\nexport const CCIP_CONFIG: CCIPConfig = {\n [ChainId.ethereum]: {\n routerAddress: '0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D',\n chainSelector: '5009297550715157269',\n },\n [ChainId.base]: {\n routerAddress: '0x881e3A65B4d4a04dD529061dd0071cf975F58bCD',\n chainSelector: '15971525489660198786',\n },\n [ChainId.binanceSmartChain]: {\n routerAddress: '0x34B03Cb9086d7D758AC55af71584F81A598759FE',\n chainSelector: '11344663589394136015',\n },\n [ChainId.sonic]: {\n routerAddress: '0xB4e1Ff7882474BB93042be9AD5E1fA387949B860',\n chainSelector: '1673871237479749969',\n },\n [ChainId.katana]: {\n routerAddress: '0x7c19b79D2a054114Ab36ad758A36e92376e267DA',\n chainSelector: '2459028469735686113',\n },\n [ChainId.megaeth]: {\n routerAddress: '0xfa546248C54939AA6C48279CdC1EAf9A1125c411',\n chainSelector: '6093540873831549674',\n },\n [ChainId.avalanche]: {\n routerAddress: '0xF4c7E640EdA248ef95972845a62bdC74237805dB',\n chainSelector: '6433500567565415381',\n },\n [ChainId.monad]: {\n routerAddress: '0x33566fE5976AAa420F3d5C64996641Fc3858CaDB',\n chainSelector: '8481857512324358265',\n },\n [ChainId.stable]: {\n routerAddress: '0xECFF67559c0583027A5fbd85136E33bC4D66eeA0',\n chainSelector: '16978377838628290997',\n },\n // Testnets\n [ChainId.holesky]: {\n routerAddress: '0xb9531b46fE8808fB3659e39704953c2B1112DD43',\n chainSelector: '7717148896336251131',\n },\n [ChainId.baseSepoliaTestnet]: {\n routerAddress: '0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93',\n chainSelector: '10344971235874465080',\n },\n [ChainId.binanceSmartChainTestnet]: {\n routerAddress: '0xE1053aE1857476f36A3C62580FF9b016E8EE8F6f',\n chainSelector: '13264668187771770619',\n },\n [ChainId.avalancheFuji]: {\n routerAddress: '0xF694E193200268f9a4868e4Aa017A0118C9a8177',\n chainSelector: '14767482510784806043',\n },\n};\n\nexport function getCCIPConfig(chainId: ChainId): CCIPChainConfig | undefined {\n return CCIP_CONFIG[chainId];\n}\n","import BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\nimport { ContractInfo } from '../../common/contract-info';\nimport { featureConfig } from '../../common/feature-config';\nimport { unique } from '../../utils/array';\nimport CCIP_BRIDGE_ADAPTER_ABI from '../abi/CCIP_BRIDGE_ADAPTER_ABI.json';\nimport OFT_BRIDGE_ADAPTER_ABI from '../abi/OFT_BRIDGE_ADAPTER_ABI.json';\n\nexport const MIN_BRIDGE_AMOUNT = BigNumber(0.000001);\n\nexport enum BridgeType {\n /** CCIP - (Chainlink) Cross-Chain Interoperability Protocol */\n CCIP = 'CCIP',\n\n /** OFT - (LayerZero) Omnichain Fungible Token */\n OFT = 'OFT',\n}\n\nexport const BRIDGE_EXPLORER_URL_MAP = {\n [BridgeType.CCIP]: 'https://ccip.chain.link/tx/{txHash}',\n [BridgeType.OFT]: 'https://layerzeroscan.com/tx/{txHash}',\n};\n\nexport const CCIP_BRIDGE_CHAINS = [\n // Mainnets:\n ChainId.ethereum,\n ChainId.base,\n ChainId.binanceSmartChain,\n ChainId.katana,\n ChainId.sonic,\n ...(featureConfig.isAvalancheMainnetEnabled ? [ChainId.avalanche] : []),\n ...(featureConfig.isMonadEnabled ? [ChainId.monad] : []),\n ChainId.stable,\n // Testnets:\n ...(featureConfig.isAvalancheFujiEnabled ? [ChainId.avalancheFuji] : []),\n ChainId.baseSepoliaTestnet,\n ChainId.holesky,\n ChainId.sepolia,\n];\nexport type CCIPBridgeChain = (typeof CCIP_BRIDGE_CHAINS)[number];\n\nexport const OFT_BRIDGE_CHAINS = [\n // Mainnets:\n ChainId.ethereum,\n ChainId.berachain,\n ChainId.corn,\n ChainId.etherlink,\n ChainId.swell,\n ChainId.tac,\n // Testnets:\n ChainId.berachainBartioTestnet,\n ChainId.sepolia,\n];\n\nexport const BRIDGE_CHAINS = unique([\n ...CCIP_BRIDGE_CHAINS,\n ...OFT_BRIDGE_CHAINS,\n]);\nexport type BridgeChain = CCIPBridgeChain | OFTBridgeChain;\n\nexport const OFT_GAS_LIMIT = 90_000;\nexport const OFT_HI_GAS_LIMIT = 200_000;\nexport const OFT_HI_GAS_LIMIT_CHAINS = [\n // Mainnets:\n ChainId.berachain,\n ChainId.etherlink,\n ChainId.morph,\n ChainId.sonic,\n ChainId.corn,\n ChainId.tac,\n // Testnets:\n ChainId.berachainBartioTestnet,\n ChainId.morphHolesky,\n];\n\nexport type OFTBridgeChain = (typeof OFT_BRIDGE_CHAINS)[number];\n\ntype BridgeIdentifier<Ch extends CCIPBridgeChain | OFTBridgeChain> =\n `[from:${Ch}, to: ${Ch}]`;\n\nconst bridgeIdentifier = <Ch extends CCIPBridgeChain | OFTBridgeChain>([\n from,\n to,\n]: [from: Ch, to: Ch]): BridgeIdentifier<Ch> => `[from:${from}, to: ${to}]`;\n\ntype BridgeInfo = { type: BridgeType; contract: ContractInfo };\n\ntype CCIPBridgesConfig = [\n BridgeIdentifier<CCIPBridgeChain>,\n { type: BridgeType.CCIP; contract: ContractInfo },\n];\n\nconst CCIP_FROM_ETH = {\n routes: [\n bridgeIdentifier([ChainId.ethereum, ChainId.base]),\n bridgeIdentifier([ChainId.ethereum, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.ethereum, ChainId.sonic]),\n bridgeIdentifier([ChainId.ethereum, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n};\n\nconst CCIP_FROM_BASE = {\n routes: [\n bridgeIdentifier([ChainId.base, ChainId.ethereum]),\n bridgeIdentifier([ChainId.base, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.base, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.base,\n },\n};\n\nconst CCIP_FROM_BSC = {\n routes: [\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.ethereum]),\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.base]),\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.binanceSmartChain,\n },\n};\n\nconst CCIP_FROM_KATANA = {\n routes: [\n bridgeIdentifier([ChainId.katana, ChainId.ethereum]),\n bridgeIdentifier([ChainId.katana, ChainId.base]),\n bridgeIdentifier([ChainId.katana, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.katana, ChainId.sonic]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xA869817b48b25EeE986bdF4bE04062e6fd2C418B' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.katana,\n },\n};\n\nconst CCIP_FROM_SONIC = {\n routes: [\n bridgeIdentifier([ChainId.sonic, ChainId.ethereum]),\n bridgeIdentifier([ChainId.sonic, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sonic,\n },\n};\n\nconst CCIP_FROM_BASE_SEPOLIA = {\n routes: [bridgeIdentifier([ChainId.baseSepoliaTestnet, ChainId.holesky])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.baseSepoliaTestnet,\n },\n};\n\nconst CCIP_FROM_HOLESKY = {\n routes: [bridgeIdentifier([ChainId.holesky, ChainId.baseSepoliaTestnet])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.holesky,\n },\n};\n\nconst CCIP_BRIDGES: CCIPBridgesConfig[] = [\n // Mainnets:\n CCIP_FROM_ETH,\n CCIP_FROM_BASE,\n CCIP_FROM_BSC,\n CCIP_FROM_KATANA,\n CCIP_FROM_SONIC,\n // Testnets:\n CCIP_FROM_BASE_SEPOLIA,\n CCIP_FROM_HOLESKY,\n].reduce((acc, cur) => {\n if (cur.type !== BridgeType.CCIP) return acc;\n\n const c: CCIPBridgesConfig[] = cur.routes.map(route => [\n route,\n { type: BridgeType.CCIP, contract: cur.contract },\n ]);\n\n return acc.concat(c);\n}, [] as CCIPBridgesConfig[]);\n\ntype OFTBridgeConfig = [\n BridgeIdentifier<OFTBridgeChain>,\n { type: BridgeType.OFT; contract: ContractInfo },\n];\nconst OFT_BRIDGES: OFTBridgeConfig[] = [\n // Mainnets:\n\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.berachain]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1290A6b480f7eF14925229fdB66f5680aD8F44AD',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.corn]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x6bc15d7930839ec18a57f6f7df72ae1b439d077f',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.etherlink]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x3a7647c1323144a16e7D0D71A581E3FE5BD95299',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.swell]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x37E92d760a15231e652a2C502182a6b44c7510c0',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.tac]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xA7c4d94F98b6e94C139c4645e4E9a94CD7C0Abf7',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.berachain, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x630e12D53D4E041b8C5451aD035Ea841E08391d7',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.berachain,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.corn, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xfc7B20D9B59A8A466f4fC3d34aA69a7D98e71d7A',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.corn,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.etherlink, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xC832183d4d5fc5831daaC892a93dBBfd798034E3',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.etherlink,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.swell, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x7B3784AD646C10A8Ddf42b47a4f4bd9aFD351E54',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.swell,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.tac, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1298131cDa718bBcA7ACB1f2411e71c05E16f269',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.tac,\n },\n },\n ],\n\n // Testnets:\n\n [\n bridgeIdentifier([ChainId.berachainBartioTestnet, ChainId.sepolia]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1977013acaf27856ac8048C42EE2ed0134d53895',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.berachainBartioTestnet,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.sepolia, ChainId.berachainBartioTestnet]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xe3748bF0Ec0A76767539eE28610B3367e35fe2C2',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sepolia,\n },\n },\n ],\n];\n\nexport const BRIDGES = new Map<BridgeIdentifier<BridgeChain>, BridgeInfo>([\n ...CCIP_BRIDGES,\n ...OFT_BRIDGES,\n]);\n\n/** Gets the bridge information */\nexport const getBridgeInfo = (from: BridgeChain, to: BridgeChain) => {\n return BRIDGES.get(bridgeIdentifier([from, to]));\n};\n","import BigNumber from 'bignumber.js';\nimport {\n Address,\n encodeAbiParameters,\n encodePacked,\n parseAbiParameters,\n} from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { approveLBTC } from '../../contract-functions';\nimport { Token } from '../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../tokens/tokens';\nimport { getErrorMessage } from '../../utils/err';\nimport toBigInt from '../../utils/numbers';\nimport CCIP_ROUTER_ABI from '../abi/CCIP_ROUTER_ABI.json';\nimport { getCCIPConfig } from './ccip-config';\nimport {\n BridgeType,\n CCIP_BRIDGE_CHAINS,\n CCIPBridgeChain,\n getBridgeInfo,\n MIN_BRIDGE_AMOUNT,\n} from './config';\n\nexport type BridgeCCIPParameters = {\n /** The destination chain id. */\n to: CCIPBridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters;\n\n/**\n * Encodes extraArgs for CCIP according to version 1\n * Format: EVMExtraArgsV1 { gasLimit: uint256 }\n *\n * @see https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/offchain/javascript/src/transfer-tokens.js\n */\nfunction encodeExtraArgs(gasLimit: bigint): `0x${string}` {\n // Tag for EVMExtraArgsV1\n const tag = '0x97a657c9';\n\n // Encode gasLimit as uint256\n const encodedGasLimit = encodePacked(['uint256'], [gasLimit]);\n\n return `${tag}${encodedGasLimit.slice(2)}` as `0x${string}`;\n}\n\n/**\n * Transfers tokens via CCIP using direct Router contract calls\n * Based on Chainlink example:\n * @see https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/offchain/javascript/src/transfer-tokens.js\n */\nexport async function bridgeCCIP({\n to,\n amount: amountRaw,\n approve,\n recipient: optionalRecipient,\n account,\n chainId: from,\n provider,\n env,\n rpcUrl,\n}: BridgeCCIPParameters) {\n const amount = BigNumber(amountRaw);\n const recipient = optionalRecipient || account;\n\n const bridgeInfo = getBridgeInfo(from as CCIPBridgeChain, to);\n if (!bridgeInfo || bridgeInfo.type !== BridgeType.CCIP) {\n throw new Error(\n `Unsupported bridge from ${from} to ${to}. Please switch to the supported chains: ${CCIP_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n // Get CCIP Router configuration\n const sourceChainConfig = getCCIPConfig(from);\n const destinationChainConfig = getCCIPConfig(to);\n\n if (!sourceChainConfig || !destinationChainConfig) {\n throw new Error(`CCIP configuration not found for chains ${from} -> ${to}`);\n }\n\n const routerAddress = sourceChainConfig.routerAddress;\n\n const lbtcContract = await getTokenInfo(Token.LBTC, from, env, rpcUrl);\n if (!lbtcContract) {\n throw new Error('Could not retrieve LBTC contract info.');\n }\n\n const publicClient = makePublicClient({ chainId: from, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId: from });\n\n const amountBase = toBigInt(\n toBaseDenomination(amount, lbtcContract.decimals),\n );\n\n if (amount.isLessThan(MIN_BRIDGE_AMOUNT)) {\n throw new Error(\n `The amount is smaller than the minimum amount allowed: ${MIN_BRIDGE_AMOUNT.toFixed()}`,\n );\n }\n\n const balanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The amount exceeds the account's balance. \\nAmount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n const allowanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'allowance',\n args: [account, routerAddress],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The amount exceeds allowance. \\nAmount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount for Router\n console.info(exceededMessage);\n try {\n const txHash = await approveLBTC({\n account,\n spender: routerAddress,\n amount,\n chainId: from,\n provider,\n rpcUrl,\n env,\n });\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${routerAddress}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${routerAddress}. \\nReason: ${msg}`,\n );\n }\n }\n\n // Build CCIP message (EVM2AnyMessage)\n // IMPORTANT: receiver must be abi.encode(address) for EVM chains, not encodePacked\n const receiverBytes = encodeAbiParameters(parseAbiParameters('address'), [\n recipient,\n ]);\n const extraArgs = encodeExtraArgs(0n);\n\n const message = {\n receiver: receiverBytes,\n data: '0x' as `0x${string}`,\n tokenAmounts: [\n {\n token: lbtcContract.address,\n amount: amountBase,\n },\n ],\n feeToken: '0x0000000000000000000000000000000000000000' as Address, // address(0) means payment in native currency\n extraArgs, // 0 = automatic gas limit calculation\n };\n\n // Get fee for sending the message\n const fee = (await publicClient.readContract({\n address: routerAddress,\n abi: CCIP_ROUTER_ABI,\n functionName: 'getFee',\n args: [BigInt(destinationChainConfig.chainSelector), message],\n })) as bigint;\n\n // Send CCIP message\n const { request } = await publicClient.simulateContract({\n address: routerAddress,\n abi: CCIP_ROUTER_ABI,\n account,\n functionName: 'ccipSend',\n args: [BigInt(destinationChainConfig.chainSelector), message],\n value: fee,\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import { Options } from '@layerzerolabs/lz-v2-utilities';\nimport BigNumber from 'bignumber.js';\nimport { Address, pad } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { ChainId } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { approveLBTC } from '../../contract-functions';\nimport { Token } from '../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../tokens/tokens';\nimport { getErrorMessage } from '../../utils/err';\nimport toBigInt from '../../utils/numbers';\nimport {\n BridgeType,\n getBridgeInfo,\n MIN_BRIDGE_AMOUNT,\n OFT_BRIDGE_CHAINS,\n OFT_GAS_LIMIT,\n OFT_HI_GAS_LIMIT,\n OFT_HI_GAS_LIMIT_CHAINS,\n OFTBridgeChain,\n} from './config';\n\nconst DESTINATION_ENDPOINT_ID_MAP: Record<OFTBridgeChain, number> = {\n // Mainnets:\n [ChainId.ethereum]: 30101,\n [ChainId.berachain]: 30362,\n [ChainId.corn]: 30331,\n [ChainId.etherlink]: 30292,\n [ChainId.swell]: 30335,\n [ChainId.tac]: 30377,\n // Testnets:\n [ChainId.sepolia]: 40161,\n [ChainId.berachainBartioTestnet]: 40291,\n};\n\nexport type BridgeOFTParameters = {\n /** The destination chain id. */\n to: OFTBridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters;\nexport async function bridgeOFT({\n to,\n amount: amountRaw,\n approve,\n recipient: optionalRecipient,\n account,\n chainId: from,\n provider,\n env,\n rpcUrl,\n}: BridgeOFTParameters) {\n console.warn(\n 'The \"bridgeOFT\" function is provided as is and it is not the recommended way of bridging tokens between chains. Please, use \"bridgeCCIP\" or the generic \"bridge\" function.',\n );\n\n const amount = BigNumber(amountRaw);\n const recipient = optionalRecipient || account;\n\n const bridgeInfo = getBridgeInfo(from as OFTBridgeChain, to);\n if (!bridgeInfo || bridgeInfo.type !== BridgeType.OFT) {\n throw new Error(\n `Unsupported bridge from ${from} to ${to}. Please switch to the supported chains: ${OFT_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n const bridgeContract = bridgeInfo.contract;\n\n const lbtcContract = await getTokenInfo(Token.LBTC, from, env, rpcUrl);\n if (!lbtcContract) {\n throw new Error('Could not retrieve LBTC contract info.');\n }\n\n const publicClient = makePublicClient({ chainId: from, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId: from });\n\n const amountBase = toBigInt(\n toBaseDenomination(amount, lbtcContract.decimals),\n );\n\n if (amount.isLessThan(MIN_BRIDGE_AMOUNT)) {\n throw new Error(\n `The amount is smaller than the minimum amount allowed: ${MIN_BRIDGE_AMOUNT.toFixed()}`,\n );\n }\n\n const balanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The amount exceeds the account's balance. \\nAmount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n const allowanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'allowance',\n args: [account, bridgeContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The amount exceeds allowance. \\nAmount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n const txHash = await approveLBTC({\n account,\n spender: bridgeContract.address,\n amount,\n chainId: from,\n provider,\n rpcUrl,\n env,\n });\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${bridgeContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${bridgeContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n const extraOptions = Options.newOptions().addExecutorLzReceiveOption(\n (OFT_HI_GAS_LIMIT_CHAINS as number[]).includes(to)\n ? OFT_HI_GAS_LIMIT\n : OFT_GAS_LIMIT,\n 0,\n );\n\n /** _sendParam */\n const sendParam = [\n /** dstEid - uint32 */\n DESTINATION_ENDPOINT_ID_MAP[to],\n /** to - bytes32 */\n pad(recipient),\n /** amountLD - uint256 */\n amountBase,\n /** minAmountLD - uint256 */\n amountBase,\n /** extraOptions - bytes */\n extraOptions.toHex(),\n /** composeMsg - bytes */\n '0x',\n /** oftCmd - bytes */\n '0x',\n ];\n\n const { nativeFee, lzTokenFee } = (await publicClient.readContract({\n abi: bridgeContract.abi,\n address: bridgeContract.address,\n account,\n functionName: 'quoteSend',\n args: [sendParam, false],\n })) as { nativeFee: bigint; lzTokenFee: bigint };\n\n const bridgeArgs = [\n /** _sendParam */\n sendParam,\n /** _fee */\n [\n /** nativeFee - uint256 */\n nativeFee,\n /** lzTokenFee - uint256 */\n lzTokenFee,\n ],\n /** address - address */\n account,\n ];\n\n const { request } = await publicClient.simulateContract({\n abi: bridgeContract.abi,\n address: bridgeContract.address,\n account,\n functionName: 'send',\n args: bridgeArgs,\n value: nativeFee,\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\nimport { Address } from 'viem';\n\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { bridgeCCIP } from './ccip-bridge';\nimport {\n BRIDGE_EXPLORER_URL_MAP,\n BridgeChain,\n BridgeType,\n CCIP_BRIDGE_CHAINS,\n CCIPBridgeChain,\n getBridgeInfo,\n OFTBridgeChain,\n} from './config';\nimport { bridgeOFT } from './oft-bridge';\n\nexport type BridgeParameters = {\n /** The destination chain id. */\n to: BridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters & {\n /**\n * A flag indicating whether the OFT bridge should be allowed.\n * Use at your onw risk!\n */\n experimentalAllowOFT?: boolean;\n };\n\n/**\n * Bridges funds (`amount`) from the connected chain (`chainId`) to the provided\n * destination chain (`to`)\n */\nexport async function bridge({\n to,\n amount,\n approve,\n account,\n chainId,\n provider,\n recipient,\n rpcUrl,\n env,\n experimentalAllowOFT = false,\n}: BridgeParameters) {\n const bridgeInfo = getBridgeInfo(chainId as BridgeChain, to);\n\n if (\n !bridgeInfo ||\n (!experimentalAllowOFT && bridgeInfo.type === BridgeType.OFT)\n ) {\n // The OFT bridges are disabled for now in this generic function as we're\n // working on moving all bridges to the CCIP method. OFT bridging shouldn't\n // be exposed.\n throw new Error(\n `Unsupported bridge from ${chainId} to ${to}. Please switch to the supported chains: ${CCIP_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n switch (bridgeInfo.type) {\n case BridgeType.CCIP: {\n const txHash = await bridgeCCIP({\n to: to as CCIPBridgeChain,\n amount,\n approve,\n recipient,\n account,\n chainId,\n provider,\n env,\n rpcUrl,\n });\n\n return {\n txHash,\n explorerUrl: BRIDGE_EXPLORER_URL_MAP[BridgeType.CCIP].replace(\n '{txHash}',\n txHash,\n ),\n type: BridgeType.CCIP,\n };\n }\n\n case BridgeType.OFT: {\n const txHash = await bridgeOFT({\n to: to as OFTBridgeChain,\n amount,\n approve,\n recipient,\n account,\n chainId,\n provider,\n env,\n rpcUrl,\n });\n\n return {\n txHash,\n explorerUrl: BRIDGE_EXPLORER_URL_MAP[BridgeType.OFT].replace(\n '{txHash}',\n txHash,\n ),\n type: BridgeType.OFT,\n };\n }\n }\n}\n"],"names":["CCIP_CONFIG","ChainId","getCCIPConfig","chainId","MIN_BRIDGE_AMOUNT","BigNumber","BridgeType","BRIDGE_EXPLORER_URL_MAP","CCIP_BRIDGE_CHAINS","OFT_BRIDGE_CHAINS","unique","OFT_GAS_LIMIT","OFT_HI_GAS_LIMIT","OFT_HI_GAS_LIMIT_CHAINS","bridgeIdentifier","from","to","CCIP_FROM_ETH","CCIP_BRIDGE_ADAPTER_ABI","CCIP_FROM_BASE","CCIP_FROM_BSC","CCIP_FROM_KATANA","CCIP_FROM_SONIC","CCIP_FROM_BASE_SEPOLIA","CCIP_FROM_HOLESKY","CCIP_BRIDGES","acc","cur","route","OFT_BRIDGES","OFT_BRIDGE_ADAPTER_ABI","BRIDGES","getBridgeInfo","encodeExtraArgs","gasLimit","tag","encodedGasLimit","encodePacked","bridgeCCIP","amountRaw","approve","optionalRecipient","account","provider","env","rpcUrl","amount","recipient","bridgeInfo","sourceChainConfig","destinationChainConfig","routerAddress","lbtcContract","getTokenInfo","Token","publicClient","makePublicClient","walletClient","makeWalletClient","amountBase","toBigInt","toBaseDenomination","balanceRaw","balance","fromBaseDenomination","allowanceRaw","allowance","exceededMessage","txHash","approveLBTC","err","msg","getErrorMessage","receiverBytes","encodeAbiParameters","parseAbiParameters","extraArgs","message","fee","CCIP_ROUTER_ABI","request","DESTINATION_ENDPOINT_ID_MAP","bridgeOFT","bridgeContract","extraOptions","Options","sendParam","pad","nativeFee","lzTokenFee","bridgeArgs","bridge","experimentalAllowOFT"],"mappings":"miRAWaA,GAA0B,CACrC,CAACC,EAAAA,QAAQ,QAAQ,EAAG,CAClB,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,IAAI,EAAG,CACd,cAAe,6CACf,cAAe,sBAAA,EAEjB,CAACA,EAAAA,QAAQ,iBAAiB,EAAG,CAC3B,cAAe,6CACf,cAAe,sBAAA,EAEjB,CAACA,EAAAA,QAAQ,KAAK,EAAG,CACf,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,MAAM,EAAG,CAChB,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,OAAO,EAAG,CACjB,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,SAAS,EAAG,CACnB,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,KAAK,EAAG,CACf,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,MAAM,EAAG,CAChB,cAAe,6CACf,cAAe,sBAAA,EAGjB,CAACA,EAAAA,QAAQ,OAAO,EAAG,CACjB,cAAe,6CACf,cAAe,qBAAA,EAEjB,CAACA,EAAAA,QAAQ,kBAAkB,EAAG,CAC5B,cAAe,6CACf,cAAe,sBAAA,EAEjB,CAACA,EAAAA,QAAQ,wBAAwB,EAAG,CAClC,cAAe,6CACf,cAAe,sBAAA,EAEjB,CAACA,EAAAA,QAAQ,aAAa,EAAG,CACvB,cAAe,6CACf,cAAe,sBAAA,CAEnB,EAEO,SAASC,EAAcC,EAA+C,CAC3E,OAAOH,GAAYG,CAAO,CAC5B,0t7BC3DaC,EAAoBC,EAAU,IAAQ,EAE5C,IAAKC,GAAAA,IAEVA,EAAA,KAAO,OAGPA,EAAA,IAAM,MALIA,IAAAA,GAAA,CAAA,CAAA,EAQL,MAAMC,EAA0B,CACpC,KAAkB,sCAClB,IAAiB,uCACpB,EAEaC,EAAqB,CAEhCP,EAAAA,QAAQ,SACRA,EAAAA,QAAQ,KACRA,EAAAA,QAAQ,kBACRA,EAAAA,QAAQ,OACRA,EAAAA,QAAQ,MACuCA,EAAAA,QAAQ,UACnBA,EAAAA,QAAQ,MAC5CA,EAAAA,QAAQ,OAEoCA,EAAAA,QAAQ,cACpDA,EAAAA,QAAQ,mBACRA,EAAAA,QAAQ,QACRA,UAAQ,OACV,EAGaQ,EAAoB,CAE/BR,EAAAA,QAAQ,SACRA,EAAAA,QAAQ,UACRA,EAAAA,QAAQ,KACRA,EAAAA,QAAQ,UACRA,EAAAA,QAAQ,MACRA,EAAAA,QAAQ,IAERA,EAAAA,QAAQ,uBACRA,UAAQ,OACV,EAE6BS,GAAAA,OAAO,CAClC,GAAGF,EACH,GAAGC,CACL,CAAC,EAGM,MAAME,EAAgB,IAChBC,EAAmB,IACnBC,EAA0B,CAErCZ,EAAAA,QAAQ,UACRA,EAAAA,QAAQ,UACRA,EAAAA,QAAQ,MACRA,EAAAA,QAAQ,MACRA,EAAAA,QAAQ,KACRA,EAAAA,QAAQ,IAERA,EAAAA,QAAQ,uBACRA,UAAQ,YACV,EAOMa,EAAmB,CAA8C,CACrEC,EACAC,CACF,IAAgD,SAASD,CAAI,SAASC,CAAE,IASlEC,GAAgB,CACpB,OAAQ,CACNH,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,IAAI,CAAC,EACjDa,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,iBAAiB,CAAC,EAC9Da,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,KAAK,CAAC,EAClDa,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,MAAM,CAAC,CAAA,EAErD,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,QAAA,CAErB,EAEMkB,GAAiB,CACrB,OAAQ,CACNL,EAAiB,CAACb,EAAAA,QAAQ,KAAMA,EAAAA,QAAQ,QAAQ,CAAC,EACjDa,EAAiB,CAACb,EAAAA,QAAQ,KAAMA,EAAAA,QAAQ,iBAAiB,CAAC,EAC1Da,EAAiB,CAACb,EAAAA,QAAQ,KAAMA,EAAAA,QAAQ,MAAM,CAAC,CAAA,EAEjD,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,IAAA,CAErB,EAEMmB,GAAgB,CACpB,OAAQ,CACNN,EAAiB,CAACb,EAAAA,QAAQ,kBAAmBA,EAAAA,QAAQ,QAAQ,CAAC,EAC9Da,EAAiB,CAACb,EAAAA,QAAQ,kBAAmBA,EAAAA,QAAQ,IAAI,CAAC,EAC1Da,EAAiB,CAACb,EAAAA,QAAQ,kBAAmBA,EAAAA,QAAQ,MAAM,CAAC,CAAA,EAE9D,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,iBAAA,CAErB,EAEMoB,GAAmB,CACvB,OAAQ,CACNP,EAAiB,CAACb,EAAAA,QAAQ,OAAQA,EAAAA,QAAQ,QAAQ,CAAC,EACnDa,EAAiB,CAACb,EAAAA,QAAQ,OAAQA,EAAAA,QAAQ,IAAI,CAAC,EAC/Ca,EAAiB,CAACb,EAAAA,QAAQ,OAAQA,EAAAA,QAAQ,iBAAiB,CAAC,EAC5Da,EAAiB,CAACb,EAAAA,QAAQ,OAAQA,EAAAA,QAAQ,KAAK,CAAC,CAAA,EAElD,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,MAAA,CAErB,EAEMqB,GAAkB,CACtB,OAAQ,CACNR,EAAiB,CAACb,EAAAA,QAAQ,MAAOA,EAAAA,QAAQ,QAAQ,CAAC,EAClDa,EAAiB,CAACb,EAAAA,QAAQ,MAAOA,EAAAA,QAAQ,MAAM,CAAC,CAAA,EAElD,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,KAAA,CAErB,EAEMsB,GAAyB,CAC7B,OAAQ,CAACT,EAAiB,CAACb,EAAAA,QAAQ,mBAAoBA,EAAAA,QAAQ,OAAO,CAAC,CAAC,EACxE,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,kBAAA,CAErB,EAEMuB,GAAoB,CACxB,OAAQ,CAACV,EAAiB,CAACb,EAAAA,QAAQ,QAASA,EAAAA,QAAQ,kBAAkB,CAAC,CAAC,EACxE,KAAM,OACN,SAAU,CACR,QAAS,6CACT,IAAKiB,EACL,QAASjB,EAAAA,QAAQ,OAAA,CAErB,EAEMwB,GAAoC,CAExCR,GACAE,GACAC,GACAC,GACAC,GAEAC,GACAC,EACF,EAAE,OAAO,CAACE,EAAKC,IAAQ,CACrB,GAAIA,EAAI,OAAS,OAAiB,OAAOD,EAEzC,MAAM,EAAyBC,EAAI,OAAO,IAAIC,GAAS,CACrDA,EACA,CAAE,KAAM,OAAiB,SAAUD,EAAI,QAAA,CAAS,CACjD,EAED,OAAOD,EAAI,OAAO,CAAC,CACrB,EAAG,EAAyB,EAMtBG,GAAiC,CAGrC,CACEf,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,SAAS,CAAC,EACtD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,QAAA,CACnB,CACF,EAEF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,IAAI,CAAC,EACjD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,QAAA,CACnB,CACF,EAEF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,SAAS,CAAC,EACtD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,QAAA,CACnB,CACF,EAEF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,KAAK,CAAC,EAClD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,QAAA,CACnB,CACF,EAEF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,SAAUA,EAAAA,QAAQ,GAAG,CAAC,EAChD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,QAAA,CACnB,CACF,EAGF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,UAAWA,EAAAA,QAAQ,QAAQ,CAAC,EACtD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,SAAA,CACnB,CACF,EAGF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,KAAMA,EAAAA,QAAQ,QAAQ,CAAC,EACjD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,IAAA,CACnB,CACF,EAGF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,UAAWA,EAAAA,QAAQ,QAAQ,CAAC,EACtD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,SAAA,CACnB,CACF,EAGF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,MAAOA,EAAAA,QAAQ,QAAQ,CAAC,EAClD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,KAAA,CACnB,CACF,EAEF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,IAAKA,EAAAA,QAAQ,QAAQ,CAAC,EAChD,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,GAAA,CACnB,CACF,EAKF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,uBAAwBA,EAAAA,QAAQ,OAAO,CAAC,EAClE,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,sBAAA,CACnB,CACF,EAGF,CACEa,EAAiB,CAACb,EAAAA,QAAQ,QAASA,EAAAA,QAAQ,sBAAsB,CAAC,EAClE,CACE,KAAM,MACN,SAAU,CACR,QAAS,6CACT,IAAK6B,EACL,QAAS7B,EAAAA,QAAQ,OAAA,CACnB,CACF,CAEJ,EAEa8B,GAAU,IAAI,IAA+C,CACxE,GAAGN,GACH,GAAGI,EACL,CAAC,EAGYG,EAAgB,CAACjB,EAAmBC,IACxCe,GAAQ,IAAIjB,EAAiB,CAACC,EAAMC,CAAE,CAAC,CAAC,ECvTjD,SAASiB,GAAgBC,EAAiC,CAExD,MAAMC,EAAM,aAGNC,EAAkBC,EAAAA,aAAa,CAAC,SAAS,EAAG,CAACH,CAAQ,CAAC,EAE5D,MAAO,GAAGC,CAAG,GAAGC,EAAgB,MAAM,CAAC,CAAC,EAC1C,CAOA,eAAsBE,EAAW,CAC/B,GAAAtB,EACA,OAAQuB,EACR,QAAAC,EACA,UAAWC,EACX,QAAAC,EACA,QAAS3B,EACT,SAAA4B,EACA,IAAAC,EACA,OAAAC,CACF,EAAyB,CACvB,MAAMC,EAASzC,EAAUkC,CAAS,EAC5BQ,EAAYN,GAAqBC,EAEjCM,EAAahB,EAAcjB,EAAyBC,CAAE,EAC5D,GAAI,CAACgC,GAAcA,EAAW,OAAS1C,EAAW,KAChD,MAAM,IAAI,MACR,2BAA2BS,CAAI,OAAOC,CAAE,4CAA4CR,EAAmB,KAAK,IAAI,CAAC,EAAA,EAKrH,MAAMyC,EAAoB/C,EAAca,CAAI,EACtCmC,EAAyBhD,EAAcc,CAAE,EAE/C,GAAI,CAACiC,GAAqB,CAACC,EACzB,MAAM,IAAI,MAAM,2CAA2CnC,CAAI,OAAOC,CAAE,EAAE,EAG5E,MAAMmC,EAAgBF,EAAkB,cAElCG,EAAe,MAAMC,eAAaC,EAAAA,MAAM,KAAMvC,EAAM6B,EAAKC,CAAM,EACrE,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,wCAAwC,EAG1D,MAAMG,EAAeC,EAAAA,iBAAiB,CAAE,QAASzC,EAAM,OAAA8B,EAAQ,EACzDY,EAAeC,EAAAA,iBAAiB,CAAE,SAAAf,EAAU,QAAS5B,EAAM,EAE3D4C,EAAaC,EAAAA,SACjBC,qBAAmBf,EAAQM,EAAa,QAAQ,CAAA,EAGlD,GAAIN,EAAO,WAAW1C,CAAiB,EACrC,MAAM,IAAI,MACR,0DAA0DA,EAAkB,SAAS,EAAA,EAIzF,MAAM0D,EAAa,MAAMP,EAAa,aAAa,CACjD,QAASH,EAAa,QACtB,IAAKA,EAAa,IAClB,aAAc,YACd,KAAM,CAACV,CAAO,CAAA,CACf,EACKqB,EAAUC,EAAAA,qBACd,OAAOF,CAAU,EACjBV,EAAa,QAAA,EAIf,GAAIN,EAAO,cAAciB,CAAO,EAC9B,MAAM,IAAI,MACR;AAAA,UAAuDjB,EAAO,SAAS;AAAA,WAAeiB,EAAQ,SAAS,EAAA,EAI3G,MAAME,EAAe,MAAMV,EAAa,aAAa,CACnD,QAASH,EAAa,QACtB,IAAKA,EAAa,IAClB,aAAc,YACd,KAAM,CAACV,EAASS,CAAa,CAAA,CAC9B,EACKe,EAAYF,EAAAA,qBAChB,OAAOC,CAAY,EACnBb,EAAa,QAAA,EAIf,GAAIN,EAAO,cAAcoB,CAAS,EAAG,CACnC,MAAMC,EAAkB;AAAA,UAA2CrB,EAAO,SAAS;AAAA,aAAiBoB,EAAU,SAAS,GACvH,GAAI,CAAC1B,EACH,MAAM,IAAI,MAAM2B,CAAe,EAIjC,QAAQ,KAAKA,CAAe,EAC5B,GAAI,CACF,MAAMC,EAAS,MAAMC,cAAY,CAC/B,QAAA3B,EACA,QAASS,EACT,OAAAL,EACA,QAAS/B,EACT,SAAA4B,EACA,OAAAE,EACA,IAAAD,CAAA,CACD,EACD,QAAQ,KAAK,oBAAoBwB,CAAM,EAAE,EACzC,QAAQ,KAAK,YAAYT,CAAU,QAAQR,CAAa,EAAE,CAC5D,OAASmB,EAAK,CACZ,MAAMC,EAAMC,EAAAA,gBAAgBF,CAAG,EAC/B,MAAM,IAAI,MACR,qBAAqBX,CAAU,QAAQR,CAAa;AAAA,UAAeoB,CAAG,EAAA,CAE1E,CACF,CAIA,MAAME,EAAgBC,EAAAA,oBAAoBC,EAAAA,mBAAmB,SAAS,EAAG,CACvE5B,CAAA,CACD,EACK6B,EAAY3C,GAAgB,EAAE,EAE9B4C,EAAU,CACd,SAAUJ,EACV,KAAM,KACN,aAAc,CACZ,CACE,MAAOrB,EAAa,QACpB,OAAQO,CAAA,CACV,EAEF,SAAU,6CACV,UAAAiB,CAAA,EAIIE,EAAO,MAAMvB,EAAa,aAAa,CAC3C,QAASJ,EACT,IAAK4B,EACL,aAAc,SACd,KAAM,CAAC,OAAO7B,EAAuB,aAAa,EAAG2B,CAAO,CAAA,CAC7D,EAGK,CAAE,QAAAG,CAAA,EAAY,MAAMzB,EAAa,iBAAiB,CACtD,QAASJ,EACT,IAAK4B,EACL,QAAArC,EACA,aAAc,WACd,KAAM,CAAC,OAAOQ,EAAuB,aAAa,EAAG2B,CAAO,EAC5D,MAAOC,CAAA,CACR,EAGD,OADe,MAAMrB,EAAa,cAAcuB,CAAO,CAEzD,CCzLA,MAAMC,GAA8D,CAElE,CAAChF,EAAAA,QAAQ,QAAQ,EAAG,MACpB,CAACA,EAAAA,QAAQ,SAAS,EAAG,MACrB,CAACA,EAAAA,QAAQ,IAAI,EAAG,MAChB,CAACA,EAAAA,QAAQ,SAAS,EAAG,MACrB,CAACA,EAAAA,QAAQ,KAAK,EAAG,MACjB,CAACA,EAAAA,QAAQ,GAAG,EAAG,MAEf,CAACA,EAAAA,QAAQ,OAAO,EAAG,MACnB,CAACA,EAAAA,QAAQ,sBAAsB,EAAG,KACpC,EAgBA,eAAsBiF,EAAU,CAC9B,GAAAlE,EACA,OAAQuB,EACR,QAAAC,EACA,UAAWC,EACX,QAAAC,EACA,QAAS3B,EACT,SAAA4B,EACA,IAAAC,EACA,OAAAC,CACF,EAAwB,CACtB,QAAQ,KACN,4KAAA,EAGF,MAAMC,EAASzC,EAAUkC,CAAS,EAC5BQ,EAAYN,GAAqBC,EAEjCM,EAAahB,EAAcjB,EAAwBC,CAAE,EAC3D,GAAI,CAACgC,GAAcA,EAAW,OAAS1C,EAAW,IAChD,MAAM,IAAI,MACR,2BAA2BS,CAAI,OAAOC,CAAE,4CAA4CP,EAAkB,KAAK,IAAI,CAAC,EAAA,EAIpH,MAAM0E,EAAiBnC,EAAW,SAE5BI,EAAe,MAAMC,eAAaC,EAAAA,MAAM,KAAMvC,EAAM6B,EAAKC,CAAM,EACrE,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,wCAAwC,EAG1D,MAAMG,EAAeC,EAAAA,iBAAiB,CAAE,QAASzC,EAAM,OAAA8B,EAAQ,EACzDY,EAAeC,EAAAA,iBAAiB,CAAE,SAAAf,EAAU,QAAS5B,EAAM,EAE3D4C,EAAaC,EAAAA,SACjBC,qBAAmBf,EAAQM,EAAa,QAAQ,CAAA,EAGlD,GAAIN,EAAO,WAAW1C,CAAiB,EACrC,MAAM,IAAI,MACR,0DAA0DA,EAAkB,SAAS,EAAA,EAIzF,MAAM0D,EAAa,MAAMP,EAAa,aAAa,CACjD,QAASH,EAAa,QACtB,IAAKA,EAAa,IAClB,aAAc,YACd,KAAM,CAACV,CAAO,CAAA,CACf,EACKqB,EAAUC,EAAAA,qBACd,OAAOF,CAAU,EACjBV,EAAa,QAAA,EAIf,GAAIN,EAAO,cAAciB,CAAO,EAC9B,MAAM,IAAI,MACR;AAAA,UAAuDjB,EAAO,SAAS;AAAA,WAAeiB,EAAQ,SAAS,EAAA,EAI3G,MAAME,EAAe,MAAMV,EAAa,aAAa,CACnD,QAASH,EAAa,QACtB,IAAKA,EAAa,IAClB,aAAc,YACd,KAAM,CAACV,EAASyC,EAAe,OAAO,CAAA,CACvC,EACKjB,EAAYF,EAAAA,qBAChB,OAAOC,CAAY,EACnBb,EAAa,QAAA,EAIf,GAAIN,EAAO,cAAcoB,CAAS,EAAG,CACnC,MAAMC,EAAkB;AAAA,UAA2CrB,EAAO,SAAS;AAAA,aAAiBoB,EAAU,SAAS,GACvH,GAAI,CAAC1B,EACH,MAAM,IAAI,MAAM2B,CAAe,EAIjC,QAAQ,KAAKA,CAAe,EAC5B,GAAI,CACF,MAAMC,EAAS,MAAMC,cAAY,CAC/B,QAAA3B,EACA,QAASyC,EAAe,QACxB,OAAArC,EACA,QAAS/B,EACT,SAAA4B,EACA,OAAAE,EACA,IAAAD,CAAA,CACD,EACD,QAAQ,KAAK,oBAAoBwB,CAAM,EAAE,EACzC,QAAQ,KAAK,YAAYT,CAAU,QAAQwB,EAAe,OAAO,EAAE,CACrE,OAASb,EAAK,CACZ,MAAMC,EAAMC,EAAAA,gBAAgBF,CAAG,EAC/B,MAAM,IAAI,MACR,qBAAqBX,CAAU,QAAQwB,EAAe,OAAO;AAAA,UAAeZ,CAAG,EAAA,CAEnF,CACF,CAEA,MAAMa,EAAeC,GAAAA,QAAQ,WAAA,EAAa,2BACvCxE,EAAqC,SAASG,CAAE,EAC7CJ,EACAD,EACJ,CAAA,EAII2E,EAAY,CAEhBL,GAA4BjE,CAAE,EAE9BuE,EAAAA,IAAIxC,CAAS,EAEbY,EAEAA,EAEAyB,EAAa,MAAA,EAEb,KAEA,IAAA,EAGI,CAAE,UAAAI,EAAW,WAAAC,CAAA,EAAgB,MAAMlC,EAAa,aAAa,CACjE,IAAK4B,EAAe,IACpB,QAASA,EAAe,QACxB,QAAAzC,EACA,aAAc,YACd,KAAM,CAAC4C,EAAW,EAAK,CAAA,CACxB,EAEKI,EAAa,CAEjBJ,EAEA,CAEEE,EAEAC,CAAA,EAGF/C,CAAA,EAGI,CAAE,QAAAsC,CAAA,EAAY,MAAMzB,EAAa,iBAAiB,CACtD,IAAK4B,EAAe,IACpB,QAASA,EAAe,QACxB,QAAAzC,EACA,aAAc,OACd,KAAMgD,EACN,MAAOF,CAAA,CACR,EAGD,OADe,MAAM/B,EAAa,cAAcuB,CAAO,CAEzD,CC/KA,eAAsBW,GAAO,CAC3B,GAAA3E,EACA,OAAA8B,EACA,QAAAN,EACA,QAAAE,EACA,QAAAvC,EACA,SAAAwC,EACA,UAAAI,EACA,OAAAF,EACA,IAAAD,EACA,qBAAAgD,EAAuB,EACzB,EAAqB,CACnB,MAAM5C,EAAahB,EAAc7B,EAAwBa,CAAE,EAE3D,GACE,CAACgC,GACA,CAAC4C,GAAwB5C,EAAW,OAAS1C,EAAW,IAKzD,MAAM,IAAI,MACR,2BAA2BH,CAAO,OAAOa,CAAE,4CAA4CR,EAAmB,KAAK,IAAI,CAAC,EAAA,EAIxH,OAAQwC,EAAW,KAAA,CACjB,KAAK1C,EAAW,KAAM,CACpB,MAAM8D,EAAS,MAAM9B,EAAW,CAC9B,GAAAtB,EACA,OAAA8B,EACA,QAAAN,EACA,UAAAO,EACA,QAAAL,EACA,QAAAvC,EACA,SAAAwC,EACA,IAAAC,EACA,OAAAC,CAAA,CACD,EAED,MAAO,CACL,OAAAuB,EACA,YAAa7D,EAAwBD,EAAW,IAAI,EAAE,QACpD,WACA8D,CAAA,EAEF,KAAM9D,EAAW,IAAA,CAErB,CAEA,KAAKA,EAAW,IAAK,CACnB,MAAM8D,EAAS,MAAMc,EAAU,CAC7B,GAAAlE,EACA,OAAA8B,EACA,QAAAN,EACA,UAAAO,EACA,QAAAL,EACA,QAAAvC,EACA,SAAAwC,EACA,IAAAC,EACA,OAAAC,CAAA,CACD,EAED,MAAO,CACL,OAAAuB,EACA,YAAa7D,EAAwBD,EAAW,GAAG,EAAE,QACnD,WACA8D,CAAA,EAEF,KAAM9D,EAAW,GAAA,CAErB,CAAA,CAEJ"}
|
|
1
|
+
{"version":3,"file":"bridge-dWaKrMKm.cjs","sources":["../../src/bridge/lib/ccip-config.ts","../../src/bridge/lib/config.ts","../../src/bridge/lib/ccip-bridge.ts","../../src/bridge/lib/oft-bridge.ts","../../src/bridge/lib/bridge.ts"],"sourcesContent":["import { Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\n\nexport type CCIPChainConfig = {\n routerAddress: Address;\n chainSelector: string;\n};\n\ntype CCIPConfig = Record<number, CCIPChainConfig>;\n\nexport const CCIP_CONFIG: CCIPConfig = {\n [ChainId.ethereum]: {\n routerAddress: '0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D',\n chainSelector: '5009297550715157269',\n },\n [ChainId.base]: {\n routerAddress: '0x881e3A65B4d4a04dD529061dd0071cf975F58bCD',\n chainSelector: '15971525489660198786',\n },\n [ChainId.binanceSmartChain]: {\n routerAddress: '0x34B03Cb9086d7D758AC55af71584F81A598759FE',\n chainSelector: '11344663589394136015',\n },\n [ChainId.sonic]: {\n routerAddress: '0xB4e1Ff7882474BB93042be9AD5E1fA387949B860',\n chainSelector: '1673871237479749969',\n },\n [ChainId.katana]: {\n routerAddress: '0x7c19b79D2a054114Ab36ad758A36e92376e267DA',\n chainSelector: '2459028469735686113',\n },\n [ChainId.megaeth]: {\n routerAddress: '0xfa546248C54939AA6C48279CdC1EAf9A1125c411',\n chainSelector: '6093540873831549674',\n },\n [ChainId.avalanche]: {\n routerAddress: '0xF4c7E640EdA248ef95972845a62bdC74237805dB',\n chainSelector: '6433500567565415381',\n },\n [ChainId.monad]: {\n routerAddress: '0x33566fE5976AAa420F3d5C64996641Fc3858CaDB',\n chainSelector: '8481857512324358265',\n },\n [ChainId.stable]: {\n routerAddress: '0xECFF67559c0583027A5fbd85136E33bC4D66eeA0',\n chainSelector: '16978377838628290997',\n },\n // Testnets\n [ChainId.holesky]: {\n routerAddress: '0xb9531b46fE8808fB3659e39704953c2B1112DD43',\n chainSelector: '7717148896336251131',\n },\n [ChainId.baseSepoliaTestnet]: {\n routerAddress: '0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93',\n chainSelector: '10344971235874465080',\n },\n [ChainId.binanceSmartChainTestnet]: {\n routerAddress: '0xE1053aE1857476f36A3C62580FF9b016E8EE8F6f',\n chainSelector: '13264668187771770619',\n },\n [ChainId.avalancheFuji]: {\n routerAddress: '0xF694E193200268f9a4868e4Aa017A0118C9a8177',\n chainSelector: '14767482510784806043',\n },\n};\n\nexport function getCCIPConfig(chainId: ChainId): CCIPChainConfig | undefined {\n return CCIP_CONFIG[chainId];\n}\n","import BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\nimport { ContractInfo } from '../../common/contract-info';\nimport { featureConfig } from '../../common/feature-config';\nimport { unique } from '../../utils/array';\nimport CCIP_BRIDGE_ADAPTER_ABI from '../abi/CCIP_BRIDGE_ADAPTER_ABI.json';\nimport OFT_BRIDGE_ADAPTER_ABI from '../abi/OFT_BRIDGE_ADAPTER_ABI.json';\n\nexport const MIN_BRIDGE_AMOUNT = BigNumber(0.000001);\n\nexport enum BridgeType {\n /** CCIP - (Chainlink) Cross-Chain Interoperability Protocol */\n CCIP = 'CCIP',\n\n /** OFT - (LayerZero) Omnichain Fungible Token */\n OFT = 'OFT',\n}\n\nexport const BRIDGE_EXPLORER_URL_MAP = {\n [BridgeType.CCIP]: 'https://ccip.chain.link/tx/{txHash}',\n [BridgeType.OFT]: 'https://layerzeroscan.com/tx/{txHash}',\n};\n\nexport const CCIP_BRIDGE_CHAINS = [\n // Mainnets:\n ChainId.ethereum,\n ChainId.base,\n ChainId.binanceSmartChain,\n ChainId.katana,\n ChainId.sonic,\n ...(featureConfig.isAvalancheMainnetEnabled ? [ChainId.avalanche] : []),\n ...(featureConfig.isMonadEnabled ? [ChainId.monad] : []),\n ChainId.stable,\n // Testnets:\n ...(featureConfig.isAvalancheFujiEnabled ? [ChainId.avalancheFuji] : []),\n ChainId.baseSepoliaTestnet,\n ChainId.holesky,\n ChainId.sepolia,\n];\nexport type CCIPBridgeChain = (typeof CCIP_BRIDGE_CHAINS)[number];\n\nexport const OFT_BRIDGE_CHAINS = [\n // Mainnets:\n ChainId.ethereum,\n ChainId.berachain,\n ChainId.corn,\n ChainId.etherlink,\n ChainId.swell,\n ChainId.tac,\n // Testnets:\n ChainId.berachainBartioTestnet,\n ChainId.sepolia,\n];\n\nexport const BRIDGE_CHAINS = unique([\n ...CCIP_BRIDGE_CHAINS,\n ...OFT_BRIDGE_CHAINS,\n]);\nexport type BridgeChain = CCIPBridgeChain | OFTBridgeChain;\n\nexport const OFT_GAS_LIMIT = 90_000;\nexport const OFT_HI_GAS_LIMIT = 200_000;\nexport const OFT_HI_GAS_LIMIT_CHAINS = [\n // Mainnets:\n ChainId.berachain,\n ChainId.etherlink,\n ChainId.morph,\n ChainId.sonic,\n ChainId.corn,\n ChainId.tac,\n // Testnets:\n ChainId.berachainBartioTestnet,\n ChainId.morphHolesky,\n];\n\nexport type OFTBridgeChain = (typeof OFT_BRIDGE_CHAINS)[number];\n\ntype BridgeIdentifier<Ch extends CCIPBridgeChain | OFTBridgeChain> =\n `[from:${Ch}, to: ${Ch}]`;\n\nconst bridgeIdentifier = <Ch extends CCIPBridgeChain | OFTBridgeChain>([\n from,\n to,\n]: [from: Ch, to: Ch]): BridgeIdentifier<Ch> => `[from:${from}, to: ${to}]`;\n\ntype BridgeInfo = { type: BridgeType; contract: ContractInfo };\n\ntype CCIPBridgesConfig = [\n BridgeIdentifier<CCIPBridgeChain>,\n { type: BridgeType.CCIP; contract: ContractInfo },\n];\n\nconst CCIP_FROM_ETH = {\n routes: [\n bridgeIdentifier([ChainId.ethereum, ChainId.base]),\n bridgeIdentifier([ChainId.ethereum, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.ethereum, ChainId.sonic]),\n bridgeIdentifier([ChainId.ethereum, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n};\n\nconst CCIP_FROM_BASE = {\n routes: [\n bridgeIdentifier([ChainId.base, ChainId.ethereum]),\n bridgeIdentifier([ChainId.base, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.base, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.base,\n },\n};\n\nconst CCIP_FROM_BSC = {\n routes: [\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.ethereum]),\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.base]),\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.binanceSmartChain,\n },\n};\n\nconst CCIP_FROM_KATANA = {\n routes: [\n bridgeIdentifier([ChainId.katana, ChainId.ethereum]),\n bridgeIdentifier([ChainId.katana, ChainId.base]),\n bridgeIdentifier([ChainId.katana, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.katana, ChainId.sonic]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xA869817b48b25EeE986bdF4bE04062e6fd2C418B' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.katana,\n },\n};\n\nconst CCIP_FROM_SONIC = {\n routes: [\n bridgeIdentifier([ChainId.sonic, ChainId.ethereum]),\n bridgeIdentifier([ChainId.sonic, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sonic,\n },\n};\n\nconst CCIP_FROM_BASE_SEPOLIA = {\n routes: [bridgeIdentifier([ChainId.baseSepoliaTestnet, ChainId.holesky])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.baseSepoliaTestnet,\n },\n};\n\nconst CCIP_FROM_HOLESKY = {\n routes: [bridgeIdentifier([ChainId.holesky, ChainId.baseSepoliaTestnet])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.holesky,\n },\n};\n\nconst CCIP_BRIDGES: CCIPBridgesConfig[] = [\n // Mainnets:\n CCIP_FROM_ETH,\n CCIP_FROM_BASE,\n CCIP_FROM_BSC,\n CCIP_FROM_KATANA,\n CCIP_FROM_SONIC,\n // Testnets:\n CCIP_FROM_BASE_SEPOLIA,\n CCIP_FROM_HOLESKY,\n].reduce((acc, cur) => {\n if (cur.type !== BridgeType.CCIP) return acc;\n\n const c: CCIPBridgesConfig[] = cur.routes.map(route => [\n route,\n { type: BridgeType.CCIP, contract: cur.contract },\n ]);\n\n return acc.concat(c);\n}, [] as CCIPBridgesConfig[]);\n\ntype OFTBridgeConfig = [\n BridgeIdentifier<OFTBridgeChain>,\n { type: BridgeType.OFT; contract: ContractInfo },\n];\nconst OFT_BRIDGES: OFTBridgeConfig[] = [\n // Mainnets:\n\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.berachain]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1290A6b480f7eF14925229fdB66f5680aD8F44AD',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.corn]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x6bc15d7930839ec18a57f6f7df72ae1b439d077f',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.etherlink]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x3a7647c1323144a16e7D0D71A581E3FE5BD95299',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.swell]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x37E92d760a15231e652a2C502182a6b44c7510c0',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.tac]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xA7c4d94F98b6e94C139c4645e4E9a94CD7C0Abf7',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.berachain, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x630e12D53D4E041b8C5451aD035Ea841E08391d7',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.berachain,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.corn, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xfc7B20D9B59A8A466f4fC3d34aA69a7D98e71d7A',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.corn,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.etherlink, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xC832183d4d5fc5831daaC892a93dBBfd798034E3',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.etherlink,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.swell, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x7B3784AD646C10A8Ddf42b47a4f4bd9aFD351E54',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.swell,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.tac, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1298131cDa718bBcA7ACB1f2411e71c05E16f269',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.tac,\n },\n },\n ],\n\n // Testnets:\n\n [\n bridgeIdentifier([ChainId.berachainBartioTestnet, ChainId.sepolia]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1977013acaf27856ac8048C42EE2ed0134d53895',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.berachainBartioTestnet,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.sepolia, ChainId.berachainBartioTestnet]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xe3748bF0Ec0A76767539eE28610B3367e35fe2C2',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sepolia,\n },\n },\n ],\n];\n\nexport const BRIDGES = new Map<BridgeIdentifier<BridgeChain>, BridgeInfo>([\n ...CCIP_BRIDGES,\n ...OFT_BRIDGES,\n]);\n\n/** Gets the bridge information */\nexport const getBridgeInfo = (from: BridgeChain, to: BridgeChain) => {\n return BRIDGES.get(bridgeIdentifier([from, to]));\n};\n","import BigNumber from 'bignumber.js';\nimport {\n Address,\n encodeAbiParameters,\n encodePacked,\n parseAbiParameters,\n} from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { approveLBTC } from '../../contract-functions';\nimport { Token } from '../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../tokens/tokens';\nimport { getErrorMessage } from '../../utils/err';\nimport toBigInt from '../../utils/numbers';\nimport CCIP_ROUTER_ABI from '../abi/CCIP_ROUTER_ABI.json';\nimport { getCCIPConfig } from './ccip-config';\nimport {\n BridgeType,\n CCIP_BRIDGE_CHAINS,\n CCIPBridgeChain,\n getBridgeInfo,\n MIN_BRIDGE_AMOUNT,\n} from './config';\n\nexport type BridgeCCIPParameters = {\n /** The destination chain id. */\n to: CCIPBridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters;\n\n/**\n * Encodes extraArgs for CCIP according to version 1\n * Format: EVMExtraArgsV1 { gasLimit: uint256 }\n *\n * @see https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/offchain/javascript/src/transfer-tokens.js\n */\nfunction encodeExtraArgs(gasLimit: bigint): `0x${string}` {\n // Tag for EVMExtraArgsV1\n const tag = '0x97a657c9';\n\n // Encode gasLimit as uint256\n const encodedGasLimit = encodePacked(['uint256'], [gasLimit]);\n\n return `${tag}${encodedGasLimit.slice(2)}` as `0x${string}`;\n}\n\n/**\n * Transfers tokens via CCIP using direct Router contract calls\n * Based on Chainlink example:\n * @see https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/offchain/javascript/src/transfer-tokens.js\n */\nexport async function bridgeCCIP({\n to,\n amount: amountRaw,\n approve,\n recipient: optionalRecipient,\n account,\n chainId: from,\n provider,\n env,\n rpcUrl,\n}: BridgeCCIPParameters) {\n const amount = BigNumber(amountRaw);\n const recipient = optionalRecipient || account;\n\n const bridgeInfo = getBridgeInfo(from as CCIPBridgeChain, to);\n if (!bridgeInfo || bridgeInfo.type !== BridgeType.CCIP) {\n throw new Error(\n `Unsupported bridge from ${from} to ${to}. Please switch to the supported chains: ${CCIP_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n // Get CCIP Router configuration\n const sourceChainConfig = getCCIPConfig(from);\n const destinationChainConfig = getCCIPConfig(to);\n\n if (!sourceChainConfig || !destinationChainConfig) {\n throw new Error(`CCIP configuration not found for chains ${from} -> ${to}`);\n }\n\n const routerAddress = sourceChainConfig.routerAddress;\n\n const lbtcContract = await getTokenInfo(Token.LBTC, from, env, rpcUrl);\n if (!lbtcContract) {\n throw new Error('Could not retrieve LBTC contract info.');\n }\n\n const publicClient = makePublicClient({ chainId: from, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId: from });\n\n const amountBase = toBigInt(\n toBaseDenomination(amount, lbtcContract.decimals),\n );\n\n if (amount.isLessThan(MIN_BRIDGE_AMOUNT)) {\n throw new Error(\n `The amount is smaller than the minimum amount allowed: ${MIN_BRIDGE_AMOUNT.toFixed()}`,\n );\n }\n\n const balanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The amount exceeds the account's balance. \\nAmount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n const allowanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'allowance',\n args: [account, routerAddress],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The amount exceeds allowance. \\nAmount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount for Router\n console.info(exceededMessage);\n try {\n const txHash = await approveLBTC({\n account,\n spender: routerAddress,\n amount,\n chainId: from,\n provider,\n rpcUrl,\n env,\n });\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${routerAddress}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${routerAddress}. \\nReason: ${msg}`,\n );\n }\n }\n\n // Build CCIP message (EVM2AnyMessage)\n // IMPORTANT: receiver must be abi.encode(address) for EVM chains, not encodePacked\n const receiverBytes = encodeAbiParameters(parseAbiParameters('address'), [\n recipient,\n ]);\n const extraArgs = encodeExtraArgs(0n);\n\n const message = {\n receiver: receiverBytes,\n data: '0x' as `0x${string}`,\n tokenAmounts: [\n {\n token: lbtcContract.address,\n amount: amountBase,\n },\n ],\n feeToken: '0x0000000000000000000000000000000000000000' as Address, // address(0) means payment in native currency\n extraArgs, // 0 = automatic gas limit calculation\n };\n\n // Get fee for sending the message\n const fee = (await publicClient.readContract({\n address: routerAddress,\n abi: CCIP_ROUTER_ABI,\n functionName: 'getFee',\n args: [BigInt(destinationChainConfig.chainSelector), message],\n })) as bigint;\n\n // Send CCIP message\n const { request } = await publicClient.simulateContract({\n address: routerAddress,\n abi: CCIP_ROUTER_ABI,\n account,\n functionName: 'ccipSend',\n args: [BigInt(destinationChainConfig.chainSelector), message],\n value: fee,\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import { Options } from '@layerzerolabs/lz-v2-utilities';\nimport BigNumber from 'bignumber.js';\nimport { Address, pad } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { ChainId } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { approveLBTC } from '../../contract-functions';\nimport { Token } from '../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../tokens/tokens';\nimport { getErrorMessage } from '../../utils/err';\nimport toBigInt from '../../utils/numbers';\nimport {\n BridgeType,\n getBridgeInfo,\n MIN_BRIDGE_AMOUNT,\n OFT_BRIDGE_CHAINS,\n OFT_GAS_LIMIT,\n OFT_HI_GAS_LIMIT,\n OFT_HI_GAS_LIMIT_CHAINS,\n OFTBridgeChain,\n} from './config';\n\nconst DESTINATION_ENDPOINT_ID_MAP: Record<OFTBridgeChain, number> = {\n // Mainnets:\n [ChainId.ethereum]: 30101,\n [ChainId.berachain]: 30362,\n [ChainId.corn]: 30331,\n [ChainId.etherlink]: 30292,\n [ChainId.swell]: 30335,\n [ChainId.tac]: 30377,\n // Testnets:\n [ChainId.sepolia]: 40161,\n [ChainId.berachainBartioTestnet]: 40291,\n};\n\nexport type BridgeOFTParameters = {\n /** The destination chain id. */\n to: OFTBridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters;\nexport async function bridgeOFT({\n to,\n amount: amountRaw,\n approve,\n recipient: optionalRecipient,\n account,\n chainId: from,\n provider,\n env,\n rpcUrl,\n}: BridgeOFTParameters) {\n console.warn(\n 'The \"bridgeOFT\" function is provided as is and it is not the recommended way of bridging tokens between chains. Please, use \"bridgeCCIP\" or the generic \"bridge\" function.',\n );\n\n const amount = BigNumber(amountRaw);\n const recipient = optionalRecipient || account;\n\n const bridgeInfo = getBridgeInfo(from as OFTBridgeChain, to);\n if (!bridgeInfo || bridgeInfo.type !== BridgeType.OFT) {\n throw new Error(\n `Unsupported bridge from ${from} to ${to}. Please switch to the supported chains: ${OFT_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n const bridgeContract = bridgeInfo.contract;\n\n const lbtcContract = await getTokenInfo(Token.LBTC, from, env, rpcUrl);\n if (!lbtcContract) {\n throw new Error('Could not retrieve LBTC contract info.');\n }\n\n const publicClient = makePublicClient({ chainId: from, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId: from });\n\n const amountBase = toBigInt(\n toBaseDenomination(amount, lbtcContract.decimals),\n );\n\n if (amount.isLessThan(MIN_BRIDGE_AMOUNT)) {\n throw new Error(\n `The amount is smaller than the minimum amount allowed: ${MIN_BRIDGE_AMOUNT.toFixed()}`,\n );\n }\n\n const balanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The amount exceeds the account's balance. \\nAmount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n const allowanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'allowance',\n args: [account, bridgeContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The amount exceeds allowance. \\nAmount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n const txHash = await approveLBTC({\n account,\n spender: bridgeContract.address,\n amount,\n chainId: from,\n provider,\n rpcUrl,\n env,\n });\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${bridgeContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${bridgeContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n const extraOptions = Options.newOptions().addExecutorLzReceiveOption(\n (OFT_HI_GAS_LIMIT_CHAINS as number[]).includes(to)\n ? OFT_HI_GAS_LIMIT\n : OFT_GAS_LIMIT,\n 0,\n );\n\n /** _sendParam */\n const sendParam = [\n /** dstEid - uint32 */\n DESTINATION_ENDPOINT_ID_MAP[to],\n /** to - bytes32 */\n pad(recipient),\n /** amountLD - uint256 */\n amountBase,\n /** minAmountLD - uint256 */\n amountBase,\n /** extraOptions - bytes */\n extraOptions.toHex(),\n /** composeMsg - bytes */\n '0x',\n /** oftCmd - bytes */\n '0x',\n ];\n\n const { nativeFee, lzTokenFee } = (await publicClient.readContract({\n abi: bridgeContract.abi,\n address: bridgeContract.address,\n account,\n functionName: 'quoteSend',\n args: [sendParam, false],\n })) as { nativeFee: bigint; lzTokenFee: bigint };\n\n const bridgeArgs = [\n /** _sendParam */\n sendParam,\n /** _fee */\n [\n /** nativeFee - uint256 */\n nativeFee,\n /** lzTokenFee - uint256 */\n lzTokenFee,\n ],\n /** address - address */\n account,\n ];\n\n const { request } = await publicClient.simulateContract({\n abi: bridgeContract.abi,\n address: bridgeContract.address,\n account,\n functionName: 'send',\n args: bridgeArgs,\n value: nativeFee,\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\nimport { Address } from 'viem';\n\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { bridgeCCIP } from './ccip-bridge';\nimport {\n BRIDGE_EXPLORER_URL_MAP,\n BridgeChain,\n BridgeType,\n CCIP_BRIDGE_CHAINS,\n CCIPBridgeChain,\n getBridgeInfo,\n OFTBridgeChain,\n} from './config';\nimport { bridgeOFT } from './oft-bridge';\n\nexport type BridgeParameters = {\n /** The destination chain id. */\n to: BridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters & {\n /**\n * A flag indicating whether the OFT bridge should be allowed.\n * Use at your onw risk!\n */\n experimentalAllowOFT?: boolean;\n };\n\n/**\n * Bridges funds (`amount`) from the connected chain (`chainId`) to the provided\n * destination chain (`to`)\n */\nexport async function bridge({\n to,\n amount,\n approve,\n account,\n chainId,\n provider,\n recipient,\n rpcUrl,\n env,\n experimentalAllowOFT = false,\n}: BridgeParameters) {\n const bridgeInfo = getBridgeInfo(chainId as BridgeChain, to);\n\n if (\n !bridgeInfo ||\n (!experimentalAllowOFT && bridgeInfo.type === BridgeType.OFT)\n ) {\n // The OFT bridges are disabled for now in this generic function as we're\n // working on moving all bridges to the CCIP method. OFT bridging shouldn't\n // be exposed.\n throw new Error(\n `Unsupported bridge from ${chainId} to ${to}. Please switch to the supported chains: ${CCIP_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n switch (bridgeInfo.type) {\n case BridgeType.CCIP: {\n const txHash = await bridgeCCIP({\n to: to as CCIPBridgeChain,\n amount,\n approve,\n recipient,\n account,\n chainId,\n provider,\n env,\n rpcUrl,\n });\n\n return {\n txHash,\n explorerUrl: BRIDGE_EXPLORER_URL_MAP[BridgeType.CCIP].replace(\n '{txHash}',\n txHash,\n ),\n type: BridgeType.CCIP,\n };\n }\n\n case BridgeType.OFT: {\n const txHash = await bridgeOFT({\n to: to as OFTBridgeChain,\n amount,\n approve,\n recipient,\n account,\n chainId,\n provider,\n env,\n rpcUrl,\n });\n\n return {\n txHash,\n explorerUrl: BRIDGE_EXPLORER_URL_MAP[BridgeType.OFT].replace(\n '{txHash}',\n txHash,\n ),\n type: BridgeType.OFT,\n };\n }\n }\n}\n"],"names":["CCIP_CONFIG","ChainId","getCCIPConfig","chainId","MIN_BRIDGE_AMOUNT","BigNumber","BridgeType","BRIDGE_EXPLORER_URL_MAP","CCIP_BRIDGE_CHAINS","OFT_BRIDGE_CHAINS","unique","OFT_GAS_LIMIT","OFT_HI_GAS_LIMIT","OFT_HI_GAS_LIMIT_CHAINS","bridgeIdentifier","from","to","CCIP_FROM_ETH","CCIP_BRIDGE_ADAPTER_ABI","CCIP_FROM_BASE","CCIP_FROM_BSC","CCIP_FROM_KATANA","CCIP_FROM_SONIC","CCIP_FROM_BASE_SEPOLIA","CCIP_FROM_HOLESKY","CCIP_BRIDGES","acc","cur","route","OFT_BRIDGES","OFT_BRIDGE_ADAPTER_ABI","BRIDGES","getBridgeInfo","encodeExtraArgs","gasLimit","tag","encodedGasLimit","encodePacked","bridgeCCIP","amountRaw","approve","optionalRecipient","account","provider","env","rpcUrl","amount","recipient","bridgeInfo","sourceChainConfig","destinationChainConfig","routerAddress","lbtcContract","getTokenInfo","Token","publicClient","makePublicClient","walletClient","makeWalletClient","amountBase","toBigInt","toBaseDenomination","balanceRaw","balance","fromBaseDenomination","allowanceRaw","allowance","exceededMessage","txHash","approveLBTC","err","msg","getErrorMessage","receiverBytes","encodeAbiParameters","parseAbiParameters","extraArgs","message","fee","CCIP_ROUTER_ABI","request","DESTINATION_ENDPOINT_ID_MAP","bridgeOFT","bridgeContract","extraOptions","Options","sendParam","pad","nativeFee","lzTokenFee","bridgeArgs","bridge","experimentalAllowOFT"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChainId as e, Token as n } from "./token-addresses-D0v5cR1j.js";
|
|
2
2
|
const u = /* @__PURE__ */ JSON.parse('[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Enter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Exit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"contract ERC20","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"shareAmount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"contract ERC20","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"shareAmount","type":"uint256"}],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hook","outputs":[{"internalType":"contract BeforeTransferHook","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"manage","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manage","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_hook","type":"address"}],"name":"setBeforeTransferHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]'), y = /* @__PURE__ */ JSON.parse('[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"payoutAddress","type":"address"},{"internalType":"uint96","name":"startingExchangeRate","type":"uint96"},{"internalType":"address","name":"_base","type":"address"},{"internalType":"uint16","name":"allowedExchangeRateChangeUpper","type":"uint16"},{"internalType":"uint16","name":"allowedExchangeRateChangeLower","type":"uint16"},{"internalType":"uint24","name":"minimumUpdateDelayInSeconds","type":"uint24"},{"internalType":"uint16","name":"managementFee","type":"uint16"},{"internalType":"uint16","name":"performanceFee","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccountantWithRateProviders__ExchangeRateAboveHighwaterMark","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__LowerBoundTooLarge","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__ManagementFeeTooLarge","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__OnlyCallableByBoringVault","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__Paused","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__PerformanceFeeTooLarge","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__UpdateDelayTooLarge","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__UpperBoundTooSmall","type":"error"},{"inputs":[],"name":"AccountantWithRateProviders__ZeroFeesOwed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint24","name":"oldDelay","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"newDelay","type":"uint24"}],"name":"DelayInSecondsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint96","name":"oldRate","type":"uint96"},{"indexed":false,"internalType":"uint96","name":"newRate","type":"uint96"},{"indexed":false,"internalType":"uint64","name":"currentTime","type":"uint64"}],"name":"ExchangeRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeAsset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeesClaimed","type":"event"},{"anonymous":false,"inputs":[],"name":"HighwaterMarkReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"oldBound","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newBound","type":"uint16"}],"name":"LowerBoundUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"oldFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newFee","type":"uint16"}],"name":"ManagementFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPayout","type":"address"},{"indexed":false,"internalType":"address","name":"newPayout","type":"address"}],"name":"PayoutAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"oldFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newFee","type":"uint16"}],"name":"PerformanceFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"bool","name":"isPegged","type":"bool"},{"indexed":false,"internalType":"address","name":"rateProvider","type":"address"}],"name":"RateProviderUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"oldBound","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newBound","type":"uint16"}],"name":"UpperBoundUpdated","type":"event"},{"inputs":[],"name":"accountantState","outputs":[{"internalType":"address","name":"payoutAddress","type":"address"},{"internalType":"uint96","name":"highwaterMark","type":"uint96"},{"internalType":"uint128","name":"feesOwedInBase","type":"uint128"},{"internalType":"uint128","name":"totalSharesLastUpdate","type":"uint128"},{"internalType":"uint96","name":"exchangeRate","type":"uint96"},{"internalType":"uint16","name":"allowedExchangeRateChangeUpper","type":"uint16"},{"internalType":"uint16","name":"allowedExchangeRateChangeLower","type":"uint16"},{"internalType":"uint64","name":"lastUpdateTimestamp","type":"uint64"},{"internalType":"bool","name":"isPaused","type":"bool"},{"internalType":"uint24","name":"minimumUpdateDelayInSeconds","type":"uint24"},{"internalType":"uint16","name":"managementFee","type":"uint16"},{"internalType":"uint16","name":"performanceFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"base","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"feeAsset","type":"address"}],"name":"claimFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"quote","type":"address"}],"name":"getRateInQuote","outputs":[{"internalType":"uint256","name":"rateInQuote","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"quote","type":"address"}],"name":"getRateInQuoteSafe","outputs":[{"internalType":"uint256","name":"rateInQuote","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRateSafe","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"name":"rateProviderData","outputs":[{"internalType":"bool","name":"isPeggedToBase","type":"bool"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resetHighwaterMark","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"asset","type":"address"},{"internalType":"bool","name":"isPeggedToBase","type":"bool"},{"internalType":"address","name":"rateProvider","type":"address"}],"name":"setRateProviderData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"minimumUpdateDelayInSeconds","type":"uint24"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint96","name":"newExchangeRate","type":"uint96"}],"name":"updateExchangeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"allowedExchangeRateChangeLower","type":"uint16"}],"name":"updateLower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"managementFee","type":"uint16"}],"name":"updateManagementFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payoutAddress","type":"address"}],"name":"updatePayoutAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"performanceFee","type":"uint16"}],"name":"updatePerformanceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"allowedExchangeRateChangeUpper","type":"uint16"}],"name":"updateUpper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract BoringVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}]'), a = /* @__PURE__ */ JSON.parse('[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_auth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AtomicQueue__Paused","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"AtomicQueue__RequestDeadlineExceeded","type":"error"},{"inputs":[],"name":"AtomicQueue__SafeRequestAccountantOfferMismatch","type":"error"},{"inputs":[],"name":"AtomicQueue__SafeRequestCannotCastToUint88","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AtomicQueue__SafeRequestDeadlineExceeded","type":"error"},{"inputs":[],"name":"AtomicQueue__SafeRequestDiscountTooLarge","type":"error"},{"inputs":[{"internalType":"uint256","name":"offerAmount","type":"uint256"},{"internalType":"uint256","name":"offerAllowance","type":"uint256"}],"name":"AtomicQueue__SafeRequestInsufficientOfferAllowance","type":"error"},{"inputs":[{"internalType":"uint256","name":"offerAmount","type":"uint256"},{"internalType":"uint256","name":"offerBalance","type":"uint256"}],"name":"AtomicQueue__SafeRequestOfferAmountGreaterThanOfferBalance","type":"error"},{"inputs":[],"name":"AtomicQueue__SafeRequestOfferAmountZero","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"AtomicQueue__UserNotInSolve","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"AtomicQueue__UserRepeated","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"AtomicQueue__ZeroOfferAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"offerToken","type":"address"},{"indexed":true,"internalType":"address","name":"wantToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"offerAmountSpent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wantAmountReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AtomicRequestFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"offerToken","type":"address"},{"indexed":true,"internalType":"address","name":"wantToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AtomicRequestUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[],"name":"MAX_DISCOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"contract ERC20","name":"want","type":"address"}],"name":"getUserAtomicRequest","outputs":[{"components":[{"internalType":"uint64","name":"deadline","type":"uint64"},{"internalType":"uint88","name":"atomicPrice","type":"uint88"},{"internalType":"uint96","name":"offerAmount","type":"uint96"},{"internalType":"bool","name":"inSolve","type":"bool"}],"internalType":"struct AtomicQueue.AtomicRequest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"address","name":"user","type":"address"},{"components":[{"internalType":"uint64","name":"deadline","type":"uint64"},{"internalType":"uint88","name":"atomicPrice","type":"uint88"},{"internalType":"uint96","name":"offerAmount","type":"uint96"},{"internalType":"bool","name":"inSolve","type":"bool"}],"internalType":"struct AtomicQueue.AtomicRequest","name":"userRequest","type":"tuple"}],"name":"isAtomicRequestValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"contract ERC20","name":"want","type":"address"},{"components":[{"internalType":"uint64","name":"deadline","type":"uint64"},{"internalType":"uint88","name":"atomicPrice","type":"uint88"},{"internalType":"uint96","name":"offerAmount","type":"uint96"},{"internalType":"bool","name":"inSolve","type":"bool"}],"internalType":"struct AtomicQueue.AtomicRequest","name":"userRequest","type":"tuple"},{"internalType":"contract AccountantWithRateProviders","name":"accountant","type":"address"},{"internalType":"uint256","name":"discount","type":"uint256"}],"name":"safeUpdateAtomicRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"contract ERC20","name":"want","type":"address"},{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bytes","name":"runData","type":"bytes"},{"internalType":"address","name":"solver","type":"address"}],"name":"solve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"contract ERC20","name":"want","type":"address"},{"components":[{"internalType":"uint64","name":"deadline","type":"uint64"},{"internalType":"uint88","name":"atomicPrice","type":"uint88"},{"internalType":"uint96","name":"offerAmount","type":"uint96"},{"internalType":"bool","name":"inSolve","type":"bool"}],"internalType":"struct AtomicQueue.AtomicRequest","name":"userRequest","type":"tuple"}],"name":"updateAtomicRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract ERC20","name":"","type":"address"},{"internalType":"contract ERC20","name":"","type":"address"}],"name":"userAtomicRequest","outputs":[{"internalType":"uint64","name":"deadline","type":"uint64"},{"internalType":"uint88","name":"atomicPrice","type":"uint88"},{"internalType":"uint96","name":"offerAmount","type":"uint96"},{"internalType":"bool","name":"inSolve","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"contract ERC20","name":"want","type":"address"},{"internalType":"address[]","name":"users","type":"address[]"}],"name":"viewSolveMetaData","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"flags","type":"uint8"},{"internalType":"uint256","name":"assetsToOffer","type":"uint256"},{"internalType":"uint256","name":"assetsForWant","type":"uint256"}],"internalType":"struct AtomicQueue.SolveMetaData[]","name":"metaData","type":"tuple[]"},{"internalType":"uint256","name":"totalAssetsForWant","type":"uint256"},{"internalType":"uint256","name":"totalAssetsToOffer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"offer","type":"address"},{"internalType":"contract ERC20","name":"want","type":"address"},{"internalType":"address[]","name":"users","type":"address[]"}],"name":"viewVerboseSolveMetaData","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"deadlineExceeded","type":"bool"},{"internalType":"bool","name":"zeroOfferAmount","type":"bool"},{"internalType":"bool","name":"insufficientOfferBalance","type":"bool"},{"internalType":"bool","name":"insufficientOfferAllowance","type":"bool"},{"internalType":"uint256","name":"assetsToOffer","type":"uint256"},{"internalType":"uint256","name":"assetsForWant","type":"uint256"}],"internalType":"struct AtomicQueue.VerboseSolveMetaData[]","name":"metaData","type":"tuple[]"},{"internalType":"uint256","name":"totalAssetsForWant","type":"uint256"},{"internalType":"uint256","name":"totalAssetsToOffer","type":"uint256"}],"stateMutability":"view","type":"function"}]'), o = [
|
|
3
3
|
{
|
|
4
4
|
inputs: [
|
|
@@ -362,13 +362,13 @@ const R = {
|
|
|
362
362
|
}
|
|
363
363
|
};
|
|
364
364
|
export {
|
|
365
|
-
w as
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
_ as
|
|
365
|
+
w as NETWORK_TO_VEDA_VAULT_CHAIN_MAP,
|
|
366
|
+
R as VAULTS,
|
|
367
|
+
v as VEDA_VAULT_CHAIN_TO_NETWORK_MAP,
|
|
368
|
+
b as VEDA_VAULT_SPENDER_CONTRACTS,
|
|
369
|
+
r as VEDA_VAULT_STAKE_AND_BAKE_CHAINS,
|
|
370
|
+
A as Vault,
|
|
371
|
+
M as isVedaVaultChain,
|
|
372
|
+
_ as isVedaVaultStakeAndBakeChain
|
|
373
373
|
};
|
|
374
|
-
//# sourceMappingURL=config-
|
|
374
|
+
//# sourceMappingURL=config-DghboRx0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-DghboRx0.js","sources":["../../src/vaults/lib/config.ts"],"sourcesContent":["import { Abi, Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\nimport { Token } from '../../tokens/token-addresses';\nimport VEDA_VAULT_ABI from '../abi/VEDA_VAULT_ABI.json';\nimport VEDA_VAULT_ACCOUNTANT_ABI from '../abi/VEDA_VAULT_ACCOUNTANT_ABI.json';\nimport VEDA_VAULT_BASE_ASSET_ABI from '../abi/VEDA_VAULT_BASE_ASSET_ABI.json';\nimport VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI from '../abi/VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI.json';\nimport VEDA_VAULT_LENS_ABI from '../abi/VEDA_VAULT_LENS_ABI.json';\nimport VEDA_VAULT_SPENDER_ABI from '../abi/VEDA_VAULT_SPENDER_ABI.json';\nimport VEDA_VAULT_TELLER_ABI from '../abi/VEDA_VAULT_TELLER_ABI.json';\n\ntype ContractInfo = {\n abi: Abi;\n address: Address;\n chainId: ChainId;\n};\n\nexport const VEDA_VAULT_CHAINS = [\n ChainId.ethereum,\n ChainId.base,\n ChainId.binanceSmartChain,\n ChainId.corn,\n] as const;\n\nexport type VedaVaultChain = (typeof VEDA_VAULT_CHAINS)[number];\nexport const isVedaVaultChain = (chainId: number): chainId is VedaVaultChain =>\n VEDA_VAULT_CHAINS.includes(chainId as VedaVaultChain);\n\nexport const VEDA_VAULT_CHAIN_TO_NETWORK_MAP: Record<VedaVaultChain, string> = {\n [ChainId.ethereum]: 'ethereum',\n [ChainId.base]: 'base',\n [ChainId.corn]: 'corn',\n [ChainId.binanceSmartChain]: 'bnb',\n};\n\nexport const NETWORK_TO_VEDA_VAULT_CHAIN_MAP: Record<string, VedaVaultChain> = {\n ethereum: ChainId.ethereum,\n base: ChainId.base,\n corn: ChainId.corn,\n bnb: ChainId.binanceSmartChain,\n};\n\n/** A list of chains where stake and bake is enabled */\nexport const VEDA_VAULT_STAKE_AND_BAKE_CHAINS = [\n ChainId.ethereum,\n // Testnets:\n ChainId.sepolia,\n];\nexport type VedaVaultStakeAndBakeChain =\n (typeof VEDA_VAULT_STAKE_AND_BAKE_CHAINS)[number];\nexport const isVedaVaultStakeAndBakeChain = (\n chainId: number,\n): chainId is VedaVaultStakeAndBakeChain =>\n VEDA_VAULT_STAKE_AND_BAKE_CHAINS.includes(\n chainId as VedaVaultStakeAndBakeChain,\n );\n\nexport const VEDA_VAULT_DEFAULT_CHAIN_ID: VedaVaultChain = ChainId.ethereum;\n\nexport const VEDA_VAULT_CONTRACT = '0x5401b8620E5FB570064CA9114fd1e135fd77D57c';\nexport const VEDA_VAULT_ACCOUNTANT_CONTRACT =\n '0x28634D0c5edC67CF2450E74deA49B90a4FF93dCE';\nexport const VEDA_VAULT_LENS_CONTRACT =\n '0x5232bc0F5999f8dA604c42E1748A13a170F94A1B';\n\nexport const VEDA_VAULT_TELLER_CONTRACTS: Record<VedaVaultChain, ContractInfo> =\n {\n [ChainId.ethereum]: {\n abi: VEDA_VAULT_TELLER_ABI as Abi,\n address: '0x4E8f5128F473C6948127f9Cbca474a6700F99bab',\n chainId: ChainId.ethereum,\n },\n [ChainId.base]: {\n abi: VEDA_VAULT_TELLER_ABI as Abi,\n address: '0x2eA43384F1A98765257bc6Cb26c7131dEbdEB9B3',\n chainId: ChainId.base,\n },\n [ChainId.binanceSmartChain]: {\n abi: VEDA_VAULT_TELLER_ABI as Abi,\n address: '0x2eA43384F1A98765257bc6Cb26c7131dEbdEB9B3',\n chainId: ChainId.binanceSmartChain,\n },\n [ChainId.corn]: {\n abi: VEDA_VAULT_TELLER_ABI as Abi,\n address: '0x2eA43384F1A98765257bc6Cb26c7131dEbdEB9B3',\n chainId: ChainId.corn,\n },\n } as const;\n\n/** Stake and bake contracts */\nexport const VEDA_VAULT_SPENDER_CONTRACTS: Record<\n VedaVaultStakeAndBakeChain,\n ContractInfo\n> = {\n [ChainId.ethereum]: {\n abi: VEDA_VAULT_SPENDER_ABI as Abi,\n address: '0xC8bbF6153D7Ba105f1399D992ebd32B0541996ef',\n chainId: ChainId.ethereum,\n },\n // Testnets:\n [ChainId.sepolia]: {\n abi: VEDA_VAULT_SPENDER_ABI as Abi,\n address: '0x77eD6a84fEF665156e81247ECbd43A847B8A6398',\n chainId: ChainId.sepolia,\n },\n} as const;\n\nexport const VEDA_VAULT_WITHDRAW_QUEUE_CONTRACTS: Record<\n VedaVaultChain,\n ContractInfo\n> = {\n [ChainId.ethereum]: {\n abi: VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI as Abi,\n address: '0x3b4aCd8879fb60586cCd74bC2F831A4C5E7DbBf8',\n chainId: ChainId.ethereum,\n },\n [ChainId.base]: {\n abi: VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI as Abi,\n address: '0x3b4aCd8879fb60586cCd74bC2F831A4C5E7DbBf8',\n chainId: ChainId.ethereum,\n },\n [ChainId.binanceSmartChain]: {\n abi: VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI as Abi,\n address: '0x3b4aCd8879fb60586cCd74bC2F831A4C5E7DbBf8',\n chainId: ChainId.ethereum,\n },\n [ChainId.corn]: {\n abi: VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI as Abi,\n address: '0x3b4aCd8879fb60586cCd74bC2F831A4C5E7DbBf8',\n chainId: ChainId.ethereum,\n },\n};\n\nexport const VEDA_VAULT_BASE_ASSET = {\n abi: VEDA_VAULT_BASE_ASSET_ABI,\n symbol: 'WBTC',\n displayName: 'wBTC',\n address: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',\n decimals: 8,\n};\n\nexport enum Vault {\n Veda = 'veda',\n}\n\nexport const VaultNameMap = {\n [Vault.Veda]: 'Veda / Lombard DeFi Vault',\n} as const;\n\nexport const VAULTS = {\n [Vault.Veda]: {\n defaultChainId: VEDA_VAULT_DEFAULT_CHAIN_ID,\n chains: VEDA_VAULT_CHAINS,\n tokens: {\n [Token.LBTC]: VEDA_VAULT_CHAINS,\n [Token.BTCBinance]: [ChainId.binanceSmartChain],\n [Token.cbBTC]: [ChainId.ethereum, ChainId.base],\n [Token.eBTC]: [ChainId.ethereum],\n [Token.wBTC]: [ChainId.ethereum],\n [Token.wBTCN]: [ChainId.corn],\n },\n stakeAndBakeChains: VEDA_VAULT_STAKE_AND_BAKE_CHAINS,\n decimals: 8,\n vaultContract: {\n abi: VEDA_VAULT_ABI,\n address: VEDA_VAULT_CONTRACT,\n },\n accountantContract: {\n abi: VEDA_VAULT_ACCOUNTANT_ABI,\n address: VEDA_VAULT_ACCOUNTANT_CONTRACT,\n },\n lensContract: {\n abi: VEDA_VAULT_LENS_ABI,\n address: VEDA_VAULT_LENS_CONTRACT,\n },\n spenderContracts: VEDA_VAULT_SPENDER_CONTRACTS,\n tellerContracts: VEDA_VAULT_TELLER_CONTRACTS,\n withdrawQueueContracts: VEDA_VAULT_WITHDRAW_QUEUE_CONTRACTS,\n\n queueWithdrawDiscountPercent: '0.01',\n queueWithdrawDaysValid: '14',\n },\n} as const;\n"],"names":["VEDA_VAULT_CHAINS","ChainId","isVedaVaultChain","chainId","VEDA_VAULT_CHAIN_TO_NETWORK_MAP","NETWORK_TO_VEDA_VAULT_CHAIN_MAP","VEDA_VAULT_STAKE_AND_BAKE_CHAINS","isVedaVaultStakeAndBakeChain","VEDA_VAULT_DEFAULT_CHAIN_ID","VEDA_VAULT_CONTRACT","VEDA_VAULT_ACCOUNTANT_CONTRACT","VEDA_VAULT_LENS_CONTRACT","VEDA_VAULT_TELLER_CONTRACTS","VEDA_VAULT_TELLER_ABI","VEDA_VAULT_SPENDER_CONTRACTS","VEDA_VAULT_SPENDER_ABI","VEDA_VAULT_WITHDRAW_QUEUE_CONTRACTS","VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI","Vault","VAULTS","Token","VEDA_VAULT_ABI","VEDA_VAULT_ACCOUNTANT_ABI","VEDA_VAULT_LENS_ABI"],"mappings":"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"}
|