@lombard.finance/sdk 4.0.0 → 4.1.2

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 (474) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
  3. package/dist/bridge/lib/config.d.ts +3 -3
  4. package/dist/bridge/lib/config.d.ts.map +1 -1
  5. package/dist/common/chains.d.ts +2 -2
  6. package/dist/common/chains.d.ts.map +1 -1
  7. package/dist/common/feature-config.d.ts.map +1 -1
  8. package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts.map +1 -1
  9. package/dist/index2.cjs +6 -6
  10. package/dist/index2.js +792 -759
  11. package/dist/vaults/lib/config.d.ts +1 -1
  12. package/package.json +7 -8
  13. package/src/__tests__/AssetNamespace.spec.ts +0 -234
  14. package/src/__tests__/helpers/createTestConfig.ts +0 -90
  15. package/src/__tests__/integration/automint-fee.integration.test.ts +0 -74
  16. package/src/__tests__/integration/btc-deposit.integration.test.ts +0 -109
  17. package/src/__tests__/integration/btc-stake-and-deploy.integration.test.ts +0 -96
  18. package/src/__tests__/integration/btc-stake.integration.test.ts +0 -466
  19. package/src/__tests__/integration/evm-actions.integration.test.ts +0 -932
  20. package/src/__tests__/integration/evm-deploy.integration.test.ts +0 -122
  21. package/src/__tests__/integration/evm-redeem.integration.test.ts +0 -157
  22. package/src/__tests__/integration/faq-patterns.integration.test.ts +0 -465
  23. package/src/__tests__/integration/getLBTCMintingFee.integration.test.ts +0 -195
  24. package/src/__tests__/real-wallet/btc/btc-stake.real.test.ts +0 -70
  25. package/src/__tests__/real-wallet/evm/evm-stake.real.test.ts +0 -47
  26. package/src/__tests__/real-wallet/evm/evm-unstake.real.test.ts +0 -49
  27. package/src/__tests__/real-wallet/non-evm/solana-unstake.real.test.ts +0 -19
  28. package/src/__tests__/real-wallet/non-evm/starknet-unstake.real.test.ts +0 -19
  29. package/src/__tests__/real-wallet/non-evm/sui-unstake.real.test.ts +0 -19
  30. package/src/__tests__/services/ApiService.test.ts +0 -62
  31. package/src/__tests__/services/BtcService.test.ts +0 -30
  32. package/src/__tests__/services/EvmService.test.ts +0 -39
  33. package/src/__tests__/setup.ts +0 -16
  34. package/src/__tests__/test-utils/eip1193-adapter.ts +0 -48
  35. package/src/__tests__/test-utils/evm-wallet.ts +0 -38
  36. package/src/__tests__/test-utils/solana-wallet.ts +0 -22
  37. package/src/__tests__/test-utils/starknet-wallet.ts +0 -9
  38. package/src/__tests__/test-utils/sui-wallet.ts +0 -14
  39. package/src/__tests__/test-utils/test-constraints.ts +0 -110
  40. package/src/__tests__/unit/btc/BtcDeposit.test.ts +0 -253
  41. package/src/__tests__/unit/btc/BtcDepositAndDeploy.test.ts +0 -174
  42. package/src/__tests__/unit/btc/BtcDepositConfig.test.ts +0 -143
  43. package/src/__tests__/unit/btc/BtcDepositStatusTransition.test.ts +0 -221
  44. package/src/__tests__/unit/btc/BtcStakeAndDeploy.test.ts +0 -194
  45. package/src/__tests__/unit/btc/ExistingSignatureHandling.test.ts +0 -301
  46. package/src/__tests__/unit/btc/StakeAndBakeRatioConversion.test.ts +0 -200
  47. package/src/__tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts +0 -216
  48. package/src/__tests__/unit/btc/TokenParameterConsistency.test.ts +0 -184
  49. package/src/__tests__/unit/btc/btc-deposit-token.test.ts +0 -191
  50. package/src/__tests__/unit/catalog/AssetCatalog.test.ts +0 -293
  51. package/src/__tests__/unit/config/ChainConfig.test.ts +0 -47
  52. package/src/__tests__/unit/config/FeeAuthConfig.test.ts +0 -76
  53. package/src/__tests__/unit/contract-functions/getLBTCMintingFee.test.ts +0 -128
  54. package/src/__tests__/unit/core/chain-parsing.test.ts +0 -257
  55. package/src/__tests__/unit/defi/AvailableProtocols.test.ts +0 -100
  56. package/src/__tests__/unit/defi/DefiRegistry.test.ts +0 -25
  57. package/src/__tests__/unit/evm/EvmDeploy.test.ts +0 -224
  58. package/src/__tests__/unit/evm/EvmRedeem.test.ts +0 -207
  59. package/src/__tests__/unit/evm/EvmRedeemFeeAuth.test.ts +0 -93
  60. package/src/__tests__/unit/evm/EvmStake.test.ts +0 -207
  61. package/src/__tests__/unit/evm/EvmStakeFeeAuth.test.ts +0 -193
  62. package/src/__tests__/unit/evm/EvmUnstakeAllowance.test.ts +0 -69
  63. package/src/__tests__/unit/evm/EvmUnstakeConfig.test.ts +0 -203
  64. package/src/__tests__/unit/fee-signature-expiration.test.ts +0 -76
  65. package/src/__tests__/unit/modules/CapabilityRegistry.test.ts +0 -55
  66. package/src/__tests__/unit/shared/BaseAction.test.ts +0 -122
  67. package/src/__tests__/unit/shared/BaseBtcAction.test.ts +0 -114
  68. package/src/__tests__/unit/solana/SolanaUnstake.test.ts +0 -314
  69. package/src/__tests__/unit/starknet/StarknetUnstake.test.ts +0 -318
  70. package/src/__tests__/unit/sui/SuiUnstake.test.ts +0 -310
  71. package/src/__tests__/unit/utils/satoshi.test.ts +0 -27
  72. package/src/__tests__/unit/validation/address-validation.test.ts +0 -350
  73. package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.tsx +0 -71
  74. package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts +0 -235
  75. package/src/api-functions/generateDepositBtcAddress/index.ts +0 -1
  76. package/src/api-functions/get-badges-by-address/get-badges-by-address.ts +0 -13
  77. package/src/api-functions/get-badges-by-address/index.ts +0 -1
  78. package/src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts +0 -38
  79. package/src/api-functions/getDepositAddressReferrer/index.ts +0 -1
  80. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.tsx +0 -59
  81. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.ts +0 -265
  82. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts +0 -167
  83. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.tsx +0 -58
  84. package/src/api-functions/getDepositBtcAddress/index.ts +0 -1
  85. package/src/api-functions/getDepositBtcAddress/make-request.ts +0 -59
  86. package/src/api-functions/getDepositBtcAddress/types.ts +0 -106
  87. package/src/api-functions/getDepositsByAddress/getDepositsByAddress.stories.tsx +0 -51
  88. package/src/api-functions/getDepositsByAddress/getDepositsByAddress.ts +0 -502
  89. package/src/api-functions/getDepositsByAddress/index.ts +0 -1
  90. package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.tsx +0 -48
  91. package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.ts +0 -59
  92. package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.tsx +0 -55
  93. package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.ts +0 -75
  94. package/src/api-functions/getLBTCExchangeRate/index.ts +0 -2
  95. package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.tsx +0 -59
  96. package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts +0 -116
  97. package/src/api-functions/getNetworkFeeSignature/index.ts +0 -1
  98. package/src/api-functions/getPointsByAddress/getPointsByAddress.stories.tsx +0 -51
  99. package/src/api-functions/getPointsByAddress/getPointsByAddress.ts +0 -304
  100. package/src/api-functions/getPointsByAddress/index.ts +0 -1
  101. package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.tsx +0 -51
  102. package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts +0 -368
  103. package/src/api-functions/getUnstakesByAddress/index.ts +0 -1
  104. package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.tsx +0 -70
  105. package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts +0 -91
  106. package/src/api-functions/getUserStakeAndBakeSignature/index.ts +0 -1
  107. package/src/api-functions/index.ts +0 -11
  108. package/src/api-functions/setReferral/index.ts +0 -1
  109. package/src/api-functions/setReferral/setReferral.ts +0 -67
  110. package/src/api-functions/storeNetworkFeeSignature/index.ts +0 -1
  111. package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.tsx +0 -57
  112. package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.ts +0 -75
  113. package/src/api-functions/storeStakeAndBakeSignature/index.ts +0 -1
  114. package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.tsx +0 -57
  115. package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +0 -61
  116. package/src/bridge/abi/CCIP_BRIDGE_ADAPTER_ABI.json +0 -704
  117. package/src/bridge/abi/CCIP_ROUTER_ABI.json +0 -702
  118. package/src/bridge/abi/OFT_BRIDGE_ADAPTER_ABI.json +0 -912
  119. package/src/bridge/index.ts +0 -16
  120. package/src/bridge/lib/bridge.stories.tsx +0 -90
  121. package/src/bridge/lib/bridge.ts +0 -115
  122. package/src/bridge/lib/ccip-bridge.stories.tsx +0 -91
  123. package/src/bridge/lib/ccip-bridge.ts +0 -214
  124. package/src/bridge/lib/ccip-config.ts +0 -54
  125. package/src/bridge/lib/config.ts +0 -384
  126. package/src/bridge/lib/oft-bridge.stories.tsx +0 -90
  127. package/src/bridge/lib/oft-bridge.ts +0 -217
  128. package/src/chains/btc/BtcActions.ts +0 -192
  129. package/src/chains/btc/actions/deposit/BtcDeposit.ts +0 -388
  130. package/src/chains/btc/actions/deposit/config/evm.ts +0 -197
  131. package/src/chains/btc/actions/deposit/config/index.ts +0 -53
  132. package/src/chains/btc/actions/deposit/config/types.ts +0 -108
  133. package/src/chains/btc/actions/deposit/factory.ts +0 -53
  134. package/src/chains/btc/actions/deposit/index.ts +0 -23
  135. package/src/chains/btc/actions/deposit/types.ts +0 -120
  136. package/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts +0 -366
  137. package/src/chains/btc/actions/depositAndDeploy/config/evm.ts +0 -105
  138. package/src/chains/btc/actions/depositAndDeploy/config/index.ts +0 -111
  139. package/src/chains/btc/actions/depositAndDeploy/config/types.ts +0 -67
  140. package/src/chains/btc/actions/depositAndDeploy/factory.ts +0 -38
  141. package/src/chains/btc/actions/depositAndDeploy/index.ts +0 -24
  142. package/src/chains/btc/actions/depositAndDeploy/types.ts +0 -120
  143. package/src/chains/btc/actions/index.ts +0 -14
  144. package/src/chains/btc/actions/shared/BaseBtcAction.ts +0 -495
  145. package/src/chains/btc/actions/shared/index.ts +0 -28
  146. package/src/chains/btc/actions/shared/tokenUtils.ts +0 -68
  147. package/src/chains/btc/actions/shared/validation.ts +0 -180
  148. package/src/chains/btc/actions/stake/BtcStake.ts +0 -433
  149. package/src/chains/btc/actions/stake/__tests__/BtcStake.test.ts +0 -247
  150. package/src/chains/btc/actions/stake/config/evm.ts +0 -183
  151. package/src/chains/btc/actions/stake/config/index.ts +0 -122
  152. package/src/chains/btc/actions/stake/config/solana.ts +0 -96
  153. package/src/chains/btc/actions/stake/config/starknet.ts +0 -66
  154. package/src/chains/btc/actions/stake/config/sui.ts +0 -61
  155. package/src/chains/btc/actions/stake/config/types.ts +0 -165
  156. package/src/chains/btc/actions/stake/factory.ts +0 -53
  157. package/src/chains/btc/actions/stake/index.ts +0 -22
  158. package/src/chains/btc/actions/stake/types.ts +0 -175
  159. package/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts +0 -415
  160. package/src/chains/btc/actions/stakeAndDeploy/config/evm.ts +0 -135
  161. package/src/chains/btc/actions/stakeAndDeploy/config/index.ts +0 -119
  162. package/src/chains/btc/actions/stakeAndDeploy/config/types.ts +0 -93
  163. package/src/chains/btc/actions/stakeAndDeploy/factory.ts +0 -54
  164. package/src/chains/btc/actions/stakeAndDeploy/index.ts +0 -26
  165. package/src/chains/btc/actions/stakeAndDeploy/types.ts +0 -118
  166. package/src/chains/btc/client/getCurrentBlockHeight.ts +0 -28
  167. package/src/chains/btc/client/mempool/error.ts +0 -24
  168. package/src/chains/btc/client/mempool/mempool.ts +0 -23
  169. package/src/chains/btc/index.ts +0 -71
  170. package/src/chains/evm/EvmActions.ts +0 -185
  171. package/src/chains/evm/actions/deploy/EvmDeploy.ts +0 -256
  172. package/src/chains/evm/actions/deploy/config/evm.ts +0 -80
  173. package/src/chains/evm/actions/deploy/config/index.ts +0 -8
  174. package/src/chains/evm/actions/deploy/config/types.ts +0 -43
  175. package/src/chains/evm/actions/deploy/factory.ts +0 -44
  176. package/src/chains/evm/actions/deploy/index.ts +0 -17
  177. package/src/chains/evm/actions/deploy/types.ts +0 -74
  178. package/src/chains/evm/actions/deposit/EvmDeposit.ts +0 -159
  179. package/src/chains/evm/actions/deposit/config/evm.ts +0 -100
  180. package/src/chains/evm/actions/deposit/config/index.ts +0 -8
  181. package/src/chains/evm/actions/deposit/config/types.ts +0 -39
  182. package/src/chains/evm/actions/deposit/factory.ts +0 -44
  183. package/src/chains/evm/actions/deposit/index.ts +0 -17
  184. package/src/chains/evm/actions/deposit/types.ts +0 -87
  185. package/src/chains/evm/actions/index.ts +0 -67
  186. package/src/chains/evm/actions/redeem/EvmRedeem.ts +0 -263
  187. package/src/chains/evm/actions/redeem/config/evm.ts +0 -85
  188. package/src/chains/evm/actions/redeem/config/index.ts +0 -8
  189. package/src/chains/evm/actions/redeem/config/types.ts +0 -39
  190. package/src/chains/evm/actions/redeem/factory.ts +0 -43
  191. package/src/chains/evm/actions/redeem/index.ts +0 -17
  192. package/src/chains/evm/actions/redeem/types.ts +0 -93
  193. package/src/chains/evm/actions/stake/EvmStake.ts +0 -339
  194. package/src/chains/evm/actions/stake/config/evm.ts +0 -89
  195. package/src/chains/evm/actions/stake/config/index.ts +0 -8
  196. package/src/chains/evm/actions/stake/config/types.ts +0 -89
  197. package/src/chains/evm/actions/stake/factory.ts +0 -52
  198. package/src/chains/evm/actions/stake/index.ts +0 -30
  199. package/src/chains/evm/actions/stake/types.ts +0 -104
  200. package/src/chains/evm/actions/unstake/EvmUnstake.ts +0 -258
  201. package/src/chains/evm/actions/unstake/config/evm.ts +0 -123
  202. package/src/chains/evm/actions/unstake/config/index.ts +0 -13
  203. package/src/chains/evm/actions/unstake/config/types.ts +0 -37
  204. package/src/chains/evm/actions/unstake/factory.ts +0 -44
  205. package/src/chains/evm/actions/unstake/index.ts +0 -22
  206. package/src/chains/evm/actions/unstake/types.ts +0 -87
  207. package/src/chains/evm/index.ts +0 -16
  208. package/src/chains/evm/shared/feeAuth.ts +0 -198
  209. package/src/chains/evm/shared/index.ts +0 -7
  210. package/src/chains/solana/SolanaActions.ts +0 -85
  211. package/src/chains/solana/actions/index.ts +0 -7
  212. package/src/chains/solana/actions/unstake/SolanaUnstake.ts +0 -151
  213. package/src/chains/solana/actions/unstake/config/btc.ts +0 -47
  214. package/src/chains/solana/actions/unstake/config/index.ts +0 -8
  215. package/src/chains/solana/actions/unstake/config/solana.ts +0 -47
  216. package/src/chains/solana/actions/unstake/config/types.ts +0 -35
  217. package/src/chains/solana/actions/unstake/factory.ts +0 -34
  218. package/src/chains/solana/actions/unstake/index.ts +0 -14
  219. package/src/chains/solana/actions/unstake/types.ts +0 -58
  220. package/src/chains/solana/index.ts +0 -8
  221. package/src/chains/starknet/StarknetActions.ts +0 -85
  222. package/src/chains/starknet/actions/index.ts +0 -7
  223. package/src/chains/starknet/actions/unstake/StarknetUnstake.ts +0 -128
  224. package/src/chains/starknet/actions/unstake/config/btc.ts +0 -43
  225. package/src/chains/starknet/actions/unstake/config/index.ts +0 -8
  226. package/src/chains/starknet/actions/unstake/config/starknet.ts +0 -43
  227. package/src/chains/starknet/actions/unstake/config/types.ts +0 -27
  228. package/src/chains/starknet/actions/unstake/factory.ts +0 -32
  229. package/src/chains/starknet/actions/unstake/index.ts +0 -14
  230. package/src/chains/starknet/actions/unstake/types.ts +0 -57
  231. package/src/chains/starknet/index.ts +0 -8
  232. package/src/chains/sui/SuiActions.ts +0 -82
  233. package/src/chains/sui/actions/index.ts +0 -7
  234. package/src/chains/sui/actions/unstake/SuiUnstake.ts +0 -146
  235. package/src/chains/sui/actions/unstake/config/btc.ts +0 -43
  236. package/src/chains/sui/actions/unstake/config/index.ts +0 -8
  237. package/src/chains/sui/actions/unstake/config/sui.ts +0 -43
  238. package/src/chains/sui/actions/unstake/config/types.ts +0 -27
  239. package/src/chains/sui/actions/unstake/factory.ts +0 -32
  240. package/src/chains/sui/actions/unstake/index.ts +0 -14
  241. package/src/chains/sui/actions/unstake/types.ts +0 -57
  242. package/src/chains/sui/index.ts +0 -8
  243. package/src/client/ApiNamespace.ts +0 -302
  244. package/src/client/AssetNamespace.ts +0 -112
  245. package/src/client/LombardSDK.ts +0 -212
  246. package/src/client/PartnerConfiguration.ts +0 -50
  247. package/src/client/createConfig.ts +0 -90
  248. package/src/client/createLombardSDK.ts +0 -130
  249. package/src/clients/evm-signer-adapter.ts +0 -313
  250. package/src/clients/public-client.ts +0 -49
  251. package/src/clients/rpc-url-config.ts +0 -64
  252. package/src/clients/wallet-client.ts +0 -34
  253. package/src/common/api-config.ts +0 -48
  254. package/src/common/blockchain-identifier.ts +0 -217
  255. package/src/common/chains.stories.tsx +0 -68
  256. package/src/common/chains.ts +0 -449
  257. package/src/common/constants.ts +0 -1
  258. package/src/common/contract-info.ts +0 -9
  259. package/src/common/feature-config.ts +0 -79
  260. package/src/common/fee-requirements.ts +0 -34
  261. package/src/common/parameters.ts +0 -89
  262. package/src/config/defaults.ts +0 -49
  263. package/src/config/index.ts +0 -12
  264. package/src/config/providers.ts +0 -81
  265. package/src/config/types.ts +0 -216
  266. package/src/config/validation.ts +0 -69
  267. package/src/contract-functions/approveLBTC/approveLBTC.stories.tsx +0 -79
  268. package/src/contract-functions/approveLBTC/approveLBTC.ts +0 -66
  269. package/src/contract-functions/approveLBTC/index.ts +0 -1
  270. package/src/contract-functions/approveToken/approveToken.ts +0 -126
  271. package/src/contract-functions/approveToken/index.ts +0 -1
  272. package/src/contract-functions/claimLBTC/claimLBTC.stories.tsx +0 -82
  273. package/src/contract-functions/claimLBTC/claimLBTC.ts +0 -159
  274. package/src/contract-functions/claimLBTC/index.ts +0 -1
  275. package/src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts +0 -95
  276. package/src/contract-functions/claimUnstakeRedeem/index.ts +0 -1
  277. package/src/contract-functions/deposit/depositToken.stories.tsx +0 -83
  278. package/src/contract-functions/deposit/depositToken.ts +0 -214
  279. package/src/contract-functions/deposit/index.ts +0 -1
  280. package/src/contract-functions/getBasculeDepositStatus/decodeBasculeDepositStatus.ts +0 -170
  281. package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +0 -62
  282. package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.ts +0 -211
  283. package/src/contract-functions/getBasculeDepositStatus/index.ts +0 -2
  284. package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.tsx +0 -61
  285. package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.ts +0 -193
  286. package/src/contract-functions/getLBTCMintingFee/index.ts +0 -1
  287. package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.tsx +0 -51
  288. package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts +0 -40
  289. package/src/contract-functions/getLBTCTotalSupply/index.ts +0 -1
  290. package/src/contract-functions/getPermitNonce/getPermitNonce.stories.tsx +0 -56
  291. package/src/contract-functions/getPermitNonce/getPermitNonce.ts +0 -50
  292. package/src/contract-functions/getPermitNonce/index.ts +0 -1
  293. package/src/contract-functions/getShareValue/getShareValue.stories.tsx +0 -58
  294. package/src/contract-functions/getShareValue/getShareValue.ts +0 -59
  295. package/src/contract-functions/getShareValue/index.ts +0 -1
  296. package/src/contract-functions/getSharesByAddress/getSharesByAddress.stories.tsx +0 -65
  297. package/src/contract-functions/getSharesByAddress/getSharesByAddress.ts +0 -86
  298. package/src/contract-functions/getSharesByAddress/index.ts +0 -4
  299. package/src/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.ts +0 -167
  300. package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.tsx +0 -180
  301. package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.tsx +0 -101
  302. package/src/contract-functions/getStakeAndBakeFee/index.ts +0 -1
  303. package/src/contract-functions/index.ts +0 -21
  304. package/src/contract-functions/signLbtcDestionationAddr/index.ts +0 -1
  305. package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.ts +0 -32
  306. package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.tsx +0 -64
  307. package/src/contract-functions/signNetworkFee/getTypedData.ts +0 -41
  308. package/src/contract-functions/signNetworkFee/index.ts +0 -1
  309. package/src/contract-functions/signNetworkFee/signNetworkFee.stories.tsx +0 -94
  310. package/src/contract-functions/signNetworkFee/signNetworkFee.ts +0 -106
  311. package/src/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.ts +0 -888
  312. package/src/contract-functions/signStakeAndBake/handleApprove.ts +0 -81
  313. package/src/contract-functions/signStakeAndBake/handlePermit.ts +0 -28
  314. package/src/contract-functions/signStakeAndBake/index.ts +0 -2
  315. package/src/contract-functions/signStakeAndBake/signStakeAndBake.stories.tsx +0 -202
  316. package/src/contract-functions/signStakeAndBake/signStakeAndBake.ts +0 -160
  317. package/src/contract-functions/signStakeAndBake/typed-data-builder.ts +0 -137
  318. package/src/contract-functions/signStakeAndBake/utils.ts +0 -61
  319. package/src/contract-functions/signStakeAndBake/validation.ts +0 -124
  320. package/src/contract-functions/unstakeLBTC/index.ts +0 -1
  321. package/src/contract-functions/unstakeLBTC/unstakeLBTC.stories.tsx +0 -92
  322. package/src/contract-functions/unstakeLBTC/unstakeLBTC.ts +0 -396
  323. package/src/contracts/abis/index.ts +0 -29
  324. package/src/contracts/index.ts +0 -63
  325. package/src/contracts/types.ts +0 -143
  326. package/src/contracts/utils.ts +0 -288
  327. package/src/core/assets/catalog.ts +0 -343
  328. package/src/core/assets/index.ts +0 -40
  329. package/src/core/assets/types.ts +0 -142
  330. package/src/core/assets/utils.ts +0 -287
  331. package/src/core/chains/catalog.ts +0 -396
  332. package/src/core/chains/index.ts +0 -39
  333. package/src/core/chains/types.ts +0 -193
  334. package/src/core/chains/utils.ts +0 -245
  335. package/src/core/index.ts +0 -72
  336. package/src/core/types.ts +0 -126
  337. package/src/debug-api/btc-script-to-address.ts +0 -20
  338. package/src/debug-api/btc-tx-info.ts +0 -32
  339. package/src/debug-api/evm-by-btc-address.ts +0 -26
  340. package/src/debug-api/index.ts +0 -3
  341. package/src/defi/README.md +0 -517
  342. package/src/defi/defi-registry.stories.tsx +0 -527
  343. package/src/defi/defi-registry.ts +0 -295
  344. package/src/defi/index.ts +0 -17
  345. package/src/index.ts +0 -336
  346. package/src/metrics/get-additional-rewards.ts +0 -69
  347. package/src/metrics/get-lbtc-apy.ts +0 -74
  348. package/src/metrics/get-lbtc-stats.stories.tsx +0 -57
  349. package/src/metrics/get-lbtc-stats.ts +0 -59
  350. package/src/metrics/get-positions-summary.stories.tsx +0 -58
  351. package/src/metrics/get-positions-summary.ts +0 -132
  352. package/src/modules/CapabilityRegistry.ts +0 -125
  353. package/src/modules/apiModule.ts +0 -51
  354. package/src/modules/btcModule.ts +0 -43
  355. package/src/modules/evmModule.ts +0 -48
  356. package/src/modules/index.ts +0 -60
  357. package/src/referrals/ReferralsClient.ts +0 -34
  358. package/src/referrals/index.ts +0 -1
  359. package/src/services/ApiService.ts +0 -152
  360. package/src/services/BtcService.ts +0 -29
  361. package/src/services/EvmService.ts +0 -127
  362. package/src/services/index.ts +0 -43
  363. package/src/shared/__tests__/errors.test.ts +0 -185
  364. package/src/shared/__tests__/events.test.ts +0 -120
  365. package/src/shared/__tests__/types.test.ts +0 -155
  366. package/src/shared/actions/BaseAction.ts +0 -497
  367. package/src/shared/actions/__tests__/BaseAction.test.ts +0 -292
  368. package/src/shared/actions/index.ts +0 -9
  369. package/src/shared/constants/statusConstants.ts +0 -108
  370. package/src/shared/context/ContextBuilder.ts +0 -149
  371. package/src/shared/context/index.ts +0 -8
  372. package/src/shared/context/types.ts +0 -156
  373. package/src/shared/deposits/depositStatus.ts +0 -402
  374. package/src/shared/deposits/index.ts +0 -29
  375. package/src/shared/errors.ts +0 -405
  376. package/src/shared/events.ts +0 -260
  377. package/src/shared/evm/switchChain.ts +0 -109
  378. package/src/shared/index.ts +0 -54
  379. package/src/shared/monitoring/__tests__/createEventEmitter.test.ts +0 -150
  380. package/src/shared/monitoring/createEventEmitter.ts +0 -160
  381. package/src/shared/monitoring/createProgressEmitter.ts +0 -46
  382. package/src/shared/monitoring/depositMonitor.ts +0 -211
  383. package/src/shared/monitoring/index.ts +0 -25
  384. package/src/shared/validation/index.ts +0 -411
  385. package/src/stories/arg-types.ts +0 -38
  386. package/src/stories/components/Badge.tsx +0 -27
  387. package/src/stories/components/Button/Button.css +0 -10
  388. package/src/stories/components/Button/Button.tsx +0 -52
  389. package/src/stories/components/Button/index.ts +0 -1
  390. package/src/stories/components/Card.tsx +0 -18
  391. package/src/stories/components/CodeBlock/CodeBlock.tsx +0 -27
  392. package/src/stories/components/CodeBlock/CodeBlockStyles.css +0 -3
  393. package/src/stories/components/CodeBlock/index.ts +0 -1
  394. package/src/stories/components/ConnectButton/connect-button.tsx +0 -248
  395. package/src/stories/components/ConnectButton/index.ts +0 -1
  396. package/src/stories/components/JsonPreview.tsx +0 -84
  397. package/src/stories/components/Spinner/Spinner.tsx +0 -27
  398. package/src/stories/components/Spinner/index.ts +0 -1
  399. package/src/stories/components/StatsCard.tsx +0 -30
  400. package/src/stories/components/StatusIndicator.tsx +0 -37
  401. package/src/stories/components/TreeNode.tsx +0 -47
  402. package/src/stories/components/decorators/function-type.tsx +0 -63
  403. package/src/stories/components/decorators/index.ts +0 -2
  404. package/src/stories/components/decorators/wagmi-decorator.tsx +0 -92
  405. package/src/stories/components/error-block.tsx +0 -21
  406. package/src/stories/components/index.ts +0 -11
  407. package/src/stories/constants.ts +0 -3
  408. package/src/stories/hooks/useConnection.ts +0 -63
  409. package/src/stories/hooks/useQuery.ts +0 -57
  410. package/src/tokens/__tests__/token-addresses.test.ts +0 -551
  411. package/src/tokens/abi/ASSET_ROUTER_ABI.ts +0 -1966
  412. package/src/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.ts +0 -1405
  413. package/src/tokens/abi/BTCK_ABI.ts +0 -1092
  414. package/src/tokens/abi/KATANA_BASCULE_ABI.ts +0 -653
  415. package/src/tokens/abi/LBTC_ABI.json +0 -1761
  416. package/src/tokens/abi/LBTC_ABI.ts +0 -1761
  417. package/src/tokens/abi/LBTC_BASCULE_ABI.json +0 -850
  418. package/src/tokens/abi/NATIVE_LBTC_ABI.ts +0 -1147
  419. package/src/tokens/abi/STLBTC_ABI.ts +0 -1062
  420. package/src/tokens/cross-chain-addresses.stories.tsx +0 -236
  421. package/src/tokens/denomination-utils.stories.tsx +0 -176
  422. package/src/tokens/getLbtcContractAddresses.stories.tsx +0 -158
  423. package/src/tokens/getTokenByAddress.stories.tsx +0 -172
  424. package/src/tokens/getTokenContractInfo.stories.tsx +0 -148
  425. package/src/tokens/getTokenInfo.stories.tsx +0 -133
  426. package/src/tokens/isUpgradedContract.stories.tsx +0 -124
  427. package/src/tokens/lbtc-addresses.ts +0 -18
  428. package/src/tokens/token-addresses.ts +0 -477
  429. package/src/tokens/tokens.ts +0 -249
  430. package/src/tokens/types.ts +0 -80
  431. package/src/utils/array.ts +0 -31
  432. package/src/utils/block.ts +0 -23
  433. package/src/utils/chain.ts +0 -152
  434. package/src/utils/consoleLogger.ts +0 -140
  435. package/src/utils/ensureNotSanctionedAddress.ts +0 -11
  436. package/src/utils/env.ts +0 -20
  437. package/src/utils/err.ts +0 -83
  438. package/src/utils/evmAccount.ts +0 -47
  439. package/src/utils/gas.ts +0 -36
  440. package/src/utils/hex.ts +0 -9
  441. package/src/utils/http.ts +0 -224
  442. package/src/utils/numbers.ts +0 -37
  443. package/src/utils/pagination.ts +0 -70
  444. package/src/utils/satoshi.ts +0 -41
  445. package/src/utils/time.ts +0 -12
  446. package/src/utils/transaction-executor.ts +0 -299
  447. package/src/vaults/abi/SILO_VAULT_SPENDER_ABI.json +0 -793
  448. package/src/vaults/abi/VEDA_VAULT_ABI.json +0 -452
  449. package/src/vaults/abi/VEDA_VAULT_ACCOUNTANT_ABI.json +0 -591
  450. package/src/vaults/abi/VEDA_VAULT_BASE_ASSET_ABI.json +0 -296
  451. package/src/vaults/abi/VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI.json +0 -502
  452. package/src/vaults/abi/VEDA_VAULT_LENS_ABI.json +0 -175
  453. package/src/vaults/abi/VEDA_VAULT_SPENDER_ABI.json +0 -408
  454. package/src/vaults/abi/VEDA_VAULT_TELLER_ABI.json +0 -700
  455. package/src/vaults/abi/index.ts +0 -4
  456. package/src/vaults/index.ts +0 -46
  457. package/src/vaults/lib/config.ts +0 -184
  458. package/src/vaults/lib/metrics/get-vault-apy.stories.tsx +0 -58
  459. package/src/vaults/lib/metrics/get-vault-apy.ts +0 -176
  460. package/src/vaults/lib/metrics/get-vault-points.stories.tsx +0 -60
  461. package/src/vaults/lib/metrics/get-vault-points.ts +0 -74
  462. package/src/vaults/lib/metrics/get-vault-tvl.stories.tsx +0 -58
  463. package/src/vaults/lib/metrics/get-vault-tvl.ts +0 -121
  464. package/src/vaults/lib/ops/cancel-withdraw.stories.tsx +0 -80
  465. package/src/vaults/lib/ops/deposit.stories.tsx +0 -82
  466. package/src/vaults/lib/ops/deposit.ts +0 -152
  467. package/src/vaults/lib/ops/get-vault-deposits.stories.tsx +0 -65
  468. package/src/vaults/lib/ops/get-vault-deposits.ts +0 -209
  469. package/src/vaults/lib/ops/get-vault-withdrawals.stories.tsx +0 -67
  470. package/src/vaults/lib/ops/get-vault-withdrawals.ts +0 -349
  471. package/src/vaults/lib/ops/withdraw.stories.tsx +0 -82
  472. package/src/vaults/lib/ops/withdraw.ts +0 -225
  473. package/src/version.ts +0 -56
  474. package/src/vite-env.d.ts +0 -1
@@ -1,192 +0,0 @@
1
- /**
2
- * BTC Actions
3
- *
4
- * Provides factory methods for Bitcoin operations (stake, stakeAndDeploy, deposit).
5
- * This is the user-facing API for BTC operations.
6
- *
7
- * @example
8
- * ```typescript
9
- * import { createLombardSDK, Chain, AssetId, Env } from '@lombard.finance/sdk';
10
- *
11
- * const sdk = await createLombardSDK({
12
- * env: Env.prod,
13
- * providers: { evm: () => window.ethereum },
14
- * });
15
- *
16
- * const stake = sdk.chain.btc.stake({
17
- * assetOut: AssetId.LBTC,
18
- * destChain: Chain.ETHEREUM,
19
- * });
20
- *
21
- * await stake.prepare({ amount: '0.1', recipient: '0x...' });
22
- * await stake.authorize();
23
- * const address = await stake.generateDepositAddress();
24
- * ```
25
- *
26
- * @module chains/btc/BtcActions
27
- */
28
-
29
- import type { LombardConfig } from '../../config/types';
30
- import type { BtcCoreContext } from '../../shared/context';
31
- import { createBtcCoreContext } from '../../shared/context';
32
- import { BtcDeposit } from './actions/deposit/BtcDeposit';
33
- import type {
34
- BtcDeposit as IBtcDeposit,
35
- BtcDepositParams,
36
- } from './actions/deposit/types';
37
- import { BtcDepositAndDeploy } from './actions/depositAndDeploy/BtcDepositAndDeploy';
38
- import type {
39
- BtcDepositAndDeploy as IBtcDepositAndDeploy,
40
- BtcDepositAndDeployParams,
41
- } from './actions/depositAndDeploy/types';
42
- import { BtcStake } from './actions/stake/BtcStake';
43
- import type {
44
- BtcStake as IBtcStake,
45
- BtcStakeParams,
46
- } from './actions/stake/types';
47
- import { BtcStakeAndDeploy } from './actions/stakeAndDeploy/BtcStakeAndDeploy';
48
- import type {
49
- BtcStakeAndDeploy as IBtcStakeAndDeploy,
50
- BtcStakeAndDeployParams,
51
- } from './actions/stakeAndDeploy/types';
52
-
53
- /**
54
- * BTC Actions
55
- *
56
- * User-facing class for Bitcoin operations.
57
- * Created via btcActions(config) factory function.
58
- */
59
- export class BtcActions {
60
- private readonly ctx: BtcCoreContext;
61
-
62
- constructor(config: LombardConfig) {
63
- this.ctx = createBtcCoreContext(config);
64
- }
65
-
66
- /**
67
- * Stake BTC → LBTC
68
- *
69
- * Creates a stake operation for converting BTC to LBTC on a destination chain.
70
- * Supports all destination chains: EVM, Solana, Sui, and Starknet.
71
- *
72
- * @param params - Stake parameters
73
- * @returns BtcStake instance
74
- *
75
- * @example
76
- * ```typescript
77
- * const stake = btc.stake({
78
- * assetOut: AssetId.LBTC,
79
- * destChain: Chain.ETHEREUM,
80
- * });
81
- *
82
- * await stake.prepare({ amount: '0.1', recipient: '0x...' });
83
- * await stake.authorize();
84
- * const address = await stake.generateDepositAddress();
85
- * ```
86
- */
87
- stake(params: BtcStakeParams): IBtcStake {
88
- return new BtcStake(this.ctx, params);
89
- }
90
-
91
- /**
92
- * Stake and Deploy BTC → LBTC + auto-deploy ("Stake and Bake")
93
- *
94
- * Creates an atomic operation that:
95
- * 1. Converts BTC to LBTC
96
- * 2. Automatically deposits LBTC to the specified DeFi vault
97
- *
98
- * @param params - StakeAndDeploy parameters including protocol/vault
99
- * @returns BtcStakeAndDeploy instance
100
- *
101
- * @example
102
- * ```typescript
103
- * const action = btc.stakeAndDeploy({
104
- * assetOut: AssetId.LBTC,
105
- * destChain: Chain.ETHEREUM,
106
- * protocol: DeployProtocol.Veda,
107
- * });
108
- *
109
- * await action.prepare({ amount: '0.1', recipient: '0x...' });
110
- * await action.authorizeDeposit();
111
- * const address = await action.generateDepositAddress();
112
- * ```
113
- */
114
- stakeAndDeploy(params: BtcStakeAndDeployParams): IBtcStakeAndDeploy {
115
- return new BtcStakeAndDeploy(this.ctx, params);
116
- }
117
-
118
- /**
119
- * Deposit BTC for custody (BTC → BTC.b)
120
- *
121
- * Creates a deposit operation for custodying BTC with BTC.b minting.
122
- * This is for custody without staking. For staking (BTC → LBTC), use stake().
123
- *
124
- * @param params - Deposit parameters
125
- * @returns BtcDeposit instance
126
- *
127
- * @example
128
- * ```typescript
129
- * const deposit = btc.deposit({
130
- * assetOut: AssetId.BTCb,
131
- * destChain: Chain.AVALANCHE,
132
- * });
133
- *
134
- * await deposit.prepare({ amount: '0.1', recipient: '0x...' });
135
- * await deposit.authorizeFee();
136
- * const address = await deposit.generateDepositAddress();
137
- * ```
138
- */
139
- deposit(params: BtcDepositParams): IBtcDeposit {
140
- return new BtcDeposit(this.ctx, params);
141
- }
142
-
143
- /**
144
- * Deposit and Deploy BTC → BTC.b + auto-deploy to vault
145
- *
146
- * Creates an atomic operation that:
147
- * 1. Converts BTC to BTC.b (wrapped BTC)
148
- * 2. Automatically deposits BTC.b to the specified DeFi vault (e.g., Silo on Avalanche)
149
- *
150
- * This is similar to stakeAndDeploy but for protocols that accept BTC.b instead of LBTC.
151
- *
152
- * @param params - DepositAndDeploy parameters including protocol/vault
153
- * @returns BtcDepositAndDeploy instance
154
- *
155
- * @example
156
- * ```typescript
157
- * const action = btc.depositAndDeploy({
158
- * assetOut: AssetId.BTCb,
159
- * destChain: Chain.AVALANCHE,
160
- * protocol: DeployProtocol.Silo,
161
- * });
162
- *
163
- * await action.prepare({ amount: '0.1', recipient: '0x...' });
164
- * await action.authorizeDeposit();
165
- * const address = await action.generateDepositAddress();
166
- * ```
167
- */
168
- depositAndDeploy(params: BtcDepositAndDeployParams): IBtcDepositAndDeploy {
169
- return new BtcDepositAndDeploy(this.ctx, params);
170
- }
171
- }
172
-
173
- /**
174
- * Create BTC actions from config
175
- *
176
- * @internal This factory is for internal use. Use createLombardSDK() instead:
177
- *
178
- * @example
179
- * ```typescript
180
- * const sdk = await createLombardSDK({ env: Env.prod, providers: { ... } });
181
- * const stake = sdk.chain.btc.stake({ destChain: Chain.ETHEREUM, assetOut: AssetId.LBTC });
182
- * const deposit = sdk.chain.btc.deposit({ destChain: Chain.AVALANCHE, assetOut: AssetId.BTCb });
183
- * const stakeAndDeploy = sdk.chain.btc.stakeAndDeploy({
184
- * destChain: Chain.AVALANCHE,
185
- * assetOut: AssetId.BTCb,
186
- * protocol: DeployProtocol.Silo,
187
- * });
188
- * ```
189
- */
190
- export function btcActions(config: LombardConfig): BtcActions {
191
- return new BtcActions(config);
192
- }
@@ -1,388 +0,0 @@
1
- /**
2
- * BTC Deposit Action
3
- *
4
- * Handles BTC deposit operations for custody without staking.
5
- * Currently supports EVM destination chains.
6
- *
7
- * Fee authorization is ONLY required for Ethereum mainnet.
8
- * Other chains use address confirmation signing.
9
- *
10
- * @module chains/btc/actions/deposit/BtcDeposit
11
- */
12
-
13
- import type { z } from 'zod';
14
-
15
- import type { ChainId } from '../../../../common/chains';
16
- import { isValidChain } from '../../../../common/chains';
17
- import { parseChainIdentifier, StepStatus } from '../../../../core';
18
- import type { BtcCoreContext } from '../../../../shared/context';
19
- import { LombardError, ValidationErrorCode } from '../../../../shared/errors';
20
- import type { DepositEventMap } from '../../../../shared/events';
21
- import type { MonitorProgress } from '../../../../shared/monitoring';
22
- import { Token } from '../../../../tokens/token-addresses';
23
- import {
24
- assetIdToToken,
25
- BaseBtcAction,
26
- type StatusConfig,
27
- type StepDefinition,
28
- } from '../shared';
29
- import {
30
- depositConfig,
31
- type DepositFeeAuthConfig,
32
- isAssetOutSupported,
33
- isDestChainSupported,
34
- isRouteAvailable,
35
- } from './config';
36
- import {
37
- BtcActionStatus,
38
- type BtcDeposit as IBtcDeposit,
39
- type BtcDepositParams,
40
- type BtcDepositPrepareParams,
41
- } from './types';
42
-
43
- // ═══════════════════════════════════════════════════════════════════════════
44
- // Types
45
- // ═══════════════════════════════════════════════════════════════════════════
46
-
47
- interface AuthorizationState {
48
- signature?: string;
49
- typedData?: string;
50
- authorized: boolean;
51
- /** Minting fee in BTC (e.g., "0.00000032") */
52
- mintingFee?: string;
53
- }
54
-
55
- // ═══════════════════════════════════════════════════════════════════════════
56
- // BtcDeposit Implementation
57
- // ═══════════════════════════════════════════════════════════════════════════
58
-
59
- /**
60
- * BTC Deposit Action
61
- *
62
- * Handles BTC deposit to custody with BTC.b minting on destination chain.
63
- * This is for custody without staking. For staking (BTC → LBTC), use BtcStake.
64
- *
65
- * @example
66
- * ```typescript
67
- * const deposit = new BtcDeposit(ctx, {
68
- * assetOut: AssetId.BTCb,
69
- * destChain: Chain.AVALANCHE,
70
- * });
71
- *
72
- * await deposit.prepare({ amount: '0.1', recipient: '0x...' });
73
- * await deposit.authorizeFee();
74
- * const address = await deposit.generateDepositAddress();
75
- * ```
76
- */
77
- export class BtcDeposit
78
- extends BaseBtcAction<DepositEventMap, BtcActionStatus, BtcDepositParams>
79
- implements IBtcDeposit
80
- {
81
- private readonly chainId: ChainId;
82
- private readonly authState: AuthorizationState = { authorized: false };
83
-
84
- /** Fee auth config - null if not required for this destination */
85
- private feeAuthConfig: DepositFeeAuthConfig | null = null;
86
-
87
- constructor(ctx: BtcCoreContext, params: BtcDepositParams) {
88
- super(ctx, params, BtcActionStatus.IDLE);
89
-
90
- // Validate assetOut - BTC Deposit should only produce BTC.b
91
- if (!isAssetOutSupported(params.assetOut)) {
92
- throw new LombardError(
93
- ValidationErrorCode.INVALID_ASSET,
94
- `Asset ${params.assetOut} is not supported for BTC deposits. ` +
95
- `BTC Deposit produces BTC.b. For LBTC, use BtcStake instead.`,
96
- );
97
- }
98
-
99
- if (!isDestChainSupported(params.destChain)) {
100
- throw new LombardError(
101
- ValidationErrorCode.INVALID_CHAIN,
102
- `Destination chain ${params.destChain} is not supported for BTC deposits. ` +
103
- `BTC.b is currently available on Avalanche and Katana.`,
104
- );
105
- }
106
-
107
- if (!isRouteAvailable(params.sourceChain, ctx.env)) {
108
- throw LombardError.routeNotFound({
109
- assetOut: params.assetOut,
110
- sourceChain: params.sourceChain,
111
- destChain: params.destChain,
112
- env: ctx.env,
113
- });
114
- }
115
-
116
- const parsed = parseChainIdentifier(params.destChain);
117
- if (typeof parsed !== 'number' || !isValidChain(parsed)) {
118
- throw new LombardError(
119
- ValidationErrorCode.INVALID_CHAIN,
120
- `Unsupported EVM chain: ${params.destChain}`,
121
- );
122
- }
123
-
124
- this.chainId = parsed as ChainId;
125
- }
126
-
127
- // ─────────────────────────────────────────────────────────────────────────
128
- // Abstract Method Implementations
129
- // ─────────────────────────────────────────────────────────────────────────
130
-
131
- protected getAddressSchema(): z.ZodType<string> {
132
- return depositConfig.addressSchema;
133
- }
134
-
135
- protected getStatusConfig(): StatusConfig<BtcActionStatus> {
136
- return {
137
- idle: BtcActionStatus.IDLE,
138
- ready: BtcActionStatus.READY,
139
- addressReady: BtcActionStatus.ADDRESS_READY,
140
- };
141
- }
142
-
143
- protected getInitialSteps(): StepDefinition {
144
- return {
145
- created: StepStatus.IDLE,
146
- verifying: StepStatus.IDLE,
147
- issuing: StepStatus.IDLE,
148
- };
149
- }
150
-
151
- protected isAuthorized(): boolean {
152
- return this.authState.authorized;
153
- }
154
-
155
- protected getChainId(): ChainId {
156
- return this.chainId;
157
- }
158
-
159
- /**
160
- * Get the minting fee for this deposit (in BTC)
161
- * Available after prepare() when fee authorization is required
162
- */
163
- get mintingFee(): string | undefined {
164
- return this.authState.mintingFee;
165
- }
166
-
167
- protected getDepositAddressParams() {
168
- const recipient = this.ensureRecipient();
169
- return {
170
- address: recipient,
171
- chainId: this.chainId,
172
- signature: this.authState.signature!, // Must be set before calling
173
- token: this.getExpectedToken(),
174
- eip712Data: this.authState.typedData,
175
- partnerId: this.ctx.partner.getPartnerId(),
176
- referrerCode: this._referralCode,
177
- };
178
- }
179
-
180
- /**
181
- * Override to ensure we have a signature before generating deposit address.
182
- *
183
- * When fee auth exists on server but signature isn't available locally,
184
- * we fall back to signing the destination address.
185
- */
186
- async generateDepositAddress(): Promise<string> {
187
- // If signature isn't available locally, sign the destination address as fallback
188
- if (!this.authState.signature) {
189
- const result = await depositConfig.signDestination(
190
- this.ctx,
191
- this.ensureRecipient(),
192
- this.chainId,
193
- );
194
- this.authState.signature = result.signature;
195
- this.authState.typedData = result.typedData;
196
- }
197
-
198
- return this.generateDepositAddressImpl();
199
- }
200
-
201
- /**
202
- * Get expected token for this action (BTCb by default for BTC Deposit)
203
- */
204
- protected getExpectedToken(): string {
205
- return assetIdToToken(this.params.assetOut, Token.BTCb);
206
- }
207
-
208
- protected getAuthRequiredMessage(): string {
209
- return this.feeAuthConfig
210
- ? 'Fee authorization required. Call authorizeFee() first.'
211
- : 'Address confirmation required. Call confirmAddress() first.';
212
- }
213
-
214
- // ─────────────────────────────────────────────────────────────────────────
215
- // Public Methods
216
- // ─────────────────────────────────────────────────────────────────────────
217
-
218
- async prepare(params: BtcDepositPrepareParams): Promise<void> {
219
- this.assertStatus(BtcActionStatus.IDLE, 'prepare');
220
-
221
- return this.act(async () => {
222
- const validated = this.validatePrepareParams(params);
223
-
224
- this._amount = validated.amount;
225
- this._recipient = validated.recipient;
226
- this._referralCode = validated.referralCode;
227
-
228
- // Get fee auth config for this destination chain (needed for both resume and new flow)
229
- this.feeAuthConfig = depositConfig.getFeeAuthConfig(
230
- this.params.destChain,
231
- );
232
-
233
- // Check for existing deposit address (resume flow)
234
- const hasExistingDeposit = await this.resumeFromExistingDeposit(
235
- validated.recipient,
236
- );
237
-
238
- if (hasExistingDeposit) {
239
- // We have a deposit address, but we still need to validate fee authorization
240
- // The deposit address might have been created when fee auth was valid,
241
- // but the fee auth could have expired since then
242
- if (this.feeAuthConfig) {
243
- const stored = await this.feeAuthConfig.restoreFeeSignature(
244
- this.ctx,
245
- this.chainId,
246
- validated.recipient,
247
- );
248
-
249
- // Check hasSignature flag - the actual signature string may not be returned by API
250
- if (!stored?.hasSignature) {
251
- // Fee auth is required but expired/missing - need re-authorization
252
- // Fetch the minting fee for display purposes
253
- this.authState.mintingFee = await this.feeAuthConfig.getMintingFee(
254
- this.ctx,
255
- this.chainId,
256
- );
257
- this.updateStatus(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
258
- this.emitInitialProgress();
259
- return;
260
- }
261
-
262
- // Fee auth is still valid on server - store signature if available
263
- if (stored.signature) {
264
- this.authState.signature = stored.signature;
265
- this.authState.typedData = stored.typedData;
266
- }
267
- this.authState.authorized = true;
268
- }
269
-
270
- // Deposit address exists and fee auth is valid (or not required)
271
- // Now we can safely set the status to ADDRESS_READY
272
- this.updateStatus(BtcActionStatus.ADDRESS_READY);
273
- this.emitInitialProgress();
274
- return;
275
- }
276
-
277
- // No existing deposit - proceed with normal flow
278
- if (this.feeAuthConfig) {
279
- // Fee authorization required (Ethereum mainnet only)
280
- const stored = await this.feeAuthConfig.restoreFeeSignature(
281
- this.ctx,
282
- this.chainId,
283
- validated.recipient,
284
- );
285
-
286
- // Check hasSignature flag - the actual signature string may not be returned by API
287
- if (stored?.hasSignature) {
288
- // Fee auth already exists on server - store signature if available
289
- if (stored.signature) {
290
- this.authState.signature = stored.signature;
291
- this.authState.typedData = stored.typedData;
292
- }
293
- this.authState.authorized = true;
294
- this.updateStatus(BtcActionStatus.READY);
295
- this.emitInitialProgress();
296
- return;
297
- }
298
-
299
- // Fetch the minting fee for display purposes
300
- this.authState.mintingFee = await this.feeAuthConfig.getMintingFee(
301
- this.ctx,
302
- this.chainId,
303
- );
304
- this.updateStatus(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
305
- } else {
306
- this.updateStatus(BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION);
307
- }
308
-
309
- this.emitInitialProgress();
310
- });
311
- }
312
-
313
- async authorizeFee(): Promise<void> {
314
- this.assertStatus(
315
- [BtcActionStatus.NEEDS_FEE_AUTHORIZATION, BtcActionStatus.READY],
316
- 'authorizeFee',
317
- );
318
-
319
- if (this.status === BtcActionStatus.READY) return;
320
-
321
- if (!this.feeAuthConfig) {
322
- throw new LombardError(
323
- ValidationErrorCode.INVALID_PARAMETER,
324
- 'Fee authorization is not required for this destination chain. Use confirmAddress() instead.',
325
- );
326
- }
327
-
328
- const recipient = this.ensureRecipient();
329
-
330
- // Use the minting fee that was fetched during prepare(), not the deposit amount
331
- if (!this.authState.mintingFee) {
332
- throw new LombardError(
333
- ValidationErrorCode.INVALID_STATE,
334
- 'Minting fee not available. Call prepare() first.',
335
- );
336
- }
337
-
338
- return this.act(async () => {
339
- const result = await this.feeAuthConfig!.authorizeFee(this.ctx, {
340
- chainId: this.chainId,
341
- recipient,
342
- fee: this.authState.mintingFee!,
343
- });
344
-
345
- this.authState.signature = result.signature;
346
- this.authState.typedData = result.typedData;
347
- this.authState.authorized = true;
348
- }, BtcActionStatus.READY);
349
- }
350
-
351
- async confirmAddress(): Promise<void> {
352
- this.assertStatus(
353
- [BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION, BtcActionStatus.READY],
354
- 'confirmAddress',
355
- );
356
-
357
- if (this.status === BtcActionStatus.READY) return;
358
-
359
- if (this.feeAuthConfig) {
360
- throw new LombardError(
361
- ValidationErrorCode.INVALID_PARAMETER,
362
- 'This destination chain requires fee authorization. Use authorizeFee() instead.',
363
- );
364
- }
365
-
366
- const recipient = this.ensureRecipient();
367
-
368
- return this.act(async () => {
369
- const result = await depositConfig.signDestination(
370
- this.ctx,
371
- recipient,
372
- this.chainId,
373
- );
374
-
375
- this.authState.signature = result.signature;
376
- this.authState.typedData = result.typedData;
377
- this.authState.authorized = true;
378
- }, BtcActionStatus.READY);
379
- }
380
-
381
- async execute(): Promise<{ depositAddress: string; txHash?: string }> {
382
- return this.executeImpl();
383
- }
384
-
385
- async monitorDeposit(): Promise<MonitorProgress | undefined> {
386
- return super.monitorDeposit();
387
- }
388
- }