@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,465 +0,0 @@
1
- /**
2
- * FAQ Patterns Integration Tests
3
- *
4
- * Verifies that the patterns documented in SDK_DEVELOPER_FAQ.md work correctly.
5
- * These tests ensure the FAQ remains accurate as the SDK evolves.
6
- *
7
- * @see SDK_DEVELOPER_FAQ.md sections 13, 14, 15, 16
8
- */
9
-
10
- import { Env } from '@lombard.finance/sdk-common';
11
- import type { EIP1193Provider } from 'viem';
12
- import { beforeEach, describe, expect, it, vi } from 'vitest';
13
-
14
- import { btcStake } from '../../chains/btc/actions/stake';
15
- import { AssetId, Chain } from '../../core';
16
- import { BtcActionStatus } from '../../shared/constants/statusConstants';
17
- import { createTestConfig as createConfig } from '../helpers/createTestConfig';
18
-
19
- // ═══════════════════════════════════════════════════════════════════════════
20
- // Mock Provider Setup (FAQ Section 17)
21
- // ═══════════════════════════════════════════════════════════════════════════
22
-
23
- function createMockEvmProvider(): EIP1193Provider {
24
- const mockProvider = {
25
- request: vi.fn(),
26
- on: vi.fn(),
27
- removeListener: vi.fn(),
28
- };
29
-
30
- // Default implementation for common methods
31
- mockProvider.request.mockImplementation(async ({ method }) => {
32
- switch (method) {
33
- case 'eth_requestAccounts':
34
- return ['0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0'];
35
- case 'eth_accounts':
36
- return ['0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0'];
37
- case 'eth_chainId':
38
- return '0xaa36a7'; // Sepolia chain ID (11155111 in hex)
39
- case 'wallet_switchEthereumChain':
40
- return null;
41
- case 'eth_signTypedData_v4':
42
- // Return a mock signature
43
- return '0x' + '00'.repeat(65);
44
- default:
45
- console.warn(`Unhandled provider method: ${method}`);
46
- return null;
47
- }
48
- });
49
-
50
- return mockProvider as unknown as EIP1193Provider;
51
- }
52
-
53
- // ═══════════════════════════════════════════════════════════════════════════
54
- // Section 13: Using Actions - Lifecycle Tests
55
- // ═══════════════════════════════════════════════════════════════════════════
56
-
57
- describe('FAQ Section 13: Using Actions', () => {
58
- let mockProvider: EIP1193Provider;
59
-
60
- beforeEach(() => {
61
- mockProvider = createMockEvmProvider();
62
- vi.clearAllMocks();
63
- });
64
-
65
- describe('Action Lifecycle', () => {
66
- it('should start in IDLE status', () => {
67
- const config = createConfig({
68
- env: Env.testnet,
69
- providers: { evm: () => mockProvider },
70
- });
71
-
72
- const stake = btcStake(config, {
73
- assetOut: AssetId.LBTC,
74
- destChain: Chain.SEPOLIA,
75
- });
76
-
77
- // FAQ documents: actions start in 'idle' status
78
- expect(stake.status).toBe(BtcActionStatus.IDLE);
79
- expect(stake.isLoading).toBe(false);
80
- expect(stake.isFailed).toBe(false);
81
- expect(stake.error).toBeNull();
82
- });
83
-
84
- it('should transition through statuses during prepare', async () => {
85
- const config = createConfig({
86
- env: Env.testnet,
87
- providers: { evm: () => mockProvider },
88
- });
89
-
90
- const stake = btcStake(config, {
91
- assetOut: AssetId.LBTC,
92
- destChain: Chain.SEPOLIA, // Testnet - no fee auth needed
93
- });
94
-
95
- const statusChanges: string[] = [];
96
- stake.on('status-change', status => statusChanges.push(status));
97
-
98
- // Mock API response for deposit address check
99
- vi.spyOn(global, 'fetch').mockResolvedValueOnce({
100
- ok: true,
101
- json: () =>
102
- Promise.resolve({
103
- has_signature: false,
104
- }),
105
- } as Response);
106
-
107
- await stake.prepare({
108
- amount: '0.001',
109
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
110
- });
111
-
112
- // Fee authorization is required for all chains (including testnet)
113
- expect(stake.status).toBe(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
114
- expect(statusChanges).toContain(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
115
- });
116
-
117
- it('should validate minimum BTC amount (0.0002)', async () => {
118
- const config = createConfig({
119
- env: Env.testnet,
120
- providers: { evm: () => mockProvider },
121
- });
122
-
123
- const stake = btcStake(config, {
124
- assetOut: AssetId.LBTC,
125
- destChain: Chain.SEPOLIA,
126
- });
127
-
128
- // FAQ documents: minimum stake is 0.0002 BTC
129
- await expect(
130
- stake.prepare({
131
- amount: '0.0001', // Below minimum
132
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
133
- }),
134
- ).rejects.toThrow(/at least 0.0002/i);
135
- });
136
- });
137
- });
138
-
139
- // ═══════════════════════════════════════════════════════════════════════════
140
- // Section 14: Loading States Tests
141
- // ═══════════════════════════════════════════════════════════════════════════
142
-
143
- describe('FAQ Section 14: Loading States', () => {
144
- let mockProvider: EIP1193Provider;
145
-
146
- beforeEach(() => {
147
- mockProvider = createMockEvmProvider();
148
- vi.clearAllMocks();
149
- });
150
-
151
- it('should emit loading events during operations', async () => {
152
- const config = createConfig({
153
- env: Env.testnet,
154
- providers: { evm: () => mockProvider },
155
- });
156
-
157
- const stake = btcStake(config, {
158
- assetOut: AssetId.LBTC,
159
- destChain: Chain.SEPOLIA,
160
- });
161
-
162
- const loadingStates: boolean[] = [];
163
- stake.on('loading', isLoading => loadingStates.push(isLoading));
164
-
165
- // Mock API
166
- vi.spyOn(global, 'fetch').mockResolvedValueOnce({
167
- ok: true,
168
- json: () => Promise.resolve({ has_signature: false }),
169
- } as Response);
170
-
171
- await stake.prepare({
172
- amount: '0.001',
173
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
174
- });
175
-
176
- // FAQ documents: loading is true during operation, false after
177
- expect(loadingStates).toContain(true);
178
- expect(loadingStates[loadingStates.length - 1]).toBe(false);
179
- expect(stake.isLoading).toBe(false);
180
- });
181
-
182
- it('should allow combining status + isLoading for context-aware UI', async () => {
183
- const config = createConfig({
184
- env: Env.testnet,
185
- providers: { evm: () => mockProvider },
186
- });
187
-
188
- const stake = btcStake(config, {
189
- assetOut: AssetId.LBTC,
190
- destChain: Chain.SEPOLIA,
191
- });
192
-
193
- // FAQ pattern: derive loading message from status + isLoading
194
- const getLoadingMessage = (status: string, isLoading: boolean): string => {
195
- if (!isLoading) return '';
196
-
197
- switch (status) {
198
- case 'idle':
199
- return 'Preparing...';
200
- case 'needs_fee_authorization':
201
- return 'Waiting for signature...';
202
- case 'ready':
203
- return 'Generating deposit address...';
204
- default:
205
- return 'Processing...';
206
- }
207
- };
208
-
209
- stake.on('loading', isLoading => {
210
- // Use loading message for UI updates
211
- getLoadingMessage(stake.status, isLoading);
212
- });
213
-
214
- // Mock API
215
- vi.spyOn(global, 'fetch').mockResolvedValueOnce({
216
- ok: true,
217
- json: () => Promise.resolve({ has_signature: false }),
218
- } as Response);
219
-
220
- await stake.prepare({
221
- amount: '0.001',
222
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
223
- });
224
-
225
- // Message should have been set during loading
226
- // (captured message will be empty after loading completes)
227
- expect(stake.isLoading).toBe(false);
228
- });
229
- });
230
-
231
- // ═══════════════════════════════════════════════════════════════════════════
232
- // Section 15: Error Handling Tests
233
- // ═══════════════════════════════════════════════════════════════════════════
234
-
235
- describe('FAQ Section 15: Error Handling', () => {
236
- let mockProvider: EIP1193Provider;
237
-
238
- beforeEach(() => {
239
- mockProvider = createMockEvmProvider();
240
- vi.clearAllMocks();
241
- });
242
-
243
- it('should preserve status on error (no FAILED status)', async () => {
244
- const config = createConfig({
245
- env: Env.testnet,
246
- providers: { evm: () => mockProvider },
247
- });
248
-
249
- const stake = btcStake(config, {
250
- assetOut: AssetId.LBTC,
251
- destChain: Chain.SEPOLIA,
252
- });
253
-
254
- // FAQ documents: status should not change to FAILED on error
255
- const initialStatus = stake.status;
256
-
257
- await expect(
258
- stake.prepare({
259
- amount: '0.0001', // Invalid amount
260
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
261
- }),
262
- ).rejects.toThrow();
263
-
264
- // Status should revert to previous (unchanged because prepare failed)
265
- expect(stake.status).toBe(initialStatus);
266
- expect(stake.isFailed).toBe(true);
267
- expect(stake.error).not.toBeNull();
268
- });
269
-
270
- it('should allow retry after error without re-initialization', async () => {
271
- const config = createConfig({
272
- env: Env.testnet,
273
- providers: { evm: () => mockProvider },
274
- });
275
-
276
- const stake = btcStake(config, {
277
- assetOut: AssetId.LBTC,
278
- destChain: Chain.SEPOLIA, // Testnet - no fee auth, goes to address confirmation
279
- });
280
-
281
- // First attempt fails
282
- await expect(
283
- stake.prepare({
284
- amount: '0.0001', // Invalid
285
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
286
- }),
287
- ).rejects.toThrow();
288
-
289
- expect(stake.isFailed).toBe(true);
290
-
291
- // Mock successful API call
292
- vi.spyOn(global, 'fetch').mockResolvedValueOnce({
293
- ok: true,
294
- json: () => Promise.resolve({ has_signature: false }),
295
- } as Response);
296
-
297
- // Retry with valid amount - should work without creating new action
298
- await stake.prepare({
299
- amount: '0.001', // Valid
300
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
301
- });
302
-
303
- // FAQ documents: error should be cleared on successful retry
304
- expect(stake.isFailed).toBe(false);
305
- expect(stake.error).toBeNull();
306
- // Fee authorization is required for all chains (including testnet)
307
- expect(stake.status).toBe(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
308
- });
309
-
310
- it('should emit error events', async () => {
311
- const config = createConfig({
312
- env: Env.testnet,
313
- providers: { evm: () => mockProvider },
314
- });
315
-
316
- const stake = btcStake(config, {
317
- assetOut: AssetId.LBTC,
318
- destChain: Chain.SEPOLIA,
319
- });
320
-
321
- const errors: Error[] = [];
322
- const failedEvents: number[] = [];
323
-
324
- stake.on('error', error => errors.push(error));
325
- stake.on('failed', () => failedEvents.push(1));
326
-
327
- await expect(
328
- stake.prepare({
329
- amount: '0.0001',
330
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
331
- }),
332
- ).rejects.toThrow();
333
-
334
- // FAQ documents: both error and failed events should be emitted
335
- expect(errors.length).toBe(1);
336
- expect(failedEvents.length).toBe(1);
337
- });
338
- });
339
-
340
- // ═══════════════════════════════════════════════════════════════════════════
341
- // Section 16: Events & Progress Monitoring Tests
342
- // ═══════════════════════════════════════════════════════════════════════════
343
-
344
- describe('FAQ Section 16: Events & Progress Monitoring', () => {
345
- let mockProvider: EIP1193Provider;
346
-
347
- beforeEach(() => {
348
- mockProvider = createMockEvmProvider();
349
- vi.clearAllMocks();
350
- });
351
-
352
- it('should emit progress events with step information', async () => {
353
- const config = createConfig({
354
- env: Env.testnet,
355
- providers: { evm: () => mockProvider },
356
- });
357
-
358
- const stake = btcStake(config, {
359
- assetOut: AssetId.LBTC,
360
- destChain: Chain.SEPOLIA,
361
- });
362
-
363
- interface ProgressEvent {
364
- status: string;
365
- steps?: Record<string, string>;
366
- }
367
-
368
- const progressEvents: ProgressEvent[] = [];
369
- stake.on('progress', (progress: ProgressEvent) =>
370
- progressEvents.push(progress),
371
- );
372
-
373
- // Mock API
374
- vi.spyOn(global, 'fetch').mockResolvedValueOnce({
375
- ok: true,
376
- json: () => Promise.resolve({ has_signature: false }),
377
- } as Response);
378
-
379
- await stake.prepare({
380
- amount: '0.001',
381
- recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
382
- });
383
-
384
- // FAQ documents: progress events contain status and steps
385
- expect(progressEvents.length).toBeGreaterThan(0);
386
- const lastProgress = progressEvents[progressEvents.length - 1];
387
- expect(lastProgress.status).toBeDefined();
388
- });
389
-
390
- it('should return unsubscribe function from on()', () => {
391
- const config = createConfig({
392
- env: Env.testnet,
393
- providers: { evm: () => mockProvider },
394
- });
395
-
396
- const stake = btcStake(config, {
397
- assetOut: AssetId.LBTC,
398
- destChain: Chain.SEPOLIA,
399
- });
400
-
401
- const handler = vi.fn();
402
- const unsubscribe = stake.on('status-change', handler);
403
-
404
- // FAQ documents: on() returns unsubscribe function
405
- expect(typeof unsubscribe).toBe('function');
406
-
407
- // Should be callable without error
408
- unsubscribe();
409
- });
410
- });
411
-
412
- // ═══════════════════════════════════════════════════════════════════════════
413
- // Design Decisions Tests (FAQ Section 10)
414
- // ═══════════════════════════════════════════════════════════════════════════
415
-
416
- describe('FAQ Section 10: Design Decisions', () => {
417
- let mockProvider: EIP1193Provider;
418
-
419
- beforeEach(() => {
420
- mockProvider = createMockEvmProvider();
421
- vi.clearAllMocks();
422
- });
423
-
424
- it('should use unified BtcActionStatus for all BTC actions', () => {
425
- const config = createConfig({
426
- env: Env.testnet,
427
- providers: { evm: () => mockProvider },
428
- });
429
-
430
- // FAQ documents: all BTC actions use BtcActionStatus
431
- const stake = btcStake(config, {
432
- assetOut: AssetId.LBTC,
433
- destChain: Chain.SEPOLIA,
434
- });
435
-
436
- // Verify status is from unified enum
437
- expect(Object.values(BtcActionStatus)).toContain(stake.status);
438
- });
439
-
440
- it('should have separate status, error, and loading concerns', () => {
441
- const config = createConfig({
442
- env: Env.testnet,
443
- providers: { evm: () => mockProvider },
444
- });
445
-
446
- const stake = btcStake(config, {
447
- assetOut: AssetId.LBTC,
448
- destChain: Chain.SEPOLIA,
449
- });
450
-
451
- // FAQ documents: orthogonal concerns
452
- // - status = What step are you at?
453
- // - error = Did something go wrong?
454
- // - isLoading = Is an operation in progress?
455
-
456
- expect(typeof stake.status).toBe('string');
457
- expect(stake.error === null || stake.error instanceof Error).toBe(true);
458
- expect(typeof stake.isLoading).toBe('boolean');
459
- expect(typeof stake.isFailed).toBe('boolean');
460
-
461
- // isFailed should be derived from error
462
- expect(stake.isFailed).toBe(stake.error !== null);
463
- });
464
- });
465
-
@@ -1,195 +0,0 @@
1
- /**
2
- * Integration Tests for getLBTCMintingFee
3
- *
4
- * These tests query actual on-chain contracts to verify minting fee values.
5
- * Run with: yarn test:integration or npx vitest run --config vitest.integration.config.ts
6
- *
7
- * The minting fee (auto-mint commission) is denominated in satoshis and is
8
- * deducted from the minted LBTC to compensate for EVM gas costs.
9
- *
10
- * Non-subsidized chains (Ethereum, Sepolia): Should return non-zero fees
11
- * Subsidized chains (Base, BSC): Return 0 (Lombard absorbs gas costs)
12
- */
13
-
14
- import { Env } from '@lombard.finance/sdk-common';
15
- import { describe, expect, it } from 'vitest';
16
-
17
- import { ChainId } from '../../common/chains';
18
- import {
19
- getLBTCMintingFee,
20
- getMintingFee,
21
- } from '../../contract-functions/getLBTCMintingFee/getLBTCMintingFee';
22
- import { Token, TOKEN_ADDRESSES } from '../../tokens/token-addresses';
23
- import { isUpgradedContract } from '../../tokens/tokens';
24
-
25
- describe('getLBTCMintingFee Integration Tests', () => {
26
- // Increase timeout for RPC calls
27
- const TIMEOUT = 30000;
28
-
29
- describe('Contract Status Checks', () => {
30
- it(
31
- 'should check if Sepolia LBTC contract is upgraded (testnet env)',
32
- async () => {
33
- const isUpgraded = await isUpgradedContract(
34
- Token.LBTC,
35
- ChainId.sepolia,
36
- Env.testnet,
37
- );
38
- console.log(`Sepolia (testnet) LBTC contract upgraded: ${isUpgraded}`);
39
- console.log(
40
- `Sepolia (testnet) LBTC address: ${TOKEN_ADDRESSES[Token.LBTC]?.[Env.testnet]?.[ChainId.sepolia]}`,
41
- );
42
- expect(typeof isUpgraded).toBe('boolean');
43
- },
44
- TIMEOUT,
45
- );
46
-
47
- it(
48
- 'should check if Sepolia LBTC contract is upgraded (stage env)',
49
- async () => {
50
- const isUpgraded = await isUpgradedContract(
51
- Token.LBTC,
52
- ChainId.sepolia,
53
- Env.stage,
54
- );
55
- console.log(`Sepolia (stage) LBTC contract upgraded: ${isUpgraded}`);
56
- console.log(
57
- `Sepolia (stage) LBTC address: ${TOKEN_ADDRESSES[Token.LBTC]?.[Env.stage]?.[ChainId.sepolia]}`,
58
- );
59
- expect(typeof isUpgraded).toBe('boolean');
60
- },
61
- TIMEOUT,
62
- );
63
-
64
- it(
65
- 'should check if Ethereum mainnet LBTC contract is upgraded',
66
- async () => {
67
- const isUpgraded = await isUpgradedContract(
68
- Token.LBTC,
69
- ChainId.ethereum,
70
- Env.prod,
71
- );
72
- console.log(`Ethereum mainnet LBTC contract upgraded: ${isUpgraded}`);
73
- console.log(
74
- `Ethereum mainnet LBTC address: ${TOKEN_ADDRESSES[Token.LBTC]?.[Env.prod]?.[ChainId.ethereum]}`,
75
- );
76
- expect(typeof isUpgraded).toBe('boolean');
77
- },
78
- TIMEOUT,
79
- );
80
- });
81
-
82
- describe('Fee Value Checks', () => {
83
- it(
84
- 'should get minting fee from Sepolia (testnet env)',
85
- async () => {
86
- const fee = await getLBTCMintingFee({
87
- chainId: ChainId.sepolia,
88
- env: Env.testnet,
89
- });
90
- console.log(
91
- `Sepolia (testnet) LBTC minting fee: ${fee.toString()} BTC (${fee.times(1e8).toString()} satoshis)`,
92
- );
93
-
94
- // Sepolia should have a non-zero fee
95
- // If this fails, it means the contract is returning 0
96
- if (fee.isZero()) {
97
- console.warn(
98
- '⚠️ WARNING: Fee is 0 on Sepolia - investigate contract configuration',
99
- );
100
- }
101
- },
102
- TIMEOUT,
103
- );
104
-
105
- it(
106
- 'should get minting fee from Sepolia (stage env)',
107
- async () => {
108
- const fee = await getLBTCMintingFee({
109
- chainId: ChainId.sepolia,
110
- env: Env.stage,
111
- });
112
- console.log(
113
- `Sepolia (stage) LBTC minting fee: ${fee.toString()} BTC (${fee.times(1e8).toString()} satoshis)`,
114
- );
115
-
116
- if (fee.isZero()) {
117
- console.warn(
118
- '⚠️ WARNING: Fee is 0 on Sepolia (stage) - investigate contract configuration',
119
- );
120
- }
121
- },
122
- TIMEOUT,
123
- );
124
-
125
- it(
126
- 'should get minting fee from Ethereum mainnet',
127
- async () => {
128
- const fee = await getLBTCMintingFee({
129
- chainId: ChainId.ethereum,
130
- env: Env.prod,
131
- });
132
- console.log(
133
- `Ethereum mainnet LBTC minting fee: ${fee.toString()} BTC (${fee.times(1e8).toString()} satoshis)`,
134
- );
135
-
136
- // Ethereum mainnet should definitely have a non-zero fee
137
- expect(fee.isGreaterThan(0)).toBe(true);
138
- },
139
- TIMEOUT,
140
- );
141
-
142
- it(
143
- 'should compare fees across environments',
144
- async () => {
145
- // Collect fees from different chains/envs
146
- const fees: Record<string, string> = {};
147
-
148
- try {
149
- const ethereumFee = await getLBTCMintingFee({
150
- chainId: ChainId.ethereum,
151
- env: Env.prod,
152
- });
153
- fees['Ethereum (prod)'] = `${ethereumFee.toString()} BTC`;
154
- } catch (e) {
155
- fees['Ethereum (prod)'] = `Error: ${e}`;
156
- }
157
-
158
- try {
159
- const sepoliaTestnetFee = await getLBTCMintingFee({
160
- chainId: ChainId.sepolia,
161
- env: Env.testnet,
162
- });
163
- fees['Sepolia (testnet)'] = `${sepoliaTestnetFee.toString()} BTC`;
164
- } catch (e) {
165
- fees['Sepolia (testnet)'] = `Error: ${e}`;
166
- }
167
-
168
- try {
169
- const sepoliaStageFee = await getLBTCMintingFee({
170
- chainId: ChainId.sepolia,
171
- env: Env.stage,
172
- });
173
- fees['Sepolia (stage)'] = `${sepoliaStageFee.toString()} BTC`;
174
- } catch (e) {
175
- fees['Sepolia (stage)'] = `Error: ${e}`;
176
- }
177
-
178
- try {
179
- const baseFee = await getMintingFee({
180
- token: Token.LBTC,
181
- chainId: ChainId.base,
182
- env: Env.prod,
183
- });
184
- fees['Base (prod)'] = `${baseFee.toString()} BTC`;
185
- } catch (e) {
186
- fees['Base (prod)'] = `Error: ${e}`;
187
- }
188
-
189
- console.log('\n=== Fee Comparison ===');
190
- console.table(fees);
191
- },
192
- TIMEOUT * 3,
193
- );
194
- });
195
- });