@lombard.finance/sdk 4.3.2 → 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/README.md +6 -6
  4. package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.d.ts.map +1 -1
  5. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.d.ts.map +1 -1
  6. package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.d.ts +13 -1
  7. package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.d.ts.map +1 -1
  8. package/dist/api.cjs +1 -1
  9. package/dist/api.js +29 -29
  10. package/dist/bridge.cjs +1 -1
  11. package/dist/bridge.js +7 -7
  12. package/dist/btc.cjs +1 -1
  13. package/dist/btc.js +10 -10
  14. package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts +7 -4
  15. package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts.map +1 -1
  16. package/dist/chains/btc/actions/deposit/config/index.d.ts +16 -8
  17. package/dist/chains/btc/actions/deposit/config/index.d.ts.map +1 -1
  18. package/dist/chains/btc/actions/deposit/config/solana.d.ts +20 -0
  19. package/dist/chains/btc/actions/deposit/config/solana.d.ts.map +1 -0
  20. package/dist/chains/btc/actions/deposit/config/types.d.ts +4 -3
  21. package/dist/chains/btc/actions/deposit/config/types.d.ts.map +1 -1
  22. package/dist/chains/evm/EvmActions.d.ts +4 -4
  23. package/dist/chains/evm/actions/deposit/config/evm.d.ts +3 -3
  24. package/dist/chains/evm/actions/deposit/config/evm.d.ts.map +1 -1
  25. package/dist/chains/evm/actions/deposit/config/types.d.ts +1 -1
  26. package/dist/chains/evm/actions/deposit/config/types.d.ts.map +1 -1
  27. package/dist/chains/evm/actions/deposit/factory.d.ts +1 -1
  28. package/dist/chains/evm/actions/deposit/types.d.ts +1 -1
  29. package/dist/chains/evm/actions/deposit/types.d.ts.map +1 -1
  30. package/dist/chains/evm/actions/redeem/EvmRedeem.d.ts.map +1 -1
  31. package/dist/chains/evm/actions/unstake/EvmUnstake.d.ts.map +1 -1
  32. package/dist/chains/solana/SolanaActions.d.ts +10 -0
  33. package/dist/chains/solana/SolanaActions.d.ts.map +1 -1
  34. package/dist/chains/solana/actions/index.d.ts +1 -0
  35. package/dist/chains/solana/actions/index.d.ts.map +1 -1
  36. package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts +37 -0
  37. package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts.map +1 -0
  38. package/dist/chains/solana/actions/redeem/config/index.d.ts +8 -0
  39. package/dist/chains/solana/actions/redeem/config/index.d.ts.map +1 -0
  40. package/dist/chains/solana/actions/redeem/config/solana.d.ts +22 -0
  41. package/dist/chains/solana/actions/redeem/config/solana.d.ts.map +1 -0
  42. package/dist/chains/solana/actions/redeem/config/types.d.ts +35 -0
  43. package/dist/chains/solana/actions/redeem/config/types.d.ts.map +1 -0
  44. package/dist/chains/solana/actions/redeem/factory.d.ts +12 -0
  45. package/dist/chains/solana/actions/redeem/factory.d.ts.map +1 -0
  46. package/dist/chains/solana/actions/redeem/index.d.ts +9 -0
  47. package/dist/chains/solana/actions/redeem/index.d.ts.map +1 -0
  48. package/dist/chains/solana/actions/redeem/types.d.ts +52 -0
  49. package/dist/chains/solana/actions/redeem/types.d.ts.map +1 -0
  50. package/dist/chains/solana/utils.d.ts +15 -0
  51. package/dist/chains/solana/utils.d.ts.map +1 -0
  52. package/dist/chunks/BtcActions-BIBsbYIt.cjs +2 -0
  53. package/dist/chunks/BtcActions-BIBsbYIt.cjs.map +1 -0
  54. package/dist/chunks/{BtcActions-k-qs1uO0.js → BtcActions-Df41lbsb.js} +457 -414
  55. package/dist/chunks/BtcActions-Df41lbsb.js.map +1 -0
  56. package/dist/chunks/{EvmActions-B_dF42So.js → EvmActions-5lPqhRaM.js} +163 -173
  57. package/dist/chunks/EvmActions-5lPqhRaM.js.map +1 -0
  58. package/dist/chunks/EvmActions-BY_18gTg.cjs +2 -0
  59. package/dist/chunks/EvmActions-BY_18gTg.cjs.map +1 -0
  60. package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs +2 -0
  61. package/dist/chunks/ReferralsClient-Cmrjo9bN.cjs.map +1 -0
  62. package/dist/chunks/{ReferralsClient-DbFWWtVi.js → ReferralsClient-DvEsA3II.js} +160 -160
  63. package/dist/chunks/ReferralsClient-DvEsA3II.js.map +1 -0
  64. package/dist/chunks/{api-config-CtcP3TVl.js → api-config-Dm6dR85f.js} +6 -6
  65. package/dist/chunks/{api-config-CtcP3TVl.js.map → api-config-Dm6dR85f.js.map} +1 -1
  66. package/dist/chunks/{approveLBTC-CZiZmdcX.cjs → approveLBTC-CUXEC3kw.cjs} +2 -2
  67. package/dist/chunks/{approveLBTC-CZiZmdcX.cjs.map → approveLBTC-CUXEC3kw.cjs.map} +1 -1
  68. package/dist/chunks/approveLBTC-Du2El1tW.js +26 -0
  69. package/dist/chunks/{approveLBTC-B5-ZWqct.js.map → approveLBTC-Du2El1tW.js.map} +1 -1
  70. package/dist/chunks/{array-Cev6kyLJ.js → array-DYttUPf5.js} +7 -7
  71. package/dist/chunks/{array-Cev6kyLJ.js.map → array-DYttUPf5.js.map} +1 -1
  72. package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs → blockchain-identifier-BTPGxLio.cjs} +2 -2
  73. package/dist/chunks/{blockchain-identifier-BzMQWh-C.cjs.map → blockchain-identifier-BTPGxLio.cjs.map} +1 -1
  74. package/dist/chunks/{blockchain-identifier-BmadkNtK.js → blockchain-identifier-CTVaEPpY.js} +24 -24
  75. package/dist/chunks/{blockchain-identifier-BmadkNtK.js.map → blockchain-identifier-CTVaEPpY.js.map} +1 -1
  76. package/dist/chunks/{bridge-CTsiodO1.js → bridge-DqGabhIY.js} +13 -13
  77. package/dist/chunks/{bridge-CTsiodO1.js.map → bridge-DqGabhIY.js.map} +1 -1
  78. package/dist/chunks/{bridge-BzRlY9pP.cjs → bridge-dWaKrMKm.cjs} +2 -2
  79. package/dist/chunks/{bridge-BzRlY9pP.cjs.map → bridge-dWaKrMKm.cjs.map} +1 -1
  80. package/dist/chunks/{config-hFKqUyg3.js → config-DghboRx0.js} +10 -10
  81. package/dist/chunks/{config-hFKqUyg3.js.map → config-DghboRx0.js.map} +1 -1
  82. package/dist/chunks/{config-l4ZaZw_g.cjs → config-DmCmanM_.cjs} +2 -2
  83. package/dist/chunks/{config-l4ZaZw_g.cjs.map → config-DmCmanM_.cjs.map} +1 -1
  84. package/dist/chunks/constants-D1FnS2Z8.js +6 -0
  85. package/dist/chunks/constants-D1FnS2Z8.js.map +1 -0
  86. package/dist/chunks/constants-ueShGH9R.cjs +2 -0
  87. package/dist/chunks/constants-ueShGH9R.cjs.map +1 -0
  88. package/dist/chunks/{defi-registry-BIRv_zkp.cjs → defi-registry-DDNavtO1.cjs} +2 -2
  89. package/dist/chunks/{defi-registry-BIRv_zkp.cjs.map → defi-registry-DDNavtO1.cjs.map} +1 -1
  90. package/dist/chunks/{defi-registry-wNFN3qyB.js → defi-registry-DxjjBQTV.js} +13 -13
  91. package/dist/chunks/{defi-registry-wNFN3qyB.js.map → defi-registry-DxjjBQTV.js.map} +1 -1
  92. package/dist/chunks/depositStatus-CFo5jW89.cjs +2 -0
  93. package/dist/chunks/depositStatus-CFo5jW89.cjs.map +1 -0
  94. package/dist/chunks/{depositStatus-DM7fRmbN.js → depositStatus-DTc01ZoZ.js} +63 -61
  95. package/dist/chunks/depositStatus-DTc01ZoZ.js.map +1 -0
  96. package/dist/chunks/events-6PV6NP-o.cjs +2 -0
  97. package/dist/chunks/events-6PV6NP-o.cjs.map +1 -0
  98. package/dist/chunks/{events-DdV_xi-2.js → events-BvRwXePq.js} +414 -303
  99. package/dist/chunks/events-BvRwXePq.js.map +1 -0
  100. package/dist/chunks/evm-by-btc-address-CZvE15lx.js +39 -0
  101. package/dist/chunks/{evm-by-btc-address-CwLiENtM.js.map → evm-by-btc-address-CZvE15lx.js.map} +1 -1
  102. package/dist/chunks/fee-requirements-CCNsxAvJ.js +14 -0
  103. package/dist/chunks/{fee-requirements-x8-8mpJ7.js.map → fee-requirements-CCNsxAvJ.js.map} +1 -1
  104. package/dist/chunks/get-exchange-ratio-B-xzYND1.js +20 -0
  105. package/dist/chunks/{get-exchange-ratio-NtnkG1kZ.js.map → get-exchange-ratio-B-xzYND1.js.map} +1 -1
  106. package/dist/chunks/{get-exchange-ratio-C-7DadfD.cjs → get-exchange-ratio-BEhD4gLB.cjs} +2 -2
  107. package/dist/chunks/{get-exchange-ratio-C-7DadfD.cjs.map → get-exchange-ratio-BEhD4gLB.cjs.map} +1 -1
  108. package/dist/chunks/{get-positions-summary-DkZZYbGP.cjs → get-positions-summary-Dh1QPLYO.cjs} +2 -2
  109. package/dist/chunks/{get-positions-summary-DkZZYbGP.cjs.map → get-positions-summary-Dh1QPLYO.cjs.map} +1 -1
  110. package/dist/chunks/{get-positions-summary-B_MmGHLv.js → get-positions-summary-iYshN1RQ.js} +28 -28
  111. package/dist/chunks/{get-positions-summary-B_MmGHLv.js.map → get-positions-summary-iYshN1RQ.js.map} +1 -1
  112. package/dist/chunks/{get-vault-tvl-YAXePAW3.js → get-vault-tvl-Ct_Zkg7C.js} +41 -41
  113. package/dist/chunks/{get-vault-tvl-YAXePAW3.js.map → get-vault-tvl-Ct_Zkg7C.js.map} +1 -1
  114. package/dist/chunks/{get-vault-tvl-DmTUbOY7.cjs → get-vault-tvl-D_tQIDAs.cjs} +2 -2
  115. package/dist/chunks/{get-vault-tvl-DmTUbOY7.cjs.map → get-vault-tvl-D_tQIDAs.cjs.map} +1 -1
  116. package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs → get-vault-withdrawals-8ALlEiAC.cjs} +2 -2
  117. package/dist/chunks/{get-vault-withdrawals-CWcYy_sH.cjs.map → get-vault-withdrawals-8ALlEiAC.cjs.map} +1 -1
  118. package/dist/chunks/get-vault-withdrawals-jk7Sv4S4.js +161 -0
  119. package/dist/chunks/{get-vault-withdrawals-BrpZlt6s.js.map → get-vault-withdrawals-jk7Sv4S4.js.map} +1 -1
  120. package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs → getSharesByAddress-D8hehnP1.cjs} +2 -2
  121. package/dist/chunks/{getSharesByAddress-BEgOf1C0.cjs.map → getSharesByAddress-D8hehnP1.cjs.map} +1 -1
  122. package/dist/chunks/{getSharesByAddress-BiruCDp6.js → getSharesByAddress-_tBaIBsw.js} +38 -38
  123. package/dist/chunks/{getSharesByAddress-BiruCDp6.js.map → getSharesByAddress-_tBaIBsw.js.map} +1 -1
  124. package/dist/chunks/getUserStakeAndBakeSignature-CSEyzgMc.cjs +2 -0
  125. package/dist/chunks/getUserStakeAndBakeSignature-CSEyzgMc.cjs.map +1 -0
  126. package/dist/chunks/getUserStakeAndBakeSignature-Su-k10ap.js +125 -0
  127. package/dist/chunks/getUserStakeAndBakeSignature-Su-k10ap.js.map +1 -0
  128. package/dist/chunks/lbtc-addresses-D8MYCdsx.js +10 -0
  129. package/dist/chunks/{lbtc-addresses-BLRmtR3c.js.map → lbtc-addresses-D8MYCdsx.js.map} +1 -1
  130. package/dist/chunks/{lbtc-addresses-xyTYV7hx.cjs → lbtc-addresses-Kil252DX.cjs} +2 -2
  131. package/dist/chunks/{lbtc-addresses-xyTYV7hx.cjs.map → lbtc-addresses-Kil252DX.cjs.map} +1 -1
  132. package/dist/chunks/numbers-CclN2Ohk.js +15 -0
  133. package/dist/chunks/{numbers-CM-lcmt4.js.map → numbers-CclN2Ohk.js.map} +1 -1
  134. package/dist/chunks/parameters-C_16L5ft.js +11 -0
  135. package/dist/chunks/{parameters-CDV-6Hk5.js.map → parameters-C_16L5ft.js.map} +1 -1
  136. package/dist/chunks/satoshi-CSoJBXc6.js +19 -0
  137. package/dist/chunks/{satoshi-Ch6y8aYG.js.map → satoshi-CSoJBXc6.js.map} +1 -1
  138. package/dist/chunks/{statusConstants-DFxMrVob.js → statusConstants-C4YNx2q0.js} +1134 -1113
  139. package/dist/chunks/statusConstants-C4YNx2q0.js.map +1 -0
  140. package/dist/chunks/statusConstants-DlM2oPfW.cjs +2 -0
  141. package/dist/chunks/statusConstants-DlM2oPfW.cjs.map +1 -0
  142. package/dist/chunks/{storeNetworkFeeSignature-BZGL2Zn_.js → storeNetworkFeeSignature-BODIpq3Y.js} +26 -26
  143. package/dist/chunks/{storeNetworkFeeSignature-BZGL2Zn_.js.map → storeNetworkFeeSignature-BODIpq3Y.js.map} +1 -1
  144. package/dist/chunks/{storeNetworkFeeSignature-D7yo6lDV.cjs → storeNetworkFeeSignature-Buk4091C.cjs} +2 -2
  145. package/dist/chunks/{storeNetworkFeeSignature-D7yo6lDV.cjs.map → storeNetworkFeeSignature-Buk4091C.cjs.map} +1 -1
  146. package/dist/chunks/time-Sa5gggPG.js +24 -0
  147. package/dist/chunks/{time-QPeEEEnQ.js.map → time-Sa5gggPG.js.map} +1 -1
  148. package/dist/chunks/{token-addresses-FKpA3uc4.js → token-addresses-D0v5cR1j.js} +174 -163
  149. package/dist/chunks/{token-addresses-FKpA3uc4.js.map → token-addresses-D0v5cR1j.js.map} +1 -1
  150. package/dist/chunks/{token-addresses-DRBecUa7.cjs → token-addresses-nzvTOi24.cjs} +2 -2
  151. package/dist/chunks/{token-addresses-DRBecUa7.cjs.map → token-addresses-nzvTOi24.cjs.map} +1 -1
  152. package/dist/chunks/{tokens-D_HeVB5p.cjs → tokens-BkvA0Gp1.cjs} +2 -2
  153. package/dist/chunks/{tokens-D_HeVB5p.cjs.map → tokens-BkvA0Gp1.cjs.map} +1 -1
  154. package/dist/chunks/{tokens-C6qZHzph.js → tokens-DgC1hfkm.js} +18 -18
  155. package/dist/chunks/{tokens-C6qZHzph.js.map → tokens-DgC1hfkm.js.map} +1 -1
  156. package/dist/chunks/{unstakeLBTC-H0zdYQa6.cjs → unstakeLBTC-CmoCaGX9.cjs} +2 -2
  157. package/dist/chunks/{unstakeLBTC-H0zdYQa6.cjs.map → unstakeLBTC-CmoCaGX9.cjs.map} +1 -1
  158. package/dist/chunks/{unstakeLBTC-DAIR9NO_.js → unstakeLBTC-DtvVbpbU.js} +50 -50
  159. package/dist/chunks/{unstakeLBTC-DAIR9NO_.js.map → unstakeLBTC-DtvVbpbU.js.map} +1 -1
  160. package/dist/chunks/{withdraw-hHueI2p7.js → withdraw-DgjuaUN3.js} +45 -45
  161. package/dist/chunks/{withdraw-hHueI2p7.js.map → withdraw-DgjuaUN3.js.map} +1 -1
  162. package/dist/chunks/{withdraw-C1fMFSwy.cjs → withdraw-i0AueZ_C.cjs} +2 -2
  163. package/dist/chunks/{withdraw-C1fMFSwy.cjs.map → withdraw-i0AueZ_C.cjs.map} +1 -1
  164. package/dist/common/constants.d.ts +1 -0
  165. package/dist/common/constants.d.ts.map +1 -1
  166. package/dist/contracts.cjs +1 -1
  167. package/dist/contracts.js +16 -16
  168. package/dist/core/assets/catalog.d.ts.map +1 -1
  169. package/dist/core.cjs +1 -1
  170. package/dist/core.js +85 -85
  171. package/dist/debug.js +4 -4
  172. package/dist/defi.cjs +1 -1
  173. package/dist/defi.js +10 -10
  174. package/dist/evm.cjs +1 -1
  175. package/dist/evm.js +34 -34
  176. package/dist/index.cjs +1 -1
  177. package/dist/index.d.ts +2 -1
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +287 -283
  180. package/dist/index.js.map +1 -1
  181. package/dist/metrics.cjs +1 -1
  182. package/dist/metrics.js +6 -6
  183. package/dist/shared/deposits/depositStatus.d.ts +9 -5
  184. package/dist/shared/deposits/depositStatus.d.ts.map +1 -1
  185. package/dist/stories/arg-types.d.ts +1 -0
  186. package/dist/stories/arg-types.d.ts.map +1 -1
  187. package/dist/tokens/token-addresses.d.ts +2 -2
  188. package/dist/tokens/token-addresses.d.ts.map +1 -1
  189. package/dist/utils/chain.d.ts +7 -0
  190. package/dist/utils/chain.d.ts.map +1 -1
  191. package/dist/utils.cjs +1 -1
  192. package/dist/utils.js +76 -76
  193. package/dist/vaults.cjs +1 -1
  194. package/dist/vaults.js +14 -14
  195. package/package.json +19 -6
  196. package/dist/chunks/BtcActions-XbVRQEcM.cjs +0 -2
  197. package/dist/chunks/BtcActions-XbVRQEcM.cjs.map +0 -1
  198. package/dist/chunks/BtcActions-k-qs1uO0.js.map +0 -1
  199. package/dist/chunks/EvmActions-BVzQ3fLK.cjs +0 -2
  200. package/dist/chunks/EvmActions-BVzQ3fLK.cjs.map +0 -1
  201. package/dist/chunks/EvmActions-B_dF42So.js.map +0 -1
  202. package/dist/chunks/ReferralsClient-BC-1wT1q.cjs +0 -2
  203. package/dist/chunks/ReferralsClient-BC-1wT1q.cjs.map +0 -1
  204. package/dist/chunks/ReferralsClient-DbFWWtVi.js.map +0 -1
  205. package/dist/chunks/approveLBTC-B5-ZWqct.js +0 -26
  206. package/dist/chunks/constants-BBK-JNcY.cjs +0 -2
  207. package/dist/chunks/constants-BBK-JNcY.cjs.map +0 -1
  208. package/dist/chunks/constants-CuT4axsy.js +0 -5
  209. package/dist/chunks/constants-CuT4axsy.js.map +0 -1
  210. package/dist/chunks/depositStatus-C3-EgT2a.cjs +0 -2
  211. package/dist/chunks/depositStatus-C3-EgT2a.cjs.map +0 -1
  212. package/dist/chunks/depositStatus-DM7fRmbN.js.map +0 -1
  213. package/dist/chunks/events-DdV_xi-2.js.map +0 -1
  214. package/dist/chunks/events-DqIJRzJo.cjs +0 -2
  215. package/dist/chunks/events-DqIJRzJo.cjs.map +0 -1
  216. package/dist/chunks/evm-by-btc-address-CwLiENtM.js +0 -39
  217. package/dist/chunks/fee-requirements-x8-8mpJ7.js +0 -14
  218. package/dist/chunks/get-exchange-ratio-NtnkG1kZ.js +0 -20
  219. package/dist/chunks/get-vault-withdrawals-BrpZlt6s.js +0 -161
  220. package/dist/chunks/getUserStakeAndBakeSignature-BxRq2cI1.cjs +0 -2
  221. package/dist/chunks/getUserStakeAndBakeSignature-BxRq2cI1.cjs.map +0 -1
  222. package/dist/chunks/getUserStakeAndBakeSignature-NGGblnJl.js +0 -120
  223. package/dist/chunks/getUserStakeAndBakeSignature-NGGblnJl.js.map +0 -1
  224. package/dist/chunks/lbtc-addresses-BLRmtR3c.js +0 -10
  225. package/dist/chunks/numbers-CM-lcmt4.js +0 -15
  226. package/dist/chunks/parameters-CDV-6Hk5.js +0 -11
  227. package/dist/chunks/satoshi-Ch6y8aYG.js +0 -19
  228. package/dist/chunks/statusConstants-BLiNBT6s.cjs +0 -2
  229. package/dist/chunks/statusConstants-BLiNBT6s.cjs.map +0 -1
  230. package/dist/chunks/statusConstants-DFxMrVob.js.map +0 -1
  231. package/dist/chunks/time-QPeEEEnQ.js +0 -24
@@ -1,2 +1,2 @@
1
- "use strict";const u=require("./tokens-D_HeVB5p.cjs"),i=require("./token-addresses-DRBecUa7.cjs"),O=require("./satoshi-CZEsHl5X.cjs"),S=require("./index-BKzxeh1Y.cjs"),w=require("viem"),E=require("./defi-registry-BIRv_zkp.cjs"),A=require("bignumber.js"),M=require("./time-I-BeyUkG.cjs"),pe=require("./get-exchange-ratio-C-7DadfD.cjs"),I=require("./numbers-3LtmxfD8.cjs"),F=require("./parameters-DK9cYCAH.cjs"),k=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"uint48",name:"schedule",type:"uint48"}],name:"AccessControlEnforcedDefaultAdminDelay",type:"error"},{inputs:[],name:"AccessControlEnforcedDefaultAdminRules",type:"error"},{inputs:[{internalType:"address",name:"defaultAdmin",type:"address"}],name:"AccessControlInvalidDefaultAdmin",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"uint256",name:"dustLimit",type:"uint256"}],name:"AmountBelowMinLimit",type:"error"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"AmountLessThanCommission",type:"error"},{inputs:[],name:"AssertRouter_UnauthorizedAccount",type:"error"},{inputs:[],name:"AssertRouter_WrongRedeemDestinationChain",type:"error"},{inputs:[],name:"AssertRouter_WrongRouteType",type:"error"},{inputs:[],name:"AssertRouter_WrongToken",type:"error"},{inputs:[],name:"AssetOperation_DepositNotAllowed",type:"error"},{inputs:[],name:"AssetOperation_RedeemNotAllowed",type:"error"},{inputs:[],name:"AssetRouter_FeeGreaterThanAmount",type:"error"},{inputs:[],name:"AssetRouter_MailboxExpected",type:"error"},{inputs:[],name:"AssetRouter_MintProcessingError",type:"error"},{inputs:[],name:"AssetRouter_PayloadAlreadyUsed",type:"error"},{inputs:[],name:"AssetRouter_Unauthorized",type:"error"},{inputs:[],name:"AssetRouter_WrongNativeToken",type:"error"},{inputs:[],name:"AssetRouter_WrongOperation",type:"error"},{inputs:[],name:"AssetRouter_WrongSender",type:"error"},{inputs:[],name:"AssetRouter_ZeroAddress",type:"error"},{inputs:[],name:"AssetRouter_ZeroMailbox",type:"error"},{inputs:[{internalType:"uint256",name:"expected",type:"uint256"},{internalType:"uint256",name:"actual",type:"uint256"}],name:"Assets_InvalidPayloadSize",type:"error"},{inputs:[{internalType:"bytes4",name:"expected",type:"bytes4"},{internalType:"bytes4",name:"actual",type:"bytes4"}],name:"Assets_InvalidSelector",type:"error"},{inputs:[],name:"Assets_ZeroAmount",type:"error"},{inputs:[],name:"Assets_ZeroRecipient",type:"error"},{inputs:[],name:"Assets_ZeroToToken",type:"error"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"GMP_InvalidAddess",type:"error"},{inputs:[{internalType:"bytes4",name:"expected",type:"bytes4"},{internalType:"bytes4",name:"actual",type:"bytes4"}],name:"InvalidAction",type:"error"},{inputs:[],name:"InvalidFeeApprovalSignature",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[{internalType:"uint256",name:"expected",type:"uint256"},{internalType:"uint256",name:"actual",type:"uint256"}],name:"InvalidPayloadSize",type:"error"},{inputs:[{internalType:"uint256",name:"a",type:"uint256"},{internalType:"uint256",name:"b",type:"uint256"}],name:"NonEqualLength",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"NotStakingToken",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[{internalType:"uint8",name:"bits",type:"uint8"},{internalType:"uint256",name:"value",type:"uint256"}],name:"SafeCastOverflowedUintDowncast",type:"error"},{inputs:[],name:"ScriptPubkeyUnsupported",type:"error"},{inputs:[{internalType:"uint256",name:"expiry",type:"uint256"}],name:"UserSignatureExpired",type:"error"},{inputs:[],name:"ZeroFee",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"AssetRouter_BasculeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"payloadHash",type:"bytes32"},{indexed:!1,internalType:"string",name:"reason",type:"string"},{indexed:!1,internalType:"bytes",name:"customError",type:"bytes"}],name:"AssetRouter_BatchMintError",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldRate",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newRate",type:"uint256"}],name:"AssetRouter_DustFeeRateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bytes",name:"userSignature",type:"bytes"}],name:"AssetRouter_FeeCharged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"AssetRouter_MailboxChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldFee",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newFee",type:"uint256"}],name:"AssetRouter_MintFeeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"AssetRouter_NativeTokenChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"AssetRouter_OracleChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"bool",name:"enabled",type:"bool"}],name:"AssetRouter_RedeemEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"oldFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"AssetRouter_RedeemFeeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"oldMinAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newMinAmount",type:"uint256"}],name:"AssetRouter_RedeemForBtcMinAmountChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"fromToken",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"fromChainId",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"toToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"toChainId",type:"bytes32"}],name:"AssetRouter_RouteRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"fromToken",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"fromChainId",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"toToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"toChainId",type:"bytes32"},{indexed:!1,internalType:"enum IAssetRouter.RouteType",name:"routeType",type:"uint8"}],name:"AssetRouter_RouteSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldCommission",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newCommission",type:"uint256"}],name:"AssetRouter_ToNativeCommissionChanged",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminDelayChangeCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint48",name:"newDelay",type:"uint48"},{indexed:!1,internalType:"uint48",name:"effectSchedule",type:"uint48"}],name:"DefaultAdminDelayChangeScheduled",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminTransferCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"},{indexed:!1,internalType:"uint48",name:"acceptSchedule",type:"uint48"}],name:"DefaultAdminTransferScheduled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{inputs:[],name:"CALLER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"CLAIMER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"OPERATOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bascule",outputs:[{internalType:"contract IBascule",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"payload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"mintPayload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"},{internalType:"bytes[]",name:"feePayload",type:"bytes[]"},{internalType:"bytes[]",name:"userSignature",type:"bytes[]"}],name:"batchMintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"beginDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bitcoinChainId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"bytes",name:"scriptPubkey",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"calcUnstakeRequestAmount",outputs:[{internalType:"uint256",name:"amountAfterFee",type:"uint256"},{internalType:"bool",name:"isAboveMinLimit",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeBascule",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint48",name:"newDelay",type:"uint48"}],name:"changeDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeMailbox",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newValue",type:"address"}],name:"changeNativeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"newVal",type:"address"}],name:"changeOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"fee",type:"uint256"}],name:"changeRedeemFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"changeRedeemFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"changeRedeemForBtcMinAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"changeRedeemForBtcMinAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint64",name:"newValue",type:"uint64"}],name:"changeToNativeCommission",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint256",name:"redeemForBtcMinAmount",type:"uint256"},{internalType:"bool",name:"redeemEnabled",type:"bool"}],name:"changeTokenConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint256",name:"redeemForBtcMinAmount",type:"uint256"},{internalType:"address",name:"oracle_",type:"address"},{internalType:"uint256",name:"maximumMintCommission_",type:"uint256"},{internalType:"uint64",name:"toNativeCommission_",type:"uint64"}],name:"changeTokenConfigExt",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"defaultAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelay",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelayIncreaseWait",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"tolChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"fromToken",type:"bytes32"},{internalType:"bytes32",name:"fromChainId",type:"bytes32"},{internalType:"bytes32",name:"toChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"}],name:"getRouteType",outputs:[{internalType:"enum IAssetRouter.RouteType",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"id",type:"bytes32"},{internalType:"bytes32",name:"msgPath",type:"bytes32"},{internalType:"uint256",name:"msgNonce",type:"uint256"},{internalType:"bytes32",name:"msgSender",type:"bytes32"},{internalType:"address",name:"msgRecipient",type:"address"},{internalType:"address",name:"msgDestinationCaller",type:"address"},{internalType:"bytes",name:"msgBody",type:"bytes"}],internalType:"struct GMPUtils.Payload",name:"payload",type:"tuple"}],name:"handlePayload",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"uint48",name:"initialOwnerDelay_",type:"uint48"},{internalType:"bytes32",name:"ledgerChainId_",type:"bytes32"},{internalType:"bytes32",name:"bitcoinChainId_",type:"bytes32"},{internalType:"address",name:"mailbox_",type:"address"},{internalType:"address",name:"bascule_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mailbox",outputs:[{internalType:"contract IMailbox",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"maxMintCommission",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"rawPayload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"mint",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"mintPayload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"},{internalType:"bytes",name:"feePayload",type:"bytes"},{internalType:"bytes",name:"userSignature",type:"bytes"}],name:"mintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"nativeToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"oracle",outputs:[{internalType:"contract IOracle",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdmin",outputs:[{internalType:"address",name:"newAdmin",type:"address"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdminDelay",outputs:[{internalType:"uint48",name:"newDelay",type:"uint48"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"ratio",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"address",name:"fromToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"bytes32",name:"tolChainId",type:"bytes32"},{internalType:"address",name:"fromToken",type:"address"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"address",name:"fromToken",type:"address"},{internalType:"bytes",name:"recipient",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeemForBtc",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"fromToken",type:"bytes32"},{internalType:"bytes32",name:"fromChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"toChainId",type:"bytes32"}],name:"removeRoute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rollbackDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"fee",type:"uint256"}],name:"setMaxMintCommission",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"fromToken",type:"bytes32"},{internalType:"bytes32",name:"fromChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"toChainId",type:"bytes32"},{internalType:"enum IAssetRouter.RouteType",name:"routeType",type:"uint8"}],name:"setRoute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"toNativeCommission",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"toggleRedeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"tokenConfig",outputs:[{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint256",name:"redeemForBtcMinAmount",type:"uint256"},{internalType:"bool",name:"isRedeemEnabled",type:"bool"}],stateMutability:"view",type:"function"}];async function ye(e){return K({token:i.Token.LBTC,...e})}async function ue(e){return U({token:i.Token.LBTC,...e})}async function K({token:e,chainId:n,rpcUrl:a,env:t}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(e))throw new Error(`Unsupported token: ${e}`);const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a,env:s}),r=await u.getTokenContractInfo(e,n,s,i.AddressKind.Adapter),y=r.abi;let p=0n;if(u.isUpgradedAbi(y)||e===i.Token.BTCb){const l=await o.readContract({abi:y,address:r.address,functionName:"getAssetRouter"}),d={abi:k,address:l};p=await o.readContract({abi:d.abi,address:d.address,functionName:"maxMintCommission",args:[r.address]})}else p=await o.readContract({abi:r.abi,address:r.address,functionName:"getMintFee"});return O.fromSatoshi(String(p))}async function U({token:e,chainId:n,rpcUrl:a,env:t}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(e))throw new Error(`Unsupported token: ${e}`);const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a,env:s}),r=await u.getTokenContractInfo(e,n,s,i.AddressKind.Adapter);let y=0n;if(u.isUpgradedAbi(r.abi)||e===i.Token.BTCb){const p=await o.readContract({abi:r.abi,address:r.address,functionName:"getAssetRouter"}),l={abi:k,address:p},d=await o.readContract({abi:l.abi,address:l.address,functionName:"toNativeCommission",args:[r.address]}),[c]=await o.readContract({abi:l.abi,address:l.address,functionName:"tokenConfig",args:[r.address]});y=d+c}else y=await o.readContract({abi:r.abi,address:r.address,functionName:"getBurnCommission"});return O.fromSatoshi(String(y))}async function q({token:e,chainId:n,rpcUrl:a,env:t}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(e))throw new Error(`Unsupported token: ${e}`);const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a,env:s}),r=await u.getTokenContractInfo(e,n,s,i.AddressKind.Adapter);let y=0n;if(u.isUpgradedAbi(r.abi)||e===i.Token.BTCb){const p=await o.readContract({abi:r.abi,address:r.address,functionName:"getAssetRouter"}),l={abi:k,address:p},[,d]=await o.readContract({abi:l.abi,address:l.address,functionName:"tokenConfig",args:[r.address]});y=d}else y=2000n;return O.fromSatoshi(String(y))}async function de(e){const[n,a]=await Promise.all([U(e),q(e)]);return n.plus(a)}class N extends Error{constructor(n,a,t){super(a),this.code=n,this.context=t,this.name="StakeAndBakeValidationError"}}function $(e,n,a,t){const s=E.DEFI_REGISTRY[e];if(!s)throw new N("UNSUPPORTED_VAULT",`Vault ${e} not found in DeFi registry`,{protocol:e});const o=s[n];if(!o)throw new N("UNSUPPORTED_TOKEN",`Token ${n} is not supported for stake and bake on vault ${e}. Supported tokens: ${Object.keys(s).join(", ")}`,{protocol:e,token:n,supportedTokens:Object.keys(s)});const r=o[t];if(!r)throw new N("UNSUPPORTED_ENV",`Environment ${t} is not supported for token ${n} on vault ${e}`,{protocol:e,token:n,env:t});const y=r[a];if(!y)throw new N("UNSUPPORTED_TOKEN_CHAIN",`Token ${n} is not supported on chain ${a} for vault ${e} in ${t}. Supported chains: ${Object.keys(r).join(", ")}`,{protocol:e,token:n,chainId:a,env:t,supportedChains:Object.keys(r)});return{protocol:e,token:n,env:t,chainId:a,...y}}const le={[E.DefiProtocol.Veda]:i.Token.LBTC,[E.DefiProtocol.Silo]:i.Token.BTCb};async function me({protocol:e=E.DefiProtocol.Veda,token:n,chainId:a,env:t=S.p,rpcUrl:s}){const o=E.DefiProtocols[e];if(!o)throw new Error(`Unknown protocol: ${e}`);const r=n??le[e];try{const p=$(e,r,a,t).spenderContract;if(!p)throw new Error(`Could not retrieve the stake and bake contract for ${e} on chain ${a}.`);const l=u.makePublicClient({chainId:a,rpcUrl:s}),c=await w.getContract({abi:p.abi,address:p.address,client:l}).read.getStakeAndBakeFee();return O.fromSatoshi(String(c))}catch(y){const p=u.getErrorMessage(y);throw new Error(`Failed to get stake and bake fee for ${o.name}: ${p}`)}}function z(e){return`destination chain id is ${e}`}async function ce({account:e,chainId:n,provider:a}){const t=i.makeWalletClient({chainId:n,provider:a}),s=z(n);return await t.signMessage({account:e,message:s})}async function Te({fee:e,expiry:n=M.toUnix(M.now()+M.DAY),account:a,chainId:t,provider:s,env:o,token:r=i.Token.LBTC}){const y=await u.getTokenContractInfo(r,t,o),p=i.makeWalletClient({chainId:t,provider:s}),l={account:a,domain:{name:r===i.Token.BTCb?"Bitcoin":"Lombard Staked Bitcoin",version:"1",chainId:t,verifyingContract:y.address},message:{chainId:t,fee:BigInt(A(e).toFixed()),expiry:n},primaryType:"feeApproval",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],feeApproval:[{name:"chainId",type:"uint256"},{name:"fee",type:"uint256"},{name:"expiry",type:"uint256"}]}};return{signature:await p.signTypedData(l),typedData:JSON.stringify(l,(c,b)=>typeof b=="bigint"?b.toString():b)}}async function j({owner:e,chainId:n,rpcUrl:a,env:t=S.p}){const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a}),r=await u.getTokenContractInfo(i.Token.LBTC,n,s),y=await o.readContract({abi:r.abi,address:r.address,functionName:"nonces",args:[e]});return String(y)}const be=[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Z=[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}],fe=Z;function we(e){const n=e.mode==="permit"?"Permit":"Approve";return{account:e.account,domain:{name:e.domainName,version:e.domainVersion,chainId:BigInt(e.chainId),verifyingContract:e.verifyingContract},types:{EIP712Domain:be,[n]:e.mode==="permit"?Z:fe},primaryType:n,message:{owner:e.account,spender:e.spender,value:e.value,nonce:e.nonce,deadline:e.deadline}}}function Y(e){return JSON.stringify(e,(n,a)=>typeof a=="bigint"?a.toString():a)}async function Ae(e){const{account:n,chainId:a,provider:t,rpcUrl:s,tokenAddress:o,tokenAbi:r,spenderAddress:y,typedData:p,requiredAmount:l}=e,d=u.makePublicClient({chainId:a,rpcUrl:s}),c=i.makeWalletClient({chainId:a,provider:t}),b=await d.readContract({address:o,abi:r,functionName:"allowance",args:[n,y]});let m;if(b<l){const T=await c.writeContract({address:o,abi:r,functionName:"approve",args:[y,l],account:n,chain:null});if((await d.waitForTransactionReceipt({hash:T})).status!=="success")throw new Error(`Approve transaction failed: ${T}. Please try again or contact support.`);m=T}return{mode:"approve",signature:"",typedData:Y(p),approvalTxHash:m}}async function ge(e){const{chainId:n,provider:a,typedData:t}=e;return{mode:"permit",signature:await i.makeWalletClient({chainId:n,provider:a}).signTypedData(t),typedData:Y(t)}}const Ce=async(e,n,a)=>!e||e==="BTC"||e===i.Token.LBTC?await u.getTokenContractInfo(i.Token.LBTC,n,a):await u.getTokenContractInfo(e,n,a,i.AddressKind.Token);async function he(e,n){var a;try{const s=((a=(await pe.getExchangeRatio({env:n})).LBTC)==null?void 0:a.BTCTokenRatio)||new A(1);return new A(e).dividedBy(s)}catch{throw new Error("Failed to get exchange ratio for stake and bake")}}async function Me({account:e,expiry:n=M.toUnix(M.now()+M.DAY),value:a,vaultKey:t=E.DefiProtocol.Veda,token:s="BTC",chainId:o,provider:r,rpcUrl:y,env:p=S.p}){const l=$(t,s,o,p),d=l.spenderContract.address,c=l.amountStrategy==="btcToLbtc"?await he(a,p):new A(a),b=await Ce(s,o,p),m=b.address,T=b.abi,g=l.approval.deadlineStrategy==="zero"?0n:BigInt(n),C=l.approval.nonceStrategy==="chain"?BigInt(await j({owner:e,chainId:o,rpcUrl:y,env:p})):0n,h=we({mode:l.approval.mode,account:e,chainId:o,verifyingContract:m,domainName:l.approval.domainName,domainVersion:l.approval.domainVersion,spender:d,value:BigInt(c.toFixed(0,A.ROUND_DOWN)),nonce:C,deadline:g});return l.approval.mode==="approve"?Ae({account:e,chainId:o,provider:r,rpcUrl:y,tokenAddress:m,tokenAbi:T,spenderAddress:d,typedData:h,requiredAmount:BigInt(c.toFixed(0,A.ROUND_DOWN))}):ge({chainId:o,provider:r,typedData:h})}class f extends Error{constructor(n,a,t){super(a),this.code=n,this.context=t,this.name="SignerError"}}function V(e,n="transaction"){if(!e.from)throw new f("MISSING_FROM_ADDRESS",`Missing 'from' address for ${n}`,{transaction:e,operation:n});if(!e.to)throw new f("MISSING_TO_ADDRESS",`Missing 'to' address for ${n}`,{transaction:e,operation:n});if(e.data!==void 0&&!w.isHex(e.data))throw new f("INVALID_DATA",`Transaction data must be valid hex string for ${n}`,{transaction:e,operation:n,data:e.data});if(e.chainId&&!/^0x[0-9a-fA-F]+$/.test(e.chainId))throw new f("INVALID_CHAIN_ID",`Chain ID must be a hex string (e.g., "0x1") for ${n}`,{transaction:e,operation:n,chainId:e.chainId})}function J(e,n,a){const t=i.CHAIN_ID_TO_VIEM_CHAIN_MAP[a];if(!t)throw new f("UNSUPPORTED_CHAIN",`Chain ID ${a} is not supported`,{chainId:a,availableChains:Object.keys(i.CHAIN_ID_TO_VIEM_CHAIN_MAP)});return{address:n,type:"local",publicKey:"0x0000000000000000000000000000000000000000000000000000000000000000",source:"custom",async signTransaction(o){const r={from:n,to:o.to??void 0,data:o.data,value:o.value,gas:o.gas,maxFeePerGas:o.maxFeePerGas,maxPriorityFeePerGas:o.maxPriorityFeePerGas,chainId:o.chainId?`0x${o.chainId.toString(16)}`:`0x${t.id.toString(16)}`,nonce:o.nonce};V(r,"signTransaction");let y;if(await e.sign(r,async p=>(y=p,p)),!y)throw new f("SIGNING_FAILED","Signer did not return a signed transaction",{transaction:r});return y},async signMessage(){throw new f("NOT_IMPLEMENTED","Message signing is not supported by this adapter",{method:"signMessage"})},async signTypedData(){throw new f("NOT_IMPLEMENTED","Typed data signing is not supported by this adapter",{method:"signTypedData"})}}}function ke(e,n,a){const t=i.CHAIN_ID_TO_VIEM_CHAIN_MAP[a];if(!t)throw new f("UNSUPPORTED_CHAIN",`Chain ID ${a} is not supported`,{chainId:a});const s=J(e,n,a);return w.createWalletClient({account:s,chain:t,transport:w.http()})}async function P({params:e,publicClient:n,walletClient:a,simulateArgs:t,operation:s}){if(!F.isProviderFlow(e)&&!F.isSignerFlow(e))throw new f("INVALID_PARAMETERS",'Must provide either "provider" or "signer" in parameters',{params:e,operation:s});let o;try{o=await n.simulateContract(t)}catch(p){throw new f("SIMULATION_FAILED",`Failed to simulate ${s} transaction: ${p instanceof Error?p.message:"Unknown error"}`,{operation:s,simulateArgs:t,error:p instanceof Error?p.message:String(p)})}const{request:r}=o;if(!r.account)throw new f("INVALID_SIMULATION",`Simulation succeeded but no account was set for ${s}`,{operation:s,request:r});if(!r.address)throw new f("INVALID_SIMULATION",`Simulation succeeded but no target address was set for ${s}`,{operation:s,request:r});let y;if(F.isProviderFlow(e)){if(!a)throw new f("MISSING_WALLET_CLIENT","Provider flow requires a wallet client",{operation:s,params:e});try{y=await a.writeContract(r)}catch(p){throw new f("PROVIDER_TRANSACTION_FAILED",`Failed to execute ${s} via provider: ${p instanceof Error?p.message:"Unknown error"}`,{operation:s,request:r,error:p instanceof Error?p.message:String(p)})}}else try{const p=i.CHAIN_ID_TO_VIEM_CHAIN_MAP[e.chainId];if(!p)throw new f("UNSUPPORTED_CHAIN",`Chain ${e.chainId} not supported`,{chainId:e.chainId});const l=w.encodeFunctionData({abi:t.abi,functionName:t.functionName,args:t.args}),d={from:e.account,to:r.address,data:l,value:r.value,gas:r.gas,maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,chainId:`0x${p.id.toString(16)}`};V(d,s),y=await e.signer.sign(d,async c=>await n.sendRawTransaction({serializedTransaction:c}))}catch(p){throw new f("SIGNER_TRANSACTION_FAILED",`Failed to execute ${s} via signer: ${p instanceof Error?p.message:"Unknown error"}`,{operation:s,request:r,error:p instanceof Error?p.message:String(p)})}return{txHash:y,request:r}}async function Q(e,n,a){try{const t=await e.waitForTransactionReceipt({hash:n});if(t.status==="reverted")throw new f("TRANSACTION_REVERTED",`${a} transaction reverted`,{operation:a,txHash:n,receipt:{blockNumber:t.blockNumber,gasUsed:t.gasUsed}});return t}catch(t){throw t instanceof f?t:new f("RECEIPT_WAIT_FAILED",`Failed to wait for ${a} transaction receipt: ${t instanceof Error?t.message:"Unknown error"}`,{operation:a,txHash:n,error:t instanceof Error?t.message:String(t)})}}const H="0xe288fb4a",W="0x155b6b13",ve={type:"function",name:"MessageV1",inputs:[{name:"msgPath",type:"bytes32"},{name:"msgNonce",type:"uint256"},{name:"msgSender",type:"bytes32"},{name:"msgRecipient",type:"bytes32"},{name:"msgDestinationCaller",type:"bytes32"},{name:"msgBody",type:"bytes"}]},Re={type:"function",name:"mint",inputs:[{name:"toToken",type:"bytes32"},{name:"recipient",type:"bytes32"},{name:"amount",type:"uint256"}]};function De(e){if(!e.startsWith("0x"))throw new Error("Payload must be 0x-prefixed hex");const n=e.slice(0,10);if(n.toLowerCase()!==H.toLowerCase())throw new Error(`Invalid GMP selector: expected ${H}, got ${n}`);const a=w.decodeFunctionData({abi:[ve],data:e});if(!a.args)throw new Error("Failed to decode GMP payload: args is undefined");const t=a.args[0],s=a.args[1],o=a.args[2],r=a.args[3],y=a.args[4],p=a.args[5];if(typeof p!="string"||!p.startsWith("0x"))throw new Error("msgBody is not valid hex");const l=p.slice(0,10);if(l.toLowerCase()!==W.toLowerCase())throw new Error(`Invalid mint selector in body: expected ${W}, got ${l}`);const d=w.decodeFunctionData({abi:[Re],data:p});if(!d.args)throw new Error("Failed to decode mint body: args is undefined");const c=d.args[0],b=d.args[1],m=d.args[2];return{selector:n,msgPath:t,msgNonce:s,msgSender:o,msgRecipient:r,msgDestinationCaller:y,rawBody:p,mint:{selector:l,toToken:c,recipient:b,amount:m}}}function Ie(e,n){const{msgNonce:a,mint:t}=e,s=w.encodeAbiParameters([{name:"nonce",type:"uint256"},{name:"chainId",type:"uint256"},{name:"recipient",type:"bytes32"},{name:"toToken",type:"bytes32"},{name:"amount",type:"uint256"}],[BigInt(a),BigInt(n),t.recipient,t.toToken,BigInt(t.amount)]);return w.keccak256(s)}const Ee=[{inputs:[{internalType:"address",name:"aDefaultAdmin",type:"address"},{internalType:"address",name:"aPauser",type:"address"},{internalType:"address",name:"aMintReporter",type:"address"},{internalType:"address",name:"aMintValidator",type:"address"},{internalType:"uint256",name:"aMaxMints",type:"uint256"},{internalType:"address",name:"aTrustedSigner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"uint48",name:"schedule",type:"uint48"}],name:"AccessControlEnforcedDefaultAdminDelay",type:"error"},{inputs:[],name:"AccessControlEnforcedDefaultAdminRules",type:"error"},{inputs:[{internalType:"address",name:"defaultAdmin",type:"address"}],name:"AccessControlInvalidDefaultAdmin",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"},{internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"AlreadyMinted",type:"error"},{inputs:[],name:"BadMintProofsSize",type:"error"},{inputs:[],name:"BadMintReport",type:"error"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"bytes32",name:"mintID",type:"bytes32"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"BadProof",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"},{internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"MintFailedValidation",type:"error"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"}],name:"NotReported",type:"error"},{inputs:[{internalType:"uint8",name:"bits",type:"uint8"},{internalType:"uint256",name:"value",type:"uint256"}],name:"SafeCastOverflowedUintDowncast",type:"error"},{inputs:[],name:"SameValidationThreshold",type:"error"},{inputs:[],name:"ZeroTrustedAddress",type:"error"},{anonymous:!1,inputs:[],name:"DefaultAdminDelayChangeCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint48",name:"newDelay",type:"uint48"},{indexed:!1,internalType:"uint48",name:"effectSchedule",type:"uint48"}],name:"DefaultAdminDelayChangeScheduled",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminTransferCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"},{indexed:!1,internalType:"uint48",name:"acceptSchedule",type:"uint48"}],name:"DefaultAdminTransferScheduled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"numMints",type:"uint256"}],name:"MaxMintsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"mintID",type:"bytes32"}],name:"MintAlreadyReportedOrProcessed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"mintID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"MintNotValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"mintID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"MintValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"reportId",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"numMints",type:"uint256"}],name:"MintsReported",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"trustedSigner",type:"address"}],name:"TrustedSignerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"UpdateValidateThreshold",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINT_REPORTER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINT_VALIDATOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATION_GUARDIAN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"beginDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cancelDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint48",name:"newDelay",type:"uint48"}],name:"changeDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"defaultAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelay",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelayIncreaseWait",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxMints",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"}],name:"mintHistory",outputs:[{components:[{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct IGMPBascule.Message",name:"msg",type:"tuple"},{internalType:"enum GMPBasculeV1.MintState",name:"status",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdmin",outputs:[{internalType:"address",name:"newAdmin",type:"address"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdminDelay",outputs:[{internalType:"uint48",name:"newDelay",type:"uint48"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"reportId",type:"bytes32"},{components:[{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct IGMPBascule.Message[]",name:"mints",type:"tuple[]"},{internalType:"bytes[]",name:"proofs",type:"bytes[]"}],name:"reportMints",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rollbackDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"aMaxMints",type:"uint256"}],name:"setMaxMints",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"aTrustedSigner",type:"address"}],name:"setTrustedSigner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"trustedSigner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"updateValidateThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct IGMPBascule.Message",name:"mintMsg",type:"tuple"}],name:"validateMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"validateThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],xe=JSON.parse('[{"inputs":[{"internalType":"address","name":"aDefaultAdmin","type":"address"},{"internalType":"address","name":"aPauser","type":"address"},{"internalType":"address","name":"aDepositReporter","type":"address"},{"internalType":"address","name":"aWithdrawalValidator","type":"address"},{"internalType":"uint256","name":"aMaxDeposits","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"}],"name":"AlreadyReported","type":"error"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"},{"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"AlreadyWithdrawn","type":"error"},{"inputs":[],"name":"BadDepositReport","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[],"name":"SameValidationThreshold","type":"error"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"},{"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"WithdrawalFailedValidation","type":"error"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"reportId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"numDeposits","type":"uint256"}],"name":"DepositsReported","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"numDeposits","type":"uint256"}],"name":"MaxDepositsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"UpdateValidateThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"depositID","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"WithdrawalNotValidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"depositID","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"WithdrawalValidated","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPOSIT_REPORTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATION_GUARDIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_VALIDATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"}],"name":"depositHistory","outputs":[{"internalType":"enum Bascule.DepositState","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"reportId","type":"bytes32"},{"internalType":"bytes32[]","name":"depositIDs","type":"bytes32[]"}],"name":"reportDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"aMaxDeposits","type":"uint256"}],"name":"setMaxDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateValidateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validateThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"},{"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"validateWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"}]');var B=(e=>(e[e.UNREPORTED=0]="UNREPORTED",e[e.REPORTED=1]="REPORTED",e[e.WITHDRAWN=2]="WITHDRAWN",e))(B||{});async function X({deposit:e,rawPayload:n,provider:a,chainId:t,rpcUrl:s,env:o=S.p,token:r=i.Token.LBTC}){const y=(e==null?void 0:e.rawPayload)||n;if(!y)throw new Error("No 'rawPayload' or 'deposit' data provided. Please provide 'rawPayload' or 'deposit' parameter.");const p=u.makePublicClient({chainId:t,rpcUrl:s,env:o}),l=await u.getTokenContractInfo(r,t,o,i.AddressKind.Adapter);let d;if(r===i.Token.BTCb&&(t===i.ChainId.avalanche||t===i.ChainId.avalancheFuji))d=await p.readContract({abi:l.abi,address:l.address,functionName:"getBascule"});else if(u.isUpgradedAbi(l.abi)&&r===i.Token.LBTC){const m=await p.readContract({abi:l.abi,address:l.address,functionName:"getAssetRouter"});d=await p.readContract({abi:k,address:m,functionName:"bascule"})}else d=await p.readContract({abi:l.abi,address:l.address,functionName:"Bascule"});if(d===w.zeroAddress)return 1;let c;if(a?c=i.makeWalletClient({provider:a,chainId:t}):c=u.makePublicClient({chainId:t,rpcUrl:s}),!c)throw new Error("Could not determine the client for the contract interactions. Please provide the 'provider' and 'chainId' parameters or 'chainId' and optionally the 'rpcUrl' parameter.");const b=(i.isKatanaChain(t)||i.isMonadChain(t)||i.isEthereumChain(t)||i.isStableChain(t)||i.isMegaethChain(t))&&r===i.Token.LBTC;try{if(b){const C=y.startsWith("0x")?y:`0x${y}`,h=De(C),x=Ie(h,t),[,v]=await p.readContract({abi:Ee,address:d,functionName:"mintHistory",args:[x]});return v}const m=w.keccak256(Buffer.from(y.slice(8),"hex"));return await w.getContract({abi:xe,address:d,client:p}).read.depositHistory([m])}catch(m){throw new Error(u.getErrorMessage(m))}}async function _e({account:e,token:n,spender:a,amount:t,chainId:s,provider:o,rpcUrl:r,env:y}){const p=u.makePublicClient({chainId:s,rpcUrl:r,env:y}),l=i.makeWalletClient({chainId:s,provider:o}),d=await u.getTokenInfo(n,s,y,r);if(!d)throw new Error(`Token info not found for ${n} on chain ${s}`);const c=I.toBigInt(u.toBaseDenomination(A(t),d.decimals)),{request:b}=await p.simulateContract({address:d.address,account:e,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[s],abi:d.abi,functionName:"approve",args:[a,c]});return await l.writeContract(b)}async function Be({token:e,owner:n,spender:a,chainId:t,rpcUrl:s,env:o}){const r=u.makePublicClient({chainId:t,rpcUrl:s,env:o}),y=await u.getTokenInfo(e,t,o,s);if(!y)throw new Error(`Token info not found for ${e} on chain ${t}`);const p=await r.readContract({address:y.address,abi:y.abi,functionName:"allowance",args:[n,a]});return u.fromBaseDenomination(p.toString(),y.decimals)}const L=async(e,n,a)=>{const t=await e.estimateFeesPerGas(),s=A(String(t.maxFeePerGas)).dividedBy(String(t.maxPriorityFeePerGas)),o=a||t.maxPriorityFeePerGas,r=a?BigInt(A(String(o)).multipliedBy(s).toFixed(0)):t.maxFeePerGas;return{gas:await e.estimateContractGas(n),maxFeePerGas:r,maxPriorityFeePerGas:o}};async function ee({data:e,proofSignature:n,account:a,chainId:t,provider:s,rpcUrl:o,env:r,token:y=i.Token.LBTC}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(y))throw new Error("Unsupported token");if(y===i.Token.BTCK&&!i.isKatanaChain(t))throw new Error("Operation not permitted");const p=await u.getTokenContractInfo(y,t,r,i.AddressKind.Adapter),l=await X({chainId:t,rawPayload:e,env:r,token:y});if(l!==B.REPORTED)switch(l){case B.UNREPORTED:throw new Error("The deposit cannot be claimed because it is unreported or potentially still pending, please try again later.");case B.WITHDRAWN:throw new Error("The deposit cannot be claimed because it is withdrawn already.");default:throw new Error("The deposit cannot be claimed because it is blocked by bridge security.")}const d=u.makePublicClient({chainId:t,rpcUrl:o,env:r}),c=i.makeWalletClient({chainId:t,provider:s}),b={address:p.address,account:a,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[t],abi:p.abi,functionName:y===i.Token.BTCK||y===i.Token.BTCb?"mintV1":"mint",args:[M.ensureHex(e),M.ensureHex(n)]},m=i.isKatanaChain(t)?await L(d,b,w.parseGwei("1")):{},{request:T}=await d.simulateContract({...b,...m});return await c.writeContract(T)}async function Se({data:e,proofSignature:n,account:a,chainId:t,provider:s,rpcUrl:o,env:r}){return ee({data:e,proofSignature:n,account:a,chainId:t,provider:s,rpcUrl:o,env:r,token:i.Token.LBTC})}const Ne=[{tokenIn:i.Token.BTCb,tokenOut:i.Token.LBTC}];async function Pe({tokenIn:e,chainId:n,env:a,rpcUrl:t}){const s=u.makePublicClient({chainId:n,rpcUrl:t,env:a}),o=await u.getTokenContractInfo(e,n,a,i.AddressKind.Adapter);return await s.readContract({address:o.address,abi:o.abi,functionName:"getAssetRouter"})}async function Fe({account:e,amount:n,chainId:a,env:t,provider:s,rpcUrl:o,tokenIn:r=i.Token.BTCb,tokenOut:y=i.Token.LBTC}){if(!Ne.find(_=>_.tokenIn===r&&_.tokenOut===y))throw new u.UnsupportedTokenFlow(r,y,a,t);const l=u.makePublicClient({chainId:a,rpcUrl:o,env:t}),d=i.makeWalletClient({provider:s,chainId:a}),c=await u.getTokenContractInfo(r,a,t,i.AddressKind.Adapter),b=await u.getTokenContractInfo(r,a,t,i.AddressKind.Token),m=await u.getTokenContractInfo(y,a,t,i.AddressKind.Token),T=await u.retrieveTokenProperties(l,b);if(!T)throw new Error(`Could not retrieve the properties of ${r} on ${a}`);const g=await l.readContract({address:c.address,abi:c.abi,functionName:"getAssetRouter"}),C=A(n),h=I.toBigInt(u.toBaseDenomination(C,T.decimals)),x=await l.readContract({address:T.address,abi:T.abi,functionName:"balanceOf",args:[e]}),v=u.fromBaseDenomination(x,T.decimals);if(C.isGreaterThan(v))throw new Error(`Unable to deposit ${C.toString()} ${T.symbol} because the amount exceeds the account's balance of ${v.toString()} ${T.symbol}`);return await d.writeContract({address:g,abi:k,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[a],functionName:"deposit",args:[e,m.address,h],account:e})}const Le=[{tokenIn:i.Token.LBTC},{tokenIn:i.Token.BTCb},{tokenIn:i.Token.BTCK},{tokenIn:i.Token.LBTC,tokenOut:i.Token.BTCb},{tokenIn:i.Token.LBTC,tokenOut:i.Token.BTCK}];async function te(e){const{account:n,amount:a,btcAddress:t,chainId:s,env:o,rpcUrl:r,tokenIn:y=i.Token.LBTC,tokenOut:p}=e;if(!Le.find(R=>R.tokenIn===y&&R.tokenOut===p))throw new u.UnsupportedTokenFlow(y,p||"BTC",s,o);const d=u.makePublicClient({chainId:s,rpcUrl:r,env:o}),c=F.isProviderFlow(e)?i.makeWalletClient({provider:e.provider,chainId:s}):void 0,b=await u.getTokenContractInfo(y,s,o,i.AddressKind.Token),m=await u.retrieveTokenProperties(d,b);if(!m)throw new Error(`Could not retrieve the properties of ${y} on ${s}`);const T=u.toBaseDenomination(a,m.decimals),g=await d.readContract({address:m.address,abi:m.abi,functionName:"balanceOf",args:[n]}),C=u.fromBaseDenomination(g,m.decimals);if(T.isGreaterThan(g))throw new Error(`Unable to redeem ${String(a)} ${m.symbol} because the amount exceeds the account's balance of ${C.toString()} ${m.symbol}`);if(!p){if(!t)throw new Error("Missing parameter: `btcAddress`.");const R=await S.d(t,o);if(y===i.Token.BTCb&&(s===i.ChainId.avalanche||s===i.ChainId.avalancheFuji)){const D=await u.getTokenContractInfo(y,s,o,i.AddressKind.Adapter),ie=await d.readContract({address:D.address,abi:D.abi,functionName:"getAssetRouter"}),se=await d.readContract({address:m.address,abi:m.abi,functionName:"allowance",args:[n,D.address]});if(T.isGreaterThan(se)){const{txHash:oe}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{address:m.address,abi:m.abi,account:n,functionName:"approve",args:[D.address,I.toBigInt(T)]},operation:"BTC.b approval"}),G=await Q(d,oe,"BTC.b approval");console.info(`Approved adapter (${D.address}) for ${new A(a).toString()} ${m.symbol}`,G.transactionHash,G.status)}const{txHash:re}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{address:ie,abi:k,account:n,functionName:"redeemForBtc",args:[n,D.address,R,I.toBigInt(T)]},operation:"BTC.b redeemForBtc"});return re}const _={abi:m.abi,address:m.address,account:n,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[s],functionName:u.isUpgradedAbi(m.abi)||y===i.Token.BTCb?"redeemForBtc":"redeem",args:[R,I.toBigInt(T)]},ne=i.isKatanaChain(s)?await L(d,_,w.parseGwei("1")):{},{txHash:ae}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{..._,account:n,...ne},operation:`${y} redeem to BTC`});return ae}if(!u.isUpgradedAbi(m.abi))throw new Error(`The ${y} contract (${m.address}) doesn't support redemptions to ${p}.`);const h={abi:m.abi,address:m.address,account:n,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[s],functionName:"redeem",args:[I.toBigInt(T)]},x=i.isKatanaChain(s)?await L(d,h,w.parseGwei("1")):{},{txHash:v}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{...h,account:n,...x},operation:`${y} redeem to ${p}`});return v}async function Oe(e){return te({...e,tokenIn:i.Token.LBTC,tokenOut:void 0})}exports.ASSET_ROUTER_ABI=k;exports.BasculeDepositStatus=B;exports.SignerError=f;exports.approveToken=_e;exports.claimLBTC=Se;exports.createAccountFromSigner=J;exports.createWalletClientFromSigner=ke;exports.depositToken=Fe;exports.estimateGasFees=L;exports.getAddressConfirmationMessage=z;exports.getAssetRouterAddress=Pe;exports.getBasculeDepositStatus=X;exports.getLBTCBurningFee=ue;exports.getLBTCMintingFee=ye;exports.getMinRedeemAmount=q;exports.getMinRedeemAmountWithFee=de;exports.getMintingFee=K;exports.getPermitNonce=j;exports.getRedeemFee=U;exports.getStakeAndBakeConfig=$;exports.getStakeAndBakeFee=me;exports.getTokenAllowance=Be;exports.mintToken=ee;exports.redeemToken=te;exports.signLbtcDestinationAddr=ce;exports.signNetworkFee=Te;exports.signStakeAndBake=Me;exports.unstakeLBTC=Oe;exports.validateTransactionRequest=V;exports.waitForTransactionReceipt=Q;
2
- //# sourceMappingURL=unstakeLBTC-H0zdYQa6.cjs.map
1
+ "use strict";const u=require("./tokens-BkvA0Gp1.cjs"),i=require("./token-addresses-nzvTOi24.cjs"),O=require("./satoshi-CZEsHl5X.cjs"),S=require("./index-BKzxeh1Y.cjs"),w=require("viem"),E=require("./defi-registry-DDNavtO1.cjs"),A=require("bignumber.js"),M=require("./time-I-BeyUkG.cjs"),pe=require("./get-exchange-ratio-BEhD4gLB.cjs"),I=require("./numbers-3LtmxfD8.cjs"),F=require("./parameters-DK9cYCAH.cjs"),k=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"uint48",name:"schedule",type:"uint48"}],name:"AccessControlEnforcedDefaultAdminDelay",type:"error"},{inputs:[],name:"AccessControlEnforcedDefaultAdminRules",type:"error"},{inputs:[{internalType:"address",name:"defaultAdmin",type:"address"}],name:"AccessControlInvalidDefaultAdmin",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"uint256",name:"dustLimit",type:"uint256"}],name:"AmountBelowMinLimit",type:"error"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"AmountLessThanCommission",type:"error"},{inputs:[],name:"AssertRouter_UnauthorizedAccount",type:"error"},{inputs:[],name:"AssertRouter_WrongRedeemDestinationChain",type:"error"},{inputs:[],name:"AssertRouter_WrongRouteType",type:"error"},{inputs:[],name:"AssertRouter_WrongToken",type:"error"},{inputs:[],name:"AssetOperation_DepositNotAllowed",type:"error"},{inputs:[],name:"AssetOperation_RedeemNotAllowed",type:"error"},{inputs:[],name:"AssetRouter_FeeGreaterThanAmount",type:"error"},{inputs:[],name:"AssetRouter_MailboxExpected",type:"error"},{inputs:[],name:"AssetRouter_MintProcessingError",type:"error"},{inputs:[],name:"AssetRouter_PayloadAlreadyUsed",type:"error"},{inputs:[],name:"AssetRouter_Unauthorized",type:"error"},{inputs:[],name:"AssetRouter_WrongNativeToken",type:"error"},{inputs:[],name:"AssetRouter_WrongOperation",type:"error"},{inputs:[],name:"AssetRouter_WrongSender",type:"error"},{inputs:[],name:"AssetRouter_ZeroAddress",type:"error"},{inputs:[],name:"AssetRouter_ZeroMailbox",type:"error"},{inputs:[{internalType:"uint256",name:"expected",type:"uint256"},{internalType:"uint256",name:"actual",type:"uint256"}],name:"Assets_InvalidPayloadSize",type:"error"},{inputs:[{internalType:"bytes4",name:"expected",type:"bytes4"},{internalType:"bytes4",name:"actual",type:"bytes4"}],name:"Assets_InvalidSelector",type:"error"},{inputs:[],name:"Assets_ZeroAmount",type:"error"},{inputs:[],name:"Assets_ZeroRecipient",type:"error"},{inputs:[],name:"Assets_ZeroToToken",type:"error"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"GMP_InvalidAddess",type:"error"},{inputs:[{internalType:"bytes4",name:"expected",type:"bytes4"},{internalType:"bytes4",name:"actual",type:"bytes4"}],name:"InvalidAction",type:"error"},{inputs:[],name:"InvalidFeeApprovalSignature",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[{internalType:"uint256",name:"expected",type:"uint256"},{internalType:"uint256",name:"actual",type:"uint256"}],name:"InvalidPayloadSize",type:"error"},{inputs:[{internalType:"uint256",name:"a",type:"uint256"},{internalType:"uint256",name:"b",type:"uint256"}],name:"NonEqualLength",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"NotStakingToken",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[{internalType:"uint8",name:"bits",type:"uint8"},{internalType:"uint256",name:"value",type:"uint256"}],name:"SafeCastOverflowedUintDowncast",type:"error"},{inputs:[],name:"ScriptPubkeyUnsupported",type:"error"},{inputs:[{internalType:"uint256",name:"expiry",type:"uint256"}],name:"UserSignatureExpired",type:"error"},{inputs:[],name:"ZeroFee",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"AssetRouter_BasculeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"payloadHash",type:"bytes32"},{indexed:!1,internalType:"string",name:"reason",type:"string"},{indexed:!1,internalType:"bytes",name:"customError",type:"bytes"}],name:"AssetRouter_BatchMintError",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldRate",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newRate",type:"uint256"}],name:"AssetRouter_DustFeeRateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bytes",name:"userSignature",type:"bytes"}],name:"AssetRouter_FeeCharged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"AssetRouter_MailboxChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldFee",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newFee",type:"uint256"}],name:"AssetRouter_MintFeeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"AssetRouter_NativeTokenChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"prevVal",type:"address"},{indexed:!0,internalType:"address",name:"newVal",type:"address"}],name:"AssetRouter_OracleChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"bool",name:"enabled",type:"bool"}],name:"AssetRouter_RedeemEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"oldFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"AssetRouter_RedeemFeeChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"oldMinAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newMinAmount",type:"uint256"}],name:"AssetRouter_RedeemForBtcMinAmountChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"fromToken",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"fromChainId",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"toToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"toChainId",type:"bytes32"}],name:"AssetRouter_RouteRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"fromToken",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"fromChainId",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"toToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"toChainId",type:"bytes32"},{indexed:!1,internalType:"enum IAssetRouter.RouteType",name:"routeType",type:"uint8"}],name:"AssetRouter_RouteSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldCommission",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newCommission",type:"uint256"}],name:"AssetRouter_ToNativeCommissionChanged",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminDelayChangeCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint48",name:"newDelay",type:"uint48"},{indexed:!1,internalType:"uint48",name:"effectSchedule",type:"uint48"}],name:"DefaultAdminDelayChangeScheduled",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminTransferCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"},{indexed:!1,internalType:"uint48",name:"acceptSchedule",type:"uint48"}],name:"DefaultAdminTransferScheduled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{inputs:[],name:"CALLER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"CLAIMER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"OPERATOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bascule",outputs:[{internalType:"contract IBascule",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes[]",name:"payload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"}],name:"batchMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"mintPayload",type:"bytes[]"},{internalType:"bytes[]",name:"proof",type:"bytes[]"},{internalType:"bytes[]",name:"feePayload",type:"bytes[]"},{internalType:"bytes[]",name:"userSignature",type:"bytes[]"}],name:"batchMintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"beginDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bitcoinChainId",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"bytes",name:"scriptPubkey",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"calcUnstakeRequestAmount",outputs:[{internalType:"uint256",name:"amountAfterFee",type:"uint256"},{internalType:"bool",name:"isAboveMinLimit",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeBascule",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint48",name:"newDelay",type:"uint48"}],name:"changeDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newVal",type:"address"}],name:"changeMailbox",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newValue",type:"address"}],name:"changeNativeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"newVal",type:"address"}],name:"changeOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"fee",type:"uint256"}],name:"changeRedeemFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee",type:"uint256"}],name:"changeRedeemFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"changeRedeemForBtcMinAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"changeRedeemForBtcMinAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint64",name:"newValue",type:"uint64"}],name:"changeToNativeCommission",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint256",name:"redeemForBtcMinAmount",type:"uint256"},{internalType:"bool",name:"redeemEnabled",type:"bool"}],name:"changeTokenConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint256",name:"redeemForBtcMinAmount",type:"uint256"},{internalType:"address",name:"oracle_",type:"address"},{internalType:"uint256",name:"maximumMintCommission_",type:"uint256"},{internalType:"uint64",name:"toNativeCommission_",type:"uint64"}],name:"changeTokenConfigExt",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"defaultAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelay",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelayIncreaseWait",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"tolChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"getRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"fromToken",type:"bytes32"},{internalType:"bytes32",name:"fromChainId",type:"bytes32"},{internalType:"bytes32",name:"toChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"}],name:"getRouteType",outputs:[{internalType:"enum IAssetRouter.RouteType",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"bytes32",name:"id",type:"bytes32"},{internalType:"bytes32",name:"msgPath",type:"bytes32"},{internalType:"uint256",name:"msgNonce",type:"uint256"},{internalType:"bytes32",name:"msgSender",type:"bytes32"},{internalType:"address",name:"msgRecipient",type:"address"},{internalType:"address",name:"msgDestinationCaller",type:"address"},{internalType:"bytes",name:"msgBody",type:"bytes"}],internalType:"struct GMPUtils.Payload",name:"payload",type:"tuple"}],name:"handlePayload",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"uint48",name:"initialOwnerDelay_",type:"uint48"},{internalType:"bytes32",name:"ledgerChainId_",type:"bytes32"},{internalType:"bytes32",name:"bitcoinChainId_",type:"bytes32"},{internalType:"address",name:"mailbox_",type:"address"},{internalType:"address",name:"bascule_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mailbox",outputs:[{internalType:"contract IMailbox",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"maxMintCommission",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"rawPayload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"mint",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"mintPayload",type:"bytes"},{internalType:"bytes",name:"proof",type:"bytes"},{internalType:"bytes",name:"feePayload",type:"bytes"},{internalType:"bytes",name:"userSignature",type:"bytes"}],name:"mintWithFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"nativeToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"oracle",outputs:[{internalType:"contract IOracle",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdmin",outputs:[{internalType:"address",name:"newAdmin",type:"address"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdminDelay",outputs:[{internalType:"uint48",name:"newDelay",type:"uint48"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"ratio",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"address",name:"fromToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"bytes32",name:"tolChainId",type:"bytes32"},{internalType:"address",name:"fromToken",type:"address"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"fromAddress",type:"address"},{internalType:"address",name:"fromToken",type:"address"},{internalType:"bytes",name:"recipient",type:"bytes"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"redeemForBtc",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"fromToken",type:"bytes32"},{internalType:"bytes32",name:"fromChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"toChainId",type:"bytes32"}],name:"removeRoute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rollbackDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"fee",type:"uint256"}],name:"setMaxMintCommission",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"fromToken",type:"bytes32"},{internalType:"bytes32",name:"fromChainId",type:"bytes32"},{internalType:"bytes32",name:"toToken",type:"bytes32"},{internalType:"bytes32",name:"toChainId",type:"bytes32"},{internalType:"enum IAssetRouter.RouteType",name:"routeType",type:"uint8"}],name:"setRoute",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"toNativeCommission",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"toggleRedeem",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"tokenConfig",outputs:[{internalType:"uint256",name:"redeemFee",type:"uint256"},{internalType:"uint256",name:"redeemForBtcMinAmount",type:"uint256"},{internalType:"bool",name:"isRedeemEnabled",type:"bool"}],stateMutability:"view",type:"function"}];async function ye(e){return K({token:i.Token.LBTC,...e})}async function ue(e){return U({token:i.Token.LBTC,...e})}async function K({token:e,chainId:n,rpcUrl:a,env:t}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(e))throw new Error(`Unsupported token: ${e}`);const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a,env:s}),r=await u.getTokenContractInfo(e,n,s,i.AddressKind.Adapter),y=r.abi;let p=0n;if(u.isUpgradedAbi(y)||e===i.Token.BTCb){const l=await o.readContract({abi:y,address:r.address,functionName:"getAssetRouter"}),d={abi:k,address:l};p=await o.readContract({abi:d.abi,address:d.address,functionName:"maxMintCommission",args:[r.address]})}else p=await o.readContract({abi:r.abi,address:r.address,functionName:"getMintFee"});return O.fromSatoshi(String(p))}async function U({token:e,chainId:n,rpcUrl:a,env:t}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(e))throw new Error(`Unsupported token: ${e}`);const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a,env:s}),r=await u.getTokenContractInfo(e,n,s,i.AddressKind.Adapter);let y=0n;if(u.isUpgradedAbi(r.abi)||e===i.Token.BTCb){const p=await o.readContract({abi:r.abi,address:r.address,functionName:"getAssetRouter"}),l={abi:k,address:p},d=await o.readContract({abi:l.abi,address:l.address,functionName:"toNativeCommission",args:[r.address]}),[c]=await o.readContract({abi:l.abi,address:l.address,functionName:"tokenConfig",args:[r.address]});y=d+c}else y=await o.readContract({abi:r.abi,address:r.address,functionName:"getBurnCommission"});return O.fromSatoshi(String(y))}async function q({token:e,chainId:n,rpcUrl:a,env:t}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(e))throw new Error(`Unsupported token: ${e}`);const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a,env:s}),r=await u.getTokenContractInfo(e,n,s,i.AddressKind.Adapter);let y=0n;if(u.isUpgradedAbi(r.abi)||e===i.Token.BTCb){const p=await o.readContract({abi:r.abi,address:r.address,functionName:"getAssetRouter"}),l={abi:k,address:p},[,d]=await o.readContract({abi:l.abi,address:l.address,functionName:"tokenConfig",args:[r.address]});y=d}else y=2000n;return O.fromSatoshi(String(y))}async function de(e){const[n,a]=await Promise.all([U(e),q(e)]);return n.plus(a)}class N extends Error{constructor(n,a,t){super(a),this.code=n,this.context=t,this.name="StakeAndBakeValidationError"}}function $(e,n,a,t){const s=E.DEFI_REGISTRY[e];if(!s)throw new N("UNSUPPORTED_VAULT",`Vault ${e} not found in DeFi registry`,{protocol:e});const o=s[n];if(!o)throw new N("UNSUPPORTED_TOKEN",`Token ${n} is not supported for stake and bake on vault ${e}. Supported tokens: ${Object.keys(s).join(", ")}`,{protocol:e,token:n,supportedTokens:Object.keys(s)});const r=o[t];if(!r)throw new N("UNSUPPORTED_ENV",`Environment ${t} is not supported for token ${n} on vault ${e}`,{protocol:e,token:n,env:t});const y=r[a];if(!y)throw new N("UNSUPPORTED_TOKEN_CHAIN",`Token ${n} is not supported on chain ${a} for vault ${e} in ${t}. Supported chains: ${Object.keys(r).join(", ")}`,{protocol:e,token:n,chainId:a,env:t,supportedChains:Object.keys(r)});return{protocol:e,token:n,env:t,chainId:a,...y}}const le={[E.DefiProtocol.Veda]:i.Token.LBTC,[E.DefiProtocol.Silo]:i.Token.BTCb};async function me({protocol:e=E.DefiProtocol.Veda,token:n,chainId:a,env:t=S.p,rpcUrl:s}){const o=E.DefiProtocols[e];if(!o)throw new Error(`Unknown protocol: ${e}`);const r=n??le[e];try{const p=$(e,r,a,t).spenderContract;if(!p)throw new Error(`Could not retrieve the stake and bake contract for ${e} on chain ${a}.`);const l=u.makePublicClient({chainId:a,rpcUrl:s}),c=await w.getContract({abi:p.abi,address:p.address,client:l}).read.getStakeAndBakeFee();return O.fromSatoshi(String(c))}catch(y){const p=u.getErrorMessage(y);throw new Error(`Failed to get stake and bake fee for ${o.name}: ${p}`)}}function z(e){return`destination chain id is ${e}`}async function ce({account:e,chainId:n,provider:a}){const t=i.makeWalletClient({chainId:n,provider:a}),s=z(n);return await t.signMessage({account:e,message:s})}async function Te({fee:e,expiry:n=M.toUnix(M.now()+M.DAY),account:a,chainId:t,provider:s,env:o,token:r=i.Token.LBTC}){const y=await u.getTokenContractInfo(r,t,o),p=i.makeWalletClient({chainId:t,provider:s}),l={account:a,domain:{name:r===i.Token.BTCb?"Bitcoin":"Lombard Staked Bitcoin",version:"1",chainId:t,verifyingContract:y.address},message:{chainId:t,fee:BigInt(A(e).toFixed()),expiry:n},primaryType:"feeApproval",types:{EIP712Domain:[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],feeApproval:[{name:"chainId",type:"uint256"},{name:"fee",type:"uint256"},{name:"expiry",type:"uint256"}]}};return{signature:await p.signTypedData(l),typedData:JSON.stringify(l,(c,b)=>typeof b=="bigint"?b.toString():b)}}async function j({owner:e,chainId:n,rpcUrl:a,env:t=S.p}){const s=t||u.determineEnv(n),o=u.makePublicClient({chainId:n,rpcUrl:a}),r=await u.getTokenContractInfo(i.Token.LBTC,n,s),y=await o.readContract({abi:r.abi,address:r.address,functionName:"nonces",args:[e]});return String(y)}const be=[{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}],Z=[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}],fe=Z;function we(e){const n=e.mode==="permit"?"Permit":"Approve";return{account:e.account,domain:{name:e.domainName,version:e.domainVersion,chainId:BigInt(e.chainId),verifyingContract:e.verifyingContract},types:{EIP712Domain:be,[n]:e.mode==="permit"?Z:fe},primaryType:n,message:{owner:e.account,spender:e.spender,value:e.value,nonce:e.nonce,deadline:e.deadline}}}function Y(e){return JSON.stringify(e,(n,a)=>typeof a=="bigint"?a.toString():a)}async function Ae(e){const{account:n,chainId:a,provider:t,rpcUrl:s,tokenAddress:o,tokenAbi:r,spenderAddress:y,typedData:p,requiredAmount:l}=e,d=u.makePublicClient({chainId:a,rpcUrl:s}),c=i.makeWalletClient({chainId:a,provider:t}),b=await d.readContract({address:o,abi:r,functionName:"allowance",args:[n,y]});let m;if(b<l){const T=await c.writeContract({address:o,abi:r,functionName:"approve",args:[y,l],account:n,chain:null});if((await d.waitForTransactionReceipt({hash:T})).status!=="success")throw new Error(`Approve transaction failed: ${T}. Please try again or contact support.`);m=T}return{mode:"approve",signature:"",typedData:Y(p),approvalTxHash:m}}async function ge(e){const{chainId:n,provider:a,typedData:t}=e;return{mode:"permit",signature:await i.makeWalletClient({chainId:n,provider:a}).signTypedData(t),typedData:Y(t)}}const Ce=async(e,n,a)=>!e||e==="BTC"||e===i.Token.LBTC?await u.getTokenContractInfo(i.Token.LBTC,n,a):await u.getTokenContractInfo(e,n,a,i.AddressKind.Token);async function he(e,n){var a;try{const s=((a=(await pe.getExchangeRatio({env:n})).LBTC)==null?void 0:a.BTCTokenRatio)||new A(1);return new A(e).dividedBy(s)}catch{throw new Error("Failed to get exchange ratio for stake and bake")}}async function Me({account:e,expiry:n=M.toUnix(M.now()+M.DAY),value:a,vaultKey:t=E.DefiProtocol.Veda,token:s="BTC",chainId:o,provider:r,rpcUrl:y,env:p=S.p}){const l=$(t,s,o,p),d=l.spenderContract.address,c=l.amountStrategy==="btcToLbtc"?await he(a,p):new A(a),b=await Ce(s,o,p),m=b.address,T=b.abi,g=l.approval.deadlineStrategy==="zero"?0n:BigInt(n),C=l.approval.nonceStrategy==="chain"?BigInt(await j({owner:e,chainId:o,rpcUrl:y,env:p})):0n,h=we({mode:l.approval.mode,account:e,chainId:o,verifyingContract:m,domainName:l.approval.domainName,domainVersion:l.approval.domainVersion,spender:d,value:BigInt(c.toFixed(0,A.ROUND_DOWN)),nonce:C,deadline:g});return l.approval.mode==="approve"?Ae({account:e,chainId:o,provider:r,rpcUrl:y,tokenAddress:m,tokenAbi:T,spenderAddress:d,typedData:h,requiredAmount:BigInt(c.toFixed(0,A.ROUND_DOWN))}):ge({chainId:o,provider:r,typedData:h})}class f extends Error{constructor(n,a,t){super(a),this.code=n,this.context=t,this.name="SignerError"}}function V(e,n="transaction"){if(!e.from)throw new f("MISSING_FROM_ADDRESS",`Missing 'from' address for ${n}`,{transaction:e,operation:n});if(!e.to)throw new f("MISSING_TO_ADDRESS",`Missing 'to' address for ${n}`,{transaction:e,operation:n});if(e.data!==void 0&&!w.isHex(e.data))throw new f("INVALID_DATA",`Transaction data must be valid hex string for ${n}`,{transaction:e,operation:n,data:e.data});if(e.chainId&&!/^0x[0-9a-fA-F]+$/.test(e.chainId))throw new f("INVALID_CHAIN_ID",`Chain ID must be a hex string (e.g., "0x1") for ${n}`,{transaction:e,operation:n,chainId:e.chainId})}function J(e,n,a){const t=i.CHAIN_ID_TO_VIEM_CHAIN_MAP[a];if(!t)throw new f("UNSUPPORTED_CHAIN",`Chain ID ${a} is not supported`,{chainId:a,availableChains:Object.keys(i.CHAIN_ID_TO_VIEM_CHAIN_MAP)});return{address:n,type:"local",publicKey:"0x0000000000000000000000000000000000000000000000000000000000000000",source:"custom",async signTransaction(o){const r={from:n,to:o.to??void 0,data:o.data,value:o.value,gas:o.gas,maxFeePerGas:o.maxFeePerGas,maxPriorityFeePerGas:o.maxPriorityFeePerGas,chainId:o.chainId?`0x${o.chainId.toString(16)}`:`0x${t.id.toString(16)}`,nonce:o.nonce};V(r,"signTransaction");let y;if(await e.sign(r,async p=>(y=p,p)),!y)throw new f("SIGNING_FAILED","Signer did not return a signed transaction",{transaction:r});return y},async signMessage(){throw new f("NOT_IMPLEMENTED","Message signing is not supported by this adapter",{method:"signMessage"})},async signTypedData(){throw new f("NOT_IMPLEMENTED","Typed data signing is not supported by this adapter",{method:"signTypedData"})}}}function ke(e,n,a){const t=i.CHAIN_ID_TO_VIEM_CHAIN_MAP[a];if(!t)throw new f("UNSUPPORTED_CHAIN",`Chain ID ${a} is not supported`,{chainId:a});const s=J(e,n,a);return w.createWalletClient({account:s,chain:t,transport:w.http()})}async function P({params:e,publicClient:n,walletClient:a,simulateArgs:t,operation:s}){if(!F.isProviderFlow(e)&&!F.isSignerFlow(e))throw new f("INVALID_PARAMETERS",'Must provide either "provider" or "signer" in parameters',{params:e,operation:s});let o;try{o=await n.simulateContract(t)}catch(p){throw new f("SIMULATION_FAILED",`Failed to simulate ${s} transaction: ${p instanceof Error?p.message:"Unknown error"}`,{operation:s,simulateArgs:t,error:p instanceof Error?p.message:String(p)})}const{request:r}=o;if(!r.account)throw new f("INVALID_SIMULATION",`Simulation succeeded but no account was set for ${s}`,{operation:s,request:r});if(!r.address)throw new f("INVALID_SIMULATION",`Simulation succeeded but no target address was set for ${s}`,{operation:s,request:r});let y;if(F.isProviderFlow(e)){if(!a)throw new f("MISSING_WALLET_CLIENT","Provider flow requires a wallet client",{operation:s,params:e});try{y=await a.writeContract(r)}catch(p){throw new f("PROVIDER_TRANSACTION_FAILED",`Failed to execute ${s} via provider: ${p instanceof Error?p.message:"Unknown error"}`,{operation:s,request:r,error:p instanceof Error?p.message:String(p)})}}else try{const p=i.CHAIN_ID_TO_VIEM_CHAIN_MAP[e.chainId];if(!p)throw new f("UNSUPPORTED_CHAIN",`Chain ${e.chainId} not supported`,{chainId:e.chainId});const l=w.encodeFunctionData({abi:t.abi,functionName:t.functionName,args:t.args}),d={from:e.account,to:r.address,data:l,value:r.value,gas:r.gas,maxFeePerGas:r.maxFeePerGas,maxPriorityFeePerGas:r.maxPriorityFeePerGas,chainId:`0x${p.id.toString(16)}`};V(d,s),y=await e.signer.sign(d,async c=>await n.sendRawTransaction({serializedTransaction:c}))}catch(p){throw new f("SIGNER_TRANSACTION_FAILED",`Failed to execute ${s} via signer: ${p instanceof Error?p.message:"Unknown error"}`,{operation:s,request:r,error:p instanceof Error?p.message:String(p)})}return{txHash:y,request:r}}async function Q(e,n,a){try{const t=await e.waitForTransactionReceipt({hash:n});if(t.status==="reverted")throw new f("TRANSACTION_REVERTED",`${a} transaction reverted`,{operation:a,txHash:n,receipt:{blockNumber:t.blockNumber,gasUsed:t.gasUsed}});return t}catch(t){throw t instanceof f?t:new f("RECEIPT_WAIT_FAILED",`Failed to wait for ${a} transaction receipt: ${t instanceof Error?t.message:"Unknown error"}`,{operation:a,txHash:n,error:t instanceof Error?t.message:String(t)})}}const H="0xe288fb4a",W="0x155b6b13",ve={type:"function",name:"MessageV1",inputs:[{name:"msgPath",type:"bytes32"},{name:"msgNonce",type:"uint256"},{name:"msgSender",type:"bytes32"},{name:"msgRecipient",type:"bytes32"},{name:"msgDestinationCaller",type:"bytes32"},{name:"msgBody",type:"bytes"}]},Re={type:"function",name:"mint",inputs:[{name:"toToken",type:"bytes32"},{name:"recipient",type:"bytes32"},{name:"amount",type:"uint256"}]};function De(e){if(!e.startsWith("0x"))throw new Error("Payload must be 0x-prefixed hex");const n=e.slice(0,10);if(n.toLowerCase()!==H.toLowerCase())throw new Error(`Invalid GMP selector: expected ${H}, got ${n}`);const a=w.decodeFunctionData({abi:[ve],data:e});if(!a.args)throw new Error("Failed to decode GMP payload: args is undefined");const t=a.args[0],s=a.args[1],o=a.args[2],r=a.args[3],y=a.args[4],p=a.args[5];if(typeof p!="string"||!p.startsWith("0x"))throw new Error("msgBody is not valid hex");const l=p.slice(0,10);if(l.toLowerCase()!==W.toLowerCase())throw new Error(`Invalid mint selector in body: expected ${W}, got ${l}`);const d=w.decodeFunctionData({abi:[Re],data:p});if(!d.args)throw new Error("Failed to decode mint body: args is undefined");const c=d.args[0],b=d.args[1],m=d.args[2];return{selector:n,msgPath:t,msgNonce:s,msgSender:o,msgRecipient:r,msgDestinationCaller:y,rawBody:p,mint:{selector:l,toToken:c,recipient:b,amount:m}}}function Ie(e,n){const{msgNonce:a,mint:t}=e,s=w.encodeAbiParameters([{name:"nonce",type:"uint256"},{name:"chainId",type:"uint256"},{name:"recipient",type:"bytes32"},{name:"toToken",type:"bytes32"},{name:"amount",type:"uint256"}],[BigInt(a),BigInt(n),t.recipient,t.toToken,BigInt(t.amount)]);return w.keccak256(s)}const Ee=[{inputs:[{internalType:"address",name:"aDefaultAdmin",type:"address"},{internalType:"address",name:"aPauser",type:"address"},{internalType:"address",name:"aMintReporter",type:"address"},{internalType:"address",name:"aMintValidator",type:"address"},{internalType:"uint256",name:"aMaxMints",type:"uint256"},{internalType:"address",name:"aTrustedSigner",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"uint48",name:"schedule",type:"uint48"}],name:"AccessControlEnforcedDefaultAdminDelay",type:"error"},{inputs:[],name:"AccessControlEnforcedDefaultAdminRules",type:"error"},{inputs:[{internalType:"address",name:"defaultAdmin",type:"address"}],name:"AccessControlInvalidDefaultAdmin",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"},{internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"AlreadyMinted",type:"error"},{inputs:[],name:"BadMintProofsSize",type:"error"},{inputs:[],name:"BadMintReport",type:"error"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"bytes32",name:"mintID",type:"bytes32"},{internalType:"bytes",name:"proof",type:"bytes"}],name:"BadProof",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"},{internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"MintFailedValidation",type:"error"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"}],name:"NotReported",type:"error"},{inputs:[{internalType:"uint8",name:"bits",type:"uint8"},{internalType:"uint256",name:"value",type:"uint256"}],name:"SafeCastOverflowedUintDowncast",type:"error"},{inputs:[],name:"SameValidationThreshold",type:"error"},{inputs:[],name:"ZeroTrustedAddress",type:"error"},{anonymous:!1,inputs:[],name:"DefaultAdminDelayChangeCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint48",name:"newDelay",type:"uint48"},{indexed:!1,internalType:"uint48",name:"effectSchedule",type:"uint48"}],name:"DefaultAdminDelayChangeScheduled",type:"event"},{anonymous:!1,inputs:[],name:"DefaultAdminTransferCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAdmin",type:"address"},{indexed:!1,internalType:"uint48",name:"acceptSchedule",type:"uint48"}],name:"DefaultAdminTransferScheduled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"numMints",type:"uint256"}],name:"MaxMintsUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"mintID",type:"bytes32"}],name:"MintAlreadyReportedOrProcessed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"mintID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"MintNotValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"mintID",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"mintAmount",type:"uint256"}],name:"MintValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"reportId",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"numMints",type:"uint256"}],name:"MintsReported",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"trustedSigner",type:"address"}],name:"TrustedSignerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"UpdateValidateThreshold",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINT_REPORTER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINT_VALIDATOR_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"PAUSER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"VALIDATION_GUARDIAN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"acceptDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"beginDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cancelDefaultAdminTransfer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint48",name:"newDelay",type:"uint48"}],name:"changeDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"defaultAdmin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelay",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"defaultAdminDelayIncreaseWait",outputs:[{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxMints",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"mintID",type:"bytes32"}],name:"mintHistory",outputs:[{components:[{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct IGMPBascule.Message",name:"msg",type:"tuple"},{internalType:"enum GMPBasculeV1.MintState",name:"status",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdmin",outputs:[{internalType:"address",name:"newAdmin",type:"address"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingDefaultAdminDelay",outputs:[{internalType:"uint48",name:"newDelay",type:"uint48"},{internalType:"uint48",name:"schedule",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"reportId",type:"bytes32"},{components:[{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct IGMPBascule.Message[]",name:"mints",type:"tuple[]"},{internalType:"bytes[]",name:"proofs",type:"bytes[]"}],name:"reportMints",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rollbackDefaultAdminDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"aMaxMints",type:"uint256"}],name:"setMaxMints",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"aTrustedSigner",type:"address"}],name:"setTrustedSigner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"trustedSigner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"updateValidateThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"address",name:"recipient",type:"address"},{internalType:"address",name:"toToken",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct IGMPBascule.Message",name:"mintMsg",type:"tuple"}],name:"validateMint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"validateThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],xe=JSON.parse('[{"inputs":[{"internalType":"address","name":"aDefaultAdmin","type":"address"},{"internalType":"address","name":"aPauser","type":"address"},{"internalType":"address","name":"aDepositReporter","type":"address"},{"internalType":"address","name":"aWithdrawalValidator","type":"address"},{"internalType":"uint256","name":"aMaxDeposits","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"uint48","name":"schedule","type":"uint48"}],"name":"AccessControlEnforcedDefaultAdminDelay","type":"error"},{"inputs":[],"name":"AccessControlEnforcedDefaultAdminRules","type":"error"},{"inputs":[{"internalType":"address","name":"defaultAdmin","type":"address"}],"name":"AccessControlInvalidDefaultAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"}],"name":"AlreadyReported","type":"error"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"},{"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"AlreadyWithdrawn","type":"error"},{"inputs":[],"name":"BadDepositReport","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[],"name":"SameValidationThreshold","type":"error"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"},{"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"WithdrawalFailedValidation","type":"error"},{"anonymous":false,"inputs":[],"name":"DefaultAdminDelayChangeCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint48","name":"newDelay","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"effectSchedule","type":"uint48"}],"name":"DefaultAdminDelayChangeScheduled","type":"event"},{"anonymous":false,"inputs":[],"name":"DefaultAdminTransferCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"uint48","name":"acceptSchedule","type":"uint48"}],"name":"DefaultAdminTransferScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"reportId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"numDeposits","type":"uint256"}],"name":"DepositsReported","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"numDeposits","type":"uint256"}],"name":"MaxDepositsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"UpdateValidateThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"depositID","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"WithdrawalNotValidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"depositID","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"WithdrawalValidated","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPOSIT_REPORTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATION_GUARDIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_VALIDATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"beginDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelDefaultAdminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"}],"name":"changeDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultAdminDelayIncreaseWait","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"}],"name":"depositHistory","outputs":[{"internalType":"enum Bascule.DepositState","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdmin","outputs":[{"internalType":"address","name":"newAdmin","type":"address"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingDefaultAdminDelay","outputs":[{"internalType":"uint48","name":"newDelay","type":"uint48"},{"internalType":"uint48","name":"schedule","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"reportId","type":"bytes32"},{"internalType":"bytes32[]","name":"depositIDs","type":"bytes32[]"}],"name":"reportDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollbackDefaultAdminDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"aMaxDeposits","type":"uint256"}],"name":"setMaxDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateValidateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validateThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"depositID","type":"bytes32"},{"internalType":"uint256","name":"withdrawalAmount","type":"uint256"}],"name":"validateWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"}]');var B=(e=>(e[e.UNREPORTED=0]="UNREPORTED",e[e.REPORTED=1]="REPORTED",e[e.WITHDRAWN=2]="WITHDRAWN",e))(B||{});async function X({deposit:e,rawPayload:n,provider:a,chainId:t,rpcUrl:s,env:o=S.p,token:r=i.Token.LBTC}){const y=(e==null?void 0:e.rawPayload)||n;if(!y)throw new Error("No 'rawPayload' or 'deposit' data provided. Please provide 'rawPayload' or 'deposit' parameter.");const p=u.makePublicClient({chainId:t,rpcUrl:s,env:o}),l=await u.getTokenContractInfo(r,t,o,i.AddressKind.Adapter);let d;if(r===i.Token.BTCb&&(t===i.ChainId.avalanche||t===i.ChainId.avalancheFuji))d=await p.readContract({abi:l.abi,address:l.address,functionName:"getBascule"});else if(u.isUpgradedAbi(l.abi)&&r===i.Token.LBTC){const m=await p.readContract({abi:l.abi,address:l.address,functionName:"getAssetRouter"});d=await p.readContract({abi:k,address:m,functionName:"bascule"})}else d=await p.readContract({abi:l.abi,address:l.address,functionName:"Bascule"});if(d===w.zeroAddress)return 1;let c;if(a?c=i.makeWalletClient({provider:a,chainId:t}):c=u.makePublicClient({chainId:t,rpcUrl:s}),!c)throw new Error("Could not determine the client for the contract interactions. Please provide the 'provider' and 'chainId' parameters or 'chainId' and optionally the 'rpcUrl' parameter.");const b=(i.isKatanaChain(t)||i.isMonadChain(t)||i.isEthereumChain(t)||i.isStableChain(t)||i.isMegaethChain(t))&&r===i.Token.LBTC;try{if(b){const C=y.startsWith("0x")?y:`0x${y}`,h=De(C),x=Ie(h,t),[,v]=await p.readContract({abi:Ee,address:d,functionName:"mintHistory",args:[x]});return v}const m=w.keccak256(Buffer.from(y.slice(8),"hex"));return await w.getContract({abi:xe,address:d,client:p}).read.depositHistory([m])}catch(m){throw new Error(u.getErrorMessage(m))}}async function _e({account:e,token:n,spender:a,amount:t,chainId:s,provider:o,rpcUrl:r,env:y}){const p=u.makePublicClient({chainId:s,rpcUrl:r,env:y}),l=i.makeWalletClient({chainId:s,provider:o}),d=await u.getTokenInfo(n,s,y,r);if(!d)throw new Error(`Token info not found for ${n} on chain ${s}`);const c=I.toBigInt(u.toBaseDenomination(A(t),d.decimals)),{request:b}=await p.simulateContract({address:d.address,account:e,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[s],abi:d.abi,functionName:"approve",args:[a,c]});return await l.writeContract(b)}async function Be({token:e,owner:n,spender:a,chainId:t,rpcUrl:s,env:o}){const r=u.makePublicClient({chainId:t,rpcUrl:s,env:o}),y=await u.getTokenInfo(e,t,o,s);if(!y)throw new Error(`Token info not found for ${e} on chain ${t}`);const p=await r.readContract({address:y.address,abi:y.abi,functionName:"allowance",args:[n,a]});return u.fromBaseDenomination(p.toString(),y.decimals)}const L=async(e,n,a)=>{const t=await e.estimateFeesPerGas(),s=A(String(t.maxFeePerGas)).dividedBy(String(t.maxPriorityFeePerGas)),o=a||t.maxPriorityFeePerGas,r=a?BigInt(A(String(o)).multipliedBy(s).toFixed(0)):t.maxFeePerGas;return{gas:await e.estimateContractGas(n),maxFeePerGas:r,maxPriorityFeePerGas:o}};async function ee({data:e,proofSignature:n,account:a,chainId:t,provider:s,rpcUrl:o,env:r,token:y=i.Token.LBTC}){if(![i.Token.LBTC,i.Token.BTCK,i.Token.BTCb].includes(y))throw new Error("Unsupported token");if(y===i.Token.BTCK&&!i.isKatanaChain(t))throw new Error("Operation not permitted");const p=await u.getTokenContractInfo(y,t,r,i.AddressKind.Adapter),l=await X({chainId:t,rawPayload:e,env:r,token:y});if(l!==B.REPORTED)switch(l){case B.UNREPORTED:throw new Error("The deposit cannot be claimed because it is unreported or potentially still pending, please try again later.");case B.WITHDRAWN:throw new Error("The deposit cannot be claimed because it is withdrawn already.");default:throw new Error("The deposit cannot be claimed because it is blocked by bridge security.")}const d=u.makePublicClient({chainId:t,rpcUrl:o,env:r}),c=i.makeWalletClient({chainId:t,provider:s}),b={address:p.address,account:a,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[t],abi:p.abi,functionName:y===i.Token.BTCK||y===i.Token.BTCb?"mintV1":"mint",args:[M.ensureHex(e),M.ensureHex(n)]},m=i.isKatanaChain(t)?await L(d,b,w.parseGwei("1")):{},{request:T}=await d.simulateContract({...b,...m});return await c.writeContract(T)}async function Se({data:e,proofSignature:n,account:a,chainId:t,provider:s,rpcUrl:o,env:r}){return ee({data:e,proofSignature:n,account:a,chainId:t,provider:s,rpcUrl:o,env:r,token:i.Token.LBTC})}const Ne=[{tokenIn:i.Token.BTCb,tokenOut:i.Token.LBTC}];async function Pe({tokenIn:e,chainId:n,env:a,rpcUrl:t}){const s=u.makePublicClient({chainId:n,rpcUrl:t,env:a}),o=await u.getTokenContractInfo(e,n,a,i.AddressKind.Adapter);return await s.readContract({address:o.address,abi:o.abi,functionName:"getAssetRouter"})}async function Fe({account:e,amount:n,chainId:a,env:t,provider:s,rpcUrl:o,tokenIn:r=i.Token.BTCb,tokenOut:y=i.Token.LBTC}){if(!Ne.find(_=>_.tokenIn===r&&_.tokenOut===y))throw new u.UnsupportedTokenFlow(r,y,a,t);const l=u.makePublicClient({chainId:a,rpcUrl:o,env:t}),d=i.makeWalletClient({provider:s,chainId:a}),c=await u.getTokenContractInfo(r,a,t,i.AddressKind.Adapter),b=await u.getTokenContractInfo(r,a,t,i.AddressKind.Token),m=await u.getTokenContractInfo(y,a,t,i.AddressKind.Token),T=await u.retrieveTokenProperties(l,b);if(!T)throw new Error(`Could not retrieve the properties of ${r} on ${a}`);const g=await l.readContract({address:c.address,abi:c.abi,functionName:"getAssetRouter"}),C=A(n),h=I.toBigInt(u.toBaseDenomination(C,T.decimals)),x=await l.readContract({address:T.address,abi:T.abi,functionName:"balanceOf",args:[e]}),v=u.fromBaseDenomination(x,T.decimals);if(C.isGreaterThan(v))throw new Error(`Unable to deposit ${C.toString()} ${T.symbol} because the amount exceeds the account's balance of ${v.toString()} ${T.symbol}`);return await d.writeContract({address:g,abi:k,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[a],functionName:"deposit",args:[e,m.address,h],account:e})}const Le=[{tokenIn:i.Token.LBTC},{tokenIn:i.Token.BTCb},{tokenIn:i.Token.BTCK},{tokenIn:i.Token.LBTC,tokenOut:i.Token.BTCb},{tokenIn:i.Token.LBTC,tokenOut:i.Token.BTCK}];async function te(e){const{account:n,amount:a,btcAddress:t,chainId:s,env:o,rpcUrl:r,tokenIn:y=i.Token.LBTC,tokenOut:p}=e;if(!Le.find(R=>R.tokenIn===y&&R.tokenOut===p))throw new u.UnsupportedTokenFlow(y,p||"BTC",s,o);const d=u.makePublicClient({chainId:s,rpcUrl:r,env:o}),c=F.isProviderFlow(e)?i.makeWalletClient({provider:e.provider,chainId:s}):void 0,b=await u.getTokenContractInfo(y,s,o,i.AddressKind.Token),m=await u.retrieveTokenProperties(d,b);if(!m)throw new Error(`Could not retrieve the properties of ${y} on ${s}`);const T=u.toBaseDenomination(a,m.decimals),g=await d.readContract({address:m.address,abi:m.abi,functionName:"balanceOf",args:[n]}),C=u.fromBaseDenomination(g,m.decimals);if(T.isGreaterThan(g))throw new Error(`Unable to redeem ${String(a)} ${m.symbol} because the amount exceeds the account's balance of ${C.toString()} ${m.symbol}`);if(!p){if(!t)throw new Error("Missing parameter: `btcAddress`.");const R=await S.d(t,o);if(y===i.Token.BTCb&&(s===i.ChainId.avalanche||s===i.ChainId.avalancheFuji)){const D=await u.getTokenContractInfo(y,s,o,i.AddressKind.Adapter),ie=await d.readContract({address:D.address,abi:D.abi,functionName:"getAssetRouter"}),se=await d.readContract({address:m.address,abi:m.abi,functionName:"allowance",args:[n,D.address]});if(T.isGreaterThan(se)){const{txHash:oe}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{address:m.address,abi:m.abi,account:n,functionName:"approve",args:[D.address,I.toBigInt(T)]},operation:"BTC.b approval"}),G=await Q(d,oe,"BTC.b approval");console.info(`Approved adapter (${D.address}) for ${new A(a).toString()} ${m.symbol}`,G.transactionHash,G.status)}const{txHash:re}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{address:ie,abi:k,account:n,functionName:"redeemForBtc",args:[n,D.address,R,I.toBigInt(T)]},operation:"BTC.b redeemForBtc"});return re}const _={abi:m.abi,address:m.address,account:n,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[s],functionName:u.isUpgradedAbi(m.abi)||y===i.Token.BTCb?"redeemForBtc":"redeem",args:[R,I.toBigInt(T)]},ne=i.isKatanaChain(s)?await L(d,_,w.parseGwei("1")):{},{txHash:ae}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{..._,account:n,...ne},operation:`${y} redeem to BTC`});return ae}if(!u.isUpgradedAbi(m.abi))throw new Error(`The ${y} contract (${m.address}) doesn't support redemptions to ${p}.`);const h={abi:m.abi,address:m.address,account:n,chain:i.CHAIN_ID_TO_VIEM_CHAIN_MAP[s],functionName:"redeem",args:[I.toBigInt(T)]},x=i.isKatanaChain(s)?await L(d,h,w.parseGwei("1")):{},{txHash:v}=await P({params:e,publicClient:d,walletClient:c,simulateArgs:{...h,account:n,...x},operation:`${y} redeem to ${p}`});return v}async function Oe(e){return te({...e,tokenIn:i.Token.LBTC,tokenOut:void 0})}exports.ASSET_ROUTER_ABI=k;exports.BasculeDepositStatus=B;exports.SignerError=f;exports.approveToken=_e;exports.claimLBTC=Se;exports.createAccountFromSigner=J;exports.createWalletClientFromSigner=ke;exports.depositToken=Fe;exports.estimateGasFees=L;exports.getAddressConfirmationMessage=z;exports.getAssetRouterAddress=Pe;exports.getBasculeDepositStatus=X;exports.getLBTCBurningFee=ue;exports.getLBTCMintingFee=ye;exports.getMinRedeemAmount=q;exports.getMinRedeemAmountWithFee=de;exports.getMintingFee=K;exports.getPermitNonce=j;exports.getRedeemFee=U;exports.getStakeAndBakeConfig=$;exports.getStakeAndBakeFee=me;exports.getTokenAllowance=Be;exports.mintToken=ee;exports.redeemToken=te;exports.signLbtcDestinationAddr=ce;exports.signNetworkFee=Te;exports.signStakeAndBake=Me;exports.unstakeLBTC=Oe;exports.validateTransactionRequest=V;exports.waitForTransactionReceipt=Q;
2
+ //# sourceMappingURL=unstakeLBTC-CmoCaGX9.cjs.map