@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,211 +0,0 @@
1
- /**
2
- * Deposit Monitor Utility
3
- *
4
- * Shared monitoring logic for tracking Bitcoin deposit confirmations
5
- * and minting status. Used by BtcStake, BtcDeposit, and BtcStakeAndDeploy actions.
6
- *
7
- * @module shared/monitoring/depositMonitor
8
- */
9
-
10
- import { StepStatus } from '../../core';
11
- import type { BtcService } from '../../modules/btcModule';
12
-
13
- /** Bitcoin network mode */
14
- export type NetworkMode = 'mainnet' | 'testnet';
15
-
16
- // ═══════════════════════════════════════════════════════════════════════════
17
- // Types
18
- // ═══════════════════════════════════════════════════════════════════════════
19
-
20
- /**
21
- * Deposit information returned by fetch function
22
- */
23
- export interface DepositInfo {
24
- /** Block height where deposit was confirmed */
25
- blockHeight?: number;
26
- /** Whether LBTC has been minted/claimed */
27
- isClaimed?: boolean;
28
- }
29
-
30
- /**
31
- * Progress information emitted during monitoring
32
- */
33
- export interface MonitorProgress {
34
- /** Current confirmations */
35
- confirmations: number;
36
- /** Required confirmations for finality */
37
- requiredConfirmations: number;
38
- /** Whether deposit has enough confirmations */
39
- hasEnoughConfirmations: boolean;
40
- /** Whether LBTC has been claimed */
41
- isClaimed: boolean;
42
- /** Step statuses for UI */
43
- steps: {
44
- created: StepStatus;
45
- verifying: StepStatus;
46
- issuing: StepStatus;
47
- };
48
- }
49
-
50
- /**
51
- * Options for deposit monitoring
52
- */
53
- export interface MonitorOptions {
54
- /** Function to fetch deposit information */
55
- fetchDeposit: () => Promise<DepositInfo | undefined>;
56
- /** Bitcoin network mode */
57
- network: NetworkMode;
58
- /** BTC service for block height queries */
59
- btcService: BtcService;
60
- /** Number of confirmations required (default: 6) */
61
- requiredConfirmations?: number;
62
- /** Callback for progress updates */
63
- onProgress?: (progress: MonitorProgress) => void;
64
- /** Callback when deposit is fully claimed */
65
- onComplete?: () => void;
66
- }
67
-
68
- // ═══════════════════════════════════════════════════════════════════════════
69
- // Monitor Function
70
- // ═══════════════════════════════════════════════════════════════════════════
71
-
72
- /**
73
- * Monitor a Bitcoin deposit for confirmations and minting
74
- *
75
- * This is a single-shot check. For continuous monitoring, call this
76
- * function repeatedly with a timer/interval.
77
- *
78
- * @param options - Monitoring options
79
- * @returns Progress information or undefined if deposit not found
80
- *
81
- * @example
82
- * ```typescript
83
- * const progress = await monitorDeposit({
84
- * fetchDeposit: async () => {
85
- * const deposits = await getDepositsByAddress({ address, env });
86
- * return deposits.find(d => d.depositAddress === myAddress);
87
- * },
88
- * network: 'mainnet',
89
- * btcService: ctx.btc,
90
- * onProgress: (p) => console.log(`${p.confirmations}/${p.requiredConfirmations}`),
91
- * onComplete: () => console.log('Deposit complete!'),
92
- * });
93
- * ```
94
- */
95
- export async function monitorDeposit(
96
- options: MonitorOptions,
97
- ): Promise<MonitorProgress | undefined> {
98
- const {
99
- fetchDeposit,
100
- network,
101
- btcService,
102
- requiredConfirmations = 6,
103
- onProgress,
104
- onComplete,
105
- } = options;
106
-
107
- // Fetch current deposit status
108
- const deposit = await fetchDeposit();
109
- if (!deposit) {
110
- return undefined;
111
- }
112
-
113
- const blockHeight = deposit.blockHeight;
114
- if (typeof blockHeight !== 'number') {
115
- return undefined;
116
- }
117
-
118
- // Get current block height and calculate confirmations
119
- const currentBlockHeight = await btcService.getCurrentBlockHeight(network);
120
- const confirmations = Math.max(0, currentBlockHeight - blockHeight);
121
- const hasEnoughConfirmations = confirmations >= requiredConfirmations;
122
- const isClaimed = deposit.isClaimed ?? false;
123
-
124
- // Build progress object
125
- const progress: MonitorProgress = {
126
- confirmations,
127
- requiredConfirmations,
128
- hasEnoughConfirmations,
129
- isClaimed,
130
- steps: {
131
- created: StepStatus.COMPLETE,
132
- verifying: hasEnoughConfirmations
133
- ? StepStatus.COMPLETE
134
- : StepStatus.PENDING,
135
- issuing: isClaimed ? StepStatus.COMPLETE : StepStatus.PENDING,
136
- },
137
- };
138
-
139
- // Emit callbacks
140
- onProgress?.(progress);
141
- if (isClaimed) {
142
- onComplete?.();
143
- }
144
-
145
- return progress;
146
- }
147
-
148
- /**
149
- * Create a polling monitor that checks deposit status at intervals
150
- *
151
- * @param options - Monitoring options
152
- * @param intervalMs - Polling interval in milliseconds (default: 30000)
153
- * @returns Stop function to cancel monitoring
154
- *
155
- * @example
156
- * ```typescript
157
- * const stop = createPollingMonitor({
158
- * fetchDeposit,
159
- * network: 'mainnet',
160
- * btcService: ctx.btc,
161
- * onProgress: updateUI,
162
- * onComplete: () => {
163
- * stop(); // Stop polling when complete
164
- * showSuccess();
165
- * },
166
- * }, 30000);
167
- *
168
- * // Later: stop monitoring
169
- * stop();
170
- * ```
171
- */
172
- export function createPollingMonitor(
173
- options: MonitorOptions,
174
- intervalMs = 30000,
175
- ): () => void {
176
- let stopped = false;
177
- let timeoutId: ReturnType<typeof setTimeout> | undefined;
178
-
179
- const poll = async () => {
180
- if (stopped) return;
181
-
182
- try {
183
- const progress = await monitorDeposit(options);
184
-
185
- // Stop polling if claimed
186
- if (progress?.isClaimed) {
187
- stopped = true;
188
- return;
189
- }
190
- } catch (error) {
191
- // Continue polling on error
192
- console.warn('Deposit monitor poll failed:', error);
193
- }
194
-
195
- // Schedule next poll
196
- if (!stopped) {
197
- timeoutId = setTimeout(poll, intervalMs);
198
- }
199
- };
200
-
201
- // Start polling
202
- poll();
203
-
204
- // Return stop function
205
- return () => {
206
- stopped = true;
207
- if (timeoutId) {
208
- clearTimeout(timeoutId);
209
- }
210
- };
211
- }
@@ -1,25 +0,0 @@
1
- /**
2
- * Monitoring Utilities
3
- *
4
- * @module shared/monitoring
5
- */
6
-
7
- export {
8
- createPollingMonitor,
9
- type DepositInfo,
10
- monitorDeposit,
11
- type MonitorOptions,
12
- type MonitorProgress,
13
- type NetworkMode,
14
- } from './depositMonitor';
15
-
16
- // Re-export existing utilities
17
- export {
18
- createEventEmitter,
19
- type EventEmitter,
20
- type EventHandler,
21
- } from './createEventEmitter';
22
- export {
23
- createProgressEmitter,
24
- type ProgressEmitter,
25
- } from './createProgressEmitter';
@@ -1,411 +0,0 @@
1
- /**
2
- * Validation Schemas
3
- *
4
- * Centralized Zod schemas for validating SDK inputs.
5
- * These provide type-safe, declarative validation with clear error messages.
6
- *
7
- * @module shared/validation
8
- */
9
-
10
- import * as bitcoin from 'bitcoinjs-lib';
11
- import { z } from 'zod';
12
-
13
- import { MIN_STAKE_AMOUNT_BTC } from '../../common/constants';
14
-
15
- // ═══════════════════════════════════════════════════════════════════════════
16
- // Address Validation Helpers
17
- // ═══════════════════════════════════════════════════════════════════════════
18
-
19
- /**
20
- * Validate a Bitcoin address using bitcoinjs-lib
21
- * This validates the checksum for all address types:
22
- * - Legacy P2PKH (1..., m..., n...)
23
- * - P2SH (3..., 2...)
24
- * - SegWit bech32 (bc1q..., tb1q...)
25
- * - Taproot bech32m (bc1p..., tb1p...)
26
- *
27
- * @param address - The address to validate
28
- * @returns true if valid, false otherwise
29
- */
30
- export function isValidBitcoinAddress(address: string): boolean {
31
- if (!address || typeof address !== 'string') {
32
- return false;
33
- }
34
-
35
- // Bech32/Bech32m addresses (bc1..., tb1...)
36
- if (address.startsWith('bc1') || address.startsWith('tb1')) {
37
- try {
38
- bitcoin.address.fromBech32(address);
39
- return true;
40
- } catch {
41
- return false;
42
- }
43
- }
44
-
45
- // Legacy and P2SH addresses (base58check)
46
- try {
47
- bitcoin.address.fromBase58Check(address);
48
- return true;
49
- } catch {
50
- return false;
51
- }
52
- }
53
-
54
- /**
55
- * Validate a Solana address (base58 with proper structure)
56
- * Solana addresses are ed25519 public keys encoded in base58
57
- *
58
- * Note: Unlike Bitcoin, Solana addresses don't have a built-in checksum.
59
- * We validate that the address decodes to exactly 32 bytes.
60
- *
61
- * @param address - The address to validate
62
- * @returns true if valid, false otherwise
63
- */
64
- export function isValidSolanaAddress(address: string): boolean {
65
- // Base58 character set (no 0, O, I, l)
66
- const base58Regex = /^[1-9A-HJ-NP-Za-km-z]+$/;
67
-
68
- if (!address || typeof address !== 'string') {
69
- return false;
70
- }
71
-
72
- if (!base58Regex.test(address)) {
73
- return false;
74
- }
75
-
76
- // Solana addresses are exactly 32 bytes when decoded
77
- // In base58, this results in 32-44 characters
78
- if (address.length < 32 || address.length > 44) {
79
- return false;
80
- }
81
-
82
- // Validate the base58 decoding produces exactly 32 bytes
83
- try {
84
- const decoded = decodeBase58(address);
85
- return decoded.length === 32;
86
- } catch {
87
- return false;
88
- }
89
- }
90
-
91
- /**
92
- * Base58 decoder for validation purposes
93
- * Based on the Bitcoin/Solana base58 alphabet
94
- */
95
- function decodeBase58(str: string): Uint8Array {
96
- const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
97
- const ALPHABET_MAP: Record<string, number> = {};
98
- for (let i = 0; i < ALPHABET.length; i++) {
99
- ALPHABET_MAP[ALPHABET[i]] = i;
100
- }
101
-
102
- if (str.length === 0) {
103
- return new Uint8Array(0);
104
- }
105
-
106
- // Count leading zeros (represented by '1' in base58)
107
- let leadingZeros = 0;
108
- for (let i = 0; i < str.length && str[i] === '1'; i++) {
109
- leadingZeros++;
110
- }
111
-
112
- // Decode the rest
113
- const size = Math.ceil((str.length * Math.log(58)) / Math.log(256));
114
- const bytes = new Uint8Array(size);
115
-
116
- for (let i = leadingZeros; i < str.length; i++) {
117
- const value = ALPHABET_MAP[str[i]];
118
- if (value === undefined) {
119
- throw new Error(`Invalid base58 character: ${str[i]}`);
120
- }
121
-
122
- let carry = value;
123
- for (let j = size - 1; j >= 0; j--) {
124
- carry += 58 * bytes[j];
125
- bytes[j] = carry % 256;
126
- carry = Math.floor(carry / 256);
127
- }
128
- }
129
-
130
- // Find first non-zero byte
131
- let firstNonZero = 0;
132
- while (firstNonZero < bytes.length && bytes[firstNonZero] === 0) {
133
- firstNonZero++;
134
- }
135
-
136
- // Combine leading zeros with decoded bytes
137
- const result = new Uint8Array(leadingZeros + (bytes.length - firstNonZero));
138
- result.fill(0, 0, leadingZeros);
139
- result.set(bytes.subarray(firstNonZero), leadingZeros);
140
-
141
- return result;
142
- }
143
-
144
- // ═══════════════════════════════════════════════════════════════════════════
145
- // Amount Schemas
146
- // ═══════════════════════════════════════════════════════════════════════════
147
-
148
- /**
149
- * Create an amount schema with configurable minimum
150
- *
151
- * @param minAmount - Minimum amount in human-readable format (e.g., 0.0002)
152
- * @returns Zod schema for amount validation
153
- */
154
- export function createAmountSchema(minAmount?: number) {
155
- const baseSchema = z
156
- .string({ message: 'Amount is required' })
157
- .min(1, 'Amount is required')
158
- .refine(val => val !== '0', {
159
- message: 'Amount must be greater than 0',
160
- })
161
- .refine(
162
- val => {
163
- const num = Number.parseFloat(val);
164
- return !Number.isNaN(num) && num > 0;
165
- },
166
- { message: 'Invalid amount format' },
167
- );
168
-
169
- if (minAmount !== undefined && minAmount > 0) {
170
- return baseSchema.refine(
171
- val => {
172
- const num = Number.parseFloat(val);
173
- return num >= minAmount;
174
- },
175
- { message: `Amount must be at least ${minAmount}` },
176
- );
177
- }
178
-
179
- return baseSchema;
180
- }
181
-
182
- /**
183
- * Amount validation (human-readable string, e.g., "0.1")
184
- *
185
- * Validates:
186
- * - Non-empty string
187
- * - Not "0"
188
- * - Parses to positive number
189
- *
190
- * Used for both BTC and EVM amounts.
191
- */
192
- export const amountSchema = createAmountSchema();
193
-
194
- /**
195
- * BTC stake amount schema with minimum 0.0002 BTC
196
- */
197
- export const btcStakeAmountSchema = createAmountSchema(MIN_STAKE_AMOUNT_BTC);
198
-
199
- /** @deprecated Use amountSchema instead */
200
- export const btcAmountSchema = amountSchema;
201
-
202
- /** Alias for EVM operations */
203
- export const evmAmountSchema = amountSchema;
204
-
205
- /**
206
- * Satoshi amount validation (bigint or number)
207
- */
208
- export const satoshiAmountSchema = z
209
- .union([z.bigint(), z.number()])
210
- .refine(val => val > 0, { message: 'Amount must be greater than 0' });
211
-
212
- // ═══════════════════════════════════════════════════════════════════════════
213
- // Address Schemas
214
- // ═══════════════════════════════════════════════════════════════════════════
215
-
216
- /**
217
- * EVM address validation (0x + 40 hex chars)
218
- */
219
- export const evmAddressSchema = z
220
- .string({ message: 'Address is required' })
221
- .regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid EVM address format');
222
-
223
- /**
224
- * Solana address validation (base58, exactly 32 bytes when decoded)
225
- * Uses proper base58 decoding to verify the address structure
226
- */
227
- export const solanaAddressSchema = z
228
- .string({ message: 'Address is required' })
229
- .refine(isValidSolanaAddress, { message: 'Invalid Solana address format' });
230
-
231
- /**
232
- * Sui address validation (0x + 64 hex chars)
233
- */
234
- export const suiAddressSchema = z
235
- .string({ message: 'Address is required' })
236
- .regex(/^0x[a-fA-F0-9]{64}$/, 'Invalid Sui address format');
237
-
238
- /**
239
- * Starknet address validation (0x + 1-64 hex chars)
240
- */
241
- export const starknetAddressSchema = z
242
- .string({ message: 'Address is required' })
243
- .regex(/^0x[a-fA-F0-9]{1,64}$/, 'Invalid Starknet address format');
244
-
245
- /**
246
- * Bitcoin address validation with proper checksum verification
247
- * Uses bitcoinjs-lib to validate all address formats:
248
- * - Legacy P2PKH (1..., m..., n...)
249
- * - P2SH (3..., 2...)
250
- * - SegWit bech32 (bc1q..., tb1q...)
251
- * - Taproot bech32m (bc1p..., tb1p...)
252
- */
253
- export const bitcoinAddressSchema = z
254
- .string({ message: 'Address is required' })
255
- .refine(isValidBitcoinAddress, { message: 'Invalid Bitcoin address format' });
256
-
257
- /**
258
- * Map of chain type to address schema
259
- */
260
- export const addressSchemasByChainType = {
261
- evm: evmAddressSchema,
262
- solana: solanaAddressSchema,
263
- sui: suiAddressSchema,
264
- starknet: starknetAddressSchema,
265
- bitcoin: bitcoinAddressSchema,
266
- } as const;
267
-
268
- // ═══════════════════════════════════════════════════════════════════════════
269
- // Common Schemas
270
- // ═══════════════════════════════════════════════════════════════════════════
271
-
272
- /**
273
- * Referral code validation (optional string)
274
- */
275
- export const referralCodeSchema = z.string().optional();
276
-
277
- /**
278
- * Transaction hash validation (0x + 64 hex chars)
279
- */
280
- export const txHashSchema = z
281
- .string()
282
- .regex(/^0x[a-fA-F0-9]{64}$/, 'Invalid transaction hash');
283
-
284
- // ═══════════════════════════════════════════════════════════════════════════
285
- // BTC Stake Schemas
286
- // ═══════════════════════════════════════════════════════════════════════════
287
-
288
- /**
289
- * BTC Stake prepare params schema (base - recipient validated separately per chain)
290
- */
291
- export const btcStakePrepareBaseSchema = z.object({
292
- amount: btcStakeAmountSchema,
293
- recipient: z
294
- .string({ message: 'Recipient is required' })
295
- .min(1, 'Recipient is required'),
296
- referralCode: referralCodeSchema,
297
- });
298
-
299
- /**
300
- * Create a prepare schema with chain-specific address validation
301
- */
302
- export function createBtcStakePrepareSchema(addressSchema: z.ZodString) {
303
- return z.object({
304
- amount: btcStakeAmountSchema,
305
- recipient: addressSchema,
306
- referralCode: referralCodeSchema,
307
- });
308
- }
309
-
310
- // ═══════════════════════════════════════════════════════════════════════════
311
- // Type Exports
312
- // ═══════════════════════════════════════════════════════════════════════════
313
-
314
- export type Amount = z.infer<typeof amountSchema>;
315
- /** @deprecated Use Amount instead */
316
- export type BtcAmount = Amount;
317
- export type EvmAddress = z.infer<typeof evmAddressSchema>;
318
- export type SolanaAddress = z.infer<typeof solanaAddressSchema>;
319
- export type SuiAddress = z.infer<typeof suiAddressSchema>;
320
- export type StarknetAddress = z.infer<typeof starknetAddressSchema>;
321
- export type BitcoinAddress = z.infer<typeof bitcoinAddressSchema>;
322
- export type BtcStakePrepareParams = z.infer<typeof btcStakePrepareBaseSchema>;
323
-
324
- // ═══════════════════════════════════════════════════════════════════════════
325
- // Validation Helpers
326
- // ═══════════════════════════════════════════════════════════════════════════
327
-
328
- import type { Chain } from '../../core';
329
- import { LombardError } from '../errors';
330
-
331
- /**
332
- * Validation error handler configuration
333
- */
334
- export interface ValidationErrorConfig {
335
- /** Chain for address validation errors (optional) */
336
- destChain?: Chain;
337
- }
338
-
339
- /**
340
- * Validate prepare params with standard error handling
341
- *
342
- * This helper provides consistent Zod validation with LombardError mapping:
343
- * - 'amount' field → LombardError.invalidAmount()
344
- * - 'recipient' field → LombardError.invalidAddress()
345
- * - Other fields → LombardError.invalidParameter()
346
- *
347
- * @example
348
- * ```typescript
349
- * private validatePrepareParams(params: PrepareParams) {
350
- * return validatePrepareParams(this.prepareSchema, params, {
351
- * destChain: this.params.destChain,
352
- * });
353
- * }
354
- * ```
355
- */
356
- export function validatePrepareParams<T>(
357
- schema: z.ZodSchema<T>,
358
- params: unknown,
359
- config: ValidationErrorConfig = {},
360
- ): T {
361
- const result = schema.safeParse(params);
362
-
363
- if (!result.success) {
364
- const firstIssue = result.error.issues[0];
365
- const path = firstIssue?.path[0];
366
- const message = firstIssue?.message ?? 'Invalid parameter';
367
-
368
- if (path === 'amount') {
369
- throw LombardError.invalidAmount(message);
370
- }
371
- if (path === 'recipient') {
372
- throw LombardError.invalidAddress(
373
- (params as Record<string, unknown>)?.recipient as string,
374
- config.destChain,
375
- );
376
- }
377
- throw LombardError.invalidParameter(String(path), message);
378
- }
379
-
380
- return result.data;
381
- }
382
-
383
- /**
384
- * Validate and parse input, throwing error on failure
385
- */
386
- export function validateOrThrow<T>(
387
- schema: z.ZodSchema<T>,
388
- data: unknown,
389
- errorFactory: (message: string) => Error,
390
- ): T {
391
- const result = schema.safeParse(data);
392
- if (!result.success) {
393
- const firstIssue = result.error.issues[0];
394
- throw errorFactory(firstIssue?.message ?? 'Validation failed');
395
- }
396
- return result.data;
397
- }
398
-
399
- /**
400
- * Validate input, returning result object
401
- */
402
- export function validate<T>(
403
- schema: z.ZodSchema<T>,
404
- data: unknown,
405
- ): { success: true; data: T } | { success: false; error: z.ZodError } {
406
- const result = schema.safeParse(data);
407
- if (result.success) {
408
- return { success: true, data: result.data };
409
- }
410
- return { success: false, error: result.error };
411
- }
@@ -1,38 +0,0 @@
1
- import { Env } from '@lombard.finance/sdk-common';
2
- import { ArgTypes } from 'storybook/internal/types';
3
-
4
- import { ChainId } from '../common/chains';
5
- import { Token } from '../tokens/token-addresses';
6
-
7
- export const chainSelector: Partial<ArgTypes> = {
8
- chainId: {
9
- mapping: ChainId,
10
- options: Object.keys(ChainId),
11
- control: { type: 'select' },
12
- },
13
- };
14
-
15
- export const envSelector: Partial<ArgTypes> = {
16
- env: {
17
- mapping: Env,
18
- options: Object.keys(Env),
19
- control: { type: 'select' },
20
- },
21
- };
22
-
23
- export const makeTokenSelector = (
24
- tokens?: Token[],
25
- fieldName = 'token',
26
- ): Partial<ArgTypes> => ({
27
- [fieldName]: {
28
- mapping: Token,
29
- options: Object.keys(Token).filter(tk => {
30
- if (!tokens) return true;
31
-
32
- const entries = Object.entries(Token);
33
- const keys = tokens.map(tv => entries.find(([, v]) => v === tv)?.[0]);
34
- return keys.includes(tk);
35
- }),
36
- control: { type: 'select' },
37
- },
38
- });