@lombard.finance/sdk 4.2.0 → 4.3.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.
Files changed (164) hide show
  1. package/CHANGELOG.md +0 -94
  2. package/README.md +10 -59
  3. package/dist/api.cjs +1 -1
  4. package/dist/api.js +5 -5
  5. package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
  6. package/dist/bridge/lib/config.d.ts +3 -3
  7. package/dist/bridge/lib/config.d.ts.map +1 -1
  8. package/dist/bridge.cjs +1 -1
  9. package/dist/bridge.js +1 -1
  10. package/dist/btc.cjs +1 -1
  11. package/dist/btc.js +2 -2
  12. package/dist/chunks/{BtcActions-D9eBmDj6.cjs → BtcActions-ByhBml_1.cjs} +2 -2
  13. package/dist/chunks/{BtcActions-D9eBmDj6.cjs.map → BtcActions-ByhBml_1.cjs.map} +1 -1
  14. package/dist/chunks/{BtcActions-DGqmtxjd.js → BtcActions-C_A1dUQ0.js} +20 -20
  15. package/dist/chunks/{BtcActions-DGqmtxjd.js.map → BtcActions-C_A1dUQ0.js.map} +1 -1
  16. package/dist/chunks/{EvmActions-BOwYPThp.cjs → EvmActions-DoYIhj61.cjs} +2 -2
  17. package/dist/chunks/{EvmActions-BOwYPThp.cjs.map → EvmActions-DoYIhj61.cjs.map} +1 -1
  18. package/dist/chunks/{EvmActions-MW5mNmqs.js → EvmActions-DucgT60w.js} +45 -45
  19. package/dist/chunks/{EvmActions-MW5mNmqs.js.map → EvmActions-DucgT60w.js.map} +1 -1
  20. package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs → ReferralsClient-BC-1wT1q.cjs} +2 -2
  21. package/dist/chunks/{ReferralsClient-DUwyIUe3.cjs.map → ReferralsClient-BC-1wT1q.cjs.map} +1 -1
  22. package/dist/chunks/{ReferralsClient-JjWLlIO4.js → ReferralsClient-DbFWWtVi.js} +20 -20
  23. package/dist/chunks/{ReferralsClient-JjWLlIO4.js.map → ReferralsClient-DbFWWtVi.js.map} +1 -1
  24. package/dist/chunks/approveLBTC-B5-ZWqct.js +26 -0
  25. package/dist/chunks/{approveLBTC-DOP0wsm3.js.map → approveLBTC-B5-ZWqct.js.map} +1 -1
  26. package/dist/chunks/{approveLBTC-CN6rJF6_.cjs → approveLBTC-CZiZmdcX.cjs} +2 -2
  27. package/dist/chunks/{approveLBTC-CN6rJF6_.cjs.map → approveLBTC-CZiZmdcX.cjs.map} +1 -1
  28. package/dist/chunks/blockchain-identifier-BmadkNtK.js +113 -0
  29. package/dist/chunks/blockchain-identifier-BmadkNtK.js.map +1 -0
  30. package/dist/chunks/{blockchain-identifier-DtIGGlIi.cjs → blockchain-identifier-BzMQWh-C.cjs} +2 -2
  31. package/dist/chunks/blockchain-identifier-BzMQWh-C.cjs.map +1 -0
  32. package/dist/chunks/bridge-BzRlY9pP.cjs +12 -0
  33. package/dist/chunks/bridge-BzRlY9pP.cjs.map +1 -0
  34. package/dist/chunks/{bridge-DyAiDpxD.js → bridge-CTsiodO1.js} +72 -95
  35. package/dist/chunks/bridge-CTsiodO1.js.map +1 -0
  36. package/dist/chunks/{config-_8X_2sG4.js → config-hFKqUyg3.js} +2 -2
  37. package/dist/chunks/{config-_8X_2sG4.js.map → config-hFKqUyg3.js.map} +1 -1
  38. package/dist/chunks/{config-DqbLaiRi.cjs → config-l4ZaZw_g.cjs} +2 -2
  39. package/dist/chunks/{config-DqbLaiRi.cjs.map → config-l4ZaZw_g.cjs.map} +1 -1
  40. package/dist/chunks/{defi-registry-NGWlyxAY.cjs → defi-registry-BIRv_zkp.cjs} +2 -2
  41. package/dist/chunks/{defi-registry-NGWlyxAY.cjs.map → defi-registry-BIRv_zkp.cjs.map} +1 -1
  42. package/dist/chunks/{defi-registry-dhrQMy94.js → defi-registry-wNFN3qyB.js} +7 -7
  43. package/dist/chunks/{defi-registry-dhrQMy94.js.map → defi-registry-wNFN3qyB.js.map} +1 -1
  44. package/dist/chunks/{depositStatus-K6gky8zH.cjs → depositStatus-C3-EgT2a.cjs} +2 -2
  45. package/dist/chunks/{depositStatus-K6gky8zH.cjs.map → depositStatus-C3-EgT2a.cjs.map} +1 -1
  46. package/dist/chunks/{depositStatus-DeCO-K5Q.js → depositStatus-DM7fRmbN.js} +8 -8
  47. package/dist/chunks/{depositStatus-DeCO-K5Q.js.map → depositStatus-DM7fRmbN.js.map} +1 -1
  48. package/dist/chunks/{events-DIKZG4SZ.cjs → events-BTtwgCev.cjs} +2 -2
  49. package/dist/chunks/{events-DIKZG4SZ.cjs.map → events-BTtwgCev.cjs.map} +1 -1
  50. package/dist/chunks/{events-CLVUaKQS.js → events-DPi6MDRA.js} +35 -35
  51. package/dist/chunks/{events-CLVUaKQS.js.map → events-DPi6MDRA.js.map} +1 -1
  52. package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs → get-exchange-ratio-C-7DadfD.cjs} +2 -2
  53. package/dist/chunks/{get-exchange-ratio-CM8W0jTw.cjs.map → get-exchange-ratio-C-7DadfD.cjs.map} +1 -1
  54. package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +20 -0
  55. package/dist/chunks/{get-exchange-ratio-B0CNEGOB.js.map → get-exchange-ratio-NtnkG1kZ.js.map} +1 -1
  56. package/dist/chunks/{get-positions-summary-Cled5YPA.js → get-positions-summary-B_MmGHLv.js} +4 -4
  57. package/dist/chunks/{get-positions-summary-Cled5YPA.js.map → get-positions-summary-B_MmGHLv.js.map} +1 -1
  58. package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs → get-positions-summary-DkZZYbGP.cjs} +2 -2
  59. package/dist/chunks/{get-positions-summary-Co7RZBiK.cjs.map → get-positions-summary-DkZZYbGP.cjs.map} +1 -1
  60. package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs → get-vault-tvl-DmTUbOY7.cjs} +2 -2
  61. package/dist/chunks/{get-vault-tvl-Bydlvlrv.cjs.map → get-vault-tvl-DmTUbOY7.cjs.map} +1 -1
  62. package/dist/chunks/{get-vault-tvl-DxjO9xDs.js → get-vault-tvl-YAXePAW3.js} +4 -4
  63. package/dist/chunks/{get-vault-tvl-DxjO9xDs.js.map → get-vault-tvl-YAXePAW3.js.map} +1 -1
  64. package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js → get-vault-withdrawals-BrpZlt6s.js} +3 -3
  65. package/dist/chunks/{get-vault-withdrawals-CSQqKFB8.js.map → get-vault-withdrawals-BrpZlt6s.js.map} +1 -1
  66. package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs → get-vault-withdrawals-CWcYy_sH.cjs} +2 -2
  67. package/dist/chunks/{get-vault-withdrawals-DBA3ok0m.cjs.map → get-vault-withdrawals-CWcYy_sH.cjs.map} +1 -1
  68. package/dist/chunks/{getSharesByAddress-De7as74h.cjs → getSharesByAddress-U48H_ygt.cjs} +2 -2
  69. package/dist/chunks/{getSharesByAddress-De7as74h.cjs.map → getSharesByAddress-U48H_ygt.cjs.map} +1 -1
  70. package/dist/chunks/{getSharesByAddress-CK2q7gBI.js → getSharesByAddress-cUtkrKTq.js} +14 -14
  71. package/dist/chunks/{getSharesByAddress-CK2q7gBI.js.map → getSharesByAddress-cUtkrKTq.js.map} +1 -1
  72. package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs → getUserStakeAndBakeSignature-BxRq2cI1.cjs} +2 -2
  73. package/dist/chunks/{getUserStakeAndBakeSignature--XsK93Lb.cjs.map → getUserStakeAndBakeSignature-BxRq2cI1.cjs.map} +1 -1
  74. package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js → getUserStakeAndBakeSignature-NGGblnJl.js} +11 -11
  75. package/dist/chunks/{getUserStakeAndBakeSignature-2xPkL9v_.js.map → getUserStakeAndBakeSignature-NGGblnJl.js.map} +1 -1
  76. package/dist/chunks/index-BKzxeh1Y.cjs.map +1 -1
  77. package/dist/chunks/index-CfcQ_g3t.js.map +1 -1
  78. package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js → lbtc-addresses-BLRmtR3c.js} +2 -2
  79. package/dist/chunks/{lbtc-addresses-NHg9Gk5y.js.map → lbtc-addresses-BLRmtR3c.js.map} +1 -1
  80. package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs → lbtc-addresses-xyTYV7hx.cjs} +2 -2
  81. package/dist/chunks/{lbtc-addresses-bj--zuK9.cjs.map → lbtc-addresses-xyTYV7hx.cjs.map} +1 -1
  82. package/dist/chunks/{statusConstants-ZJia15m2.js → statusConstants-CJk6vOiM.js} +844 -853
  83. package/dist/chunks/statusConstants-CJk6vOiM.js.map +1 -0
  84. package/dist/chunks/statusConstants-fmtIEEEM.cjs +2 -0
  85. package/dist/chunks/statusConstants-fmtIEEEM.cjs.map +1 -0
  86. package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js → storeNetworkFeeSignature-BZGL2Zn_.js} +8 -8
  87. package/dist/chunks/{storeNetworkFeeSignature-BZUZOxns.js.map → storeNetworkFeeSignature-BZGL2Zn_.js.map} +1 -1
  88. package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs → storeNetworkFeeSignature-D7yo6lDV.cjs} +2 -2
  89. package/dist/chunks/{storeNetworkFeeSignature-pV7xUOSo.cjs.map → storeNetworkFeeSignature-D7yo6lDV.cjs.map} +1 -1
  90. package/dist/chunks/token-addresses-DRBecUa7.cjs +2 -0
  91. package/dist/chunks/token-addresses-DRBecUa7.cjs.map +1 -0
  92. package/dist/chunks/token-addresses-FKpA3uc4.js +541 -0
  93. package/dist/chunks/token-addresses-FKpA3uc4.js.map +1 -0
  94. package/dist/chunks/{tokens-Bw35TZqd.js → tokens-C6qZHzph.js} +28 -30
  95. package/dist/chunks/tokens-C6qZHzph.js.map +1 -0
  96. package/dist/chunks/tokens-D_HeVB5p.cjs +2 -0
  97. package/dist/chunks/tokens-D_HeVB5p.cjs.map +1 -0
  98. package/dist/chunks/{unstakeLBTC-Huy_ncVl.js → unstakeLBTC-B4Rwf65e.js} +141 -129
  99. package/dist/chunks/unstakeLBTC-B4Rwf65e.js.map +1 -0
  100. package/dist/chunks/unstakeLBTC-Wlfi14de.cjs +2 -0
  101. package/dist/chunks/unstakeLBTC-Wlfi14de.cjs.map +1 -0
  102. package/dist/chunks/{withdraw-Z77x7Hj4.cjs → withdraw-C1fMFSwy.cjs} +2 -2
  103. package/dist/chunks/{withdraw-Z77x7Hj4.cjs.map → withdraw-C1fMFSwy.cjs.map} +1 -1
  104. package/dist/chunks/{withdraw-CVNVJ7-x.js → withdraw-hHueI2p7.js} +9 -9
  105. package/dist/chunks/{withdraw-CVNVJ7-x.js.map → withdraw-hHueI2p7.js.map} +1 -1
  106. package/dist/clients/rpc-url-config.d.ts.map +1 -1
  107. package/dist/common/chains.d.ts +343 -112
  108. package/dist/common/chains.d.ts.map +1 -1
  109. package/dist/common/feature-config.d.ts.map +1 -1
  110. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts +27 -0
  111. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts.map +1 -1
  112. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts +26 -0
  113. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts.map +1 -1
  114. package/dist/contracts.cjs +1 -1
  115. package/dist/contracts.js +26 -24
  116. package/dist/core/chains/catalog.d.ts.map +1 -1
  117. package/dist/core/chains/types.d.ts +0 -1
  118. package/dist/core/chains/types.d.ts.map +1 -1
  119. package/dist/core.cjs +1 -1
  120. package/dist/core.js +29 -29
  121. package/dist/defi.cjs +1 -1
  122. package/dist/defi.js +3 -3
  123. package/dist/entries/contracts.d.ts +2 -2
  124. package/dist/entries/contracts.d.ts.map +1 -1
  125. package/dist/entries/evm.d.ts +1 -1
  126. package/dist/entries/evm.d.ts.map +1 -1
  127. package/dist/entries/utils.d.ts +1 -1
  128. package/dist/entries/utils.d.ts.map +1 -1
  129. package/dist/evm.cjs +1 -1
  130. package/dist/evm.js +34 -35
  131. package/dist/index.cjs +1 -1
  132. package/dist/index.d.ts +3 -3
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +188 -187
  135. package/dist/metrics.cjs +1 -1
  136. package/dist/metrics.js +1 -1
  137. package/dist/stories/components/decorators/wagmi-decorator.d.ts.map +1 -1
  138. package/dist/tokens/token-addresses.d.ts.map +1 -1
  139. package/dist/utils.cjs +1 -1
  140. package/dist/utils.js +48 -49
  141. package/dist/vaults.cjs +1 -1
  142. package/dist/vaults.js +15 -15
  143. package/package.json +2 -2
  144. package/dist/chunks/approveLBTC-DOP0wsm3.js +0 -26
  145. package/dist/chunks/blockchain-identifier-DtIGGlIi.cjs.map +0 -1
  146. package/dist/chunks/blockchain-identifier-PNEhu-QU.js +0 -113
  147. package/dist/chunks/blockchain-identifier-PNEhu-QU.js.map +0 -1
  148. package/dist/chunks/bridge-DkZMwO7c.cjs +0 -12
  149. package/dist/chunks/bridge-DkZMwO7c.cjs.map +0 -1
  150. package/dist/chunks/bridge-DyAiDpxD.js.map +0 -1
  151. package/dist/chunks/get-exchange-ratio-B0CNEGOB.js +0 -20
  152. package/dist/chunks/statusConstants-DTDi_4Go.cjs +0 -2
  153. package/dist/chunks/statusConstants-DTDi_4Go.cjs.map +0 -1
  154. package/dist/chunks/statusConstants-ZJia15m2.js.map +0 -1
  155. package/dist/chunks/token-addresses-D859i6tX.cjs +0 -2
  156. package/dist/chunks/token-addresses-D859i6tX.cjs.map +0 -1
  157. package/dist/chunks/token-addresses-DmAr89jP.js +0 -579
  158. package/dist/chunks/token-addresses-DmAr89jP.js.map +0 -1
  159. package/dist/chunks/tokens-Bw35TZqd.js.map +0 -1
  160. package/dist/chunks/tokens-DLGMNeqZ.cjs +0 -2
  161. package/dist/chunks/tokens-DLGMNeqZ.cjs.map +0 -1
  162. package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs +0 -2
  163. package/dist/chunks/unstakeLBTC-CqZzj9WL.cjs.map +0 -1
  164. package/dist/chunks/unstakeLBTC-Huy_ncVl.js.map +0 -1
@@ -1,12 +0,0 @@
1
- "use strict";const $=require("bignumber.js"),F=require("viem"),d=require("./tokens-DLGMNeqZ.cjs"),e=require("./token-addresses-D859i6tX.cjs"),U=require("./numbers-3LtmxfD8.cjs"),ee=require("./array-DKG6Pz4i.cjs"),Z=require("./approveLBTC-CN6rJF6_.cjs"),te=require("@layerzerolabs/lz-v2-utilities"),G=JSON.parse('[{"inputs":[{"internalType":"address","name":"wrappedNative","type":"address"},{"internalType":"address","name":"armProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadARMSignal","type":"error"},{"inputs":[],"name":"FailedToSendValue","type":"error"},{"inputs":[],"name":"InsufficientFeeTokenAmount","type":"error"},{"inputs":[],"name":"InvalidMsgValue","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"InvalidRecipientAddress","type":"error"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampMismatch","type":"error"},{"inputs":[],"name":"OnlyOffRamp","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"UnsupportedDestinationChain","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"},{"indexed":false,"internalType":"bytes32","name":"calldataHash","type":"bytes32"}],"name":"MessageExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"onRamp","type":"address"}],"name":"OnRampSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MAX_RET_BYTES","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"onRamp","type":"address"}],"internalType":"struct Router.OnRamp[]","name":"onRampUpdates","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"offRampRemoves","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"offRampAdds","type":"tuple[]"}],"name":"applyRampUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"destinationChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"ccipSend","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getArmProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destinationChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"getFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOffRamps","outputs":[{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getOnRamp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"getSupportedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWrappedNative","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"isChainSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"name":"isOffRamp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"bytes","name":"sender","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"destTokenAmounts","type":"tuple[]"}],"internalType":"struct Client.Any2EVMMessage","name":"message","type":"tuple"},{"internalType":"uint16","name":"gasForCallExactCheck","type":"uint16"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"routeMessage","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"retData","type":"bytes"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wrappedNative","type":"address"}],"name":"setWrappedNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]'),ne={[e.ChainId.ethereum]:{routerAddress:"0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D",chainSelector:"5009297550715157269"},[e.ChainId.base]:{routerAddress:"0x881e3A65B4d4a04dD529061dd0071cf975F58bCD",chainSelector:"15971525489660198786"},[e.ChainId.binanceSmartChain]:{routerAddress:"0x34B03Cb9086d7D758AC55af71584F81A598759FE",chainSelector:"11344663589394136015"},[e.ChainId.sonic]:{routerAddress:"0xB4e1Ff7882474BB93042be9AD5E1fA387949B860",chainSelector:"1673871237479749969"},[e.ChainId.katana]:{routerAddress:"0x7c19b79D2a054114Ab36ad758A36e92376e267DA",chainSelector:"2459028469735686113"},[e.ChainId.megaeth]:{routerAddress:"0xfa546248C54939AA6C48279CdC1EAf9A1125c411",chainSelector:"6093540873831549674"},[e.ChainId.avalanche]:{routerAddress:"0xF4c7E640EdA248ef95972845a62bdC74237805dB",chainSelector:"6433500567565415381"},[e.ChainId.monad]:{routerAddress:"0x33566fE5976AAa420F3d5C64996641Fc3858CaDB",chainSelector:"8481857512324358265"},[e.ChainId.stable]:{routerAddress:"0xECFF67559c0583027A5fbd85136E33bC4D66eeA0",chainSelector:"16978377838628290997"},[e.ChainId.holesky]:{routerAddress:"0xb9531b46fE8808fB3659e39704953c2B1112DD43",chainSelector:"7717148896336251131"},[e.ChainId.baseSepoliaTestnet]:{routerAddress:"0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93",chainSelector:"10344971235874465080"},[e.ChainId.binanceSmartChainTestnet]:{routerAddress:"0xE1053aE1857476f36A3C62580FF9b016E8EE8F6f",chainSelector:"13264668187771770619"},[e.ChainId.katanaTatara]:{routerAddress:"0x1dF1fe714A376f248d51AAB826C3feeC379e80fC",chainSelector:"9090863410735740267"},[e.ChainId.avalancheFuji]:{routerAddress:"0xF694E193200268f9a4868e4Aa017A0118C9a8177",chainSelector:"14767482510784806043"}};function z(n){return ne[n]}const h=JSON.parse('[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AdapterNotConfirmed","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"commission","type":"uint256"}],"name":"AmountLessThanCommission","type":"error"},{"inputs":[],"name":"AmountTooSmallToPayRelativeFee","type":"error"},{"inputs":[],"name":"BadCommission","type":"error"},{"inputs":[],"name":"BadConfiguration","type":"error"},{"inputs":[],"name":"Bridge_ZeroAddress","type":"error"},{"inputs":[],"name":"Bridge_ZeroAmount","type":"error"},{"inputs":[],"name":"ConsortiumNotConfirmed","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"KnownDestination","type":"error"},{"inputs":[],"name":"MalformedRateLimit","type":"error"},{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotValidDestination","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"PayloadAlreadyUsed","type":"error"},{"inputs":[],"name":"PayloadTooLarge","type":"error"},{"inputs":[],"name":"RateLimitExceeded","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes4","name":"action","type":"bytes4"}],"name":"UnexpectedAction","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"UnknownAdapter","type":"error"},{"inputs":[],"name":"UnknownDestination","type":"error"},{"inputs":[{"internalType":"bytes32","name":"fromChain","type":"bytes32"},{"internalType":"bytes32","name":"fromContract","type":"bytes32"}],"name":"UnknownOriginContract","type":"error"},{"inputs":[],"name":"WrongChainId","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"inputs":[],"name":"ZeroChainId","type":"error"},{"inputs":[],"name":"ZeroContractHash","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdapter","type":"address"},{"indexed":false,"internalType":"contract IAdapter","name":"newAdapter","type":"address"}],"name":"AdapterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"chain","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"contractAddress","type":"bytes32"}],"name":"BridgeDestinationAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"chain","type":"bytes32"}],"name":"BridgeDestinationRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract INotaryConsortium","name":"prevVal","type":"address"},{"indexed":true,"internalType":"contract INotaryConsortium","name":"newVal","type":"address"}],"name":"ConsortiumChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"newValue","type":"uint64"},{"indexed":true,"internalType":"bytes32","name":"chain","type":"bytes32"}],"name":"DepositAbsoluteCommissionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"newValue","type":"uint16"},{"indexed":true,"internalType":"bytes32","name":"chain","type":"bytes32"}],"name":"DepositRelativeCommissionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"bytes32","name":"toAddress","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"payloadHash","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"payload","type":"bytes"}],"name":"DepositToBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PayloadNotarized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"bytes32","name":"payloadHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"adapter","type":"address"}],"name":"PayloadReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"chainId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"limit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"window","type":"uint256"}],"name":"RateLimitsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousTreasury","type":"address"},{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"bytes32","name":"payloadHash","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"payload","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"amount","type":"uint64"}],"name":"WithdrawFromBridge","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"},{"internalType":"bytes32","name":"toContract","type":"bytes32"},{"internalType":"uint16","name":"relCommission","type":"uint16"},{"internalType":"uint64","name":"absCommission","type":"uint64"},{"internalType":"contract IAdapter","name":"adapter","type":"address"},{"internalType":"bool","name":"requireConsortium","type":"bool"}],"name":"addDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"authNotary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"chain","type":"bytes32"},{"internalType":"contract IAdapter","name":"newAdapter","type":"address"}],"name":"changeAdapter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract INotaryConsortium","name":"newVal","type":"address"}],"name":"changeConsortium","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"},{"internalType":"bytes32","name":"chain","type":"bytes32"}],"name":"changeDepositAbsoluteCommission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newValue","type":"uint16"},{"internalType":"bytes32","name":"chain","type":"bytes32"}],"name":"changeDepositRelativeCommission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"consortium","outputs":[{"internalType":"contract INotaryConsortium","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"},{"internalType":"bytes32","name":"toAddress","type":"bytes32"},{"internalType":"uint64","name":"amount","type":"uint64"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"}],"name":"getAdapter","outputs":[{"internalType":"contract IAdapter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"},{"internalType":"bytes32","name":"toAddress","type":"bytes32"},{"internalType":"uint64","name":"amount","type":"uint64"}],"name":"getAdapterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"}],"name":"getDepositAbsoluteCommission","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"}],"name":"getDepositRelativeCommission","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"}],"name":"getDestination","outputs":[{"components":[{"internalType":"bytes32","name":"bridgeContract","type":"bytes32"},{"internalType":"uint16","name":"relativeCommission","type":"uint16"},{"internalType":"uint64","name":"absoluteCommission","type":"uint64"},{"internalType":"contract IAdapter","name":"adapter","type":"address"},{"internalType":"bool","name":"requireConsortium","type":"bool"}],"internalType":"struct Bridge.DestinationConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILBTC","name":"lbtc_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"},{"internalType":"address","name":"owner_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lbtc","outputs":[{"internalType":"contract ILBTC","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"fromChain","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"receivePayload","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"toChain","type":"bytes32"}],"name":"removeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"chainId","type":"bytes32"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"internalType":"struct RateLimits.Config[]","name":"depositRateLimits","type":"tuple[]"},{"components":[{"internalType":"bytes32","name":"chainId","type":"bytes32"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"internalType":"struct RateLimits.Config[]","name":"withdrawRateLimits","type":"tuple[]"}],"name":"setRateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"withdraw","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"nonpayable","type":"function"}]'),o=JSON.parse('[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_lzEndpoint","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"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"},{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[],"name":"MalformedRateLimit","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"RateLimitExceeded","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"inspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes32","name":"chainId","type":"bytes32"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"indexed":false,"internalType":"struct RateLimits.Config[]","name":"rateLimitConfigs","type":"tuple[]"},{"indexed":false,"internalType":"enum EfficientRateLimiter.RateLimitDirection","name":"direction","type":"uint8"}],"name":"RateLimitsChanged","type":"event"},{"inputs":[],"name":"SEND","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND_AND_CALL","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"empty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_srcEid","type":"uint32"}],"name":"getAmountCanBeReceived","outputs":[{"internalType":"uint256","name":"currentAmountInFlight","type":"uint256"},{"internalType":"uint256","name":"amountCanBeReceived","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_dstEid","type":"uint32"}],"name":"getAmountCanBeSent","outputs":[{"internalType":"uint256","name":"currentAmountInFlight","type":"uint256"},{"internalType":"uint256","name":"amountCanBeSent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"srcEid","type":"uint32"}],"name":"inboundRateLimits","outputs":[{"internalType":"uint256","name":"amountInFlight","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceiveSimulate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"}],"name":"outboundRateLimits","outputs":[{"internalType":"uint256","name":"amountInFlight","type":"uint256"},{"internalType":"uint256","name":"lastUpdated","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"chainId","type":"bytes32"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"internalType":"struct RateLimits.Config[]","name":"_rateLimitConfigs","type":"tuple[]"},{"internalType":"enum EfficientRateLimiter.RateLimitDirection","name":"direction","type":"uint8"}],"name":"setRateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]'),S=$(1e-6);var T=(n=>(n.CCIP="CCIP",n.OFT="OFT",n))(T||{});const q={CCIP:"https://ccip.chain.link/tx/{txHash}",OFT:"https://layerzeroscan.com/tx/{txHash}"},H=[e.ChainId.ethereum,e.ChainId.base,e.ChainId.binanceSmartChain,e.ChainId.katana,e.ChainId.sonic,e.ChainId.avalanche,e.ChainId.monad,e.ChainId.stable,e.ChainId.avalancheFuji,e.ChainId.baseSepoliaTestnet,e.ChainId.holesky,e.ChainId.katanaTatara,e.ChainId.sepolia],W=[e.ChainId.ethereum,e.ChainId.berachain,e.ChainId.corn,e.ChainId.etherlink,e.ChainId.swell,e.ChainId.tac,e.ChainId.berachainBartioTestnet,e.ChainId.sepolia];ee.unique([...H,...W]);const j=9e4,K=2e5,J=[e.ChainId.berachain,e.ChainId.etherlink,e.ChainId.morph,e.ChainId.sonic,e.ChainId.corn,e.ChainId.tac,e.ChainId.berachainBartioTestnet,e.ChainId.morphHolesky],t=([n,r])=>`[from:${n}, to: ${r}]`,ae={routes:[t([e.ChainId.ethereum,e.ChainId.base]),t([e.ChainId.ethereum,e.ChainId.binanceSmartChain]),t([e.ChainId.ethereum,e.ChainId.sonic]),t([e.ChainId.ethereum,e.ChainId.katana])],type:"CCIP",contract:{address:"0xa869817b48b25eee986bdf4be04062e6fd2c418b",abi:h,chainId:e.ChainId.ethereum}},ie={routes:[t([e.ChainId.base,e.ChainId.ethereum]),t([e.ChainId.base,e.ChainId.binanceSmartChain]),t([e.ChainId.base,e.ChainId.katana])],type:"CCIP",contract:{address:"0xa869817b48b25eee986bdf4be04062e6fd2c418b",abi:h,chainId:e.ChainId.base}},se={routes:[t([e.ChainId.binanceSmartChain,e.ChainId.ethereum]),t([e.ChainId.binanceSmartChain,e.ChainId.base]),t([e.ChainId.binanceSmartChain,e.ChainId.katana])],type:"CCIP",contract:{address:"0xa869817b48b25eee986bdf4be04062e6fd2c418b",abi:h,chainId:e.ChainId.binanceSmartChain}},re={routes:[t([e.ChainId.katana,e.ChainId.ethereum]),t([e.ChainId.katana,e.ChainId.base]),t([e.ChainId.katana,e.ChainId.binanceSmartChain]),t([e.ChainId.katana,e.ChainId.sonic])],type:"CCIP",contract:{address:"0xA869817b48b25EeE986bdF4bE04062e6fd2C418B",abi:h,chainId:e.ChainId.katana}},pe={routes:[t([e.ChainId.sonic,e.ChainId.ethereum]),t([e.ChainId.sonic,e.ChainId.katana])],type:"CCIP",contract:{address:"0xa869817b48b25eee986bdf4be04062e6fd2c418b",abi:h,chainId:e.ChainId.sonic}},ye={routes:[t([e.ChainId.baseSepoliaTestnet,e.ChainId.holesky])],type:"CCIP",contract:{address:"0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F",abi:h,chainId:e.ChainId.baseSepoliaTestnet}},oe={routes:[t([e.ChainId.holesky,e.ChainId.baseSepoliaTestnet])],type:"CCIP",contract:{address:"0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F",abi:h,chainId:e.ChainId.holesky}},de={routes:[t([e.ChainId.katanaTatara,e.ChainId.sepolia])],type:"CCIP",contract:{address:"0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F",abi:h,chainId:e.ChainId.katanaTatara}},ue={routes:[t([e.ChainId.sepolia,e.ChainId.katanaTatara])],type:"CCIP",contract:{address:"0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F",abi:h,chainId:e.ChainId.sepolia}},me=[ae,ie,se,re,pe,ye,oe,de,ue].reduce((n,r)=>{if(r.type!=="CCIP")return n;const c=r.routes.map(f=>[f,{type:"CCIP",contract:r.contract}]);return n.concat(c)},[]),le=[[t([e.ChainId.ethereum,e.ChainId.berachain]),{type:"OFT",contract:{address:"0x1290A6b480f7eF14925229fdB66f5680aD8F44AD",abi:o,chainId:e.ChainId.ethereum}}],[t([e.ChainId.ethereum,e.ChainId.corn]),{type:"OFT",contract:{address:"0x6bc15d7930839ec18a57f6f7df72ae1b439d077f",abi:o,chainId:e.ChainId.ethereum}}],[t([e.ChainId.ethereum,e.ChainId.etherlink]),{type:"OFT",contract:{address:"0x3a7647c1323144a16e7D0D71A581E3FE5BD95299",abi:o,chainId:e.ChainId.ethereum}}],[t([e.ChainId.ethereum,e.ChainId.swell]),{type:"OFT",contract:{address:"0x37E92d760a15231e652a2C502182a6b44c7510c0",abi:o,chainId:e.ChainId.ethereum}}],[t([e.ChainId.ethereum,e.ChainId.tac]),{type:"OFT",contract:{address:"0xA7c4d94F98b6e94C139c4645e4E9a94CD7C0Abf7",abi:o,chainId:e.ChainId.ethereum}}],[t([e.ChainId.berachain,e.ChainId.ethereum]),{type:"OFT",contract:{address:"0x630e12D53D4E041b8C5451aD035Ea841E08391d7",abi:o,chainId:e.ChainId.berachain}}],[t([e.ChainId.corn,e.ChainId.ethereum]),{type:"OFT",contract:{address:"0xfc7B20D9B59A8A466f4fC3d34aA69a7D98e71d7A",abi:o,chainId:e.ChainId.corn}}],[t([e.ChainId.etherlink,e.ChainId.ethereum]),{type:"OFT",contract:{address:"0xC832183d4d5fc5831daaC892a93dBBfd798034E3",abi:o,chainId:e.ChainId.etherlink}}],[t([e.ChainId.swell,e.ChainId.ethereum]),{type:"OFT",contract:{address:"0x7B3784AD646C10A8Ddf42b47a4f4bd9aFD351E54",abi:o,chainId:e.ChainId.swell}}],[t([e.ChainId.tac,e.ChainId.ethereum]),{type:"OFT",contract:{address:"0x1298131cDa718bBcA7ACB1f2411e71c05E16f269",abi:o,chainId:e.ChainId.tac}}],[t([e.ChainId.berachainBartioTestnet,e.ChainId.sepolia]),{type:"OFT",contract:{address:"0x1977013acaf27856ac8048C42EE2ed0134d53895",abi:o,chainId:e.ChainId.berachainBartioTestnet}}],[t([e.ChainId.sepolia,e.ChainId.berachainBartioTestnet]),{type:"OFT",contract:{address:"0xe3748bF0Ec0A76767539eE28610B3367e35fe2C2",abi:o,chainId:e.ChainId.sepolia}}]],ce=new Map([...me,...le]),_=(n,r)=>ce.get(t([n,r]));function be(n){const r="0x97a657c9",c=F.encodePacked(["uint256"],[n]);return`${r}${c.slice(2)}`}async function X({to:n,amount:r,approve:c,recipient:f,account:a,chainId:i,provider:I,env:w,rpcUrl:b}){const s=$(r),A=f||a,p=_(i,n);if(!p||p.type!==T.CCIP)throw new Error(`Unsupported bridge from ${i} to ${n}. Please switch to the supported chains: ${H.join(", ")}`);const u=z(i),y=z(n);if(!u||!y)throw new Error(`CCIP configuration not found for chains ${i} -> ${n}`);const m=u.routerAddress,l=await d.getTokenInfo(e.Token.LBTC,i,w,b);if(!l)throw new Error("Could not retrieve LBTC contract info.");const C=d.makePublicClient({chainId:i,rpcUrl:b}),D=e.makeWalletClient({provider:I,chainId:i}),g=U.toBigInt(d.toBaseDenomination(s,l.decimals));if(s.isLessThan(S))throw new Error(`The amount is smaller than the minimum amount allowed: ${S.toFixed()}`);const B=await C.readContract({address:l.address,abi:l.abi,functionName:"balanceOf",args:[a]}),v=d.fromBaseDenomination(String(B),l.decimals);if(s.isGreaterThan(v))throw new Error(`The amount exceeds the account's balance.
2
- Amount: ${s.toFixed()}
3
- Balance: ${v.toFixed()}`);const P=await C.readContract({address:l.address,abi:l.abi,functionName:"allowance",args:[a,m]}),M=d.fromBaseDenomination(String(P),l.decimals);if(s.isGreaterThan(M)){const x=`The amount exceeds allowance.
4
- Amount: ${s.toFixed()}
5
- Allowance: ${M.toFixed()}`;if(!c)throw new Error(x);console.info(x);try{const O=await Z.approveLBTC({account:a,spender:m,amount:s,chainId:i,provider:I,rpcUrl:b,env:w});console.info(`Approve tx hash: ${O}`),console.info(`Approved ${g} for ${m}`)}catch(O){const Q=d.getErrorMessage(O);throw new Error(`Could not approve ${g} for ${m}.
6
- Reason: ${Q}`)}}const E=F.encodeAbiParameters(F.parseAbiParameters("address"),[A]),k=be(0n),R={receiver:E,data:"0x",tokenAmounts:[{token:l.address,amount:g}],feeToken:"0x0000000000000000000000000000000000000000",extraArgs:k},L=await C.readContract({address:m,abi:G,functionName:"getFee",args:[BigInt(y.chainSelector),R]}),{request:V}=await C.simulateContract({address:m,abi:G,account:a,functionName:"ccipSend",args:[BigInt(y.chainSelector),R],value:L});return await D.writeContract(V)}const Te={[e.ChainId.ethereum]:30101,[e.ChainId.berachain]:30362,[e.ChainId.corn]:30331,[e.ChainId.etherlink]:30292,[e.ChainId.swell]:30335,[e.ChainId.tac]:30377,[e.ChainId.sepolia]:40161,[e.ChainId.berachainBartioTestnet]:40291};async function Y({to:n,amount:r,approve:c,recipient:f,account:a,chainId:i,provider:I,env:w,rpcUrl:b}){console.warn('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.');const s=$(r),A=f||a,p=_(i,n);if(!p||p.type!==T.OFT)throw new Error(`Unsupported bridge from ${i} to ${n}. Please switch to the supported chains: ${W.join(", ")}`);const u=p.contract,y=await d.getTokenInfo(e.Token.LBTC,i,w,b);if(!y)throw new Error("Could not retrieve LBTC contract info.");const m=d.makePublicClient({chainId:i,rpcUrl:b}),l=e.makeWalletClient({provider:I,chainId:i}),C=U.toBigInt(d.toBaseDenomination(s,y.decimals));if(s.isLessThan(S))throw new Error(`The amount is smaller than the minimum amount allowed: ${S.toFixed()}`);const D=await m.readContract({address:y.address,abi:y.abi,functionName:"balanceOf",args:[a]}),g=d.fromBaseDenomination(String(D),y.decimals);if(s.isGreaterThan(g))throw new Error(`The amount exceeds the account's balance.
7
- Amount: ${s.toFixed()}
8
- Balance: ${g.toFixed()}`);const B=await m.readContract({address:y.address,abi:y.abi,functionName:"allowance",args:[a,u.address]}),v=d.fromBaseDenomination(String(B),y.decimals);if(s.isGreaterThan(v)){const N=`The amount exceeds allowance.
9
- Amount: ${s.toFixed()}
10
- Allowance: ${v.toFixed()}`;if(!c)throw new Error(N);console.info(N);try{const x=await Z.approveLBTC({account:a,spender:u.address,amount:s,chainId:i,provider:I,rpcUrl:b,env:w});console.info(`Approve tx hash: ${x}`),console.info(`Approved ${C} for ${u.address}`)}catch(x){const O=d.getErrorMessage(x);throw new Error(`Could not approve ${C} for ${u.address}.
11
- Reason: ${O}`)}}const P=te.Options.newOptions().addExecutorLzReceiveOption(J.includes(n)?K:j,0),M=[Te[n],F.pad(A),C,C,P.toHex(),"0x","0x"],{nativeFee:E,lzTokenFee:k}=await m.readContract({abi:u.abi,address:u.address,account:a,functionName:"quoteSend",args:[M,!1]}),R=[M,[E,k],a],{request:L}=await m.simulateContract({abi:u.abi,address:u.address,account:a,functionName:"send",args:R,value:E});return await l.writeContract(L)}async function Ce({to:n,amount:r,approve:c,account:f,chainId:a,provider:i,recipient:I,rpcUrl:w,env:b,experimentalAllowOFT:s=!1}){const A=_(a,n);if(!A||!s&&A.type===T.OFT)throw new Error(`Unsupported bridge from ${a} to ${n}. Please switch to the supported chains: ${H.join(", ")}`);switch(A.type){case T.CCIP:{const p=await X({to:n,amount:r,approve:c,recipient:I,account:f,chainId:a,provider:i,env:b,rpcUrl:w});return{txHash:p,explorerUrl:q[T.CCIP].replace("{txHash}",p),type:T.CCIP}}case T.OFT:{const p=await Y({to:n,amount:r,approve:c,recipient:I,account:f,chainId:a,provider:i,env:b,rpcUrl:w});return{txHash:p,explorerUrl:q[T.OFT].replace("{txHash}",p),type:T.OFT}}}}exports.OFT_GAS_LIMIT=j;exports.OFT_HI_GAS_LIMIT=K;exports.OFT_HI_GAS_LIMIT_CHAINS=J;exports.bridge=Ce;exports.bridgeCCIP=X;exports.bridgeOFT=Y;exports.getBridgeInfo=_;
12
- //# sourceMappingURL=bridge-DkZMwO7c.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge-DkZMwO7c.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.katanaTatara]: {\n routerAddress: '0x1dF1fe714A376f248d51AAB826C3feeC379e80fC',\n chainSelector: '9090863410735740267',\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.katanaTatara,\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_FROM_KATANA_TATARA = {\n routes: [bridgeIdentifier([ChainId.katanaTatara, ChainId.sepolia])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.katanaTatara,\n },\n};\n\nconst CCIP_FROM_SEPOLIA = {\n routes: [bridgeIdentifier([ChainId.sepolia, ChainId.katanaTatara])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sepolia,\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 CCIP_FROM_KATANA_TATARA,\n CCIP_FROM_SEPOLIA,\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_FROM_KATANA_TATARA","CCIP_FROM_SEPOLIA","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 +0,0 @@
1
- {"version":3,"file":"bridge-DyAiDpxD.js","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.katanaTatara]: {\n routerAddress: '0x1dF1fe714A376f248d51AAB826C3feeC379e80fC',\n chainSelector: '9090863410735740267',\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.katanaTatara,\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_FROM_KATANA_TATARA = {\n routes: [bridgeIdentifier([ChainId.katanaTatara, ChainId.sepolia])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.katanaTatara,\n },\n};\n\nconst CCIP_FROM_SEPOLIA = {\n routes: [bridgeIdentifier([ChainId.sepolia, ChainId.katanaTatara])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sepolia,\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 CCIP_FROM_KATANA_TATARA,\n CCIP_FROM_SEPOLIA,\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_FROM_KATANA_TATARA","CCIP_FROM_SEPOLIA","CCIP_BRIDGES","acc","cur","c","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,20 +0,0 @@
1
- import m from "axios";
2
- import e from "bignumber.js";
3
- import { g as c } from "./api-config-CtcP3TVl.js";
4
- import { R as k, T as p } from "./token-addresses-DmAr89jP.js";
5
- const T = [p.LBTC];
6
- async function B({ env: n }) {
7
- const { baseApiUrl: a } = c(n), i = `${a}/api/v1/ratio`, { data: r } = await m.get(i);
8
- return r.token_ratio.map((t) => ({
9
- token: k[t.name],
10
- tokenBTCRatio: e(t.ratio),
11
- BTCTokenRatio: e(t.price)
12
- })).filter((t) => T.includes(t.token)).reduce((t, o) => {
13
- const { token: f, ...s } = o;
14
- return t[o.token] = s, t;
15
- }, {});
16
- }
17
- export {
18
- B as g
19
- };
20
- //# sourceMappingURL=get-exchange-ratio-B0CNEGOB.js.map