@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,68 +0,0 @@
1
- /**
2
- * Token Utilities for BTC Actions
3
- *
4
- * Shared utilities for mapping asset IDs to tokens.
5
- *
6
- * ## Token Parameter Pattern for StakeAndBake/DepositAndDeploy
7
- *
8
- * The `token` parameter in authorization functions determines which DEFI_REGISTRY
9
- * entry is used, which affects the `amountStrategy`:
10
- *
11
- * | Action | Flow | Token Param | Strategy | Reason |
12
- * |---------------------|-------------------|---------------|-------------|----------------------------|
13
- * | BtcStakeAndDeploy | BTC → LBTC → Vault | AssetId.BTC | btcToLbtc | Apply BTC/LBTC ratio |
14
- * | BtcDepositAndDeploy | BTC → BTCb → Vault | Token.BTCb | identity | 1:1 ratio, no conversion |
15
- *
16
- * **Key Insight:**
17
- * - LBTC has a variable exchange rate with BTC (~1.00265 BTC = 1 LBTC)
18
- * - BTC.b is 1:1 with BTC (wrapped representation)
19
- *
20
- * For LBTC outputs, use the SOURCE asset (`'BTC'`) to trigger ratio conversion.
21
- * For BTC.b outputs, use the OUTPUT asset (`Token.BTCb`) since no conversion needed.
22
- *
23
- * @see DEFI_REGISTRY in defi/defi-registry.ts
24
- * @see signStakeAndBake for how amountStrategy is applied
25
- *
26
- * @module chains/btc/actions/shared/tokenUtils
27
- */
28
-
29
- import { AssetId } from '../../../../core/assets';
30
- import { Token } from '../../../../tokens/token-addresses';
31
-
32
- /**
33
- * Maps an AssetId to its corresponding Token value for API calls.
34
- *
35
- * **Note:** This function handles LBTC and BTCb. For BTC → LBTC flows that need
36
- * ratio conversion, use `AssetId.BTC` directly instead of this function.
37
- *
38
- * @param assetId - The asset ID to convert
39
- * @param defaultToken - The default token if assetId doesn't match known types (defaults to LBTC)
40
- * @returns The corresponding Token value
41
- *
42
- * @example
43
- * // For BTC.b outputs (1:1 with BTC)
44
- * assetIdToToken(AssetId.BTCb) // returns Token.BTCb
45
- *
46
- * @example
47
- * // For LBTC outputs from LBTC source (no ratio conversion)
48
- * assetIdToToken(AssetId.LBTC) // returns Token.LBTC
49
- *
50
- * @example
51
- * // For BTC → LBTC (needs ratio conversion)
52
- * // DON'T use assetIdToToken, use AssetId.BTC directly
53
- * token: AssetId.BTC // triggers btcToLbtc strategy
54
- */
55
- export function assetIdToToken(
56
- assetId: AssetId,
57
- defaultToken: Token = Token.LBTC,
58
- ): Token {
59
- switch (assetId) {
60
- case AssetId.LBTC:
61
- return Token.LBTC;
62
- case AssetId.BTCb:
63
- return Token.BTCb;
64
- default:
65
- return defaultToken;
66
- }
67
- }
68
-
@@ -1,180 +0,0 @@
1
- /**
2
- * Shared Validation Utilities for BTC Actions
3
- *
4
- * Provides common validation logic used across all BTC actions.
5
- * Reduces code duplication and ensures consistent error handling.
6
- *
7
- * @module chains/btc/actions/shared/validation
8
- */
9
-
10
- import type { AssetId, Chain, Env } from '../../../../core';
11
- import { LombardError, ValidationErrorCode } from '../../../../shared/errors';
12
-
13
- // ═══════════════════════════════════════════════════════════════════════════
14
- // Types
15
- // ═══════════════════════════════════════════════════════════════════════════
16
-
17
- /**
18
- * Common config interface for validation
19
- * All BTC action configs should implement these properties
20
- */
21
- export interface ValidatableConfig {
22
- destChains: Chain[];
23
- supportedAssetsOut: AssetId[];
24
- routes: Array<{
25
- sourceChains: Chain[];
26
- envs: Env[];
27
- }>;
28
- }
29
-
30
- /**
31
- * Common params interface for validation
32
- */
33
- export interface ValidatableParams {
34
- assetOut: AssetId;
35
- destChain: Chain;
36
- sourceChain?: Chain;
37
- }
38
-
39
- /**
40
- * Validation context
41
- */
42
- export interface ValidationContext {
43
- env: Env;
44
- actionName: string;
45
- expectedAssets: AssetId[];
46
- alternativeAction?: string;
47
- }
48
-
49
- // ═══════════════════════════════════════════════════════════════════════════
50
- // Validation Functions
51
- // ═══════════════════════════════════════════════════════════════════════════
52
-
53
- /**
54
- * Check if an asset is in the supported list
55
- */
56
- export function isAssetSupported(
57
- supportedAssets: AssetId[],
58
- assetOut: AssetId,
59
- ): boolean {
60
- return supportedAssets.includes(assetOut);
61
- }
62
-
63
- /**
64
- * Check if a destination chain is in the supported list
65
- */
66
- export function isDestChainSupported(
67
- supportedChains: Chain[],
68
- destChain: Chain,
69
- ): boolean {
70
- return supportedChains.includes(destChain);
71
- }
72
-
73
- /**
74
- * Check if a route is available for the given source chain and environment
75
- */
76
- export function isRouteAvailable(
77
- routes: ValidatableConfig['routes'],
78
- sourceChain: Chain | undefined,
79
- env: Env,
80
- ): boolean {
81
- if (!sourceChain) return true; // No source chain specified, allow all
82
-
83
- return routes.some(
84
- route =>
85
- route.sourceChains.includes(sourceChain) && route.envs.includes(env),
86
- );
87
- }
88
-
89
- // ═══════════════════════════════════════════════════════════════════════════
90
- // Combined Validation
91
- // ═══════════════════════════════════════════════════════════════════════════
92
-
93
- /**
94
- * Validate common BTC action parameters
95
- *
96
- * Performs all standard validations in one call:
97
- * - Asset output validation
98
- * - Destination chain validation
99
- * - Route availability validation
100
- *
101
- * Throws descriptive errors if validation fails.
102
- *
103
- * @param config - Action configuration with supported chains/assets
104
- * @param params - Action parameters to validate
105
- * @param context - Validation context (env, action name, etc.)
106
- *
107
- * @throws LombardError with appropriate code and message
108
- *
109
- * @example
110
- * ```typescript
111
- * validateBtcActionParams(
112
- * stakeConfig,
113
- * { assetOut: AssetId.LBTC, destChain: Chain.ETHEREUM },
114
- * {
115
- * env: 'prod',
116
- * actionName: 'BTC Stake',
117
- * expectedAssets: [AssetId.LBTC],
118
- * alternativeAction: 'BtcDeposit',
119
- * }
120
- * );
121
- * ```
122
- */
123
- export function validateBtcActionParams(
124
- config: ValidatableConfig,
125
- params: ValidatableParams,
126
- context: ValidationContext,
127
- ): void {
128
- // 1. Validate asset output
129
- if (!isAssetSupported(config.supportedAssetsOut, params.assetOut)) {
130
- const supported = config.supportedAssetsOut.join(', ');
131
- const alternative = context.alternativeAction
132
- ? ` Use ${context.alternativeAction} instead.`
133
- : '';
134
-
135
- throw new LombardError(
136
- ValidationErrorCode.INVALID_ASSET,
137
- `Asset ${params.assetOut} is not supported for ${context.actionName}. ` +
138
- `Supported: ${supported}.${alternative}`,
139
- );
140
- }
141
-
142
- // 2. Validate destination chain
143
- if (!isDestChainSupported(config.destChains, params.destChain)) {
144
- throw new LombardError(
145
- ValidationErrorCode.INVALID_CHAIN,
146
- `Destination chain ${params.destChain} is not supported for ${context.actionName}`,
147
- );
148
- }
149
-
150
- // 3. Validate route availability
151
- if (!isRouteAvailable(config.routes, params.sourceChain, context.env)) {
152
- throw LombardError.routeNotFound({
153
- assetOut: params.assetOut,
154
- sourceChain: params.sourceChain,
155
- destChain: params.destChain,
156
- env: context.env,
157
- });
158
- }
159
- }
160
-
161
- /**
162
- * Validate protocol is supported (for deploy actions)
163
- *
164
- * @param supportedProtocols - List of supported protocols
165
- * @param protocol - Protocol to validate
166
- * @param actionName - Name of action for error message
167
- */
168
- export function validateProtocol(
169
- supportedProtocols: string[],
170
- protocol: string,
171
- actionName: string,
172
- ): void {
173
- if (!supportedProtocols.includes(protocol)) {
174
- throw new LombardError(
175
- ValidationErrorCode.INVALID_PARAMETER,
176
- `Protocol ${protocol} is not supported for ${actionName}. ` +
177
- `Supported: ${supportedProtocols.join(', ')}`,
178
- );
179
- }
180
- }
@@ -1,433 +0,0 @@
1
- /**
2
- * BTC Stake Action
3
- *
4
- * A configuration-driven action that handles BTC → LBTC staking
5
- * to any supported destination chain. Chain-specific logic is delegated
6
- * to ChainConfig objects in the config/ folder.
7
- *
8
- * @module chains/btc/actions/stake/BtcStake
9
- */
10
-
11
- import type { z } from 'zod';
12
-
13
- import type {
14
- ChainId,
15
- SolanaChain,
16
- StarknetChainId,
17
- SuiChain,
18
- } from '../../../../common/chains';
19
- import {
20
- getChainType,
21
- parseChainIdentifier,
22
- StepStatus,
23
- } from '../../../../core';
24
- import { BtcActionStatus } from '../../../../shared/constants/statusConstants';
25
- import type { BtcCoreContext } from '../../../../shared/context';
26
- import { LombardError, ValidationErrorCode } from '../../../../shared/errors';
27
- import type { StakeEventMap } from '../../../../shared/events';
28
- import type { MonitorProgress } from '../../../../shared/monitoring';
29
- import { Token } from '../../../../tokens/token-addresses';
30
- import { ensureNotSanctionedAddress } from '../../../../utils/ensureNotSanctionedAddress';
31
- import {
32
- assetIdToToken,
33
- BaseBtcAction,
34
- type StatusConfig,
35
- type StepDefinition,
36
- } from '../shared';
37
- import {
38
- type ChainConfig,
39
- type FeeAuthConfig,
40
- getChainConfig,
41
- isAssetOutSupported,
42
- isDestChainSupported,
43
- isRouteAvailable,
44
- type SignatureResult,
45
- } from './config';
46
- import type { BtcStake as IBtcStake,BtcStakeParams } from './types';
47
-
48
- // ═══════════════════════════════════════════════════════════════════════════
49
- // Types
50
- // ═══════════════════════════════════════════════════════════════════════════
51
-
52
- type AnyChainId = ChainId | SolanaChain | SuiChain | StarknetChainId;
53
-
54
- interface AuthorizationState {
55
- mintingFee?: string;
56
- networkFee?: {
57
- signature: string;
58
- typedData?: string;
59
- };
60
- destinationSignature?: SignatureResult;
61
- authorized: boolean;
62
- }
63
-
64
- // ═══════════════════════════════════════════════════════════════════════════
65
- // BtcStake Implementation
66
- // ═══════════════════════════════════════════════════════════════════════════
67
-
68
- /**
69
- * BTC Stake Action
70
- *
71
- * Handles BTC → LBTC staking to any supported destination chain.
72
- * Uses configuration-driven design for chain-specific logic.
73
- *
74
- * @example
75
- * ```typescript
76
- * const stake = new BtcStake(ctx, {
77
- * assetOut: AssetId.LBTC,
78
- * destChain: Chain.ETHEREUM,
79
- * });
80
- *
81
- * await stake.prepare({ amount: '0.1', recipient: '0x...' });
82
- * await stake.authorize();
83
- * const address = await stake.generateDepositAddress();
84
- * ```
85
- */
86
- export class BtcStake
87
- extends BaseBtcAction<StakeEventMap, BtcActionStatus, BtcStakeParams>
88
- implements IBtcStake
89
- {
90
- private readonly config: ChainConfig;
91
- private readonly chainId: AnyChainId;
92
- private readonly authState: AuthorizationState = { authorized: false };
93
-
94
- /** Fee auth config - null if not required for this destination */
95
- private feeAuthConfig: FeeAuthConfig | null = null;
96
-
97
- constructor(ctx: BtcCoreContext, params: BtcStakeParams) {
98
- super(ctx, params, BtcActionStatus.IDLE);
99
-
100
- const chainType = getChainType(params.destChain);
101
- const config = getChainConfig(chainType);
102
-
103
- if (!config) {
104
- throw new LombardError(
105
- ValidationErrorCode.INVALID_CHAIN,
106
- `Unsupported destination chain type: ${chainType} (${params.destChain})`,
107
- );
108
- }
109
-
110
- // Validate assetOut - BTC Stake should only produce LBTC
111
- if (!isAssetOutSupported(config, params.assetOut)) {
112
- throw new LombardError(
113
- ValidationErrorCode.INVALID_ASSET,
114
- `Asset ${params.assetOut} is not supported for BTC staking. ` +
115
- `BTC Stake produces LBTC. For BTC.b, use BtcDeposit instead.`,
116
- );
117
- }
118
-
119
- if (!isDestChainSupported(config, params.destChain)) {
120
- throw new LombardError(
121
- ValidationErrorCode.INVALID_CHAIN,
122
- `Destination chain ${params.destChain} is not supported for ${chainType}`,
123
- );
124
- }
125
-
126
- if (!isRouteAvailable(config, params.sourceChain, ctx.env)) {
127
- throw LombardError.routeNotFound({
128
- assetOut: params.assetOut,
129
- sourceChain: params.sourceChain,
130
- destChain: params.destChain,
131
- env: ctx.env,
132
- });
133
- }
134
-
135
- this.config = config;
136
- this.chainId = parseChainIdentifier(params.destChain);
137
- }
138
-
139
- // ─────────────────────────────────────────────────────────────────────────
140
- // Abstract Method Implementations
141
- // ─────────────────────────────────────────────────────────────────────────
142
-
143
- protected getAddressSchema(): z.ZodType<string> {
144
- return this.config.addressSchema;
145
- }
146
-
147
- protected getStatusConfig(): StatusConfig<BtcActionStatus> {
148
- return {
149
- idle: BtcActionStatus.IDLE,
150
- ready: BtcActionStatus.READY,
151
- addressReady: BtcActionStatus.ADDRESS_READY,
152
- };
153
- }
154
-
155
- protected getInitialSteps(): StepDefinition {
156
- return {
157
- created: StepStatus.IDLE,
158
- verifying: StepStatus.IDLE,
159
- issuing: StepStatus.IDLE,
160
- };
161
- }
162
-
163
- protected isAuthorized(): boolean {
164
- return this.authState.authorized;
165
- }
166
-
167
- protected getChainId(): AnyChainId {
168
- return this.chainId;
169
- }
170
-
171
- protected getDepositAddressParams() {
172
- const recipient = this.ensureRecipient();
173
- const signature = this.getActiveSignature();
174
-
175
- if (!signature) {
176
- throw new LombardError(
177
- ValidationErrorCode.INVALID_PARAMETER,
178
- 'Missing signature. Complete authorization first.',
179
- );
180
- }
181
-
182
- return {
183
- address: signature.paddedAddress ?? recipient,
184
- chainId: this.chainId,
185
- signature: signature.signature,
186
- token: this.getExpectedToken(),
187
- eip712Data: this.authState.networkFee?.typedData,
188
- pubKey: signature.pubKey,
189
- partnerId: this.ctx.partner.getPartnerId(),
190
- referrerCode: this._referralCode,
191
- };
192
- }
193
-
194
- /**
195
- * Get expected token for this action (LBTC by default for BTC Stake)
196
- */
197
- protected getExpectedToken(): string {
198
- return assetIdToToken(this.params.assetOut, Token.LBTC);
199
- }
200
-
201
- protected getAuthRequiredMessage(): string {
202
- return 'Authorization required. Call authorize() first.';
203
- }
204
-
205
- // ─────────────────────────────────────────────────────────────────────────
206
- // Public Getters
207
- // ─────────────────────────────────────────────────────────────────────────
208
-
209
- /** Get minting fee (available after prepare() for fee-auth chains) */
210
- get mintingFee(): string | undefined {
211
- return this.authState.mintingFee;
212
- }
213
-
214
- // ─────────────────────────────────────────────────────────────────────────
215
- // Public Methods
216
- // ─────────────────────────────────────────────────────────────────────────
217
-
218
- async prepare(params: {
219
- amount: string;
220
- recipient: string;
221
- referralCode?: string;
222
- }): Promise<void> {
223
- this.assertStatus(BtcActionStatus.IDLE, 'prepare');
224
-
225
- return this.act(async () => {
226
- const validated = this.validatePrepareParams(params);
227
-
228
- this._amount = validated.amount;
229
- this._recipient = validated.recipient;
230
- this._referralCode = validated.referralCode;
231
-
232
- // Get fee auth config for this destination chain (needed for both resume and new flow)
233
- this.feeAuthConfig = this.config.getFeeAuthConfig(this.params.destChain);
234
-
235
- // Check for existing deposit (resume flow)
236
- const hasExistingDeposit = await this.resumeFromExistingDeposit(
237
- validated.recipient,
238
- );
239
-
240
- if (hasExistingDeposit) {
241
- // We have a deposit address, but we still need to validate fee authorization
242
- // The deposit address might have been created when fee auth was valid,
243
- // but the fee auth could have expired since then
244
- if (this.feeAuthConfig) {
245
- const stored = await this.feeAuthConfig.restoreFeeSignature(
246
- this.ctx,
247
- this.chainId,
248
- validated.recipient,
249
- );
250
-
251
- // Check hasSignature flag - the actual signature string may not be returned by API
252
- if (!stored?.hasSignature) {
253
- // Fee auth is required but expired/missing - need re-authorization
254
- this.authState.mintingFee = await this.feeAuthConfig.getMintingFee(
255
- this.ctx,
256
- this.chainId,
257
- );
258
- this.updateStatus(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
259
- this.emitInitialProgress();
260
- return;
261
- }
262
-
263
- // Fee auth is still valid on server - store signature if available
264
- if (stored.signature) {
265
- this.authState.networkFee = {
266
- signature: stored.signature,
267
- typedData: stored.typedData,
268
- };
269
- }
270
- this.authState.authorized = true;
271
- }
272
-
273
- // Deposit address exists and fee auth is valid (or not required)
274
- // Now we can safely set the status to ADDRESS_READY
275
- this.updateStatus(BtcActionStatus.ADDRESS_READY);
276
- this.emitInitialProgress();
277
- return;
278
- }
279
-
280
- // No existing deposit - proceed with normal flow
281
- if (this.feeAuthConfig) {
282
- // Fee authorization required - try to restore stored signature first
283
- const stored = await this.feeAuthConfig.restoreFeeSignature(
284
- this.ctx,
285
- this.chainId,
286
- validated.recipient,
287
- );
288
-
289
- // Check hasSignature flag - the actual signature string may not be returned by API
290
- if (stored?.hasSignature) {
291
- // Fee auth already exists on server - store signature if available
292
- if (stored.signature) {
293
- this.authState.networkFee = {
294
- signature: stored.signature,
295
- typedData: stored.typedData,
296
- };
297
- }
298
- this.authState.authorized = true;
299
- this.updateStatus(BtcActionStatus.READY);
300
- this.emitInitialProgress();
301
- return;
302
- }
303
-
304
- // Get minting fee for display
305
- this.authState.mintingFee = await this.feeAuthConfig.getMintingFee(
306
- this.ctx,
307
- this.chainId,
308
- );
309
- this.updateStatus(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
310
- } else {
311
- // No fee auth required - go to address confirmation
312
- this.updateStatus(BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION);
313
- }
314
-
315
- this.emitInitialProgress();
316
- });
317
- }
318
-
319
- async authorize(): Promise<void> {
320
- this.assertStatus(
321
- [
322
- BtcActionStatus.NEEDS_FEE_AUTHORIZATION,
323
- BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION,
324
- BtcActionStatus.READY,
325
- ],
326
- 'authorize',
327
- );
328
-
329
- if (this.status === BtcActionStatus.READY) return;
330
-
331
- const recipient = this.ensureRecipient();
332
- const needsFeeAuth = this.feeAuthConfig !== null;
333
-
334
- return this.act(async () => {
335
- if (needsFeeAuth) {
336
- // Fee authorization flow
337
- const fee = this.ensureMintingFee();
338
- const result = await this.feeAuthConfig!.authorizeFee(this.ctx, {
339
- chainId: this.chainId,
340
- recipient,
341
- fee,
342
- });
343
- this.authState.networkFee = {
344
- signature: result.signature,
345
- typedData: result.typedData,
346
- };
347
- } else {
348
- // Destination signature flow
349
- this.authState.destinationSignature = await this.config.getSignature(
350
- this.ctx,
351
- recipient,
352
- this.chainId,
353
- );
354
- }
355
-
356
- this.authState.authorized = true;
357
- }, BtcActionStatus.READY);
358
- }
359
-
360
- async generateDepositAddress(): Promise<string> {
361
- this.assertStatus(BtcActionStatus.READY, 'generateDepositAddress');
362
- this.ensureAuthorized();
363
-
364
- if (this._depositAddress) {
365
- return this._depositAddress;
366
- }
367
-
368
- // If no signature is available locally (fee auth exists on server but wasn't returned),
369
- // fall back to signing the destination address
370
- if (!this.getActiveSignature()) {
371
- const result = await this.config.getSignature(
372
- this.ctx,
373
- this.ensureRecipient(),
374
- this.chainId,
375
- );
376
- this.authState.destinationSignature = result;
377
- }
378
-
379
- return this.act(async () => {
380
- const apiParams = this.getDepositAddressParams();
381
- const depositAddress =
382
- await this.ctx.api.generateDepositAddress(apiParams);
383
-
384
- ensureNotSanctionedAddress(depositAddress);
385
- this._depositAddress = depositAddress;
386
-
387
- this.emitProgress({
388
- status: BtcActionStatus.ADDRESS_READY,
389
- steps: {
390
- created: StepStatus.COMPLETE,
391
- verifying: StepStatus.IDLE,
392
- issuing: StepStatus.IDLE,
393
- },
394
- metadata: { depositAddress },
395
- });
396
-
397
- return depositAddress;
398
- }, BtcActionStatus.ADDRESS_READY);
399
- }
400
-
401
- async execute(): Promise<{ depositAddress: string; txHash?: string }> {
402
- return this.executeImpl();
403
- }
404
-
405
- async monitorDeposit(): Promise<MonitorProgress | undefined> {
406
- return super.monitorDeposit();
407
- }
408
-
409
- // ─────────────────────────────────────────────────────────────────────────
410
- // Private: Ensure Methods
411
- // ─────────────────────────────────────────────────────────────────────────
412
-
413
- private ensureMintingFee(): string {
414
- if (!this.authState.mintingFee) {
415
- throw new LombardError(
416
- ValidationErrorCode.INVALID_PARAMETER,
417
- 'Minting fee not fetched. Call prepare() first.',
418
- );
419
- }
420
- return this.authState.mintingFee;
421
- }
422
-
423
- // ─────────────────────────────────────────────────────────────────────────
424
- // Private: Signature Helpers
425
- // ─────────────────────────────────────────────────────────────────────────
426
-
427
- private getActiveSignature(): SignatureResult | undefined {
428
- if (this.authState.networkFee?.signature) {
429
- return { signature: this.authState.networkFee.signature };
430
- }
431
- return this.authState.destinationSignature;
432
- }
433
- }