@lombard.finance/sdk 4.7.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/CHANGELOG.md +91 -2
  2. package/README.md +22 -21
  3. package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.d.ts.map +1 -1
  4. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.d.ts.map +1 -1
  5. package/dist/api.cjs +1 -1
  6. package/dist/api.js +5 -5
  7. package/dist/bridge.cjs +1 -1
  8. package/dist/bridge.js +1 -1
  9. package/dist/btc.cjs +1 -1
  10. package/dist/btc.js +2 -2
  11. package/dist/chains/btc/actions/deposit/BtcDeposit.d.ts.map +1 -1
  12. package/dist/chains/btc/actions/deposit/config/evm.d.ts.map +1 -1
  13. package/dist/chains/btc/actions/deposit/config/solana.d.ts.map +1 -1
  14. package/dist/chains/btc/actions/depositAndDeploy/config/index.d.ts.map +1 -1
  15. package/dist/chains/btc/actions/depositAndDeploy/types.d.ts.map +1 -1
  16. package/dist/chains/btc/actions/stake/BtcStake.d.ts.map +1 -1
  17. package/dist/chains/btc/actions/stake/config/evm.d.ts.map +1 -1
  18. package/dist/chains/btc/actions/stake/config/solana.d.ts.map +1 -1
  19. package/dist/chains/btc/actions/stakeAndDeploy/config/index.d.ts.map +1 -1
  20. package/dist/chains/btc/actions/stakeAndDeploy/types.d.ts.map +1 -1
  21. package/dist/chains/btc/client/getCurrentBlockHeight.d.ts.map +1 -1
  22. package/dist/chains/evm/actions/deploy/EvmDeploy.d.ts +19 -4
  23. package/dist/chains/evm/actions/deploy/EvmDeploy.d.ts.map +1 -1
  24. package/dist/chains/evm/actions/deploy/index.d.ts.map +1 -1
  25. package/dist/chains/evm/actions/deploy/types.d.ts.map +1 -1
  26. package/dist/chains/evm/actions/deposit/config/evm.d.ts.map +1 -1
  27. package/dist/chains/evm/actions/deposit/index.d.ts.map +1 -1
  28. package/dist/chains/evm/actions/redeem/EvmRedeem.d.ts.map +1 -1
  29. package/dist/chains/evm/actions/redeem/config/evm.d.ts.map +1 -1
  30. package/dist/chains/evm/actions/redeem/index.d.ts.map +1 -1
  31. package/dist/chains/evm/actions/redeem/types.d.ts.map +1 -1
  32. package/dist/chains/evm/actions/stake/config/index.d.ts.map +1 -1
  33. package/dist/chains/evm/actions/stake/config/types.d.ts.map +1 -1
  34. package/dist/chains/evm/actions/stake/index.d.ts.map +1 -1
  35. package/dist/chains/evm/actions/stake/types.d.ts.map +1 -1
  36. package/dist/chains/evm/actions/unstake/EvmUnstake.d.ts.map +1 -1
  37. package/dist/chains/evm/actions/unstake/index.d.ts.map +1 -1
  38. package/dist/chains/evm/actions/unstake/types.d.ts.map +1 -1
  39. package/dist/chains/evm/actions/withdraw/EvmCancelWithdraw.d.ts.map +1 -1
  40. package/dist/chains/evm/actions/withdraw/EvmWithdraw.d.ts +6 -0
  41. package/dist/chains/evm/actions/withdraw/EvmWithdraw.d.ts.map +1 -1
  42. package/dist/chains/evm/actions/withdraw/config/types.d.ts.map +1 -1
  43. package/dist/chains/evm/actions/withdraw/types.d.ts.map +1 -1
  44. package/dist/chains/solana/SolanaActions.d.ts.map +1 -1
  45. package/dist/chains/solana/actions/redeem/SolanaRedeem.d.ts.map +1 -1
  46. package/dist/chains/solana/actions/redeem/types.d.ts.map +1 -1
  47. package/dist/chains/solana/actions/stake/SolanaStake.d.ts.map +1 -1
  48. package/dist/chains/solana/actions/stake/types.d.ts.map +1 -1
  49. package/dist/chains/solana/actions/unstake/SolanaUnstake.d.ts.map +1 -1
  50. package/dist/chains/solana/actions/unstake/factory.d.ts.map +1 -1
  51. package/dist/chains/solana/actions/unstake/types.d.ts.map +1 -1
  52. package/dist/chains/solana/utils.d.ts.map +1 -1
  53. package/dist/chains/starknet/actions/unstake/config/index.d.ts.map +1 -1
  54. package/dist/chains/starknet/actions/unstake/factory.d.ts.map +1 -1
  55. package/dist/chains/starknet/actions/unstake/types.d.ts.map +1 -1
  56. package/dist/chains/sui/actions/unstake/config/index.d.ts.map +1 -1
  57. package/dist/chains/sui/actions/unstake/factory.d.ts.map +1 -1
  58. package/dist/chains/sui/actions/unstake/types.d.ts.map +1 -1
  59. package/dist/chunks/{BtcActions-BczTnzRn.js → BtcActions-CFGiDxtv.js} +20 -22
  60. package/dist/chunks/BtcActions-CFGiDxtv.js.map +1 -0
  61. package/dist/chunks/BtcActions-DJJmmyzi.cjs +2 -0
  62. package/dist/chunks/BtcActions-DJJmmyzi.cjs.map +1 -0
  63. package/dist/chunks/EvmActions-CUKBeiUw.js +1508 -0
  64. package/dist/chunks/EvmActions-CUKBeiUw.js.map +1 -0
  65. package/dist/chunks/EvmActions-CxipDb7X.cjs +7 -0
  66. package/dist/chunks/EvmActions-CxipDb7X.cjs.map +1 -0
  67. package/dist/chunks/{ReferralsClient-W-0-383w.js → ReferralsClient-BRa26dYS.js} +4 -4
  68. package/dist/chunks/ReferralsClient-BRa26dYS.js.map +1 -0
  69. package/dist/chunks/{ReferralsClient-D8dHEk_X.cjs → ReferralsClient-o-3AUm7s.cjs} +2 -2
  70. package/dist/chunks/ReferralsClient-o-3AUm7s.cjs.map +1 -0
  71. package/dist/chunks/{approveLBTC-BMC4cZEk.cjs → approveLBTC-BBl3KcT2.cjs} +2 -2
  72. package/dist/chunks/{approveLBTC-BMC4cZEk.cjs.map → approveLBTC-BBl3KcT2.cjs.map} +1 -1
  73. package/dist/chunks/{approveLBTC-BkdT1N3V.js → approveLBTC-DnCt6ZZF.js} +3 -3
  74. package/dist/chunks/{approveLBTC-BkdT1N3V.js.map → approveLBTC-DnCt6ZZF.js.map} +1 -1
  75. package/dist/chunks/{blockchain-identifier-BLPnwbIN.js → blockchain-identifier-BkASqCgZ.js} +2 -2
  76. package/dist/chunks/blockchain-identifier-BkASqCgZ.js.map +1 -0
  77. package/dist/chunks/{blockchain-identifier-Bp-LTIdG.cjs → blockchain-identifier-DWfC3Es2.cjs} +2 -2
  78. package/dist/chunks/blockchain-identifier-DWfC3Es2.cjs.map +1 -0
  79. package/dist/chunks/{bridge-DbB23m2a.js → bridge-DV4fOcHe.js} +4 -4
  80. package/dist/chunks/bridge-DV4fOcHe.js.map +1 -0
  81. package/dist/chunks/{bridge-7Eq_Jmi2.cjs → bridge-DZp5x4Yb.cjs} +2 -2
  82. package/dist/chunks/bridge-DZp5x4Yb.cjs.map +1 -0
  83. package/dist/chunks/{config-ow9X5H0c.cjs → config-BfX8lrdO.cjs} +2 -2
  84. package/dist/chunks/config-BfX8lrdO.cjs.map +1 -0
  85. package/dist/chunks/{config-C8BfN_9P.js → config-wnjPtnjd.js} +46 -53
  86. package/dist/chunks/config-wnjPtnjd.js.map +1 -0
  87. package/dist/chunks/{defi-registry-B8V6dRVB.cjs → defi-registry-CyMKVT3z.cjs} +2 -2
  88. package/dist/chunks/defi-registry-CyMKVT3z.cjs.map +1 -0
  89. package/dist/chunks/{defi-registry-CD8EUcNu.js → defi-registry-DULXbu3D.js} +9 -9
  90. package/dist/chunks/defi-registry-DULXbu3D.js.map +1 -0
  91. package/dist/chunks/{depositStatus-BJA7tNqc.cjs → depositStatus-B9P1YXEU.cjs} +2 -2
  92. package/dist/chunks/depositStatus-B9P1YXEU.cjs.map +1 -0
  93. package/dist/chunks/{depositStatus-HosfExLl.js → depositStatus-Cgd_GDUt.js} +5 -5
  94. package/dist/chunks/depositStatus-Cgd_GDUt.js.map +1 -0
  95. package/dist/chunks/events-B9b3YdgM.cjs +2 -0
  96. package/dist/chunks/events-B9b3YdgM.cjs.map +1 -0
  97. package/dist/chunks/{events-BlzP_SCT.js → events-DU2wYlt_.js} +189 -191
  98. package/dist/chunks/events-DU2wYlt_.js.map +1 -0
  99. package/dist/chunks/{get-exchange-ratio-Bl6pt546.js → get-exchange-ratio-BvPUfcIQ.js} +2 -2
  100. package/dist/chunks/{get-exchange-ratio-Bl6pt546.js.map → get-exchange-ratio-BvPUfcIQ.js.map} +1 -1
  101. package/dist/chunks/{get-exchange-ratio-t1PW8I6_.cjs → get-exchange-ratio-DGztGO7i.cjs} +2 -2
  102. package/dist/chunks/{get-exchange-ratio-t1PW8I6_.cjs.map → get-exchange-ratio-DGztGO7i.cjs.map} +1 -1
  103. package/dist/chunks/{get-positions-summary-DdZvBmCN.cjs → get-positions-summary-CC7BDtlY.cjs} +2 -2
  104. package/dist/chunks/get-positions-summary-CC7BDtlY.cjs.map +1 -0
  105. package/dist/chunks/{get-positions-summary-CaX2BCHp.js → get-positions-summary-DxAgmaMl.js} +2 -2
  106. package/dist/chunks/get-positions-summary-DxAgmaMl.js.map +1 -0
  107. package/dist/chunks/get-vault-tvl-B6rSrGi_.js +203 -0
  108. package/dist/chunks/get-vault-tvl-B6rSrGi_.js.map +1 -0
  109. package/dist/chunks/get-vault-tvl-dvEPPxvT.cjs +2 -0
  110. package/dist/chunks/get-vault-tvl-dvEPPxvT.cjs.map +1 -0
  111. package/dist/chunks/get-vault-withdrawals-Cgx7VsM1.cjs +2 -0
  112. package/dist/chunks/get-vault-withdrawals-Cgx7VsM1.cjs.map +1 -0
  113. package/dist/chunks/get-vault-withdrawals-W5CgNbqE.js +154 -0
  114. package/dist/chunks/get-vault-withdrawals-W5CgNbqE.js.map +1 -0
  115. package/dist/chunks/{getUserStakeAndBakeSignature-CqlrwA0t.js → getUserStakeAndBakeSignature-BRhWFYyY.js} +4 -4
  116. package/dist/chunks/getUserStakeAndBakeSignature-BRhWFYyY.js.map +1 -0
  117. package/dist/chunks/{getUserStakeAndBakeSignature-BmY5j0OM.cjs → getUserStakeAndBakeSignature-VlC_GHmz.cjs} +2 -2
  118. package/dist/chunks/getUserStakeAndBakeSignature-VlC_GHmz.cjs.map +1 -0
  119. package/dist/chunks/hex-BiCL4CPh.js +11 -0
  120. package/dist/chunks/hex-BiCL4CPh.js.map +1 -0
  121. package/dist/chunks/hex-DeJtv8eu.cjs +2 -0
  122. package/dist/chunks/hex-DeJtv8eu.cjs.map +1 -0
  123. package/dist/chunks/{lbtc-addresses-BlyGFWnW.js → lbtc-addresses-ClXt-tuB.js} +2 -2
  124. package/dist/chunks/{lbtc-addresses-BlyGFWnW.js.map → lbtc-addresses-ClXt-tuB.js.map} +1 -1
  125. package/dist/chunks/{lbtc-addresses-DjsipX5Q.cjs → lbtc-addresses-D3jG1VUC.cjs} +2 -2
  126. package/dist/chunks/{lbtc-addresses-DjsipX5Q.cjs.map → lbtc-addresses-D3jG1VUC.cjs.map} +1 -1
  127. package/dist/chunks/parameters-CcpaKGU2.js +24 -0
  128. package/dist/chunks/parameters-CcpaKGU2.js.map +1 -0
  129. package/dist/chunks/parameters-YNWmaAho.cjs +2 -0
  130. package/dist/chunks/parameters-YNWmaAho.cjs.map +1 -0
  131. package/dist/chunks/{statusConstants-BJIXJNIC.cjs → statusConstants-B-7VEYgO.cjs} +2 -2
  132. package/dist/chunks/statusConstants-B-7VEYgO.cjs.map +1 -0
  133. package/dist/chunks/{statusConstants-BQna5LGH.js → statusConstants-C3JHNUTC.js} +15 -17
  134. package/dist/chunks/statusConstants-C3JHNUTC.js.map +1 -0
  135. package/dist/chunks/{storeNetworkFeeSignature-tprCigR1.js → storeNetworkFeeSignature-CY_Z-Wtn.js} +2 -2
  136. package/dist/chunks/{storeNetworkFeeSignature-tprCigR1.js.map → storeNetworkFeeSignature-CY_Z-Wtn.js.map} +1 -1
  137. package/dist/chunks/{storeNetworkFeeSignature-CLm8I2pf.cjs → storeNetworkFeeSignature-DJgBfZp7.cjs} +2 -2
  138. package/dist/chunks/{storeNetworkFeeSignature-CLm8I2pf.cjs.map → storeNetworkFeeSignature-DJgBfZp7.cjs.map} +1 -1
  139. package/dist/chunks/token-addresses-C7H9E4qz.cjs +2 -0
  140. package/dist/chunks/token-addresses-C7H9E4qz.cjs.map +1 -0
  141. package/dist/chunks/{token-addresses-Ddar0FyS.js → token-addresses-DVnRPyu4.js} +16 -14
  142. package/dist/chunks/token-addresses-DVnRPyu4.js.map +1 -0
  143. package/dist/chunks/{tokens-HhVpKe3K.js → tokens-Btl3GXbc.js} +3 -3
  144. package/dist/chunks/tokens-Btl3GXbc.js.map +1 -0
  145. package/dist/chunks/{tokens-CBsz6l_2.cjs → tokens-DEYY7W7O.cjs} +2 -2
  146. package/dist/chunks/tokens-DEYY7W7O.cjs.map +1 -0
  147. package/dist/chunks/unwrapBtceToLbtcv-C4OxoVVU.js +321 -0
  148. package/dist/chunks/unwrapBtceToLbtcv-C4OxoVVU.js.map +1 -0
  149. package/dist/chunks/unwrapBtceToLbtcv-Dg-yUGpg.cjs +2 -0
  150. package/dist/chunks/unwrapBtceToLbtcv-Dg-yUGpg.cjs.map +1 -0
  151. package/dist/chunks/withdrawEarn-CTtVruit.cjs +7 -0
  152. package/dist/chunks/withdrawEarn-CTtVruit.cjs.map +1 -0
  153. package/dist/chunks/{unstakeLBTC-Bg8OsAMV.js → withdrawEarn-QFaMhs0t.js} +965 -612
  154. package/dist/chunks/withdrawEarn-QFaMhs0t.js.map +1 -0
  155. package/dist/client/ApiNamespace.d.ts +3 -6
  156. package/dist/client/ApiNamespace.d.ts.map +1 -1
  157. package/dist/common/blockchain-identifier.d.ts.map +1 -1
  158. package/dist/common/chains.d.ts +1 -1
  159. package/dist/common/chains.d.ts.map +1 -1
  160. package/dist/common/feature-config.d.ts.map +1 -1
  161. package/dist/contract-functions/cancelEarnWithdrawal/cancelEarnWithdrawal.d.ts +19 -0
  162. package/dist/contract-functions/cancelEarnWithdrawal/cancelEarnWithdrawal.d.ts.map +1 -0
  163. package/dist/contract-functions/cancelEarnWithdrawal/index.d.ts +2 -0
  164. package/dist/contract-functions/cancelEarnWithdrawal/index.d.ts.map +1 -0
  165. package/dist/contract-functions/depositEarn/depositEarn.d.ts +36 -0
  166. package/dist/contract-functions/depositEarn/depositEarn.d.ts.map +1 -0
  167. package/dist/contract-functions/depositEarn/index.d.ts +2 -0
  168. package/dist/contract-functions/depositEarn/index.d.ts.map +1 -0
  169. package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts.map +1 -1
  170. package/dist/contract-functions/getEarnPosition/getEarnPosition.d.ts +17 -16
  171. package/dist/contract-functions/getEarnPosition/getEarnPosition.d.ts.map +1 -1
  172. package/dist/contract-functions/getShareValue/getShareValue.d.ts +5 -15
  173. package/dist/contract-functions/getShareValue/getShareValue.d.ts.map +1 -1
  174. package/dist/contract-functions/getSharesByAddress/getSharesByAddress.d.ts +5 -20
  175. package/dist/contract-functions/getSharesByAddress/getSharesByAddress.d.ts.map +1 -1
  176. package/dist/contract-functions/index.d.ts +4 -2
  177. package/dist/contract-functions/index.d.ts.map +1 -1
  178. package/dist/contract-functions/previewWithdrawEarn/index.d.ts +2 -0
  179. package/dist/contract-functions/previewWithdrawEarn/index.d.ts.map +1 -0
  180. package/dist/contract-functions/previewWithdrawEarn/previewWithdrawEarn.d.ts +38 -0
  181. package/dist/contract-functions/previewWithdrawEarn/previewWithdrawEarn.d.ts.map +1 -0
  182. package/dist/contract-functions/signStakeAndBake/validation.d.ts.map +1 -1
  183. package/dist/contract-functions/withdrawEarn/index.d.ts +2 -0
  184. package/dist/contract-functions/withdrawEarn/index.d.ts.map +1 -0
  185. package/dist/contract-functions/withdrawEarn/withdrawEarn.d.ts +46 -0
  186. package/dist/contract-functions/withdrawEarn/withdrawEarn.d.ts.map +1 -0
  187. package/dist/contract-functions/wrapToBtce/wrapToBtce.d.ts.map +1 -1
  188. package/dist/contracts.cjs +1 -1
  189. package/dist/contracts.js +32 -30
  190. package/dist/core/assets/catalog.d.ts.map +1 -1
  191. package/dist/core/assets/utils.d.ts.map +1 -1
  192. package/dist/core/chains/utils.d.ts.map +1 -1
  193. package/dist/core.cjs +1 -1
  194. package/dist/core.js +19 -19
  195. package/dist/defi/defi-registry.d.ts.map +1 -1
  196. package/dist/defi/index.d.ts +1 -1
  197. package/dist/defi/index.d.ts.map +1 -1
  198. package/dist/defi.cjs +1 -1
  199. package/dist/defi.js +4 -4
  200. package/dist/entries/api.d.ts +14 -14
  201. package/dist/entries/api.d.ts.map +1 -1
  202. package/dist/entries/contracts.d.ts +4 -2
  203. package/dist/entries/contracts.d.ts.map +1 -1
  204. package/dist/entries/defi.d.ts +1 -1
  205. package/dist/entries/defi.d.ts.map +1 -1
  206. package/dist/entries/evm.d.ts +7 -7
  207. package/dist/entries/evm.d.ts.map +1 -1
  208. package/dist/entries/utils.d.ts +9 -9
  209. package/dist/entries/utils.d.ts.map +1 -1
  210. package/dist/entries/vaults.d.ts +1 -1
  211. package/dist/entries/vaults.d.ts.map +1 -1
  212. package/dist/evm.cjs +1 -1
  213. package/dist/evm.js +4 -4
  214. package/dist/index.cjs +1 -1
  215. package/dist/index.d.ts +67 -65
  216. package/dist/index.d.ts.map +1 -1
  217. package/dist/index.js +171 -174
  218. package/dist/index.js.map +1 -1
  219. package/dist/metrics.cjs +1 -1
  220. package/dist/metrics.js +1 -1
  221. package/dist/services/EvmService.d.ts.map +1 -1
  222. package/dist/shared/actions/BaseAction.d.ts.map +1 -1
  223. package/dist/shared/deposits/depositStatus.d.ts.map +1 -1
  224. package/dist/shared/validation/index.d.ts.map +1 -1
  225. package/dist/tokens/tokens.d.ts.map +1 -1
  226. package/dist/utils/chain.d.ts.map +1 -1
  227. package/dist/utils/consoleLogger.d.ts.map +1 -1
  228. package/dist/utils.cjs +1 -1
  229. package/dist/utils.js +16 -16
  230. package/dist/vaults/index.d.ts +8 -10
  231. package/dist/vaults/index.d.ts.map +1 -1
  232. package/dist/vaults/lib/config.d.ts +148 -150
  233. package/dist/vaults/lib/config.d.ts.map +1 -1
  234. package/dist/vaults/lib/metrics/get-vault-apy.d.ts +2 -4
  235. package/dist/vaults/lib/metrics/get-vault-apy.d.ts.map +1 -1
  236. package/dist/vaults/lib/metrics/get-vault-points.d.ts +2 -5
  237. package/dist/vaults/lib/metrics/get-vault-points.d.ts.map +1 -1
  238. package/dist/vaults/lib/metrics/get-vault-tvl.d.ts +5 -8
  239. package/dist/vaults/lib/metrics/get-vault-tvl.d.ts.map +1 -1
  240. package/dist/vaults/lib/ops/deposit.d.ts +5 -14
  241. package/dist/vaults/lib/ops/deposit.d.ts.map +1 -1
  242. package/dist/vaults/lib/ops/get-vault-deposits.d.ts +9 -13
  243. package/dist/vaults/lib/ops/get-vault-deposits.d.ts.map +1 -1
  244. package/dist/vaults/lib/ops/get-vault-minimum-deposit.d.ts +4 -7
  245. package/dist/vaults/lib/ops/get-vault-minimum-deposit.d.ts.map +1 -1
  246. package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts +14 -18
  247. package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts.map +1 -1
  248. package/dist/vaults/lib/ops/preview-vault-deposit.d.ts +4 -8
  249. package/dist/vaults/lib/ops/preview-vault-deposit.d.ts.map +1 -1
  250. package/dist/vaults/lib/ops/withdraw.d.ts +11 -27
  251. package/dist/vaults/lib/ops/withdraw.d.ts.map +1 -1
  252. package/dist/vaults.cjs +1 -1
  253. package/dist/vaults.cjs.map +1 -1
  254. package/dist/vaults.js +91 -103
  255. package/dist/vaults.js.map +1 -1
  256. package/package.json +1 -1
  257. package/dist/chunks/BtcActions-BczTnzRn.js.map +0 -1
  258. package/dist/chunks/BtcActions-PyJhuiZN.cjs +0 -2
  259. package/dist/chunks/BtcActions-PyJhuiZN.cjs.map +0 -1
  260. package/dist/chunks/EvmActions-D3RAK9_Z.cjs +0 -2
  261. package/dist/chunks/EvmActions-D3RAK9_Z.cjs.map +0 -1
  262. package/dist/chunks/EvmActions-DSKThOAy.js +0 -1341
  263. package/dist/chunks/EvmActions-DSKThOAy.js.map +0 -1
  264. package/dist/chunks/ReferralsClient-D8dHEk_X.cjs.map +0 -1
  265. package/dist/chunks/ReferralsClient-W-0-383w.js.map +0 -1
  266. package/dist/chunks/blockchain-identifier-BLPnwbIN.js.map +0 -1
  267. package/dist/chunks/blockchain-identifier-Bp-LTIdG.cjs.map +0 -1
  268. package/dist/chunks/bridge-7Eq_Jmi2.cjs.map +0 -1
  269. package/dist/chunks/bridge-DbB23m2a.js.map +0 -1
  270. package/dist/chunks/config-C8BfN_9P.js.map +0 -1
  271. package/dist/chunks/config-ow9X5H0c.cjs.map +0 -1
  272. package/dist/chunks/defi-registry-B8V6dRVB.cjs.map +0 -1
  273. package/dist/chunks/defi-registry-CD8EUcNu.js.map +0 -1
  274. package/dist/chunks/depositStatus-BJA7tNqc.cjs.map +0 -1
  275. package/dist/chunks/depositStatus-HosfExLl.js.map +0 -1
  276. package/dist/chunks/events-BlzP_SCT.js.map +0 -1
  277. package/dist/chunks/events-DNehj45M.cjs +0 -2
  278. package/dist/chunks/events-DNehj45M.cjs.map +0 -1
  279. package/dist/chunks/get-positions-summary-CaX2BCHp.js.map +0 -1
  280. package/dist/chunks/get-positions-summary-DdZvBmCN.cjs.map +0 -1
  281. package/dist/chunks/get-vault-tvl-CihHEkqK.js +0 -226
  282. package/dist/chunks/get-vault-tvl-CihHEkqK.js.map +0 -1
  283. package/dist/chunks/get-vault-tvl-DZ-xzehy.cjs +0 -2
  284. package/dist/chunks/get-vault-tvl-DZ-xzehy.cjs.map +0 -1
  285. package/dist/chunks/get-vault-withdrawals-DLwFMQEB.cjs +0 -2
  286. package/dist/chunks/get-vault-withdrawals-DLwFMQEB.cjs.map +0 -1
  287. package/dist/chunks/get-vault-withdrawals-QJOdxB5Z.js +0 -161
  288. package/dist/chunks/get-vault-withdrawals-QJOdxB5Z.js.map +0 -1
  289. package/dist/chunks/getUserStakeAndBakeSignature-BmY5j0OM.cjs.map +0 -1
  290. package/dist/chunks/getUserStakeAndBakeSignature-CqlrwA0t.js.map +0 -1
  291. package/dist/chunks/parameters-C_16L5ft.js +0 -11
  292. package/dist/chunks/parameters-C_16L5ft.js.map +0 -1
  293. package/dist/chunks/parameters-DK9cYCAH.cjs +0 -2
  294. package/dist/chunks/parameters-DK9cYCAH.cjs.map +0 -1
  295. package/dist/chunks/statusConstants-BJIXJNIC.cjs.map +0 -1
  296. package/dist/chunks/statusConstants-BQna5LGH.js.map +0 -1
  297. package/dist/chunks/time-I-BeyUkG.cjs +0 -2
  298. package/dist/chunks/time-I-BeyUkG.cjs.map +0 -1
  299. package/dist/chunks/time-Sa5gggPG.js +0 -24
  300. package/dist/chunks/time-Sa5gggPG.js.map +0 -1
  301. package/dist/chunks/token-addresses-Ddar0FyS.js.map +0 -1
  302. package/dist/chunks/token-addresses-DvY-Mw7b.cjs +0 -2
  303. package/dist/chunks/token-addresses-DvY-Mw7b.cjs.map +0 -1
  304. package/dist/chunks/tokens-CBsz6l_2.cjs.map +0 -1
  305. package/dist/chunks/tokens-HhVpKe3K.js.map +0 -1
  306. package/dist/chunks/unstakeLBTC-Bg8OsAMV.js.map +0 -1
  307. package/dist/chunks/unstakeLBTC-BmHvDxBN.cjs +0 -2
  308. package/dist/chunks/unstakeLBTC-BmHvDxBN.cjs.map +0 -1
  309. package/dist/chunks/withdraw-Bkp5-2dG.cjs +0 -12
  310. package/dist/chunks/withdraw-Bkp5-2dG.cjs.map +0 -1
  311. package/dist/chunks/withdraw-kf8mYbYH.js +0 -209
  312. package/dist/chunks/withdraw-kf8mYbYH.js.map +0 -1
  313. package/dist/chunks/wrapToBtce-By2mh503.js +0 -298
  314. package/dist/chunks/wrapToBtce-By2mh503.js.map +0 -1
  315. package/dist/chunks/wrapToBtce-DDeIlv3d.cjs +0 -2
  316. package/dist/chunks/wrapToBtce-DDeIlv3d.cjs.map +0 -1
  317. package/dist/contract-functions/getShareValue/index.d.ts +0 -2
  318. package/dist/contract-functions/getShareValue/index.d.ts.map +0 -1
  319. package/dist/contract-functions/getSharesByAddress/index.d.ts +0 -2
  320. package/dist/contract-functions/getSharesByAddress/index.d.ts.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";const g=require("viem"),p=require("./blockchain-identifier-Bp-LTIdG.cjs"),n=require("./token-addresses-DvY-Mw7b.cjs"),k=require("./tokens-CBsz6l_2.cjs"),T=require("axios"),m=require("./api-config-DkXqqfCK.cjs"),N=require("./satoshi-CZEsHl5X.cjs"),h=require("./index-BKzxeh1Y.cjs"),U=require("bignumber.js"),L=require("bitcoinjs-lib");function R(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const s=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,s.get?s:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const S=R(L);async function C({address:e,chainId:t,env:o,limit:s,offset:c,partnerId:r}){var u;const{baseApiUrl:i}=m.getApiConfig(o),d=p.getChainNameById(t);d===p.BlockchainIdentifier.starknet&&(e=g.pad(e,{size:32}));const f={asc:!1,limit:s,offset:c,referralId:r||"lombard"};for(const[l,A]of Object.entries(f))A===void 0&&delete f[l];const a=`api/v1/address/destination/${d}/${e}`;try{const{data:l}=await T.get(a,{baseURL:i,params:f});return l.addresses||[]}catch(l){if(T.isAxiosError(l)){const A=(u=l.response)==null?void 0:u.data.message;throw new Error(A)}}}async function $({address:e,chainId:t,env:o,partnerId:s,token:c=n.Token.LBTC}){const r=await C({address:e,chainId:t,env:o,partnerId:s});let i;if(![n.Token.LBTC,n.Token.BTCK,n.Token.BTCb].includes(c))throw new Error("Unsupported token");let d;try{if(n.isValidChain(t)&&(d={token_address:(await k.getTokenContractInfo(c,t,o,n.AddressKind.Adapter)).address.toLowerCase()}),n.isSuiChain(t)){const a=n.getSuiTokenAddress(t,o);a&&(d={token_address:a.toLowerCase()})}if(n.isSolanaChain(t)){const a=c===n.Token.BTCb?n.Token.BTCb:n.Token.LBTC,u=n.getSolanaTokenAddress(t,o,a);u&&(d={token_address:u.toLowerCase()})}if(n.isStarknetChainId(t)){const a=n.getStarknetTokenAddress(t,o,"assetRouter");a&&(d={token_address:a.toLowerCase()})}}catch{}n.isStarknetChainId(t)&&(e=g.pad(e,{size:32}).toLowerCase());const f=(r||[]).filter(a=>a.deposit_metadata.to_blockchain.toLowerCase()===p.getChainNameById(t).toLowerCase()&&a.deposit_metadata.to_address.toLowerCase()===e.toLowerCase()).filter(a=>{var l;if(!d)return!1;let u=((l=a.deposit_metadata.token_address)==null?void 0:l.toLowerCase())===d.token_address;return d.aux_version!=null&&(u=u&&a.deposit_metadata.aux_version===d.aux_version),c===n.Token.LBTC&&(u=u||!a.deposit_metadata.token_address),n.isSolanaChain(t)&&!u&&!a.deposit_metadata.token_address&&(c===n.Token.BTCb||c===n.Token.BTCK?u=a.deposit_metadata.aux_version!=null:c===n.Token.LBTC&&(u=a.deposit_metadata.aux_version==null)),u});if(f&&f.length>0){const a=f.reduce((u,l)=>l.created_at>u.created_at?l:u,f[0]);a.deprecated||(i=a.btc_address)}if(!i)throw new Error(`No deposit address found for ${e} on chain ${t}`);return i}async function M(e){return await C(e)}async function b({endpoint:e,extractItems:t,query:o={},pageSize:s=1e3,maxRecords:c}){let r=[],i=0,d=!0;for(;d;){const f=new URL(e);f.searchParams.set("limit",s.toString()),f.searchParams.set("offset",i.toString());for(const[l,A]of Object.entries(o))A!==void 0&&f.searchParams.set(l,String(A));const{data:a}=await T.get(f.toString()),u=t(a);if(r=r.concat(u),i+=u.length,c&&r.length>=c){r=r.slice(0,c);break}d=u.length>0&&(a.has_more??!1)}return r}const y=N.BTC_DECIMALS;var E=(e=>(e.NOTARIZATION_STATUS_UNSPECIFIED="NOTARIZATION_STATUS_UNSPECIFIED",e.NOTARIZATION_STATUS_PENDING="NOTARIZATION_STATUS_PENDING",e.NOTARIZATION_STATUS_GMP_PENDING="NOTARIZATION_STATUS_GMP_PENDING",e.NOTARIZATION_STATUS_SUBMITTED="NOTARIZATION_STATUS_SUBMITTED",e.NOTARIZATION_STATUS_SESSION_APPROVED="NOTARIZATION_STATUS_SESSION_APPROVED",e.NOTARIZATION_STATUS_FAILED="NOTARIZATION_STATUS_FAILED",e.NOTARIZATION_STATUS_GMP_HANDLED="NOTARIZATION_STATUS_GMP_HANDLED",e))(E||{}),w=(e=>(e.SESSION_STATE_UNSPECIFIED="SESSION_STATE_UNSPECIFIED",e.SESSION_STATE_PENDING="SESSION_STATE_PENDING",e.SESSION_STATE_COMPLETED="SESSION_STATE_COMPLETED",e.SESSION_STATE_EXPIRED="SESSION_STATE_EXPIRED",e))(w||{});async function P({address:e,env:t}){const{baseApiUrl:o}=m.getApiConfig(t);e.startsWith("0x")&&e.slice(2).length===63&&(e=`0x0${e.slice(2)}`);const s=new URL(`/api/v1/address/outputs-v2/${e}`,o);return(await b({endpoint:s,extractItems:r=>(r==null?void 0:r.outputs)??[]})).map(r=>H(r,t,e))}async function B({address:e,env:t}){const{baseApiUrl:o}=m.getApiConfig(t),s=new URL(`/api/v1/address/native-deposits/${e}`,o);return(await b({endpoint:s,extractItems:r=>(r==null?void 0:r.deposits)??[]})).map(r=>Z(r,t))}function H(e,t,o){return{isNative:!1,txHash:e.txid,eventIndex:e.index?Number(e.index):0,amount:N.fromSatoshi(e.value),tokenAmount:e.token_amount?k.fromBaseDenomination(e.token_amount,y):void 0,depositAddress:e.address,toAddress:o,toChainId:p.getChainIdByName(e.to_chain,t),blockHeight:e.block_height?Number(e.block_height):void 0,blockTime:e.block_time?Number(e.block_time):void 0,payloadHash:e.payload_hash,rawPayload:e.raw_payload,proof:e.proof,sessionId:e.session_id,notarizationStatus:e.notarization_status,sessionState:e.session_state,claimTxHash:e.claim_tx,isClaimed:!!e.claim_tx,sanctioned:e.sanctioned,toTokenAddress:e.token_address,toToken:n.getTokenByAddress(e.token_address,p.getChainIdByName(e.to_chain,t),t,n.AddressKind.Adapter),auxVersion:e.aux_version,notarizationWaitDur:e.notarization_wait_dur?Number(e.notarization_wait_dur):void 0}}function Z(e,t){return{isNative:!0,txHash:e.tx_hash,eventIndex:e.event_index,amount:k.fromBaseDenomination(e.amount,y),tokenAmount:void 0,fromAddress:e.from_address,toAddress:e.to_address,toTokenAddress:e.to_token_address,toToken:n.getTokenByAddress(e.to_token_address,p.getChainIdByName(e.to_blockchain,t),t,n.AddressKind.Adapter),toChainId:p.getChainIdByName(e.to_blockchain,t),fromChainId:p.getChainIdByName(e.from_blockchain,t),blockHeight:e.block_height?Number(e.block_height):void 0,blockTime:e.block_time?Math.floor(new Date(e.block_time).getTime()/1e3):void 0,payloadHash:e.payload_hash,rawPayload:e.raw_payload,proof:e.proof,sessionId:e.session_id,notarizationStatus:e.notarization_status,sessionState:e.session_state,claimTxHash:e.claim_tx,isClaimed:!!e.claim_tx,sanctioned:e.sanctioned}}async function q({address:e,env:t}){const o=await Promise.allSettled([P({address:e,env:t}),B({address:e,env:t})]);let s=[],c=[];return o.forEach((i,d)=>{i.status==="fulfilled"?d===0?s=i.value:c=i.value:console.error(d===0?"Failed to fetch direct BTC deposits:":"Failed to fetch native deposits:",i.reason)}),[...s,...c].sort((i,d)=>{const f=i.blockTime??0;return(d.blockTime??0)-f})}const G=2;function _(e,t=0){return U(Number(e)||t)}function D(e){return Object.entries(e||{}).reduce((t,[o,s])=>(t[o]=_(s).toNumber(),t),{})}function x(e,t,o=h.p){const{baseApiUrl:s}=m.getApiConfig(o);if(!s)throw new Error(`Could not determine the API endpoint for the provided environment: ${o||h.p}`);switch(e){case 1:return`${s}/api/v1/referral-system/season-1/points/${t}`;case 2:return`${s}/api/v1/referral-system/season-2/points/${t}`;default:throw new Error(`Invalid Lux season: ${e}`)}}async function F({address:e,env:t}){const{data:o}=await T.get(x(1,e,t)),s=_(o.referee_points).plus(_(o.referrals_points));return{holdingPoints:_(o.holding_points).toNumber(),protocolPoints:_(o.protocol_points).toNumber(),referralPoints:s.toNumber(),okxPoints:_(o.okx_campaign).toNumber(),flashEvent1Points:_(o.flash_event).toNumber(),flashEvent2Points:_(o.flash_event2).toNumber(),totalPoints:_(o.total).toNumber(),protocolPointsBreakdown:D(o.protocol_points_map),badgesPoints:_(o.badges).toNumber(),totalWithoutBadgesPoints:_(o.total_without_badges).toNumber()}}async function j({address:e,env:t}){const{data:o}=await T.get(x(2,e,t));return{holdingPoints:_(o.holding_points).toNumber(),protocolPoints:_(o.protocol_points).toNumber(),referralPoints:_(o.referrals_points).toNumber(),refereePoints:_(o.referee_points).toNumber(),badgesPoints:_(o.badge_points).toNumber(),checkinPoints:_(o.checkin_points).toNumber(),totalPoints:_(o.total).toNumber(),protocolPointsBreakdown:D(o.protocol_points_map),totalWithoutBadgesPoints:_(o.total).toNumber()}}async function I({address:e,env:t,season:o=G}){return o===2?j({address:e,env:t}):F({address:e,env:t})}const z=e=>I({...e,season:1}),K=e=>I({...e,season:2});var O=(e=>(e.Completed="Completed",e.Pending="Pending",e))(O||{});async function v({address:e,env:t=h.p,options:o}){if(!e)throw new Error("No address specified.");const{baseApiUrl:s}=m.getApiConfig(t);e.startsWith("0x")&&e.slice(2).length===63&&(e=`0x0${e.slice(2)}`);const c=new URL(`/api/v1/address/unstakes/${e}`,s);return(await b({endpoint:c,extractItems:i=>(i==null?void 0:i.unstakes)??[],query:{show_redeems:o!=null&&o.show_redeems?"true":void 0,show_unstakes:o!=null&&o.show_unstakes?"true":void 0,to_native:o!=null&&o.to_native?"true":void 0}})).map(i=>W(i,t))}function W(e,t=h.p){var f,a,u;const o=!!(e.to_chain&&e.to_address);let s=e.to_address;if(!o&&e.output_script&&!s)try{s=S.address.fromOutputScript(Buffer.from(e.output_script.replace(/^0x/,""),"hex"),t==="prod"?S.networks.bitcoin:S.networks.testnet)}catch{s=void 0}else s!=null&&s.startsWith("0x")&&(s=g.trim(s));const c=e.payout_txid?"Completed":"Pending",r=o?n.Token.BTCb:void 0,i=e.to_chain?e.to_chain===p.BlockchainIdentifier.bitcoin||e.to_chain===p.BlockchainIdentifier.bitcoinOld?"bitcoin":p.getChainIdByName(e.to_chain,t):void 0;let d;if(r){if(n.isValidChain(i)){let l=(u=(a=(f=n.TOKEN_ADDRESSES)==null?void 0:f[r])==null?void 0:a[t])==null?void 0:u[i];l&&(l=typeof l=="string"?l:l[n.AddressKind.Adapter]),d=l}n.isSolanaChain(i)&&(d=n.getSolanaTokenAddress(i,t)),n.isSuiChain(i)&&(d=n.getSuiTokenAddress(i,t)),n.isStarknetChainId(i)&&(d=n.getStarknetTokenAddress(i,t))}return{isNative:o,txHash:e.tx_hash,fromChainId:p.getChainIdByName(e.blockchain,t),toChainId:i,blockHeight:Number(e.block_height),blockTime:Number(e.block_time),fromAddress:e.from_address,toAddress:s,amount:N.fromSatoshi(e.amount),payoutTxHash:e.payout_txid,payoutTxIndex:e.payout_index?Number(e.payout_index):void 0,payoutTxStatus:c,sanctioned:e.sanctioned,proof:e.proof,rawPayload:e.payload,toToken:r,toTokenAddress:d,notarizationStatus:e.notarization_status,sessionState:e.session_state,claimTxHash:e.claim_tx,fromTokenAddress:e.from_token_address}}async function V({address:e,env:t=h.p,options:o}){return v({address:e,env:t,options:o})}const X="0x00";async function Y({signature:e,typedData:t,env:o}){const{baseApiUrl:s}=m.getApiConfig(o);try{const{data:c}=await T.post(`${s}/api/v1/claimer/save-stake-and-bake-signature`,null,{params:{typed_data:t,signature:e||X}});return c.status}catch(c){const r=k.getErrorMessage(c);throw new Error(r)}}async function J({address:e,env:t}){const{baseApiUrl:o}=m.getApiConfig(t),{data:s}=await T.get(`${o}/api/v1/address/exists/${e}`);return{hasDepositAddress:!!s.exists,referrer:s.referrer}}class Q{constructor(t){this.sdk=t}async lookupReferrer({address:t}){return J({address:t,env:this.sdk.config.env})}}exports.ENotarizationStatus=E;exports.ESessionState=w;exports.PayoutTxStatus=O;exports.ReferralsClient=Q;exports.fetchBTCbDeposits=B;exports.fetchDirectDeposits=P;exports.fetchUnstakesByAddress=v;exports.getDepositBtcAddress=$;exports.getDepositBtcAddresses=M;exports.getDepositsByAddress=q;exports.getLuxSeason1Points=z;exports.getLuxSeason2Points=K;exports.getPointsByAddress=I;exports.getUnstakesByAddress=V;exports.storeStakeAndBakeSignature=Y;
2
- //# sourceMappingURL=ReferralsClient-D8dHEk_X.cjs.map
1
+ "use strict";const g=require("viem"),p=require("./blockchain-identifier-DWfC3Es2.cjs"),n=require("./token-addresses-C7H9E4qz.cjs"),k=require("./tokens-DEYY7W7O.cjs"),T=require("axios"),m=require("./api-config-DkXqqfCK.cjs"),N=require("./satoshi-CZEsHl5X.cjs"),h=require("./index-BKzxeh1Y.cjs"),U=require("bignumber.js"),L=require("bitcoinjs-lib");function R(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const s=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,s.get?s:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const S=R(L);async function C({address:e,chainId:t,env:o,limit:s,offset:c,partnerId:r}){var u;const{baseApiUrl:i}=m.getApiConfig(o),d=p.getChainNameById(t);d===p.BlockchainIdentifier.starknet&&(e=g.pad(e,{size:32}));const f={asc:!1,limit:s,offset:c,referralId:r||"lombard"};for(const[l,A]of Object.entries(f))A===void 0&&delete f[l];const a=`api/v1/address/destination/${d}/${e}`;try{const{data:l}=await T.get(a,{baseURL:i,params:f});return l.addresses||[]}catch(l){if(T.isAxiosError(l)){const A=(u=l.response)==null?void 0:u.data.message;throw new Error(A)}}}async function $({address:e,chainId:t,env:o,partnerId:s,token:c=n.Token.LBTC}){const r=await C({address:e,chainId:t,env:o,partnerId:s});let i;if(![n.Token.LBTC,n.Token.BTCK,n.Token.BTCb].includes(c))throw new Error("Unsupported token");let d;try{if(n.isValidChain(t)&&(d={token_address:(await k.getTokenContractInfo(c,t,o,n.AddressKind.Adapter)).address.toLowerCase()}),n.isSuiChain(t)){const a=n.getSuiTokenAddress(t,o);a&&(d={token_address:a.toLowerCase()})}if(n.isSolanaChain(t)){const a=c===n.Token.BTCb?n.Token.BTCb:n.Token.LBTC,u=n.getSolanaTokenAddress(t,o,a);u&&(d={token_address:u.toLowerCase()})}if(n.isStarknetChainId(t)){const a=n.getStarknetTokenAddress(t,o,"assetRouter");a&&(d={token_address:a.toLowerCase()})}}catch{}n.isStarknetChainId(t)&&(e=g.pad(e,{size:32}).toLowerCase());const f=(r||[]).filter(a=>a.deposit_metadata.to_blockchain.toLowerCase()===p.getChainNameById(t).toLowerCase()&&a.deposit_metadata.to_address.toLowerCase()===e.toLowerCase()).filter(a=>{var l;if(!d)return!1;let u=((l=a.deposit_metadata.token_address)==null?void 0:l.toLowerCase())===d.token_address;return d.aux_version!=null&&(u=u&&a.deposit_metadata.aux_version===d.aux_version),c===n.Token.LBTC&&(u=u||!a.deposit_metadata.token_address),n.isSolanaChain(t)&&!u&&!a.deposit_metadata.token_address&&(c===n.Token.BTCb||c===n.Token.BTCK?u=a.deposit_metadata.aux_version!=null:c===n.Token.LBTC&&(u=a.deposit_metadata.aux_version==null)),u});if(f&&f.length>0){const a=f.reduce((u,l)=>l.created_at>u.created_at?l:u,f[0]);a.deprecated||(i=a.btc_address)}if(!i)throw new Error(`No deposit address found for ${e} on chain ${t}`);return i}async function M(e){return await C(e)}async function b({endpoint:e,extractItems:t,query:o={},pageSize:s=1e3,maxRecords:c}){let r=[],i=0,d=!0;for(;d;){const f=new URL(e);f.searchParams.set("limit",s.toString()),f.searchParams.set("offset",i.toString());for(const[l,A]of Object.entries(o))A!==void 0&&f.searchParams.set(l,String(A));const{data:a}=await T.get(f.toString()),u=t(a);if(r=r.concat(u),i+=u.length,c&&r.length>=c){r=r.slice(0,c);break}d=u.length>0&&(a.has_more??!1)}return r}const y=N.BTC_DECIMALS;var E=(e=>(e.NOTARIZATION_STATUS_UNSPECIFIED="NOTARIZATION_STATUS_UNSPECIFIED",e.NOTARIZATION_STATUS_PENDING="NOTARIZATION_STATUS_PENDING",e.NOTARIZATION_STATUS_GMP_PENDING="NOTARIZATION_STATUS_GMP_PENDING",e.NOTARIZATION_STATUS_SUBMITTED="NOTARIZATION_STATUS_SUBMITTED",e.NOTARIZATION_STATUS_SESSION_APPROVED="NOTARIZATION_STATUS_SESSION_APPROVED",e.NOTARIZATION_STATUS_FAILED="NOTARIZATION_STATUS_FAILED",e.NOTARIZATION_STATUS_GMP_HANDLED="NOTARIZATION_STATUS_GMP_HANDLED",e))(E||{}),w=(e=>(e.SESSION_STATE_UNSPECIFIED="SESSION_STATE_UNSPECIFIED",e.SESSION_STATE_PENDING="SESSION_STATE_PENDING",e.SESSION_STATE_COMPLETED="SESSION_STATE_COMPLETED",e.SESSION_STATE_EXPIRED="SESSION_STATE_EXPIRED",e))(w||{});async function P({address:e,env:t}){const{baseApiUrl:o}=m.getApiConfig(t);e.startsWith("0x")&&e.slice(2).length===63&&(e=`0x0${e.slice(2)}`);const s=new URL(`/api/v1/address/outputs-v2/${e}`,o);return(await b({endpoint:s,extractItems:r=>(r==null?void 0:r.outputs)??[]})).map(r=>H(r,t,e))}async function B({address:e,env:t}){const{baseApiUrl:o}=m.getApiConfig(t),s=new URL(`/api/v1/address/native-deposits/${e}`,o);return(await b({endpoint:s,extractItems:r=>(r==null?void 0:r.deposits)??[]})).map(r=>Z(r,t))}function H(e,t,o){return{isNative:!1,txHash:e.txid,eventIndex:e.index?Number(e.index):0,amount:N.fromSatoshi(e.value),tokenAmount:e.token_amount?k.fromBaseDenomination(e.token_amount,y):void 0,depositAddress:e.address,toAddress:o,toChainId:p.getChainIdByName(e.to_chain,t),blockHeight:e.block_height?Number(e.block_height):void 0,blockTime:e.block_time?Number(e.block_time):void 0,payloadHash:e.payload_hash,rawPayload:e.raw_payload,proof:e.proof,sessionId:e.session_id,notarizationStatus:e.notarization_status,sessionState:e.session_state,claimTxHash:e.claim_tx,isClaimed:!!e.claim_tx,sanctioned:e.sanctioned,toTokenAddress:e.token_address,toToken:n.getTokenByAddress(e.token_address,p.getChainIdByName(e.to_chain,t),t,n.AddressKind.Adapter),auxVersion:e.aux_version,notarizationWaitDur:e.notarization_wait_dur?Number(e.notarization_wait_dur):void 0}}function Z(e,t){return{isNative:!0,txHash:e.tx_hash,eventIndex:e.event_index,amount:k.fromBaseDenomination(e.amount,y),tokenAmount:void 0,fromAddress:e.from_address,toAddress:e.to_address,toTokenAddress:e.to_token_address,toToken:n.getTokenByAddress(e.to_token_address,p.getChainIdByName(e.to_blockchain,t),t,n.AddressKind.Adapter),toChainId:p.getChainIdByName(e.to_blockchain,t),fromChainId:p.getChainIdByName(e.from_blockchain,t),blockHeight:e.block_height?Number(e.block_height):void 0,blockTime:e.block_time?Math.floor(new Date(e.block_time).getTime()/1e3):void 0,payloadHash:e.payload_hash,rawPayload:e.raw_payload,proof:e.proof,sessionId:e.session_id,notarizationStatus:e.notarization_status,sessionState:e.session_state,claimTxHash:e.claim_tx,isClaimed:!!e.claim_tx,sanctioned:e.sanctioned}}async function q({address:e,env:t}){const o=await Promise.allSettled([P({address:e,env:t}),B({address:e,env:t})]);let s=[],c=[];return o.forEach((i,d)=>{i.status==="fulfilled"?d===0?s=i.value:c=i.value:console.error(d===0?"Failed to fetch direct BTC deposits:":"Failed to fetch native deposits:",i.reason)}),[...s,...c].sort((i,d)=>{const f=i.blockTime??0;return(d.blockTime??0)-f})}const G=2;function _(e,t=0){return U(Number(e)||t)}function D(e){return Object.entries(e||{}).reduce((t,[o,s])=>(t[o]=_(s).toNumber(),t),{})}function x(e,t,o=h.p){const{baseApiUrl:s}=m.getApiConfig(o);if(!s)throw new Error(`Could not determine the API endpoint for the provided environment: ${o||h.p}`);switch(e){case 1:return`${s}/api/v1/referral-system/season-1/points/${t}`;case 2:return`${s}/api/v1/referral-system/season-2/points/${t}`;default:throw new Error(`Invalid Lux season: ${e}`)}}async function F({address:e,env:t}){const{data:o}=await T.get(x(1,e,t)),s=_(o.referee_points).plus(_(o.referrals_points));return{holdingPoints:_(o.holding_points).toNumber(),protocolPoints:_(o.protocol_points).toNumber(),referralPoints:s.toNumber(),okxPoints:_(o.okx_campaign).toNumber(),flashEvent1Points:_(o.flash_event).toNumber(),flashEvent2Points:_(o.flash_event2).toNumber(),totalPoints:_(o.total).toNumber(),protocolPointsBreakdown:D(o.protocol_points_map),badgesPoints:_(o.badges).toNumber(),totalWithoutBadgesPoints:_(o.total_without_badges).toNumber()}}async function j({address:e,env:t}){const{data:o}=await T.get(x(2,e,t));return{holdingPoints:_(o.holding_points).toNumber(),protocolPoints:_(o.protocol_points).toNumber(),referralPoints:_(o.referrals_points).toNumber(),refereePoints:_(o.referee_points).toNumber(),badgesPoints:_(o.badge_points).toNumber(),checkinPoints:_(o.checkin_points).toNumber(),totalPoints:_(o.total).toNumber(),protocolPointsBreakdown:D(o.protocol_points_map),totalWithoutBadgesPoints:_(o.total).toNumber()}}async function I({address:e,env:t,season:o=G}){return o===2?j({address:e,env:t}):F({address:e,env:t})}const z=e=>I({...e,season:1}),K=e=>I({...e,season:2});var O=(e=>(e.Completed="Completed",e.Pending="Pending",e))(O||{});async function v({address:e,env:t=h.p,options:o}){if(!e)throw new Error("No address specified.");const{baseApiUrl:s}=m.getApiConfig(t);e.startsWith("0x")&&e.slice(2).length===63&&(e=`0x0${e.slice(2)}`);const c=new URL(`/api/v1/address/unstakes/${e}`,s);return(await b({endpoint:c,extractItems:i=>(i==null?void 0:i.unstakes)??[],query:{show_redeems:o!=null&&o.show_redeems?"true":void 0,show_unstakes:o!=null&&o.show_unstakes?"true":void 0,to_native:o!=null&&o.to_native?"true":void 0}})).map(i=>W(i,t))}function W(e,t=h.p){var f,a,u;const o=!!(e.to_chain&&e.to_address);let s=e.to_address;if(!o&&e.output_script&&!s)try{s=S.address.fromOutputScript(Buffer.from(e.output_script.replace(/^0x/,""),"hex"),t==="prod"?S.networks.bitcoin:S.networks.testnet)}catch{s=void 0}else s!=null&&s.startsWith("0x")&&(s=g.trim(s));const c=e.payout_txid?"Completed":"Pending",r=o?n.Token.BTCb:void 0,i=e.to_chain?e.to_chain===p.BlockchainIdentifier.bitcoin||e.to_chain===p.BlockchainIdentifier.bitcoinOld?"bitcoin":p.getChainIdByName(e.to_chain,t):void 0;let d;if(r){if(n.isValidChain(i)){let l=(u=(a=(f=n.TOKEN_ADDRESSES)==null?void 0:f[r])==null?void 0:a[t])==null?void 0:u[i];l&&(l=typeof l=="string"?l:l[n.AddressKind.Adapter]),d=l}n.isSolanaChain(i)&&(d=n.getSolanaTokenAddress(i,t)),n.isSuiChain(i)&&(d=n.getSuiTokenAddress(i,t)),n.isStarknetChainId(i)&&(d=n.getStarknetTokenAddress(i,t))}return{isNative:o,txHash:e.tx_hash,fromChainId:p.getChainIdByName(e.blockchain,t),toChainId:i,blockHeight:Number(e.block_height),blockTime:Number(e.block_time),fromAddress:e.from_address,toAddress:s,amount:N.fromSatoshi(e.amount),payoutTxHash:e.payout_txid,payoutTxIndex:e.payout_index?Number(e.payout_index):void 0,payoutTxStatus:c,sanctioned:e.sanctioned,proof:e.proof,rawPayload:e.payload,toToken:r,toTokenAddress:d,notarizationStatus:e.notarization_status,sessionState:e.session_state,claimTxHash:e.claim_tx,fromTokenAddress:e.from_token_address}}async function V({address:e,env:t=h.p,options:o}){return v({address:e,env:t,options:o})}const X="0x00";async function Y({signature:e,typedData:t,env:o}){const{baseApiUrl:s}=m.getApiConfig(o);try{const{data:c}=await T.post(`${s}/api/v1/claimer/save-stake-and-bake-signature`,null,{params:{typed_data:t,signature:e||X}});return c.status}catch(c){const r=k.getErrorMessage(c);throw new Error(r)}}async function J({address:e,env:t}){const{baseApiUrl:o}=m.getApiConfig(t),{data:s}=await T.get(`${o}/api/v1/address/exists/${e}`);return{hasDepositAddress:!!s.exists,referrer:s.referrer}}class Q{constructor(t){this.sdk=t}async lookupReferrer({address:t}){return J({address:t,env:this.sdk.config.env})}}exports.ENotarizationStatus=E;exports.ESessionState=w;exports.PayoutTxStatus=O;exports.ReferralsClient=Q;exports.fetchBTCbDeposits=B;exports.fetchDirectDeposits=P;exports.fetchUnstakesByAddress=v;exports.getDepositBtcAddress=$;exports.getDepositBtcAddresses=M;exports.getDepositsByAddress=q;exports.getLuxSeason1Points=z;exports.getLuxSeason2Points=K;exports.getPointsByAddress=I;exports.getUnstakesByAddress=V;exports.storeStakeAndBakeSignature=Y;
2
+ //# sourceMappingURL=ReferralsClient-o-3AUm7s.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferralsClient-o-3AUm7s.cjs","sources":["../../src/api-functions/getDepositBtcAddress/make-request.ts","../../src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts","../../src/utils/pagination.ts","../../src/api-functions/getDepositsByAddress/getDepositsByAddress.ts","../../src/api-functions/getPointsByAddress/getPointsByAddress.ts","../../src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts","../../src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts","../../src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts","../../src/referrals/ReferralsClient.ts"],"sourcesContent":["import axios from 'axios';\nimport { Address, pad } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainNameById,\n} from '../../common/blockchain-identifier';\nimport {\n IApiError,\n IDepositAddressesResponse,\n IGetDepositBtcAddressesParameters,\n} from './types';\n\nexport async function makeRequest({\n address,\n chainId,\n env,\n limit,\n offset,\n partnerId,\n}: IGetDepositBtcAddressesParameters) {\n const { baseApiUrl } = getApiConfig(env);\n\n // throws an error if `chainId` is unknown\n const destinationBlockchain = getChainNameById(chainId);\n if (destinationBlockchain === BlockchainIdentifier.starknet) {\n address = pad(address as Address, { size: 32 });\n }\n\n const params = {\n asc: false,\n limit,\n offset,\n referralId: partnerId || 'lombard',\n };\n\n // remove undefined fields, undefined limit and offset params cause error\n for (const [k, v] of Object.entries(params)) {\n if (v === undefined) {\n delete params[k as keyof typeof params];\n }\n }\n\n const url = `api/v1/address/destination/${destinationBlockchain}/${address}`;\n try {\n const { data } = await axios.get<IDepositAddressesResponse>(url, {\n baseURL: baseApiUrl,\n params,\n });\n\n return data.addresses || [];\n } catch (err) {\n if (axios.isAxiosError<IApiError>(err)) {\n const message = err.response?.data.message;\n throw new Error(message);\n }\n }\n}\n","import { Address, pad } from 'viem';\n\nimport { getChainNameById } from '../../common/blockchain-identifier';\nimport {\n isSolanaChain,\n isStarknetChainId,\n isSuiChain,\n isValidChain,\n} from '../../common/chains';\nimport {\n AddressKind,\n getSolanaTokenAddress,\n getStarknetTokenAddress,\n getSuiTokenAddress,\n Token,\n} from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { makeRequest } from './make-request';\nimport type {\n IGetDepositBtcAddressesParameters,\n IGetDepositBtcAddressParameters,\n} from './types';\n\n/**\n * Returns the current address for depositing BTC by given parameters.\n *\n * @throws {Error} - Throws an error if no address found or the provided chain id is not supported.\n */\nexport async function getDepositBtcAddress({\n address,\n chainId,\n env,\n partnerId,\n token: tokenParam = Token.LBTC,\n}: IGetDepositBtcAddressParameters) {\n const _addresses = await makeRequest({\n address,\n chainId,\n env,\n partnerId,\n });\n\n let depositAddress: string | undefined = undefined;\n\n if (![Token.LBTC, Token.BTCK, Token.BTCb].includes(tokenParam)) {\n throw new Error('Unsupported token');\n }\n\n // Filter deposit addresses by the destination token\n let tokenAddressFilter:\n | { token_address: string; aux_version?: number }\n | undefined = undefined;\n try {\n if (isValidChain(chainId)) {\n const tokenContractInfo = await getTokenContractInfo(\n tokenParam,\n chainId,\n env,\n AddressKind.Adapter,\n );\n tokenAddressFilter = {\n token_address: tokenContractInfo.address.toLowerCase(),\n };\n }\n\n if (isSuiChain(chainId)) {\n const tokenAddress = getSuiTokenAddress(chainId, env);\n if (tokenAddress) {\n tokenAddressFilter = {\n token_address: tokenAddress.toLowerCase(),\n };\n }\n }\n\n if (isSolanaChain(chainId)) {\n const solanaToken = tokenParam === Token.BTCb ? Token.BTCb : Token.LBTC;\n const tokenAddress = getSolanaTokenAddress(chainId, env, solanaToken);\n if (tokenAddress) {\n tokenAddressFilter = {\n token_address: tokenAddress.toLowerCase(),\n };\n }\n }\n\n if (isStarknetChainId(chainId)) {\n // api returns the address of the asset router contract\n const tokenAddress = getStarknetTokenAddress(chainId, env, 'assetRouter');\n if (tokenAddress) {\n tokenAddressFilter = {\n token_address: tokenAddress.toLowerCase(),\n };\n }\n }\n } catch {\n // NOOP\n }\n\n if (isStarknetChainId(chainId)) {\n address = pad(address as Address, { size: 32 }).toLowerCase();\n }\n\n const addresses = (_addresses || [])\n .filter(\n (a) =>\n // filter by chain id\n a.deposit_metadata.to_blockchain.toLowerCase() ===\n getChainNameById(chainId).toLowerCase() &&\n // filter by address\n a.deposit_metadata.to_address.toLowerCase() === address.toLowerCase(),\n )\n .filter((a) => {\n if (!tokenAddressFilter) {\n return false;\n }\n\n // check if token addresses are matched\n let isForToken =\n a.deposit_metadata.token_address?.toLowerCase() ===\n tokenAddressFilter.token_address;\n // check if aux version is matched (if provided)\n if (tokenAddressFilter.aux_version != null) {\n isForToken =\n isForToken &&\n a.deposit_metadata.aux_version === tokenAddressFilter.aux_version;\n }\n\n // token_address can also be empty (null) when the address is for LBTC.\n // nosemgrep: codacy.tools-configs.rules_lgpl_javascript_crypto_rule-node-timing-attack -- comparing Token enum values, not secrets\n if (tokenParam === Token.LBTC) {\n isForToken = isForToken || !a.deposit_metadata.token_address;\n }\n\n // Solana backend may omit token_address and use aux_version instead.\n if (\n isSolanaChain(chainId) &&\n !isForToken &&\n !a.deposit_metadata.token_address\n ) {\n if (tokenParam === Token.BTCb || tokenParam === Token.BTCK) {\n isForToken = a.deposit_metadata.aux_version != null;\n } else if (tokenParam === Token.LBTC) {\n isForToken = a.deposit_metadata.aux_version == null;\n }\n }\n\n // Get only the addresses for the specified token.\n return isForToken;\n });\n\n if (addresses && addresses.length > 0) {\n const mostRecentAddress = addresses.reduce((mostRecent, cur) => {\n if (cur.created_at > mostRecent.created_at) {\n return cur;\n }\n return mostRecent;\n }, addresses[0]);\n\n if (!mostRecentAddress.deprecated) {\n depositAddress = mostRecentAddress.btc_address;\n }\n }\n\n if (!depositAddress) {\n throw new Error(\n `No deposit address found for ${address} on chain ${chainId}`,\n );\n }\n\n return depositAddress;\n}\n\n/**\n * Returns the addresses for depositing BTC by given parameters.\n * @throws {Error} - Throws an error if chain id is not supported.\n */\nexport async function getDepositBtcAddresses(\n parameters: IGetDepositBtcAddressesParameters,\n) {\n const addresses = await makeRequest(parameters);\n return addresses;\n}\n","import axios from 'axios';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\ntype FetchAllPaginatedParameters<T> = {\n /** The API endpoint. */\n endpoint: string | URL;\n /** Function to extract items array from API response. */\n extractItems: (data: unknown) => T[];\n /** The additional query parameters. */\n query?: Record<string, string | undefined>;\n /** The page size, default: 1000 */\n pageSize?: number;\n /** The maximum amount of expected records. */\n maxRecords?: number;\n};\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Generic helper to fetch all paginated items from an API endpoint.\n * Automatically handles `limit`, `offset` and the `has_more` flag.\n * If `has_more` is missing, pagination stops.\n *\n * @template T - Type of individual item\n * @param {FetchAllPaginatedParameters<T>} params - Parameters for fetching all items\n\n *\n * @returns {Promise<T[]>} - All items fetched across pages\n */\nexport async function fetchAllPaginated<T>({\n endpoint,\n extractItems,\n query = {},\n pageSize = 1_000,\n maxRecords,\n}: FetchAllPaginatedParameters<T>): Promise<T[]> {\n let allItems: T[] = [];\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n const url = new URL(endpoint);\n\n url.searchParams.set('limit', pageSize.toString());\n url.searchParams.set('offset', offset.toString());\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) url.searchParams.set(key, String(value));\n }\n\n const { data } = await axios.get(url.toString());\n const items = extractItems(data);\n\n allItems = allItems.concat(items);\n offset += items.length;\n\n if (maxRecords && allItems.length >= maxRecords) {\n allItems = allItems.slice(0, maxRecords);\n break;\n }\n\n hasMore = items.length > 0 && (data.has_more ?? false);\n }\n\n return allItems;\n}\n","import { Env } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { getChainIdByName } from '../../common/blockchain-identifier';\nimport {\n ChainId,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport {\n AddressKind,\n getTokenByAddress,\n Token,\n} from '../../tokens/token-addresses';\nimport { fromBaseDenomination } from '../../tokens/tokens';\nimport { fetchAllPaginated } from '../../utils/pagination';\nimport { BTC_DECIMALS, fromSatoshi } from '../../utils/satoshi';\n\n/** The default number of decimals for the deposit amount (value). */\nconst DECIMALS = BTC_DECIMALS;\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\ntype Address = string;\n\n/**\n * Enum representing the notarization status of a deposit transaction.\n */\nexport enum ENotarizationStatus {\n /** Status is unspecified or unknown */\n NOTARIZATION_STATUS_UNSPECIFIED = 'NOTARIZATION_STATUS_UNSPECIFIED',\n\n /** Initial status when a deposit transaction is created but not yet processed */\n NOTARIZATION_STATUS_PENDING = 'NOTARIZATION_STATUS_PENDING',\n\n /** Status when a deposit transaction is pending GMP processing */\n NOTARIZATION_STATUS_GMP_PENDING = 'NOTARIZATION_STATUS_GMP_PENDING',\n\n /** The deposit has been submitted for notarization */\n NOTARIZATION_STATUS_SUBMITTED = 'NOTARIZATION_STATUS_SUBMITTED',\n\n /** The notarization session was approved successfully */\n NOTARIZATION_STATUS_SESSION_APPROVED = 'NOTARIZATION_STATUS_SESSION_APPROVED',\n\n /** The notarization session failed */\n NOTARIZATION_STATUS_FAILED = 'NOTARIZATION_STATUS_FAILED',\n\n /** The notarization session was handled by GMP */\n NOTARIZATION_STATUS_GMP_HANDLED = 'NOTARIZATION_STATUS_GMP_HANDLED',\n}\n\n/**\n * Enum representing the state of a notarization session.\n */\nexport enum ESessionState {\n /** Session state is unspecified or unknown */\n SESSION_STATE_UNSPECIFIED = 'SESSION_STATE_UNSPECIFIED',\n\n /** Session is currently pending */\n SESSION_STATE_PENDING = 'SESSION_STATE_PENDING',\n\n /** Session has completed successfully */\n SESSION_STATE_COMPLETED = 'SESSION_STATE_COMPLETED',\n\n /** Session has expired without completion */\n SESSION_STATE_EXPIRED = 'SESSION_STATE_EXPIRED',\n}\n\nexport interface NativeDeposit {\n /** Transaction hash on the source blockchain */\n tx_hash: string;\n\n /** Event index inside the transaction (for multi-event transactions) */\n event_index: number;\n\n /** Source blockchain identifier (e.g., BLOCKCHAIN_KATANA) */\n from_blockchain: string;\n\n /** Destination blockchain identifier */\n to_blockchain: string;\n\n /** Sender address on the source chain */\n from_address: string;\n\n /** Receiver address on the destination chain */\n to_address: string;\n\n /** Destination token contract address (if applicable) */\n to_token_address: string;\n\n /** Block height of the source chain confirmation */\n block_height: string;\n\n /** Block time of the source chain confirmation (ISO 8601) */\n block_time: string;\n\n /** Amount deposited (string to preserve precision) */\n amount: string;\n\n /** Hash of the payload that proves the deposit details */\n payload_hash: string;\n\n /** Raw payload bytes (hex-encoded) */\n raw_payload: string;\n\n /** Cryptographic proof (hex-encoded) */\n proof: string;\n\n /** ID of the notarization session linked to this deposit */\n session_id: string;\n\n /** Current notarization status of this deposit */\n notarization_status: ENotarizationStatus;\n\n /** Current session state of this deposit */\n session_state: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed */\n claim_tx?: string;\n\n /** True if the deposit is sanctioned */\n sanctioned?: boolean;\n}\n\n/** Top-level response from the Native Deposits API */\nexport interface NativeDepositsResponse {\n /** List of native deposit records */\n deposits: NativeDeposit[];\n\n /** True if there are more deposits available */\n has_more: boolean;\n}\n\nexport interface DirectDeposit {\n /** Transaction ID on the source chain */\n txid: string;\n\n /** Event index inside the transaction (useful for multi-event transactions) */\n index: string;\n\n /** Block height of the source chain confirmation */\n block_height: string;\n\n /** Amount deposited (string to preserve precision) */\n value: string;\n\n /** Destination address (EVM or BTC) */\n address: string;\n\n /** Hash of the payload proving the deposit */\n payload_hash: string;\n\n /** Raw payload bytes (hex-encoded) */\n raw_payload: string;\n\n /** Cryptographic proof (hex-encoded) */\n proof: string;\n\n /** Notarization session ID */\n session_id: string;\n\n /** Current notarization status */\n notarization_status: ENotarizationStatus;\n\n /** Current session state */\n session_state: ESessionState;\n\n /** Destination blockchain identifier */\n to_chain: string;\n\n /** Claim transaction hash on the destination chain, if claimed */\n claim_tx?: string;\n\n /** True if the deposit is sanctioned */\n sanctioned?: boolean;\n\n /** Block time of the source chain confirmation (timestamp as string) */\n block_time: string;\n\n /** Notarization wait duration (optional) */\n notarization_wait_dur?: string;\n\n /** Token address for the deposit */\n token_address?: string;\n\n /** Auxiliary version (if applicable) */\n aux_version?: number;\n\n /** Amount minted */\n token_amount?: string;\n\n /** GMP mint ID for solana LBTC GMP flow */\n mint_id?: string;\n}\n\n/** Top-level response from the Direct BTC Deposits API */\nexport interface DirectDepositsResponse {\n /** List of direct deposit records */\n outputs: DirectDeposit[];\n\n /** True if there are more deposits available */\n has_more: boolean;\n}\n\n/**\n * A unified deposit record returned from either\n * Direct BTC Deposits or Native Deposits APIs.\n */\nexport interface Deposit {\n /**\n * Whether this deposit originates from the Native Deposits API (EVM/alt-chain source).\n *\n * - `false` — Bitcoin mainnet direct deposit: the user sent BTC directly to a\n * Lombard deposit address. This is the most common case for BTC stakers.\n * - `true` — Native deposit: the deposit originated on an EVM or alt-chain\n * (e.g. a chain using Lombard's native deposits flow).\n *\n * When polling for standard BTC deposit status, filter on `isNative === false`.\n *\n * @remarks A rename to a more descriptive field (e.g. `depositSource`) is\n * planned in a future major version to avoid confusion with \"native BTC\".\n */\n isNative: boolean;\n\n /** Transaction hash on the source blockchain. */\n txHash: string;\n\n /** Event index inside the transaction (Direct BTC uses output index). */\n eventIndex: number;\n\n /** Amount deposited (always normalized to satoshis/smallest unit). */\n amount: BigNumber;\n\n /** Amount minted (if applicable). */\n tokenAmount?: BigNumber;\n\n /** BTC address where the user deposited (direct BTC only). */\n depositAddress?: string;\n\n /** Sender address on the source chain (native only). */\n fromAddress?: string;\n\n /** Receiver address on the destination chain (if applicable). */\n toAddress?: string;\n\n /** Destination token contract (if applicable). */\n toTokenAddress?: string;\n\n /** Destination token (if applicable). */\n toToken?: Token;\n\n /** Destination chain identifier. */\n toChainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n\n /** Source chain identifier (native only). */\n fromChainId?: ChainId | SuiChain | SolanaChain | StarknetChainId;\n\n /** Block height where the deposit was confirmed (as a number). */\n blockHeight?: number;\n\n /**\n * Unix timestamp (seconds) of confirmation.\n * Converted from ISO8601 (native) or string epoch (direct BTC).\n */\n blockTime?: number;\n\n /** Hash of the payload proving the deposit details. */\n payloadHash?: string;\n\n /** Raw payload bytes (hex-encoded). */\n rawPayload?: string;\n\n /** Merkle/cryptographic proof (hex-encoded). */\n proof?: string;\n\n /** ID of the notarization session (string to preserve both APIs). */\n sessionId: string;\n\n /** Current notarization status. */\n notarizationStatus: ENotarizationStatus;\n\n /** Current session state. */\n sessionState: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed. */\n claimTxHash?: string;\n\n /** True if the deposit was claimed (derived). */\n isClaimed: boolean;\n\n /** True if deposit is sanctioned (present in both APIs). */\n sanctioned?: boolean;\n\n /** Optional auxiliary version (direct BTC only). */\n auxVersion?: number;\n\n /** Optional wait duration for notarization (direct BTC only, in seconds). */\n notarizationWaitDur?: number;\n}\n\nexport interface IGetDepositsByAddressParams extends IEnvParam {\n /**\n * The EVM address to get deposits for\n */\n address: Address;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Fetchers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches deposits from the Direct BTC Deposits API for a given address.\n *\n * Converts the API response into a unified `Deposit` format.\n *\n * @param {IGetDepositsByAddressParams} params - Parameters including address and environment\n * @param {string} params.address - The EVM/BTC address to fetch deposits for\n * @param {Env} params.env - The environment (e.g., 'mainnet', 'testnet')\n *\n * @returns {Promise<Deposit[]>} A list of direct BTC deposits in unified format\n *\n * @example\n * const directDeposits = await fetchDirectDeposits({ address: 'tb1q...', env: 'testnet' });\n */\nexport async function fetchDirectDeposits({\n address,\n env,\n}: IGetDepositsByAddressParams): Promise<Deposit[]> {\n const { baseApiUrl } = getApiConfig(env);\n\n // pad address to 64 characters if needed\n if (address.startsWith('0x') && address.slice(2).length === 63) {\n address = `0x0${address.slice(2)}`;\n }\n\n const endpoint = new URL(`/api/v1/address/outputs-v2/${address}`, baseApiUrl);\n\n const outputs = await fetchAllPaginated({\n endpoint,\n extractItems: (data) => (data as DirectDepositsResponse)?.outputs ?? [],\n });\n\n return outputs.map((d) => mapDirectBtcDeposit(d, env, address));\n}\n\n/**\n * Fetches deposits from the Native Deposits API for a given address.\n *\n * Converts the API response into a unified `Deposit` format.\n *\n * @param {IGetDepositsByAddressParams} params - Parameters including address and environment\n * @param {string} params.address - The EVM/BTC address to fetch deposits for\n * @param {Env} params.env - The environment (e.g., 'mainnet', 'testnet')\n *\n * @returns {Promise<Deposit[]>} A list of native deposits in unified format\n *\n * @example\n * const nativeDeposits = await fetchNativeDeposits({ address: 'tb1q...', env: 'testnet' });\n */\nexport async function fetchBTCbDeposits({\n address,\n env,\n}: IGetDepositsByAddressParams): Promise<Deposit[]> {\n const { baseApiUrl } = getApiConfig(env);\n\n const endpoint = new URL(\n `/api/v1/address/native-deposits/${address}`,\n baseApiUrl,\n );\n\n const deposits = await fetchAllPaginated({\n endpoint,\n extractItems: (data) => (data as NativeDepositsResponse)?.deposits ?? [],\n });\n\n return deposits.map((d) => mapBTCbDeposits(d, env));\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\nfunction mapDirectBtcDeposit(\n d: DirectDeposit,\n env?: Env,\n accountAddress?: string,\n): Deposit {\n return {\n isNative: false,\n txHash: d.txid,\n eventIndex: d.index ? Number(d.index) : 0,\n amount: fromSatoshi(d.value),\n tokenAmount: d.token_amount\n ? fromBaseDenomination(d.token_amount, DECIMALS)\n : undefined,\n depositAddress: d.address,\n toAddress: accountAddress,\n toChainId: getChainIdByName(d.to_chain, env),\n blockHeight: d.block_height ? Number(d.block_height) : undefined,\n blockTime: d.block_time ? Number(d.block_time) : undefined, // epoch seconds\n payloadHash: d.payload_hash,\n rawPayload: d.raw_payload,\n proof: d.proof,\n sessionId: d.session_id,\n notarizationStatus: d.notarization_status,\n sessionState: d.session_state,\n claimTxHash: d.claim_tx,\n isClaimed: !!d.claim_tx,\n sanctioned: d.sanctioned,\n toTokenAddress: d.token_address,\n toToken: getTokenByAddress(\n d.token_address,\n getChainIdByName(d.to_chain, env),\n env,\n AddressKind.Adapter,\n ),\n auxVersion: d.aux_version,\n notarizationWaitDur: d.notarization_wait_dur\n ? Number(d.notarization_wait_dur)\n : undefined,\n };\n}\n\nfunction mapBTCbDeposits(d: NativeDeposit, env?: Env): Deposit {\n return {\n isNative: true,\n txHash: d.tx_hash,\n eventIndex: d.event_index,\n amount: fromBaseDenomination(d.amount, DECIMALS),\n tokenAmount: undefined,\n fromAddress: d.from_address,\n toAddress: d.to_address,\n toTokenAddress: d.to_token_address,\n toToken: getTokenByAddress(\n d.to_token_address,\n getChainIdByName(d.to_blockchain, env),\n env,\n AddressKind.Adapter,\n ),\n toChainId: getChainIdByName(d.to_blockchain, env),\n fromChainId: getChainIdByName(d.from_blockchain, env),\n blockHeight: d.block_height ? Number(d.block_height) : undefined,\n blockTime: d.block_time\n ? Math.floor(new Date(d.block_time).getTime() / 1000) // seconds\n : undefined,\n payloadHash: d.payload_hash,\n rawPayload: d.raw_payload,\n proof: d.proof,\n sessionId: d.session_id,\n notarizationStatus: d.notarization_status,\n sessionState: d.session_state,\n claimTxHash: d.claim_tx,\n isClaimed: !!d.claim_tx,\n sanctioned: d.sanctioned,\n };\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches all deposits for a given address from both Direct BTC Deposits\n * and Native Deposits APIs, unifying them into a single list.\n *\n * Both APIs are called concurrently. If one API fails, the other still returns results.\n *\n * Deposits are returned sorted by `blockTime` descending (newest first).\n *\n * @param {IGetDepositsByAddressParams} params - Parameters including the address and environment\n * @param {string} params.address - The EVM/BTC address to fetch deposits for\n * @param {Env} params.env - The environment (e.g., 'mainnet', 'testnet')\n *\n * @returns {Promise<Deposit[]>} A unified list of deposits from both APIs\n *\n * @example\n * const deposits = await getDepositsByAddress({ address: 'tb1q...', env: 'testnet' });\n * console.log(deposits);\n */\nexport async function getDepositsByAddress({\n address,\n env,\n}: IGetDepositsByAddressParams): Promise<Deposit[]> {\n const results = await Promise.allSettled([\n fetchDirectDeposits({ address, env }),\n fetchBTCbDeposits({ address, env }),\n ]);\n\n let directDeposits: Deposit[] = [];\n let nativeDeposits: Deposit[] = [];\n\n results.forEach((result, idx) => {\n if (result.status === 'fulfilled') {\n if (idx === 0)\n directDeposits = result.value; // Direct BTC deposits\n else nativeDeposits = result.value; // Native deposits\n } else {\n console.error(\n idx === 0\n ? 'Failed to fetch direct BTC deposits:'\n : 'Failed to fetch native deposits:',\n result.reason,\n );\n }\n });\n\n const allDeposits = [...directDeposits, ...nativeDeposits].sort((a, b) => {\n const aTime = a.blockTime ?? 0;\n const bTime = b.blockTime ?? 0;\n return bTime - aTime;\n });\n\n return allDeposits;\n}\n","import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\nimport axios from 'axios';\nimport BigNumber from 'bignumber.js';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { IEnvParam } from '../../common/parameters';\n\nconst CURRENT_SEASON = 2;\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Parameters for fetching points by address.\n */\nexport interface IGetPointsByAddressParameters extends IEnvParam {\n /** The address of the points earner. */\n address: string;\n /** The season to fetch (defaults to CURRENT_SEASON). */\n season?: number;\n}\n\n/**\n * Breakdown of points earned from each supported DeFi protocol.\n */\nexport interface IProtocolPointsBreakdown {\n [protocolName: string]: number;\n}\n\n/**\n * Core points shared across all seasons.\n */\nexport interface IPointsBase {\n /** Points earned by holding LBTC. */\n holdingPoints: number;\n /** Points earned by taking positions in DeFi vaults. */\n protocolPoints: number;\n /** Points earned from referrals. */\n referralPoints: number;\n /** Total points earned. */\n totalPoints: number;\n /** Detailed breakdown of protocol-specific points. */\n protocolPointsBreakdown: IProtocolPointsBreakdown;\n /** Lux points earned from badges. */\n badgesPoints: number;\n /** Total Lux points excluding badges (only required in some seasons). */\n totalWithoutBadgesPoints?: number;\n}\n\n/**\n * Points specific to Season 1.\n */\nexport interface IPointsByAddressSeason1 extends IPointsBase {\n /** Points earned in the OKX campaign. */\n okxPoints: number;\n /** Points earned in the first flash event. */\n flashEvent1Points: number;\n /** Points earned in the second flash event. */\n flashEvent2Points: number;\n}\n\n/**\n * Points specific to Season 2.\n */\nexport interface IPointsByAddressSeason2 extends IPointsBase {\n /** Points earned from referees. */\n refereePoints: number;\n /** Points earned by checking in. */\n checkinPoints: number;\n}\n\n/**\n * Raw API response format for Season 1.\n */\ninterface IPointsResponseSeason1 {\n holding_points: number;\n protocol_points: number;\n referee_points: number;\n referrals_points: number;\n total: number;\n flash_event: number;\n badges: number;\n total_without_badges: number;\n okx_campaign: number;\n flash_event2: number;\n protocol_points_map?: IProtocolPointsBreakdown;\n}\n\n/**\n * Raw API response format for Season 2.\n */\ninterface IPointsResponseSeason2 {\n holding_points: number;\n protocol_points: number;\n referee_points: number;\n referrals_points: number;\n total: number;\n protocol_points_map?: IProtocolPointsBreakdown;\n badge_points: number;\n checkin_points: number;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Parses a number-like input into a BigNumber.\n *\n * @param input - The value to parse.\n * @param defaultValue - Value to use if input is invalid or undefined.\n * @returns A BigNumber representing the parsed value.\n */\nfunction parse(\n input: string | number | null | undefined,\n defaultValue = 0,\n): BigNumber {\n return BigNumber(Number(input) || defaultValue);\n}\n\n/**\n * Converts a protocol points map to a strongly typed breakdown object.\n *\n * @param map - Optional protocol points map from the API.\n * @returns A normalized breakdown object with numeric values.\n */\nfunction toProtocolBreakdown(\n map: IProtocolPointsBreakdown | undefined,\n): IProtocolPointsBreakdown {\n return Object.entries(map || {}).reduce((acc, [k, v]) => {\n acc[k] = parse(v).toNumber();\n return acc;\n }, {} as IProtocolPointsBreakdown);\n}\n\n/**\n * Constructs the Lombard points API endpoint for the given season and address.\n *\n * @param season - The Lux points season (e.g., 1 or 2).\n * @param address - Wallet address to query.\n * @param env - Target environment (defaults to DEFAULT_ENV).\n * @throws If the API endpoint cannot be determined or the season is invalid.\n */\nfunction getLombardPointsUrl(\n season: number,\n address: string,\n env: Env = DEFAULT_ENV,\n): string {\n const { baseApiUrl } = getApiConfig(env);\n if (!baseApiUrl) {\n throw new Error(\n `Could not determine the API endpoint for the provided environment: ${\n env || DEFAULT_ENV\n }`,\n );\n }\n\n switch (season) {\n case 1:\n return `${baseApiUrl}/api/v1/referral-system/season-1/points/${address}`;\n case 2:\n return `${baseApiUrl}/api/v1/referral-system/season-2/points/${address}`;\n default:\n throw new Error(`Invalid Lux season: ${season}`);\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* Fetchers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches and parses Season 1 points for a given address.\n *\n * @param params - Address and environment parameters.\n * @returns A typed object containing all Season 1 point metrics.\n */\nasync function fetchPointsSeason1({\n address,\n env,\n}: Omit<\n IGetPointsByAddressParameters,\n 'season'\n>): Promise<IPointsByAddressSeason1> {\n const { data } = await axios.get<IPointsResponseSeason1>(\n getLombardPointsUrl(1, address, env),\n );\n\n const referralPoints = parse(data.referee_points).plus(\n parse(data.referrals_points),\n );\n\n return {\n holdingPoints: parse(data.holding_points).toNumber(),\n protocolPoints: parse(data.protocol_points).toNumber(),\n referralPoints: referralPoints.toNumber(),\n okxPoints: parse(data.okx_campaign).toNumber(),\n flashEvent1Points: parse(data.flash_event).toNumber(),\n flashEvent2Points: parse(data.flash_event2).toNumber(),\n totalPoints: parse(data.total).toNumber(),\n protocolPointsBreakdown: toProtocolBreakdown(data.protocol_points_map),\n badgesPoints: parse(data.badges).toNumber(),\n totalWithoutBadgesPoints: parse(data.total_without_badges).toNumber(),\n };\n}\n\n/**\n * Fetches and parses Season 2 points for a given address.\n *\n * @param params - Address and environment parameters.\n * @returns A typed object containing all Season 2 point metrics.\n */\nasync function fetchPointsSeason2({\n address,\n env,\n}: Omit<\n IGetPointsByAddressParameters,\n 'season'\n>): Promise<IPointsByAddressSeason2> {\n const { data } = await axios.get<IPointsResponseSeason2>(\n getLombardPointsUrl(2, address, env),\n );\n\n return {\n holdingPoints: parse(data.holding_points).toNumber(),\n protocolPoints: parse(data.protocol_points).toNumber(),\n referralPoints: parse(data.referrals_points).toNumber(),\n refereePoints: parse(data.referee_points).toNumber(),\n badgesPoints: parse(data.badge_points).toNumber(),\n checkinPoints: parse(data.checkin_points).toNumber(),\n totalPoints: parse(data.total).toNumber(),\n protocolPointsBreakdown: toProtocolBreakdown(data.protocol_points_map),\n totalWithoutBadgesPoints: parse(data.total).toNumber(),\n };\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Retrieves Season 1 points for a given address.\n *\n * @param parameters - Address and environment parameters.\n * @returns A Season 1 points object.\n */\nexport async function getPointsByAddress(\n parameters: IGetPointsByAddressParameters & { season: 1 },\n): Promise<IPointsByAddressSeason1>;\n\n/**\n * Retrieves Season 2 points for a given address.\n *\n * @param parameters - Address and environment parameters.\n * @returns A Season 2 points object.\n */\nexport async function getPointsByAddress(\n parameters: IGetPointsByAddressParameters & { season: 2 },\n): Promise<IPointsByAddressSeason2>;\n\n/**\n * Retrieves points for the given address.\n * Defaults to the current season if none is specified.\n *\n * @param parameters - Address and optional environment/season parameters.\n * @returns A points object matching the requested or current season.\n */\nexport async function getPointsByAddress(\n parameters: IGetPointsByAddressParameters,\n): Promise<IPointsByAddressSeason1 | IPointsByAddressSeason2>;\n\n/**\n * Implementation of getPointsByAddress with overloads.\n */\nexport async function getPointsByAddress({\n address,\n env,\n season = CURRENT_SEASON,\n}: IGetPointsByAddressParameters): Promise<\n IPointsByAddressSeason1 | IPointsByAddressSeason2\n> {\n return season === 2\n ? fetchPointsSeason2({ address, env })\n : fetchPointsSeason1({ address, env });\n}\n\n/**\n * Convenience wrapper for fetching Season 1 points.\n *\n * @param params - Address and environment parameters.\n */\nexport const getLuxSeason1Points = (\n params: Omit<IGetPointsByAddressParameters, 'season'>,\n) => getPointsByAddress({ ...params, season: 1 });\n\n/**\n * Convenience wrapper for fetching Season 2 points.\n *\n * @param params - Address and environment parameters.\n */\nexport const getLuxSeason2Points = (\n params: Omit<IGetPointsByAddressParameters, 'season'>,\n) => getPointsByAddress({ ...params, season: 2 });\n","import { DEFAULT_ENV } from '@lombard.finance/sdk-common';\nimport BigNumber from 'bignumber.js';\nimport * as bitcoin from 'bitcoinjs-lib';\nimport { Hex, trim } from 'viem';\n\nimport { getApiConfig } from '../../common/api-config';\nimport {\n BlockchainIdentifier,\n getChainIdByName,\n} from '../../common/blockchain-identifier';\nimport {\n ChainId,\n isSolanaChain,\n isStarknetChainId,\n isSuiChain,\n isValidChain,\n SolanaChain,\n StarknetChainId,\n SuiChain,\n} from '../../common/chains';\nimport { IEnvParam } from '../../common/parameters';\nimport {\n AddressKind,\n getSolanaTokenAddress,\n getStarknetTokenAddress,\n getSuiTokenAddress,\n Token,\n TOKEN_ADDRESSES,\n} from '../../tokens/token-addresses';\nimport { fetchAllPaginated } from '../../utils/pagination';\nimport { fromSatoshi } from '../../utils/satoshi';\nimport {\n ENotarizationStatus,\n ESessionState,\n} from '../getDepositsByAddress/getDepositsByAddress';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Status of a payout transaction corresponding to an unstake.\n */\nexport enum PayoutTxStatus {\n /** The payout transaction has been sent; unstake completed */\n Completed = 'Completed',\n\n /** The payout transaction has not been sent; unstake pending */\n Pending = 'Pending',\n}\n\n/**\n * Response object for a single unstake record from the API.\n */\ninterface UnstakeEntry {\n /** Transaction hash of the unstake on the source blockchain. */\n tx_hash: string;\n\n /** Source blockchain identifier (e.g., BLOCKCHAIN_BSC, BLOCKCHAIN_ETHEREUM). */\n blockchain: BlockchainIdentifier;\n\n /** Block height where the unstake was confirmed. */\n block_height: string;\n\n /** Block time of the unstake transaction (as a string timestamp). */\n block_time: string;\n\n /** Address of the initiator of the unstake. */\n from_address: string;\n\n /** Destination address for the payout. */\n to_address?: string;\n\n /** Destination blockchain identifier for the payout. */\n to_chain?: string;\n\n /** Output script used to derive BTC address, present for BTC unstakes. */\n output_script?: string;\n\n /** Amount unstaked (string to preserve precision). */\n amount: string;\n\n /** Payout transaction hash on the destination chain, if already completed. */\n payout_txid?: string;\n\n /** Index of the payout transaction, if applicable. */\n payout_index?: string;\n\n /** True if the unstake transaction has been sanctioned or flagged as suspicious. */\n sanctioned?: boolean;\n\n /** Cryptographic proof (hex-encoded) */\n proof?: string;\n\n /** Raw payload bytes (hex-encoded) */\n payload?: string;\n\n /** Current notarization status (for native chain redemptions) */\n notarization_status?: ENotarizationStatus;\n\n /** Current session state (for native chain redemptions) */\n session_state?: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed (for native chain redemptions) */\n claim_tx?: string;\n\n /** Token address on the source chain */\n from_token_address?: string;\n}\n\n/**\n * Top-level API response for unstakes.\n */\ninterface UnstakesResponse {\n unstakes?: UnstakeEntry[];\n\n /** True if there are more unstakes available */\n has_more: boolean;\n}\n\n/**\n * Parameters for fetching unstakes by address.\n */\nexport interface IGetUnstakesByAddressParameters extends IEnvParam {\n /** Address of the unstake initiator */\n address: string;\n\n /** Optional filtering */\n options?: {\n /** Show only direct BTC unstakes */\n show_unstakes?: boolean;\n /** Show only native chain redemptions */\n show_redeems?: boolean;\n /** Show only redeems to native chain (LBTC -> BTC.b) */\n to_native?: boolean;\n };\n}\n\n/**\n * A unified unstake record returned from either\n * direct BTC unstakes or native blockchain redemptions.\n */\nexport interface Unstake {\n /** True if the record originates from the native blockchain redemption. */\n isNative: boolean;\n\n /** Transaction hash of the unstake. */\n txHash: string;\n\n /** Source chain identifier (where the unstake originated). */\n fromChainId: ChainId | SuiChain | SolanaChain | StarknetChainId;\n\n /** Destination chain identifier (undefined for BTC unstakes). */\n toChainId?: ChainId | SuiChain | SolanaChain | StarknetChainId | 'bitcoin';\n\n /** Block height where the unstake was confirmed. */\n blockHeight: number;\n\n /** Block time (as epoch seconds) of the unstake. */\n blockTime: number;\n\n /** Initiator of the unstake transaction. */\n fromAddress: string;\n\n /** Destination address (BTC, EVM, or Solana). */\n toAddress?: string;\n\n /** Amount unstaked (normalized to satoshis / smallest unit). */\n amount: BigNumber;\n\n /** Payout transaction hash on the destination chain, if claimed. */\n payoutTxHash?: string;\n\n /** Payout transaction index, if applicable. */\n payoutTxIndex?: number;\n\n /** Status of the payout transaction. */\n payoutTxStatus: PayoutTxStatus;\n\n /** True if the unstake transaction has been sanctioned. */\n sanctioned?: boolean;\n\n /** Raw payload bytes (hex-encoded). */\n rawPayload?: string;\n\n /** Merkle/cryptographic proof (hex-encoded). */\n proof?: string;\n\n /** The output token. */\n toToken?: Token;\n\n /** The output token address. */\n toTokenAddress?: string;\n\n /** Current notarization status (for native chain redemptions). */\n notarizationStatus?: ENotarizationStatus;\n\n /** Current session state (for native chain redemptions). */\n sessionState?: ESessionState;\n\n /** Claim transaction hash on the destination chain, if claimed (for native chain redemptions). */\n claimTxHash?: string;\n\n /** Token address on the source chain */\n fromTokenAddress?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Fetchers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Fetches all unstakes initiated by a given address.\n *\n * @param {IGetUnstakesByAddressParameters} params - Parameters for fetching unstakes.\n * @param {string} params.address - Address of the unstake initiator.\n * @param {Env} [params.env='prod'] - Environment to use (prod/testnet).\n * @param {object} [params.options] - Optional pagination and filter options.\n *\n * @returns {Promise<Unstake[]>} - List of mapped unstakes.\n *\n * @throws {Error} - Throws if no address is specified.\n */\nexport async function fetchUnstakesByAddress({\n address,\n env = DEFAULT_ENV,\n options,\n}: IGetUnstakesByAddressParameters): Promise<Unstake[]> {\n if (!address) throw new Error('No address specified.');\n\n const { baseApiUrl } = getApiConfig(env);\n\n // pad address to 64 characters if needed\n if (address.startsWith('0x') && address.slice(2).length === 63) {\n address = `0x0${address.slice(2)}`;\n }\n\n const endpoint = new URL(`/api/v1/address/unstakes/${address}`, baseApiUrl);\n\n const unstakes = await fetchAllPaginated({\n endpoint,\n extractItems: (data) => (data as UnstakesResponse)?.unstakes ?? [],\n query: {\n show_redeems: options?.show_redeems ? 'true' : undefined,\n show_unstakes: options?.show_unstakes ? 'true' : undefined,\n to_native: options?.to_native ? 'true' : undefined,\n },\n });\n\n return unstakes.map((d) => mapUnstakeEntry(d, env));\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Maps a raw API unstake response to the unified `Unstake` object.\n *\n * @param {UnstakeEntry} d - Raw unstake data from API\n * @param {Env} env - Environment to use for chain/network resolution\n *\n * @returns {Unstake} - Unified unstake object\n */\nfunction mapUnstakeEntry(\n d: UnstakeEntry,\n env: IEnvParam['env'] = DEFAULT_ENV,\n): Unstake {\n const isNative = Boolean(d.to_chain && d.to_address);\n\n let toAddress: string | undefined = d.to_address;\n if (!isNative && d.output_script && !toAddress) {\n try {\n toAddress = bitcoin.address.fromOutputScript(\n Buffer.from(d.output_script.replace(/^0x/, ''), 'hex'),\n env === 'prod' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,\n );\n } catch {\n toAddress = undefined;\n }\n } else if (toAddress?.startsWith('0x')) {\n toAddress = trim(toAddress as Hex);\n }\n\n const payoutTxStatus = d.payout_txid\n ? PayoutTxStatus.Completed\n : PayoutTxStatus.Pending;\n\n const toToken = isNative ? Token.BTCb : undefined;\n const toChainId = d.to_chain\n ? d.to_chain === BlockchainIdentifier.bitcoin ||\n d.to_chain === BlockchainIdentifier.bitcoinOld\n ? 'bitcoin'\n : getChainIdByName(d.to_chain, env)\n : undefined;\n\n let toTokenAddress: string | undefined = undefined;\n if (toToken) {\n if (isValidChain(toChainId)) {\n let address = TOKEN_ADDRESSES?.[toToken]?.[env]?.[toChainId];\n if (address) {\n address =\n typeof address === 'string' ? address : address[AddressKind.Adapter];\n }\n toTokenAddress = address;\n }\n\n if (isSolanaChain(toChainId)) {\n toTokenAddress = getSolanaTokenAddress(toChainId, env);\n }\n\n if (isSuiChain(toChainId)) {\n toTokenAddress = getSuiTokenAddress(toChainId, env);\n }\n\n if (isStarknetChainId(toChainId)) {\n toTokenAddress = getStarknetTokenAddress(toChainId, env);\n }\n }\n\n return {\n isNative,\n txHash: d.tx_hash,\n fromChainId: getChainIdByName(d.blockchain, env),\n toChainId,\n blockHeight: Number(d.block_height),\n blockTime: Number(d.block_time),\n fromAddress: d.from_address,\n toAddress,\n amount: fromSatoshi(d.amount),\n payoutTxHash: d.payout_txid,\n payoutTxIndex: d.payout_index ? Number(d.payout_index) : undefined,\n payoutTxStatus,\n sanctioned: d.sanctioned,\n proof: d.proof,\n rawPayload: d.payload,\n toToken,\n toTokenAddress,\n notarizationStatus: d.notarization_status,\n sessionState: d.session_state,\n claimTxHash: d.claim_tx,\n fromTokenAddress: d.from_token_address,\n };\n}\n\n/* -------------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Returns all unstakes (direct BTC or native chain redemptions) for a given address.\n *\n * @param {IGetUnstakesByAddressParameters} params - Parameters for fetching unstakes.\n * @param {string} params.address - Address of the unstake initiator.\n * @param {Env} [params.env=DEFAULT_ENV] - Environment to use.\n * @param {object} [params.options] - Optional pagination and filter options.\n *\n * @returns {Promise<Unstake[]>} - Array of unified unstake records.\n *\n * @throws {Error} - Throws if no address is specified.\n */\nexport async function getUnstakesByAddress({\n address,\n env = DEFAULT_ENV,\n options,\n}: IGetUnstakesByAddressParameters): Promise<Unstake[]> {\n return fetchUnstakesByAddress({ address, env, options });\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport { IEnvParam } from '../../common/parameters';\nimport { getErrorMessage } from '../../utils/err';\n\nexport type IStoreStakeAndBakeSignatureStatus = 'success';\n\ninterface IStoreStakeAndBakeSignatureResponse {\n status: IStoreStakeAndBakeSignatureStatus;\n}\n\nconst EMPTY_SIGNATURE = '0x00';\n\nexport interface IStoreStakeAndBakeSignatureParams extends IEnvParam {\n /**\n * signature\n */\n signature: string;\n /**\n * JSON typed data used for the signature\n */\n typedData: string;\n}\n\n/**\n * Store stake and bake signature\n *\n * @param {IStoreStakeAndBakeSignatureParams} parameters - The parameters for storing stake and bake signature\n * @param {string} parameters.signature - The signature.\n * @param {string} parameters.typedData - The serialized typed data.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<IStoreStakeAndBakeSignatureStatus>}\n */\nexport async function storeStakeAndBakeSignature({\n signature,\n typedData,\n env,\n}: IStoreStakeAndBakeSignatureParams): Promise<IStoreStakeAndBakeSignatureStatus> {\n const { baseApiUrl } = getApiConfig(env);\n\n try {\n const { data } = await axios.post<IStoreStakeAndBakeSignatureResponse>(\n `${baseApiUrl}/api/v1/claimer/save-stake-and-bake-signature`,\n null,\n {\n params: {\n typed_data: typedData,\n signature: signature || EMPTY_SIGNATURE,\n },\n },\n );\n\n return data.status;\n } catch (error) {\n const errorMsg = getErrorMessage(error);\n\n throw new Error(errorMsg);\n }\n}\n","import axios from 'axios';\n\nimport { getApiConfig } from '../../common/api-config';\nimport type { IEnvParam } from '../../common/parameters';\n\ninterface ApiResponse {\n exists?: boolean;\n referrer?: string;\n}\n\nexport interface GetDepositAddressReferrerParams extends IEnvParam {\n address: string;\n}\n\nexport interface DepositAddressReferrerResult {\n hasDepositAddress: boolean;\n referrer?: string;\n}\n\n/**\n * Fetch the referrer associated with a previously generated BTC deposit address.\n *\n * @param params - Address lookup parameters\n */\nexport async function getDepositAddressReferrer({\n address,\n env,\n}: GetDepositAddressReferrerParams): Promise<DepositAddressReferrerResult> {\n const { baseApiUrl } = getApiConfig(env);\n const { data } = await axios.get<ApiResponse>(\n `${baseApiUrl}/api/v1/address/exists/${address}`,\n );\n\n return {\n hasDepositAddress: Boolean(data.exists),\n referrer: data.referrer,\n };\n}\n","import { getDepositAddressReferrer } from '../api-functions/getDepositAddressReferrer';\nimport type { LombardSDK } from '../client/LombardSDK';\n\nexport interface ReferralLookupParams {\n /** Destination account that previously generated a BTC deposit address */\n address: string;\n}\n\nexport interface ReferralLookupResult {\n hasDepositAddress: boolean;\n referrer?: string;\n}\n\n/**\n * Referral helper namespace.\n *\n * Provides read APIs for referral metadata so partners do not need to query\n * Lombard REST endpoints directly.\n */\nexport class ReferralsClient {\n constructor(private readonly sdk: LombardSDK) {}\n\n /**\n * Fetch the referrer bound to a previously generated BTC deposit address.\n */\n async lookupReferrer({\n address,\n }: ReferralLookupParams): Promise<ReferralLookupResult> {\n return getDepositAddressReferrer({\n address,\n env: this.sdk.config.env,\n });\n }\n}\n"],"names":["makeRequest","address","chainId","env","limit","offset","partnerId","baseApiUrl","getApiConfig","destinationBlockchain","getChainNameById","BlockchainIdentifier","pad","params","k","v","url","data","axios","err","message","_a","getDepositBtcAddress","tokenParam","Token","_addresses","depositAddress","tokenAddressFilter","isValidChain","getTokenContractInfo","AddressKind","isSuiChain","tokenAddress","getSuiTokenAddress","isSolanaChain","solanaToken","getSolanaTokenAddress","isStarknetChainId","getStarknetTokenAddress","addresses","isForToken","mostRecentAddress","mostRecent","cur","getDepositBtcAddresses","parameters","fetchAllPaginated","endpoint","extractItems","query","pageSize","maxRecords","allItems","hasMore","key","value","items","DECIMALS","BTC_DECIMALS","ENotarizationStatus","ESessionState","fetchDirectDeposits","d","mapDirectBtcDeposit","fetchBTCbDeposits","mapBTCbDeposits","accountAddress","fromSatoshi","fromBaseDenomination","getChainIdByName","getTokenByAddress","getDepositsByAddress","results","directDeposits","nativeDeposits","result","idx","a","b","aTime","CURRENT_SEASON","parse","input","defaultValue","BigNumber","toProtocolBreakdown","map","acc","getLombardPointsUrl","season","DEFAULT_ENV","fetchPointsSeason1","referralPoints","fetchPointsSeason2","getPointsByAddress","getLuxSeason1Points","getLuxSeason2Points","PayoutTxStatus","fetchUnstakesByAddress","options","mapUnstakeEntry","isNative","toAddress","bitcoin","trim","payoutTxStatus","toToken","toChainId","toTokenAddress","TOKEN_ADDRESSES","getUnstakesByAddress","EMPTY_SIGNATURE","storeStakeAndBakeSignature","signature","typedData","error","errorMsg","getErrorMessage","getDepositAddressReferrer","ReferralsClient","sdk"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("./tokens-CBsz6l_2.cjs"),e=require("./token-addresses-DvY-Mw7b.cjs"),k=require("./satoshi-CZEsHl5X.cjs");async function m({account:o,spender:s,amount:r,chainId:t,provider:i,rpcUrl:c,env:u}){const C=n.makePublicClient({chainId:t,rpcUrl:c}),l=e.makeWalletClient({chainId:t,provider:i}),a=await n.getTokenContractInfo(e.Token.LBTC,t,u),p=k.toSatoshi(r).toNumber(),{request:b}=await C.simulateContract({address:a.address,account:o,chain:e.CHAIN_ID_TO_VIEM_CHAIN_MAP[t],abi:a.abi,functionName:"approve",args:[s,BigInt(p)]});return await l.writeContract(b)}exports.approveLBTC=m;
2
- //# sourceMappingURL=approveLBTC-BMC4cZEk.cjs.map
1
+ "use strict";const n=require("./tokens-DEYY7W7O.cjs"),e=require("./token-addresses-C7H9E4qz.cjs"),k=require("./satoshi-CZEsHl5X.cjs");async function m({account:o,spender:s,amount:r,chainId:t,provider:i,rpcUrl:c,env:u}){const C=n.makePublicClient({chainId:t,rpcUrl:c}),l=e.makeWalletClient({chainId:t,provider:i}),a=await n.getTokenContractInfo(e.Token.LBTC,t,u),p=k.toSatoshi(r).toNumber(),{request:b}=await C.simulateContract({address:a.address,account:o,chain:e.CHAIN_ID_TO_VIEM_CHAIN_MAP[t],abi:a.abi,functionName:"approve",args:[s,BigInt(p)]});return await l.writeContract(b)}exports.approveLBTC=m;
2
+ //# sourceMappingURL=approveLBTC-BBl3KcT2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"approveLBTC-BMC4cZEk.cjs","sources":["../../src/contract-functions/approveLBTC/approveLBTC.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { toSatoshi } from '../../utils/satoshi';\n\nexport interface IApproveLBTCParams extends CommonWriteParameters {\n /**\n * The spender account address.\n */\n spender: Address;\n /**\n * The approved amount of LBTC.\n */\n amount: BigNumber.Value;\n}\n\n/**\n * Approves the provided spender to withdraw a specified amount of LBTC from\n * your account.\n *\n * @param {IApproveLBTCParams} parameters - The parameters.\n * @param {Address} spender - The spender account address.\n * @param {BigNumber.Value} - The amount of LBTC.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<Hash>}\n */\nexport async function approveLBTC({\n account,\n spender,\n amount,\n chainId,\n provider,\n rpcUrl,\n env,\n}: IApproveLBTCParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ chainId, provider });\n\n const lbtcContract = await getTokenContractInfo(Token.LBTC, chainId, env);\n\n const amountSat = toSatoshi(amount).toNumber();\n\n const { request } = await publicClient.simulateContract({\n address: lbtcContract.address,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: lbtcContract.abi,\n functionName: 'approve',\n args: [spender, BigInt(amountSat)],\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n"],"names":["approveLBTC","account","spender","amount","chainId","provider","rpcUrl","env","publicClient","makePublicClient","walletClient","makeWalletClient","lbtcContract","getTokenContractInfo","Token","amountSat","toSatoshi","request","CHAIN_ID_TO_VIEM_CHAIN_MAP"],"mappings":"sIAqCA,eAAsBA,EAAY,CAChC,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,OAAAC,EACA,IAAAC,CACF,EAAsC,CACpC,MAAMC,EAAeC,EAAAA,iBAAiB,CAAE,QAAAL,EAAS,OAAAE,EAAQ,EACnDI,EAAeC,EAAAA,iBAAiB,CAAE,QAAAP,EAAS,SAAAC,EAAU,EAErDO,EAAe,MAAMC,EAAAA,qBAAqBC,EAAAA,MAAM,KAAMV,EAASG,CAAG,EAElEQ,EAAYC,EAAAA,UAAUb,CAAM,EAAE,SAAA,EAE9B,CAAE,QAAAc,CAAA,EAAY,MAAMT,EAAa,iBAAiB,CACtD,QAASI,EAAa,QACtB,QAAAX,EACA,MAAOiB,EAAAA,2BAA2Bd,CAAO,EACzC,IAAKQ,EAAa,IAClB,aAAc,UACd,KAAM,CAACV,EAAS,OAAOa,CAAS,CAAC,CAAA,CAClC,EAID,OAFe,MAAML,EAAa,cAAcO,CAAO,CAGzD"}
1
+ {"version":3,"file":"approveLBTC-BBl3KcT2.cjs","sources":["../../src/contract-functions/approveLBTC/approveLBTC.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { toSatoshi } from '../../utils/satoshi';\n\nexport interface IApproveLBTCParams extends CommonWriteParameters {\n /**\n * The spender account address.\n */\n spender: Address;\n /**\n * The approved amount of LBTC.\n */\n amount: BigNumber.Value;\n}\n\n/**\n * Approves the provided spender to withdraw a specified amount of LBTC from\n * your account.\n *\n * @param {IApproveLBTCParams} parameters - The parameters.\n * @param {Address} spender - The spender account address.\n * @param {BigNumber.Value} - The amount of LBTC.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<Hash>}\n */\nexport async function approveLBTC({\n account,\n spender,\n amount,\n chainId,\n provider,\n rpcUrl,\n env,\n}: IApproveLBTCParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ chainId, provider });\n\n const lbtcContract = await getTokenContractInfo(Token.LBTC, chainId, env);\n\n const amountSat = toSatoshi(amount).toNumber();\n\n const { request } = await publicClient.simulateContract({\n address: lbtcContract.address,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: lbtcContract.abi,\n functionName: 'approve',\n args: [spender, BigInt(amountSat)],\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n"],"names":["approveLBTC","account","spender","amount","chainId","provider","rpcUrl","env","publicClient","makePublicClient","walletClient","makeWalletClient","lbtcContract","getTokenContractInfo","Token","amountSat","toSatoshi","request","CHAIN_ID_TO_VIEM_CHAIN_MAP"],"mappings":"sIAqCA,eAAsBA,EAAY,CAChC,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,OAAAC,EACA,IAAAC,CACF,EAAsC,CACpC,MAAMC,EAAeC,EAAAA,iBAAiB,CAAE,QAAAL,EAAS,OAAAE,EAAQ,EACnDI,EAAeC,EAAAA,iBAAiB,CAAE,QAAAP,EAAS,SAAAC,EAAU,EAErDO,EAAe,MAAMC,EAAAA,qBAAqBC,EAAAA,MAAM,KAAMV,EAASG,CAAG,EAElEQ,EAAYC,EAAAA,UAAUb,CAAM,EAAE,SAAA,EAE9B,CAAE,QAAAc,CAAA,EAAY,MAAMT,EAAa,iBAAiB,CACtD,QAASI,EAAa,QACtB,QAAAX,EACA,MAAOiB,EAAAA,2BAA2Bd,CAAO,EACzC,IAAKQ,EAAa,IAClB,aAAc,UACd,KAAM,CAACV,EAAS,OAAOa,CAAS,CAAC,CAAA,CAClC,EAID,OAFe,MAAML,EAAa,cAAcO,CAAO,CAGzD"}
@@ -1,5 +1,5 @@
1
- import { makePublicClient as p, getTokenContractInfo as u } from "./tokens-HhVpKe3K.js";
2
- import { makeWalletClient as b, Token as f, CHAIN_ID_TO_VIEM_CHAIN_MAP as w } from "./token-addresses-Ddar0FyS.js";
1
+ import { makePublicClient as p, getTokenContractInfo as u } from "./tokens-Btl3GXbc.js";
2
+ import { makeWalletClient as b, Token as f, CHAIN_ID_TO_VIEM_CHAIN_MAP as w } from "./token-addresses-DVnRPyu4.js";
3
3
  import { toSatoshi as T } from "./satoshi-CSoJBXc6.js";
4
4
  async function g({
5
5
  account: a,
@@ -23,4 +23,4 @@ async function g({
23
23
  export {
24
24
  g as approveLBTC
25
25
  };
26
- //# sourceMappingURL=approveLBTC-BkdT1N3V.js.map
26
+ //# sourceMappingURL=approveLBTC-DnCt6ZZF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approveLBTC-BkdT1N3V.js","sources":["../../src/contract-functions/approveLBTC/approveLBTC.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { toSatoshi } from '../../utils/satoshi';\n\nexport interface IApproveLBTCParams extends CommonWriteParameters {\n /**\n * The spender account address.\n */\n spender: Address;\n /**\n * The approved amount of LBTC.\n */\n amount: BigNumber.Value;\n}\n\n/**\n * Approves the provided spender to withdraw a specified amount of LBTC from\n * your account.\n *\n * @param {IApproveLBTCParams} parameters - The parameters.\n * @param {Address} spender - The spender account address.\n * @param {BigNumber.Value} - The amount of LBTC.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<Hash>}\n */\nexport async function approveLBTC({\n account,\n spender,\n amount,\n chainId,\n provider,\n rpcUrl,\n env,\n}: IApproveLBTCParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ chainId, provider });\n\n const lbtcContract = await getTokenContractInfo(Token.LBTC, chainId, env);\n\n const amountSat = toSatoshi(amount).toNumber();\n\n const { request } = await publicClient.simulateContract({\n address: lbtcContract.address,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: lbtcContract.abi,\n functionName: 'approve',\n args: [spender, BigInt(amountSat)],\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n"],"names":["approveLBTC","account","spender","amount","chainId","provider","rpcUrl","env","publicClient","makePublicClient","walletClient","makeWalletClient","lbtcContract","getTokenContractInfo","Token","amountSat","toSatoshi","request","CHAIN_ID_TO_VIEM_CHAIN_MAP"],"mappings":";;;AAqCA,eAAsBA,EAAY;AAAA,EAChC,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AACF,GAAsC;AACpC,QAAMC,IAAeC,EAAiB,EAAE,SAAAL,GAAS,QAAAE,GAAQ,GACnDI,IAAeC,EAAiB,EAAE,SAAAP,GAAS,UAAAC,GAAU,GAErDO,IAAe,MAAMC,EAAqBC,EAAM,MAAMV,GAASG,CAAG,GAElEQ,IAAYC,EAAUb,CAAM,EAAE,SAAA,GAE9B,EAAE,SAAAc,EAAA,IAAY,MAAMT,EAAa,iBAAiB;AAAA,IACtD,SAASI,EAAa;AAAA,IACtB,SAAAX;AAAA,IACA,OAAOiB,EAA2Bd,CAAO;AAAA,IACzC,KAAKQ,EAAa;AAAA,IAClB,cAAc;AAAA,IACd,MAAM,CAACV,GAAS,OAAOa,CAAS,CAAC;AAAA,EAAA,CAClC;AAID,SAFe,MAAML,EAAa,cAAcO,CAAO;AAGzD;"}
1
+ {"version":3,"file":"approveLBTC-DnCt6ZZF.js","sources":["../../src/contract-functions/approveLBTC/approveLBTC.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Address, Hash } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { Token } from '../../tokens/token-addresses';\nimport { getTokenContractInfo } from '../../tokens/tokens';\nimport { toSatoshi } from '../../utils/satoshi';\n\nexport interface IApproveLBTCParams extends CommonWriteParameters {\n /**\n * The spender account address.\n */\n spender: Address;\n /**\n * The approved amount of LBTC.\n */\n amount: BigNumber.Value;\n}\n\n/**\n * Approves the provided spender to withdraw a specified amount of LBTC from\n * your account.\n *\n * @param {IApproveLBTCParams} parameters - The parameters.\n * @param {Address} spender - The spender account address.\n * @param {BigNumber.Value} - The amount of LBTC.\n * @param {Address} parameters.account - The EVM account address.\n * @param {ChainId} parameters.chainId - The chain id.\n * @param {EIP1193Provider} parameters.provider - The EIP1193 provider.\n * @param {string} parameters.rpcUrl - The optional rpc url.\n * @param {Env} parameters.env - The optional environment identifier.\n *\n * @returns {Promise<Hash>}\n */\nexport async function approveLBTC({\n account,\n spender,\n amount,\n chainId,\n provider,\n rpcUrl,\n env,\n}: IApproveLBTCParams): Promise<Hash> {\n const publicClient = makePublicClient({ chainId, rpcUrl });\n const walletClient = makeWalletClient({ chainId, provider });\n\n const lbtcContract = await getTokenContractInfo(Token.LBTC, chainId, env);\n\n const amountSat = toSatoshi(amount).toNumber();\n\n const { request } = await publicClient.simulateContract({\n address: lbtcContract.address,\n account,\n chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],\n abi: lbtcContract.abi,\n functionName: 'approve',\n args: [spender, BigInt(amountSat)],\n });\n\n const txHash = await walletClient.writeContract(request);\n\n return txHash;\n}\n"],"names":["approveLBTC","account","spender","amount","chainId","provider","rpcUrl","env","publicClient","makePublicClient","walletClient","makeWalletClient","lbtcContract","getTokenContractInfo","Token","amountSat","toSatoshi","request","CHAIN_ID_TO_VIEM_CHAIN_MAP"],"mappings":";;;AAqCA,eAAsBA,EAAY;AAAA,EAChC,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AACF,GAAsC;AACpC,QAAMC,IAAeC,EAAiB,EAAE,SAAAL,GAAS,QAAAE,GAAQ,GACnDI,IAAeC,EAAiB,EAAE,SAAAP,GAAS,UAAAC,GAAU,GAErDO,IAAe,MAAMC,EAAqBC,EAAM,MAAMV,GAASG,CAAG,GAElEQ,IAAYC,EAAUb,CAAM,EAAE,SAAA,GAE9B,EAAE,SAAAc,EAAA,IAAY,MAAMT,EAAa,iBAAiB;AAAA,IACtD,SAASI,EAAa;AAAA,IACtB,SAAAX;AAAA,IACA,OAAOiB,EAA2Bd,CAAO;AAAA,IACzC,KAAKQ,EAAa;AAAA,IAClB,cAAc;AAAA,IACd,MAAM,CAACV,GAAS,OAAOa,CAAS,CAAC;AAAA,EAAA,CAClC;AAID,SAFe,MAAML,EAAa,cAAcO,CAAO;AAGzD;"}
@@ -1,5 +1,5 @@
1
1
  import { p as T, r as n } from "./index-CfcQ_g3t.js";
2
- import { ChainId as t, SOLANA_MAINNET_CHAIN as r, SOLANA_DEVNET_CHAIN as s, STARKNET_MAINNET_CHAIN as A, STARKNET_SEPOLIA_CHAIN as O, SUI_MAINNET_CHAIN as C, SUI_TESTNET_CHAIN as o, SOLANA_TESTNET_CHAIN as l } from "./token-addresses-Ddar0FyS.js";
2
+ import { ChainId as t, SOLANA_MAINNET_CHAIN as r, SOLANA_DEVNET_CHAIN as s, STARKNET_MAINNET_CHAIN as A, STARKNET_SEPOLIA_CHAIN as O, SUI_MAINNET_CHAIN as C, SUI_TESTNET_CHAIN as o, SOLANA_TESTNET_CHAIN as l } from "./token-addresses-DVnRPyu4.js";
3
3
  const a = {
4
4
  eth: "DESTINATION_BLOCKCHAIN_ETHEREUM",
5
5
  ethOld: "BLOCKCHAIN_ETHEREUM",
@@ -110,4 +110,4 @@ export {
110
110
  u as getStarknetNetworkByEnv,
111
111
  B as getSuiNetworkByEnv
112
112
  };
113
- //# sourceMappingURL=blockchain-identifier-BLPnwbIN.js.map
113
+ //# sourceMappingURL=blockchain-identifier-BkASqCgZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchain-identifier-BkASqCgZ.js","sources":["../../src/common/blockchain-identifier.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\n\nimport {\n ChainId,\n SOLANA_DEVNET_CHAIN,\n SOLANA_MAINNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n SolanaChain,\n STARKNET_MAINNET_CHAIN,\n STARKNET_SEPOLIA_CHAIN,\n StarknetChainId,\n SUI_MAINNET_CHAIN,\n SUI_TESTNET_CHAIN,\n SuiChain,\n} from './chains';\nimport { featureConfig } from './feature-config';\n\nexport const BlockchainIdentifier = {\n eth: 'DESTINATION_BLOCKCHAIN_ETHEREUM',\n ethOld: 'BLOCKCHAIN_ETHEREUM',\n\n avalanche: 'DESTINATION_BLOCKCHAIN_AVALANCHE',\n avalancheOld: 'BLOCKCHAIN_AVALANCHE',\n\n base: 'DESTINATION_BLOCKCHAIN_BASE',\n baseOld: 'BLOCKCHAIN_BASE',\n\n bsc: 'DESTINATION_BLOCKCHAIN_BSC',\n bscOld: 'BLOCKCHAIN_BSC',\n\n katana: 'DESTINATION_BLOCKCHAIN_KATANA',\n katanaOld: 'BLOCKCHAIN_KATANA',\n\n sui: 'DESTINATION_BLOCKCHAIN_SUI',\n suiOld: 'BLOCKCHAIN_SUI',\n\n sonic: 'DESTINATION_BLOCKCHAIN_SONIC',\n sonicOld: 'BLOCKCHAIN_SONIC',\n\n solana: 'DESTINATION_BLOCKCHAIN_SOLANA',\n solanaOld: 'BLOCKCHAIN_SOLANA',\n\n starknet: 'DESTINATION_BLOCKCHAIN_STARKNET',\n starknetOld: 'BLOCKCHAIN_STARKNET',\n\n monad: 'DESTINATION_BLOCKCHAIN_MONAD',\n monadOld: 'BLOCKCHAIN_MONAD',\n\n stable: 'DESTINATION_BLOCKCHAIN_STABLE',\n stableOld: 'BLOCKCHAIN_STABLE',\n\n megaeth: 'DESTINATION_BLOCKCHAIN_MEGAETH',\n megaethOld: 'BLOCKCHAIN_MEGAETH',\n\n bitcoin: 'DESTINATION_BLOCKCHAIN_BITCOIN',\n bitcoinOld: 'BLOCKCHAIN_BITCOIN',\n} as const;\n\nexport type BlockchainIdentifier =\n (typeof BlockchainIdentifier)[keyof typeof BlockchainIdentifier];\n\nexport function getChainNameById(\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId,\n): BlockchainIdentifier {\n if (\n chainId === ChainId.ethereum ||\n chainId === ChainId.holesky ||\n chainId === ChainId.sepolia\n ) {\n return BlockchainIdentifier.eth;\n }\n\n if (\n (featureConfig.isAvalancheMainnetEnabled &&\n chainId === ChainId.avalanche) ||\n (featureConfig.isAvalancheFujiEnabled && chainId === ChainId.avalancheFuji)\n ) {\n return BlockchainIdentifier.avalanche;\n }\n\n if (chainId === ChainId.base || chainId === ChainId.baseSepoliaTestnet) {\n return BlockchainIdentifier.base;\n }\n\n if (\n chainId === ChainId.binanceSmartChain ||\n chainId === ChainId.binanceSmartChainTestnet\n ) {\n return BlockchainIdentifier.bsc;\n }\n\n if (chainId === ChainId.katana) {\n return BlockchainIdentifier.katana;\n }\n\n if (chainId === ChainId.sonic || chainId === ChainId.sonicBlazeTestnet) {\n return BlockchainIdentifier.sonic;\n }\n\n if (featureConfig.isMonadEnabled && chainId === ChainId.monad) {\n return BlockchainIdentifier.monad;\n }\n\n if (chainId === ChainId.megaeth) {\n return BlockchainIdentifier.megaeth;\n }\n\n if (chainId === ChainId.stable) {\n return BlockchainIdentifier.stable;\n }\n\n if (chainId === SUI_TESTNET_CHAIN || chainId === SUI_MAINNET_CHAIN) {\n return BlockchainIdentifier.sui;\n }\n\n if (\n chainId === SOLANA_DEVNET_CHAIN ||\n chainId === SOLANA_TESTNET_CHAIN ||\n chainId === SOLANA_MAINNET_CHAIN\n ) {\n return BlockchainIdentifier.solana;\n }\n\n if (\n chainId === STARKNET_MAINNET_CHAIN ||\n chainId === STARKNET_SEPOLIA_CHAIN\n ) {\n return BlockchainIdentifier.starknet;\n }\n\n throw new Error(`Unknown chain ID: ${chainId}`);\n}\n\nexport const getEthNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.ethereum : ChainId.sepolia;\n\nexport const getBscNetworkByEnv = (env: Env) =>\n env === Env.prod\n ? ChainId.binanceSmartChain\n : ChainId.binanceSmartChainTestnet;\n\nexport const getBaseNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.base : ChainId.baseSepoliaTestnet;\n\nexport const getSuiNetworkByEnv = (env: Env) =>\n env === Env.prod ? SUI_MAINNET_CHAIN : SUI_TESTNET_CHAIN;\n\nexport const getSonicNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.sonic : ChainId.sonicBlazeTestnet;\n\nexport const getSolanaNetworkByEnv = (env: Env) =>\n env === Env.prod ? SOLANA_MAINNET_CHAIN : SOLANA_DEVNET_CHAIN;\n\nexport const getStarknetNetworkByEnv = (env: Env) =>\n env === Env.prod ? STARKNET_MAINNET_CHAIN : STARKNET_SEPOLIA_CHAIN;\n\n/**\n * @param chain the chain ID\n * @param env\n * @returns the chain name\n */\nexport function getChainIdByName(\n chain: string,\n env: Env = DEFAULT_ENV,\n): ChainId | SuiChain | SolanaChain | StarknetChainId {\n switch (chain as BlockchainIdentifier) {\n case BlockchainIdentifier.eth:\n case BlockchainIdentifier.ethOld:\n return getEthNetworkByEnv(env);\n\n case BlockchainIdentifier.avalanche:\n case BlockchainIdentifier.avalancheOld:\n return env === Env.prod ? ChainId.avalanche : ChainId.avalancheFuji;\n\n case BlockchainIdentifier.base:\n case BlockchainIdentifier.baseOld:\n return getBaseNetworkByEnv(env);\n\n case BlockchainIdentifier.bsc:\n case BlockchainIdentifier.bscOld:\n return getBscNetworkByEnv(env);\n\n case BlockchainIdentifier.katana:\n case BlockchainIdentifier.katanaOld:\n return ChainId.katana;\n\n case BlockchainIdentifier.sui:\n case BlockchainIdentifier.suiOld:\n return getSuiNetworkByEnv(env);\n\n case BlockchainIdentifier.sonic:\n case BlockchainIdentifier.sonicOld:\n return getSonicNetworkByEnv(env);\n\n case BlockchainIdentifier.solana:\n case BlockchainIdentifier.solanaOld:\n return getSolanaNetworkByEnv(env);\n\n case BlockchainIdentifier.starknet:\n case BlockchainIdentifier.starknetOld:\n return getStarknetNetworkByEnv(env);\n\n case BlockchainIdentifier.monad:\n case BlockchainIdentifier.monadOld:\n return ChainId.monad;\n\n case BlockchainIdentifier.stable:\n case BlockchainIdentifier.stableOld:\n return ChainId.stable;\n\n case BlockchainIdentifier.megaeth:\n case BlockchainIdentifier.megaethOld:\n return ChainId.megaeth;\n\n default:\n return ChainId.ethereum;\n }\n}\n"],"names":["BlockchainIdentifier","getChainNameById","chainId","ChainId","SUI_TESTNET_CHAIN","SUI_MAINNET_CHAIN","SOLANA_DEVNET_CHAIN","SOLANA_TESTNET_CHAIN","SOLANA_MAINNET_CHAIN","STARKNET_MAINNET_CHAIN","STARKNET_SEPOLIA_CHAIN","getEthNetworkByEnv","env","Env","getBscNetworkByEnv","getBaseNetworkByEnv","getSuiNetworkByEnv","getSonicNetworkByEnv","getSolanaNetworkByEnv","getStarknetNetworkByEnv","getChainIdByName","chain","DEFAULT_ENV"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("./index-BKzxeh1Y.cjs"),e=require("./token-addresses-DvY-Mw7b.cjs"),t={eth:"DESTINATION_BLOCKCHAIN_ETHEREUM",ethOld:"BLOCKCHAIN_ETHEREUM",avalanche:"DESTINATION_BLOCKCHAIN_AVALANCHE",avalancheOld:"BLOCKCHAIN_AVALANCHE",base:"DESTINATION_BLOCKCHAIN_BASE",baseOld:"BLOCKCHAIN_BASE",bsc:"DESTINATION_BLOCKCHAIN_BSC",bscOld:"BLOCKCHAIN_BSC",katana:"DESTINATION_BLOCKCHAIN_KATANA",katanaOld:"BLOCKCHAIN_KATANA",sui:"DESTINATION_BLOCKCHAIN_SUI",suiOld:"BLOCKCHAIN_SUI",sonic:"DESTINATION_BLOCKCHAIN_SONIC",sonicOld:"BLOCKCHAIN_SONIC",solana:"DESTINATION_BLOCKCHAIN_SOLANA",solanaOld:"BLOCKCHAIN_SOLANA",starknet:"DESTINATION_BLOCKCHAIN_STARKNET",starknetOld:"BLOCKCHAIN_STARKNET",monad:"DESTINATION_BLOCKCHAIN_MONAD",monadOld:"BLOCKCHAIN_MONAD",stable:"DESTINATION_BLOCKCHAIN_STABLE",stableOld:"BLOCKCHAIN_STABLE",megaeth:"DESTINATION_BLOCKCHAIN_MEGAETH",megaethOld:"BLOCKCHAIN_MEGAETH",bitcoin:"DESTINATION_BLOCKCHAIN_BITCOIN",bitcoinOld:"BLOCKCHAIN_BITCOIN"};function o(a){if(a===e.ChainId.ethereum||a===e.ChainId.holesky||a===e.ChainId.sepolia)return t.eth;if(a===e.ChainId.avalanche||a===e.ChainId.avalancheFuji)return t.avalanche;if(a===e.ChainId.base||a===e.ChainId.baseSepoliaTestnet)return t.base;if(a===e.ChainId.binanceSmartChain||a===e.ChainId.binanceSmartChainTestnet)return t.bsc;if(a===e.ChainId.katana)return t.katana;if(a===e.ChainId.sonic||a===e.ChainId.sonicBlazeTestnet)return t.sonic;if(a===e.ChainId.monad)return t.monad;if(a===e.ChainId.megaeth)return t.megaeth;if(a===e.ChainId.stable)return t.stable;if(a===e.SUI_TESTNET_CHAIN||a===e.SUI_MAINNET_CHAIN)return t.sui;if(a===e.SOLANA_DEVNET_CHAIN||a===e.SOLANA_TESTNET_CHAIN||a===e.SOLANA_MAINNET_CHAIN)return t.solana;if(a===e.STARKNET_MAINNET_CHAIN||a===e.STARKNET_SEPOLIA_CHAIN)return t.starknet;throw new Error(`Unknown chain ID: ${a}`)}const C=a=>a===n.r.prod?e.ChainId.ethereum:e.ChainId.sepolia,r=a=>a===n.r.prod?e.ChainId.binanceSmartChain:e.ChainId.binanceSmartChainTestnet,A=a=>a===n.r.prod?e.ChainId.base:e.ChainId.baseSepoliaTestnet,I=a=>a===n.r.prod?e.SUI_MAINNET_CHAIN:e.SUI_TESTNET_CHAIN,s=a=>a===n.r.prod?e.ChainId.sonic:e.ChainId.sonicBlazeTestnet,O=a=>a===n.r.prod?e.SOLANA_MAINNET_CHAIN:e.SOLANA_DEVNET_CHAIN,i=a=>a===n.r.prod?e.STARKNET_MAINNET_CHAIN:e.STARKNET_SEPOLIA_CHAIN;function T(a,N=n.p){switch(a){case t.eth:case t.ethOld:return C(N);case t.avalanche:case t.avalancheOld:return N===n.r.prod?e.ChainId.avalanche:e.ChainId.avalancheFuji;case t.base:case t.baseOld:return A(N);case t.bsc:case t.bscOld:return r(N);case t.katana:case t.katanaOld:return e.ChainId.katana;case t.sui:case t.suiOld:return I(N);case t.sonic:case t.sonicOld:return s(N);case t.solana:case t.solanaOld:return O(N);case t.starknet:case t.starknetOld:return i(N);case t.monad:case t.monadOld:return e.ChainId.monad;case t.stable:case t.stableOld:return e.ChainId.stable;case t.megaeth:case t.megaethOld:return e.ChainId.megaeth;default:return e.ChainId.ethereum}}exports.BlockchainIdentifier=t;exports.getBaseNetworkByEnv=A;exports.getBscNetworkByEnv=r;exports.getChainIdByName=T;exports.getChainNameById=o;exports.getEthNetworkByEnv=C;exports.getSolanaNetworkByEnv=O;exports.getSonicNetworkByEnv=s;exports.getStarknetNetworkByEnv=i;exports.getSuiNetworkByEnv=I;
2
- //# sourceMappingURL=blockchain-identifier-Bp-LTIdG.cjs.map
1
+ "use strict";const n=require("./index-BKzxeh1Y.cjs"),e=require("./token-addresses-C7H9E4qz.cjs"),t={eth:"DESTINATION_BLOCKCHAIN_ETHEREUM",ethOld:"BLOCKCHAIN_ETHEREUM",avalanche:"DESTINATION_BLOCKCHAIN_AVALANCHE",avalancheOld:"BLOCKCHAIN_AVALANCHE",base:"DESTINATION_BLOCKCHAIN_BASE",baseOld:"BLOCKCHAIN_BASE",bsc:"DESTINATION_BLOCKCHAIN_BSC",bscOld:"BLOCKCHAIN_BSC",katana:"DESTINATION_BLOCKCHAIN_KATANA",katanaOld:"BLOCKCHAIN_KATANA",sui:"DESTINATION_BLOCKCHAIN_SUI",suiOld:"BLOCKCHAIN_SUI",sonic:"DESTINATION_BLOCKCHAIN_SONIC",sonicOld:"BLOCKCHAIN_SONIC",solana:"DESTINATION_BLOCKCHAIN_SOLANA",solanaOld:"BLOCKCHAIN_SOLANA",starknet:"DESTINATION_BLOCKCHAIN_STARKNET",starknetOld:"BLOCKCHAIN_STARKNET",monad:"DESTINATION_BLOCKCHAIN_MONAD",monadOld:"BLOCKCHAIN_MONAD",stable:"DESTINATION_BLOCKCHAIN_STABLE",stableOld:"BLOCKCHAIN_STABLE",megaeth:"DESTINATION_BLOCKCHAIN_MEGAETH",megaethOld:"BLOCKCHAIN_MEGAETH",bitcoin:"DESTINATION_BLOCKCHAIN_BITCOIN",bitcoinOld:"BLOCKCHAIN_BITCOIN"};function o(a){if(a===e.ChainId.ethereum||a===e.ChainId.holesky||a===e.ChainId.sepolia)return t.eth;if(a===e.ChainId.avalanche||a===e.ChainId.avalancheFuji)return t.avalanche;if(a===e.ChainId.base||a===e.ChainId.baseSepoliaTestnet)return t.base;if(a===e.ChainId.binanceSmartChain||a===e.ChainId.binanceSmartChainTestnet)return t.bsc;if(a===e.ChainId.katana)return t.katana;if(a===e.ChainId.sonic||a===e.ChainId.sonicBlazeTestnet)return t.sonic;if(a===e.ChainId.monad)return t.monad;if(a===e.ChainId.megaeth)return t.megaeth;if(a===e.ChainId.stable)return t.stable;if(a===e.SUI_TESTNET_CHAIN||a===e.SUI_MAINNET_CHAIN)return t.sui;if(a===e.SOLANA_DEVNET_CHAIN||a===e.SOLANA_TESTNET_CHAIN||a===e.SOLANA_MAINNET_CHAIN)return t.solana;if(a===e.STARKNET_MAINNET_CHAIN||a===e.STARKNET_SEPOLIA_CHAIN)return t.starknet;throw new Error(`Unknown chain ID: ${a}`)}const C=a=>a===n.r.prod?e.ChainId.ethereum:e.ChainId.sepolia,r=a=>a===n.r.prod?e.ChainId.binanceSmartChain:e.ChainId.binanceSmartChainTestnet,A=a=>a===n.r.prod?e.ChainId.base:e.ChainId.baseSepoliaTestnet,I=a=>a===n.r.prod?e.SUI_MAINNET_CHAIN:e.SUI_TESTNET_CHAIN,s=a=>a===n.r.prod?e.ChainId.sonic:e.ChainId.sonicBlazeTestnet,O=a=>a===n.r.prod?e.SOLANA_MAINNET_CHAIN:e.SOLANA_DEVNET_CHAIN,i=a=>a===n.r.prod?e.STARKNET_MAINNET_CHAIN:e.STARKNET_SEPOLIA_CHAIN;function T(a,N=n.p){switch(a){case t.eth:case t.ethOld:return C(N);case t.avalanche:case t.avalancheOld:return N===n.r.prod?e.ChainId.avalanche:e.ChainId.avalancheFuji;case t.base:case t.baseOld:return A(N);case t.bsc:case t.bscOld:return r(N);case t.katana:case t.katanaOld:return e.ChainId.katana;case t.sui:case t.suiOld:return I(N);case t.sonic:case t.sonicOld:return s(N);case t.solana:case t.solanaOld:return O(N);case t.starknet:case t.starknetOld:return i(N);case t.monad:case t.monadOld:return e.ChainId.monad;case t.stable:case t.stableOld:return e.ChainId.stable;case t.megaeth:case t.megaethOld:return e.ChainId.megaeth;default:return e.ChainId.ethereum}}exports.BlockchainIdentifier=t;exports.getBaseNetworkByEnv=A;exports.getBscNetworkByEnv=r;exports.getChainIdByName=T;exports.getChainNameById=o;exports.getEthNetworkByEnv=C;exports.getSolanaNetworkByEnv=O;exports.getSonicNetworkByEnv=s;exports.getStarknetNetworkByEnv=i;exports.getSuiNetworkByEnv=I;
2
+ //# sourceMappingURL=blockchain-identifier-DWfC3Es2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchain-identifier-DWfC3Es2.cjs","sources":["../../src/common/blockchain-identifier.ts"],"sourcesContent":["import { DEFAULT_ENV, Env } from '@lombard.finance/sdk-common';\n\nimport {\n ChainId,\n SOLANA_DEVNET_CHAIN,\n SOLANA_MAINNET_CHAIN,\n SOLANA_TESTNET_CHAIN,\n SolanaChain,\n STARKNET_MAINNET_CHAIN,\n STARKNET_SEPOLIA_CHAIN,\n StarknetChainId,\n SUI_MAINNET_CHAIN,\n SUI_TESTNET_CHAIN,\n SuiChain,\n} from './chains';\nimport { featureConfig } from './feature-config';\n\nexport const BlockchainIdentifier = {\n eth: 'DESTINATION_BLOCKCHAIN_ETHEREUM',\n ethOld: 'BLOCKCHAIN_ETHEREUM',\n\n avalanche: 'DESTINATION_BLOCKCHAIN_AVALANCHE',\n avalancheOld: 'BLOCKCHAIN_AVALANCHE',\n\n base: 'DESTINATION_BLOCKCHAIN_BASE',\n baseOld: 'BLOCKCHAIN_BASE',\n\n bsc: 'DESTINATION_BLOCKCHAIN_BSC',\n bscOld: 'BLOCKCHAIN_BSC',\n\n katana: 'DESTINATION_BLOCKCHAIN_KATANA',\n katanaOld: 'BLOCKCHAIN_KATANA',\n\n sui: 'DESTINATION_BLOCKCHAIN_SUI',\n suiOld: 'BLOCKCHAIN_SUI',\n\n sonic: 'DESTINATION_BLOCKCHAIN_SONIC',\n sonicOld: 'BLOCKCHAIN_SONIC',\n\n solana: 'DESTINATION_BLOCKCHAIN_SOLANA',\n solanaOld: 'BLOCKCHAIN_SOLANA',\n\n starknet: 'DESTINATION_BLOCKCHAIN_STARKNET',\n starknetOld: 'BLOCKCHAIN_STARKNET',\n\n monad: 'DESTINATION_BLOCKCHAIN_MONAD',\n monadOld: 'BLOCKCHAIN_MONAD',\n\n stable: 'DESTINATION_BLOCKCHAIN_STABLE',\n stableOld: 'BLOCKCHAIN_STABLE',\n\n megaeth: 'DESTINATION_BLOCKCHAIN_MEGAETH',\n megaethOld: 'BLOCKCHAIN_MEGAETH',\n\n bitcoin: 'DESTINATION_BLOCKCHAIN_BITCOIN',\n bitcoinOld: 'BLOCKCHAIN_BITCOIN',\n} as const;\n\nexport type BlockchainIdentifier =\n (typeof BlockchainIdentifier)[keyof typeof BlockchainIdentifier];\n\nexport function getChainNameById(\n chainId: ChainId | SuiChain | SolanaChain | StarknetChainId,\n): BlockchainIdentifier {\n if (\n chainId === ChainId.ethereum ||\n chainId === ChainId.holesky ||\n chainId === ChainId.sepolia\n ) {\n return BlockchainIdentifier.eth;\n }\n\n if (\n (featureConfig.isAvalancheMainnetEnabled &&\n chainId === ChainId.avalanche) ||\n (featureConfig.isAvalancheFujiEnabled && chainId === ChainId.avalancheFuji)\n ) {\n return BlockchainIdentifier.avalanche;\n }\n\n if (chainId === ChainId.base || chainId === ChainId.baseSepoliaTestnet) {\n return BlockchainIdentifier.base;\n }\n\n if (\n chainId === ChainId.binanceSmartChain ||\n chainId === ChainId.binanceSmartChainTestnet\n ) {\n return BlockchainIdentifier.bsc;\n }\n\n if (chainId === ChainId.katana) {\n return BlockchainIdentifier.katana;\n }\n\n if (chainId === ChainId.sonic || chainId === ChainId.sonicBlazeTestnet) {\n return BlockchainIdentifier.sonic;\n }\n\n if (featureConfig.isMonadEnabled && chainId === ChainId.monad) {\n return BlockchainIdentifier.monad;\n }\n\n if (chainId === ChainId.megaeth) {\n return BlockchainIdentifier.megaeth;\n }\n\n if (chainId === ChainId.stable) {\n return BlockchainIdentifier.stable;\n }\n\n if (chainId === SUI_TESTNET_CHAIN || chainId === SUI_MAINNET_CHAIN) {\n return BlockchainIdentifier.sui;\n }\n\n if (\n chainId === SOLANA_DEVNET_CHAIN ||\n chainId === SOLANA_TESTNET_CHAIN ||\n chainId === SOLANA_MAINNET_CHAIN\n ) {\n return BlockchainIdentifier.solana;\n }\n\n if (\n chainId === STARKNET_MAINNET_CHAIN ||\n chainId === STARKNET_SEPOLIA_CHAIN\n ) {\n return BlockchainIdentifier.starknet;\n }\n\n throw new Error(`Unknown chain ID: ${chainId}`);\n}\n\nexport const getEthNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.ethereum : ChainId.sepolia;\n\nexport const getBscNetworkByEnv = (env: Env) =>\n env === Env.prod\n ? ChainId.binanceSmartChain\n : ChainId.binanceSmartChainTestnet;\n\nexport const getBaseNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.base : ChainId.baseSepoliaTestnet;\n\nexport const getSuiNetworkByEnv = (env: Env) =>\n env === Env.prod ? SUI_MAINNET_CHAIN : SUI_TESTNET_CHAIN;\n\nexport const getSonicNetworkByEnv = (env: Env) =>\n env === Env.prod ? ChainId.sonic : ChainId.sonicBlazeTestnet;\n\nexport const getSolanaNetworkByEnv = (env: Env) =>\n env === Env.prod ? SOLANA_MAINNET_CHAIN : SOLANA_DEVNET_CHAIN;\n\nexport const getStarknetNetworkByEnv = (env: Env) =>\n env === Env.prod ? STARKNET_MAINNET_CHAIN : STARKNET_SEPOLIA_CHAIN;\n\n/**\n * @param chain the chain ID\n * @param env\n * @returns the chain name\n */\nexport function getChainIdByName(\n chain: string,\n env: Env = DEFAULT_ENV,\n): ChainId | SuiChain | SolanaChain | StarknetChainId {\n switch (chain as BlockchainIdentifier) {\n case BlockchainIdentifier.eth:\n case BlockchainIdentifier.ethOld:\n return getEthNetworkByEnv(env);\n\n case BlockchainIdentifier.avalanche:\n case BlockchainIdentifier.avalancheOld:\n return env === Env.prod ? ChainId.avalanche : ChainId.avalancheFuji;\n\n case BlockchainIdentifier.base:\n case BlockchainIdentifier.baseOld:\n return getBaseNetworkByEnv(env);\n\n case BlockchainIdentifier.bsc:\n case BlockchainIdentifier.bscOld:\n return getBscNetworkByEnv(env);\n\n case BlockchainIdentifier.katana:\n case BlockchainIdentifier.katanaOld:\n return ChainId.katana;\n\n case BlockchainIdentifier.sui:\n case BlockchainIdentifier.suiOld:\n return getSuiNetworkByEnv(env);\n\n case BlockchainIdentifier.sonic:\n case BlockchainIdentifier.sonicOld:\n return getSonicNetworkByEnv(env);\n\n case BlockchainIdentifier.solana:\n case BlockchainIdentifier.solanaOld:\n return getSolanaNetworkByEnv(env);\n\n case BlockchainIdentifier.starknet:\n case BlockchainIdentifier.starknetOld:\n return getStarknetNetworkByEnv(env);\n\n case BlockchainIdentifier.monad:\n case BlockchainIdentifier.monadOld:\n return ChainId.monad;\n\n case BlockchainIdentifier.stable:\n case BlockchainIdentifier.stableOld:\n return ChainId.stable;\n\n case BlockchainIdentifier.megaeth:\n case BlockchainIdentifier.megaethOld:\n return ChainId.megaeth;\n\n default:\n return ChainId.ethereum;\n }\n}\n"],"names":["BlockchainIdentifier","getChainNameById","chainId","ChainId","SUI_TESTNET_CHAIN","SUI_MAINNET_CHAIN","SOLANA_DEVNET_CHAIN","SOLANA_TESTNET_CHAIN","SOLANA_MAINNET_CHAIN","STARKNET_MAINNET_CHAIN","STARKNET_SEPOLIA_CHAIN","getEthNetworkByEnv","env","Env","getBscNetworkByEnv","getBaseNetworkByEnv","getSuiNetworkByEnv","getSonicNetworkByEnv","getSolanaNetworkByEnv","getStarknetNetworkByEnv","getChainIdByName","chain","DEFAULT_ENV"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import k from "bignumber.js";
2
2
  import { encodeAbiParameters as ee, parseAbiParameters as te, encodePacked as ne, pad as ae } from "viem";
3
- import { getTokenInfo as U, makePublicClient as q, toBaseDenomination as Z, fromBaseDenomination as R, getErrorMessage as j } from "./tokens-HhVpKe3K.js";
4
- import { ChainId as e, Token as W, makeWalletClient as J } from "./token-addresses-Ddar0FyS.js";
3
+ import { getTokenInfo as U, makePublicClient as q, toBaseDenomination as Z, fromBaseDenomination as R, getErrorMessage as j } from "./tokens-Btl3GXbc.js";
4
+ import { ChainId as e, Token as W, makeWalletClient as J } from "./token-addresses-DVnRPyu4.js";
5
5
  import { toBigInt as K } from "./numbers-CclN2Ohk.js";
6
6
  import { unique as ie } from "./array-DYttUPf5.js";
7
- import { approveLBTC as X } from "./approveLBTC-BkdT1N3V.js";
7
+ import { approveLBTC as X } from "./approveLBTC-DnCt6ZZF.js";
8
8
  import { Options as se } from "@layerzerolabs/lz-v2-utilities";
9
9
  const V = /* @__PURE__ */ JSON.parse('[{"inputs":[{"internalType":"address","name":"wrappedNative","type":"address"},{"internalType":"address","name":"armProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadARMSignal","type":"error"},{"inputs":[],"name":"FailedToSendValue","type":"error"},{"inputs":[],"name":"InsufficientFeeTokenAmount","type":"error"},{"inputs":[],"name":"InvalidMsgValue","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"InvalidRecipientAddress","type":"error"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampMismatch","type":"error"},{"inputs":[],"name":"OnlyOffRamp","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"UnsupportedDestinationChain","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"},{"indexed":false,"internalType":"bytes32","name":"calldataHash","type":"bytes32"}],"name":"MessageExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"offRamp","type":"address"}],"name":"OffRampRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":false,"internalType":"address","name":"onRamp","type":"address"}],"name":"OnRampSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MAX_RET_BYTES","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"onRamp","type":"address"}],"internalType":"struct Router.OnRamp[]","name":"onRampUpdates","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"offRampRemoves","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"offRampAdds","type":"tuple[]"}],"name":"applyRampUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"destinationChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"ccipSend","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getArmProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destinationChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"getFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOffRamps","outputs":[{"components":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"internalType":"struct Router.OffRamp[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getOnRamp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"getSupportedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWrappedNative","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"chainSelector","type":"uint64"}],"name":"isChainSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"address","name":"offRamp","type":"address"}],"name":"isOffRamp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"uint64","name":"sourceChainSelector","type":"uint64"},{"internalType":"bytes","name":"sender","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"destTokenAmounts","type":"tuple[]"}],"internalType":"struct Client.Any2EVMMessage","name":"message","type":"tuple"},{"internalType":"uint16","name":"gasForCallExactCheck","type":"uint16"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"routeMessage","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"retData","type":"bytes"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wrappedNative","type":"address"}],"name":"setWrappedNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]'), re = {
10
10
  [e.ethereum]: {
@@ -667,4 +667,4 @@ export {
667
667
  xe as bridgeOFT,
668
668
  $ as getBridgeInfo
669
669
  };
670
- //# sourceMappingURL=bridge-DbB23m2a.js.map
670
+ //# sourceMappingURL=bridge-DV4fOcHe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-DV4fOcHe.js","sources":["../../src/bridge/lib/ccip-config.ts","../../src/bridge/lib/config.ts","../../src/bridge/lib/ccip-bridge.ts","../../src/bridge/lib/oft-bridge.ts","../../src/bridge/lib/bridge.ts"],"sourcesContent":["import { Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\n\nexport type CCIPChainConfig = {\n routerAddress: Address;\n chainSelector: string;\n};\n\ntype CCIPConfig = Record<number, CCIPChainConfig>;\n\nexport const CCIP_CONFIG: CCIPConfig = {\n [ChainId.ethereum]: {\n routerAddress: '0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D',\n chainSelector: '5009297550715157269',\n },\n [ChainId.base]: {\n routerAddress: '0x881e3A65B4d4a04dD529061dd0071cf975F58bCD',\n chainSelector: '15971525489660198786',\n },\n [ChainId.binanceSmartChain]: {\n routerAddress: '0x34B03Cb9086d7D758AC55af71584F81A598759FE',\n chainSelector: '11344663589394136015',\n },\n [ChainId.sonic]: {\n routerAddress: '0xB4e1Ff7882474BB93042be9AD5E1fA387949B860',\n chainSelector: '1673871237479749969',\n },\n [ChainId.katana]: {\n routerAddress: '0x7c19b79D2a054114Ab36ad758A36e92376e267DA',\n chainSelector: '2459028469735686113',\n },\n [ChainId.megaeth]: {\n routerAddress: '0xfa546248C54939AA6C48279CdC1EAf9A1125c411',\n chainSelector: '6093540873831549674',\n },\n [ChainId.avalanche]: {\n routerAddress: '0xF4c7E640EdA248ef95972845a62bdC74237805dB',\n chainSelector: '6433500567565415381',\n },\n [ChainId.monad]: {\n routerAddress: '0x33566fE5976AAa420F3d5C64996641Fc3858CaDB',\n chainSelector: '8481857512324358265',\n },\n [ChainId.stable]: {\n routerAddress: '0xECFF67559c0583027A5fbd85136E33bC4D66eeA0',\n chainSelector: '16978377838628290997',\n },\n // Testnets\n [ChainId.holesky]: {\n routerAddress: '0xb9531b46fE8808fB3659e39704953c2B1112DD43',\n chainSelector: '7717148896336251131',\n },\n [ChainId.baseSepoliaTestnet]: {\n routerAddress: '0xD3b06cEbF099CE7DA4AcCf578aaebFDBd6e88a93',\n chainSelector: '10344971235874465080',\n },\n [ChainId.binanceSmartChainTestnet]: {\n routerAddress: '0xE1053aE1857476f36A3C62580FF9b016E8EE8F6f',\n chainSelector: '13264668187771770619',\n },\n [ChainId.avalancheFuji]: {\n routerAddress: '0xF694E193200268f9a4868e4Aa017A0118C9a8177',\n chainSelector: '14767482510784806043',\n },\n};\n\nexport function getCCIPConfig(chainId: ChainId): CCIPChainConfig | undefined {\n return CCIP_CONFIG[chainId];\n}\n","import BigNumber from 'bignumber.js';\nimport { Abi, Address } from 'viem';\n\nimport { ChainId } from '../../common/chains';\nimport { ContractInfo } from '../../common/contract-info';\nimport { featureConfig } from '../../common/feature-config';\nimport { unique } from '../../utils/array';\nimport CCIP_BRIDGE_ADAPTER_ABI from '../abi/CCIP_BRIDGE_ADAPTER_ABI.json';\nimport OFT_BRIDGE_ADAPTER_ABI from '../abi/OFT_BRIDGE_ADAPTER_ABI.json';\n\nexport const MIN_BRIDGE_AMOUNT = BigNumber(0.000001);\n\nexport enum BridgeType {\n /** CCIP - (Chainlink) Cross-Chain Interoperability Protocol */\n CCIP = 'CCIP',\n\n /** OFT - (LayerZero) Omnichain Fungible Token */\n OFT = 'OFT',\n}\n\nexport const BRIDGE_EXPLORER_URL_MAP = {\n [BridgeType.CCIP]: 'https://ccip.chain.link/tx/{txHash}',\n [BridgeType.OFT]: 'https://layerzeroscan.com/tx/{txHash}',\n};\n\nexport const CCIP_BRIDGE_CHAINS = [\n // Mainnets:\n ChainId.ethereum,\n ChainId.base,\n ChainId.binanceSmartChain,\n ChainId.katana,\n ChainId.sonic,\n ...(featureConfig.isAvalancheMainnetEnabled ? [ChainId.avalanche] : []),\n ...(featureConfig.isMonadEnabled ? [ChainId.monad] : []),\n ChainId.stable,\n // Testnets:\n ...(featureConfig.isAvalancheFujiEnabled ? [ChainId.avalancheFuji] : []),\n ChainId.baseSepoliaTestnet,\n ChainId.holesky,\n ChainId.sepolia,\n];\nexport type CCIPBridgeChain = (typeof CCIP_BRIDGE_CHAINS)[number];\n\nexport const OFT_BRIDGE_CHAINS = [\n // Mainnets:\n ChainId.ethereum,\n ChainId.berachain,\n ChainId.corn,\n ChainId.etherlink,\n ChainId.swell,\n ChainId.tac,\n // Testnets:\n ChainId.berachainBartioTestnet,\n ChainId.sepolia,\n];\n\nexport const BRIDGE_CHAINS = unique([\n ...CCIP_BRIDGE_CHAINS,\n ...OFT_BRIDGE_CHAINS,\n]);\nexport type BridgeChain = CCIPBridgeChain | OFTBridgeChain;\n\nexport const OFT_GAS_LIMIT = 90_000;\nexport const OFT_HI_GAS_LIMIT = 200_000;\nexport const OFT_HI_GAS_LIMIT_CHAINS = [\n // Mainnets:\n ChainId.berachain,\n ChainId.etherlink,\n ChainId.morph,\n ChainId.sonic,\n ChainId.corn,\n ChainId.tac,\n // Testnets:\n ChainId.berachainBartioTestnet,\n ChainId.morphHolesky,\n];\n\nexport type OFTBridgeChain = (typeof OFT_BRIDGE_CHAINS)[number];\n\ntype BridgeIdentifier<Ch extends CCIPBridgeChain | OFTBridgeChain> =\n `[from:${Ch}, to: ${Ch}]`;\n\nconst bridgeIdentifier = <Ch extends CCIPBridgeChain | OFTBridgeChain>([\n from,\n to,\n]: [from: Ch, to: Ch]): BridgeIdentifier<Ch> => `[from:${from}, to: ${to}]`;\n\ntype BridgeInfo = { type: BridgeType; contract: ContractInfo };\n\ntype CCIPBridgesConfig = [\n BridgeIdentifier<CCIPBridgeChain>,\n { type: BridgeType.CCIP; contract: ContractInfo },\n];\n\nconst CCIP_FROM_ETH = {\n routes: [\n bridgeIdentifier([ChainId.ethereum, ChainId.base]),\n bridgeIdentifier([ChainId.ethereum, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.ethereum, ChainId.sonic]),\n bridgeIdentifier([ChainId.ethereum, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n};\n\nconst CCIP_FROM_BASE = {\n routes: [\n bridgeIdentifier([ChainId.base, ChainId.ethereum]),\n bridgeIdentifier([ChainId.base, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.base, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.base,\n },\n};\n\nconst CCIP_FROM_BSC = {\n routes: [\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.ethereum]),\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.base]),\n bridgeIdentifier([ChainId.binanceSmartChain, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.binanceSmartChain,\n },\n};\n\nconst CCIP_FROM_KATANA = {\n routes: [\n bridgeIdentifier([ChainId.katana, ChainId.ethereum]),\n bridgeIdentifier([ChainId.katana, ChainId.base]),\n bridgeIdentifier([ChainId.katana, ChainId.binanceSmartChain]),\n bridgeIdentifier([ChainId.katana, ChainId.sonic]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xA869817b48b25EeE986bdF4bE04062e6fd2C418B' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.katana,\n },\n};\n\nconst CCIP_FROM_SONIC = {\n routes: [\n bridgeIdentifier([ChainId.sonic, ChainId.ethereum]),\n bridgeIdentifier([ChainId.sonic, ChainId.katana]),\n ],\n type: BridgeType.CCIP,\n contract: {\n address: '0xa869817b48b25eee986bdf4be04062e6fd2c418b' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sonic,\n },\n};\n\nconst CCIP_FROM_BASE_SEPOLIA = {\n routes: [bridgeIdentifier([ChainId.baseSepoliaTestnet, ChainId.holesky])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.baseSepoliaTestnet,\n },\n};\n\nconst CCIP_FROM_HOLESKY = {\n routes: [bridgeIdentifier([ChainId.holesky, ChainId.baseSepoliaTestnet])],\n type: BridgeType.CCIP,\n contract: {\n address: '0x38247C4c846D549CAAd2C6c0b6fec0c402b77a0F' as Address,\n abi: CCIP_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.holesky,\n },\n};\n\nconst CCIP_BRIDGES: CCIPBridgesConfig[] = [\n // Mainnets:\n CCIP_FROM_ETH,\n CCIP_FROM_BASE,\n CCIP_FROM_BSC,\n CCIP_FROM_KATANA,\n CCIP_FROM_SONIC,\n // Testnets:\n CCIP_FROM_BASE_SEPOLIA,\n CCIP_FROM_HOLESKY,\n].reduce((acc, cur) => {\n if (cur.type !== BridgeType.CCIP) return acc;\n\n const c: CCIPBridgesConfig[] = cur.routes.map((route) => [\n route,\n { type: BridgeType.CCIP, contract: cur.contract },\n ]);\n\n return acc.concat(c);\n}, [] as CCIPBridgesConfig[]);\n\ntype OFTBridgeConfig = [\n BridgeIdentifier<OFTBridgeChain>,\n { type: BridgeType.OFT; contract: ContractInfo },\n];\nconst OFT_BRIDGES: OFTBridgeConfig[] = [\n // Mainnets:\n\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.berachain]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1290A6b480f7eF14925229fdB66f5680aD8F44AD',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.corn]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x6bc15d7930839ec18a57f6f7df72ae1b439d077f',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.etherlink]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x3a7647c1323144a16e7D0D71A581E3FE5BD95299',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.swell]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x37E92d760a15231e652a2C502182a6b44c7510c0',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.ethereum, ChainId.tac]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xA7c4d94F98b6e94C139c4645e4E9a94CD7C0Abf7',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.ethereum,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.berachain, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x630e12D53D4E041b8C5451aD035Ea841E08391d7',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.berachain,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.corn, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xfc7B20D9B59A8A466f4fC3d34aA69a7D98e71d7A',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.corn,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.etherlink, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xC832183d4d5fc5831daaC892a93dBBfd798034E3',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.etherlink,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.swell, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x7B3784AD646C10A8Ddf42b47a4f4bd9aFD351E54',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.swell,\n },\n },\n ],\n [\n bridgeIdentifier([ChainId.tac, ChainId.ethereum]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1298131cDa718bBcA7ACB1f2411e71c05E16f269',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.tac,\n },\n },\n ],\n\n // Testnets:\n\n [\n bridgeIdentifier([ChainId.berachainBartioTestnet, ChainId.sepolia]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0x1977013acaf27856ac8048C42EE2ed0134d53895',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.berachainBartioTestnet,\n },\n },\n ],\n\n [\n bridgeIdentifier([ChainId.sepolia, ChainId.berachainBartioTestnet]),\n {\n type: BridgeType.OFT,\n contract: {\n address: '0xe3748bF0Ec0A76767539eE28610B3367e35fe2C2',\n abi: OFT_BRIDGE_ADAPTER_ABI as Abi,\n chainId: ChainId.sepolia,\n },\n },\n ],\n];\n\nexport const BRIDGES = new Map<BridgeIdentifier<BridgeChain>, BridgeInfo>([\n ...CCIP_BRIDGES,\n ...OFT_BRIDGES,\n]);\n\n/** Gets the bridge information */\nexport const getBridgeInfo = (from: BridgeChain, to: BridgeChain) => {\n return BRIDGES.get(bridgeIdentifier([from, to]));\n};\n","import BigNumber from 'bignumber.js';\nimport {\n Address,\n encodeAbiParameters,\n encodePacked,\n parseAbiParameters,\n} from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { approveLBTC } from '../../contract-functions';\nimport { Token } from '../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../tokens/tokens';\nimport { getErrorMessage } from '../../utils/err';\nimport toBigInt from '../../utils/numbers';\nimport CCIP_ROUTER_ABI from '../abi/CCIP_ROUTER_ABI.json';\nimport { getCCIPConfig } from './ccip-config';\nimport {\n BridgeType,\n CCIP_BRIDGE_CHAINS,\n CCIPBridgeChain,\n getBridgeInfo,\n MIN_BRIDGE_AMOUNT,\n} from './config';\n\nexport type BridgeCCIPParameters = {\n /** The destination chain id. */\n to: CCIPBridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters;\n\n/**\n * Encodes extraArgs for CCIP according to version 1\n * Format: EVMExtraArgsV1 { gasLimit: uint256 }\n *\n * @see https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/offchain/javascript/src/transfer-tokens.js\n */\nfunction encodeExtraArgs(gasLimit: bigint): `0x${string}` {\n // Tag for EVMExtraArgsV1\n const tag = '0x97a657c9';\n\n // Encode gasLimit as uint256\n const encodedGasLimit = encodePacked(['uint256'], [gasLimit]);\n\n return `${tag}${encodedGasLimit.slice(2)}` as `0x${string}`;\n}\n\n/**\n * Transfers tokens via CCIP using direct Router contract calls\n * Based on Chainlink example:\n * @see https://github.com/smartcontractkit/smart-contract-examples/blob/main/ccip/offchain/javascript/src/transfer-tokens.js\n */\nexport async function bridgeCCIP({\n to,\n amount: amountRaw,\n approve,\n recipient: optionalRecipient,\n account,\n chainId: from,\n provider,\n env,\n rpcUrl,\n}: BridgeCCIPParameters) {\n const amount = BigNumber(amountRaw);\n const recipient = optionalRecipient || account;\n\n const bridgeInfo = getBridgeInfo(from as CCIPBridgeChain, to);\n if (!bridgeInfo || bridgeInfo.type !== BridgeType.CCIP) {\n throw new Error(\n `Unsupported bridge from ${from} to ${to}. Please switch to the supported chains: ${CCIP_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n // Get CCIP Router configuration\n const sourceChainConfig = getCCIPConfig(from);\n const destinationChainConfig = getCCIPConfig(to);\n\n if (!sourceChainConfig || !destinationChainConfig) {\n throw new Error(`CCIP configuration not found for chains ${from} -> ${to}`);\n }\n\n const routerAddress = sourceChainConfig.routerAddress;\n\n const lbtcContract = await getTokenInfo(Token.LBTC, from, env, rpcUrl);\n if (!lbtcContract) {\n throw new Error('Could not retrieve LBTC contract info.');\n }\n\n const publicClient = makePublicClient({ chainId: from, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId: from });\n\n const amountBase = toBigInt(\n toBaseDenomination(amount, lbtcContract.decimals),\n );\n\n if (amount.isLessThan(MIN_BRIDGE_AMOUNT)) {\n throw new Error(\n `The amount is smaller than the minimum amount allowed: ${MIN_BRIDGE_AMOUNT.toFixed()}`,\n );\n }\n\n const balanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The amount exceeds the account's balance. \\nAmount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n const allowanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'allowance',\n args: [account, routerAddress],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The amount exceeds allowance. \\nAmount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount for Router\n console.info(exceededMessage);\n try {\n const txHash = await approveLBTC({\n account,\n spender: routerAddress,\n amount,\n chainId: from,\n provider,\n rpcUrl,\n env,\n });\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${routerAddress}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${routerAddress}. \\nReason: ${msg}`,\n );\n }\n }\n\n // Build CCIP message (EVM2AnyMessage)\n // IMPORTANT: receiver must be abi.encode(address) for EVM chains, not encodePacked\n const receiverBytes = encodeAbiParameters(parseAbiParameters('address'), [\n recipient,\n ]);\n const extraArgs = encodeExtraArgs(0n);\n\n const message = {\n receiver: receiverBytes,\n data: '0x' as `0x${string}`,\n tokenAmounts: [\n {\n token: lbtcContract.address,\n amount: amountBase,\n },\n ],\n feeToken: '0x0000000000000000000000000000000000000000' as Address, // address(0) means payment in native currency\n extraArgs, // 0 = automatic gas limit calculation\n };\n\n // Get fee for sending the message\n const fee = (await publicClient.readContract({\n address: routerAddress,\n abi: CCIP_ROUTER_ABI,\n functionName: 'getFee',\n args: [BigInt(destinationChainConfig.chainSelector), message],\n })) as bigint;\n\n // Send CCIP message\n const { request } = await publicClient.simulateContract({\n address: routerAddress,\n abi: CCIP_ROUTER_ABI,\n account,\n functionName: 'ccipSend',\n args: [BigInt(destinationChainConfig.chainSelector), message],\n value: fee,\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import { Options } from '@layerzerolabs/lz-v2-utilities';\nimport BigNumber from 'bignumber.js';\nimport { Address, pad } from 'viem';\n\nimport { makePublicClient } from '../../clients/public-client';\nimport { makeWalletClient } from '../../clients/wallet-client';\nimport { ChainId } from '../../common/chains';\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { approveLBTC } from '../../contract-functions';\nimport { Token } from '../../tokens/token-addresses';\nimport {\n fromBaseDenomination,\n getTokenInfo,\n toBaseDenomination,\n} from '../../tokens/tokens';\nimport { getErrorMessage } from '../../utils/err';\nimport toBigInt from '../../utils/numbers';\nimport {\n BridgeType,\n getBridgeInfo,\n MIN_BRIDGE_AMOUNT,\n OFT_BRIDGE_CHAINS,\n OFT_GAS_LIMIT,\n OFT_HI_GAS_LIMIT,\n OFT_HI_GAS_LIMIT_CHAINS,\n OFTBridgeChain,\n} from './config';\n\nconst DESTINATION_ENDPOINT_ID_MAP: Record<OFTBridgeChain, number> = {\n // Mainnets:\n [ChainId.ethereum]: 30101,\n [ChainId.berachain]: 30362,\n [ChainId.corn]: 30331,\n [ChainId.etherlink]: 30292,\n [ChainId.swell]: 30335,\n [ChainId.tac]: 30377,\n // Testnets:\n [ChainId.sepolia]: 40161,\n [ChainId.berachainBartioTestnet]: 40291,\n};\n\nexport type BridgeOFTParameters = {\n /** The destination chain id. */\n to: OFTBridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters;\nexport async function bridgeOFT({\n to,\n amount: amountRaw,\n approve,\n recipient: optionalRecipient,\n account,\n chainId: from,\n provider,\n env,\n rpcUrl,\n}: BridgeOFTParameters) {\n console.warn(\n 'The \"bridgeOFT\" function is provided as is and it is not the recommended way of bridging tokens between chains. Please, use \"bridgeCCIP\" or the generic \"bridge\" function.',\n );\n\n const amount = BigNumber(amountRaw);\n const recipient = optionalRecipient || account;\n\n const bridgeInfo = getBridgeInfo(from as OFTBridgeChain, to);\n if (!bridgeInfo || bridgeInfo.type !== BridgeType.OFT) {\n throw new Error(\n `Unsupported bridge from ${from} to ${to}. Please switch to the supported chains: ${OFT_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n const bridgeContract = bridgeInfo.contract;\n\n const lbtcContract = await getTokenInfo(Token.LBTC, from, env, rpcUrl);\n if (!lbtcContract) {\n throw new Error('Could not retrieve LBTC contract info.');\n }\n\n const publicClient = makePublicClient({ chainId: from, rpcUrl });\n const walletClient = makeWalletClient({ provider, chainId: from });\n\n const amountBase = toBigInt(\n toBaseDenomination(amount, lbtcContract.decimals),\n );\n\n if (amount.isLessThan(MIN_BRIDGE_AMOUNT)) {\n throw new Error(\n `The amount is smaller than the minimum amount allowed: ${MIN_BRIDGE_AMOUNT.toFixed()}`,\n );\n }\n\n const balanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'balanceOf',\n args: [account],\n });\n const balance = fromBaseDenomination(\n String(balanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds balance\n if (amount.isGreaterThan(balance)) {\n throw new Error(\n `The amount exceeds the account's balance. \\nAmount: ${amount.toFixed()} \\nBalance: ${balance.toFixed()}`,\n );\n }\n\n const allowanceRaw = await publicClient.readContract({\n address: lbtcContract.address,\n abi: lbtcContract.abi,\n functionName: 'allowance',\n args: [account, bridgeContract.address],\n });\n const allowance = fromBaseDenomination(\n String(allowanceRaw),\n lbtcContract.decimals,\n );\n\n // check if amount exceeds allowance\n if (amount.isGreaterThan(allowance)) {\n const exceededMessage = `The amount exceeds allowance. \\nAmount: ${amount.toFixed()} \\nAllowance: ${allowance.toFixed()}`;\n if (!approve) {\n throw new Error(exceededMessage);\n }\n\n // try to approve new amount\n console.info(exceededMessage);\n try {\n const txHash = await approveLBTC({\n account,\n spender: bridgeContract.address,\n amount,\n chainId: from,\n provider,\n rpcUrl,\n env,\n });\n console.info(`Approve tx hash: ${txHash}`);\n console.info(`Approved ${amountBase} for ${bridgeContract.address}`);\n } catch (err) {\n const msg = getErrorMessage(err);\n throw new Error(\n `Could not approve ${amountBase} for ${bridgeContract.address}. \\nReason: ${msg}`,\n );\n }\n }\n\n const extraOptions = Options.newOptions().addExecutorLzReceiveOption(\n (OFT_HI_GAS_LIMIT_CHAINS as number[]).includes(to)\n ? OFT_HI_GAS_LIMIT\n : OFT_GAS_LIMIT,\n 0,\n );\n\n /** _sendParam */\n const sendParam = [\n /** dstEid - uint32 */\n DESTINATION_ENDPOINT_ID_MAP[to],\n /** to - bytes32 */\n pad(recipient),\n /** amountLD - uint256 */\n amountBase,\n /** minAmountLD - uint256 */\n amountBase,\n /** extraOptions - bytes */\n extraOptions.toHex(),\n /** composeMsg - bytes */\n '0x',\n /** oftCmd - bytes */\n '0x',\n ];\n\n const { nativeFee, lzTokenFee } = (await publicClient.readContract({\n abi: bridgeContract.abi,\n address: bridgeContract.address,\n account,\n functionName: 'quoteSend',\n args: [sendParam, false],\n })) as { nativeFee: bigint; lzTokenFee: bigint };\n\n const bridgeArgs = [\n /** _sendParam */\n sendParam,\n /** _fee */\n [\n /** nativeFee - uint256 */\n nativeFee,\n /** lzTokenFee - uint256 */\n lzTokenFee,\n ],\n /** address - address */\n account,\n ];\n\n const { request } = await publicClient.simulateContract({\n abi: bridgeContract.abi,\n address: bridgeContract.address,\n account,\n functionName: 'send',\n args: bridgeArgs,\n value: nativeFee,\n });\n\n const txHash = await walletClient.writeContract(request);\n return txHash;\n}\n","import BigNumber from 'bignumber.js';\nimport { Address } from 'viem';\n\nimport { CommonWriteParameters } from '../../common/parameters';\nimport { bridgeCCIP } from './ccip-bridge';\nimport {\n BRIDGE_EXPLORER_URL_MAP,\n BridgeChain,\n BridgeType,\n CCIP_BRIDGE_CHAINS,\n CCIPBridgeChain,\n getBridgeInfo,\n OFTBridgeChain,\n} from './config';\nimport { bridgeOFT } from './oft-bridge';\n\nexport type BridgeParameters = {\n /** The destination chain id. */\n to: BridgeChain;\n /** The LBTC amount. */\n amount: BigNumber.Value;\n /**\n * A flag determining whether the amount should be approved within\n * the execution of this function. If set to `false` it will\n * throw an error when the deposit amount exceeds allowance.\n */\n approve?: boolean;\n /** The destination address. If omitted the same as the account address. */\n recipient?: Address;\n} & CommonWriteParameters & {\n /**\n * A flag indicating whether the OFT bridge should be allowed.\n * Use at your onw risk!\n */\n experimentalAllowOFT?: boolean;\n };\n\n/**\n * Bridges funds (`amount`) from the connected chain (`chainId`) to the provided\n * destination chain (`to`)\n */\nexport async function bridge({\n to,\n amount,\n approve,\n account,\n chainId,\n provider,\n recipient,\n rpcUrl,\n env,\n experimentalAllowOFT = false,\n}: BridgeParameters) {\n const bridgeInfo = getBridgeInfo(chainId as BridgeChain, to);\n\n if (\n !bridgeInfo ||\n (!experimentalAllowOFT && bridgeInfo.type === BridgeType.OFT)\n ) {\n // The OFT bridges are disabled for now in this generic function as we're\n // working on moving all bridges to the CCIP method. OFT bridging shouldn't\n // be exposed.\n throw new Error(\n `Unsupported bridge from ${chainId} to ${to}. Please switch to the supported chains: ${CCIP_BRIDGE_CHAINS.join(', ')}`,\n );\n }\n\n switch (bridgeInfo.type) {\n case BridgeType.CCIP: {\n const txHash = await bridgeCCIP({\n to: to as CCIPBridgeChain,\n amount,\n approve,\n recipient,\n account,\n chainId,\n provider,\n env,\n rpcUrl,\n });\n\n return {\n txHash,\n explorerUrl: BRIDGE_EXPLORER_URL_MAP[BridgeType.CCIP].replace(\n '{txHash}',\n txHash,\n ),\n type: BridgeType.CCIP,\n };\n }\n\n case BridgeType.OFT: {\n const txHash = await bridgeOFT({\n to: to as OFTBridgeChain,\n amount,\n approve,\n recipient,\n account,\n chainId,\n provider,\n env,\n rpcUrl,\n });\n\n return {\n txHash,\n explorerUrl: BRIDGE_EXPLORER_URL_MAP[BridgeType.OFT].replace(\n '{txHash}',\n txHash,\n ),\n type: BridgeType.OFT,\n };\n }\n }\n}\n"],"names":["CCIP_CONFIG","ChainId","getCCIPConfig","chainId","MIN_BRIDGE_AMOUNT","BigNumber","BridgeType","BRIDGE_EXPLORER_URL_MAP","CCIP_BRIDGE_CHAINS","OFT_BRIDGE_CHAINS","unique","OFT_GAS_LIMIT","OFT_HI_GAS_LIMIT","OFT_HI_GAS_LIMIT_CHAINS","bridgeIdentifier","from","to","CCIP_FROM_ETH","CCIP_BRIDGE_ADAPTER_ABI","CCIP_FROM_BASE","CCIP_FROM_BSC","CCIP_FROM_KATANA","CCIP_FROM_SONIC","CCIP_FROM_BASE_SEPOLIA","CCIP_FROM_HOLESKY","CCIP_BRIDGES","acc","cur","c","route","OFT_BRIDGES","OFT_BRIDGE_ADAPTER_ABI","BRIDGES","getBridgeInfo","encodeExtraArgs","gasLimit","tag","encodedGasLimit","encodePacked","bridgeCCIP","amountRaw","approve","optionalRecipient","account","provider","env","rpcUrl","amount","recipient","bridgeInfo","sourceChainConfig","destinationChainConfig","routerAddress","lbtcContract","getTokenInfo","Token","publicClient","makePublicClient","walletClient","makeWalletClient","amountBase","toBigInt","toBaseDenomination","balanceRaw","balance","fromBaseDenomination","allowanceRaw","allowance","exceededMessage","txHash","approveLBTC","err","msg","getErrorMessage","receiverBytes","encodeAbiParameters","parseAbiParameters","extraArgs","message","fee","CCIP_ROUTER_ABI","request","DESTINATION_ENDPOINT_ID_MAP","bridgeOFT","bridgeContract","extraOptions","Options","sendParam","pad","nativeFee","lzTokenFee","bridgeArgs","bridge","experimentalAllowOFT"],"mappings":"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"}