@lombard.finance/sdk 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/common/feature-config.d.ts.map +1 -1
  3. package/dist/index2.cjs +6 -6
  4. package/dist/index2.js +762 -754
  5. package/package.json +7 -8
  6. package/src/__tests__/AssetNamespace.spec.ts +0 -234
  7. package/src/__tests__/helpers/createTestConfig.ts +0 -90
  8. package/src/__tests__/integration/automint-fee.integration.test.ts +0 -74
  9. package/src/__tests__/integration/btc-deposit.integration.test.ts +0 -109
  10. package/src/__tests__/integration/btc-stake-and-deploy.integration.test.ts +0 -96
  11. package/src/__tests__/integration/btc-stake.integration.test.ts +0 -466
  12. package/src/__tests__/integration/evm-actions.integration.test.ts +0 -932
  13. package/src/__tests__/integration/evm-deploy.integration.test.ts +0 -122
  14. package/src/__tests__/integration/evm-redeem.integration.test.ts +0 -157
  15. package/src/__tests__/integration/faq-patterns.integration.test.ts +0 -465
  16. package/src/__tests__/integration/getLBTCMintingFee.integration.test.ts +0 -195
  17. package/src/__tests__/real-wallet/btc/btc-stake.real.test.ts +0 -70
  18. package/src/__tests__/real-wallet/evm/evm-stake.real.test.ts +0 -47
  19. package/src/__tests__/real-wallet/evm/evm-unstake.real.test.ts +0 -49
  20. package/src/__tests__/real-wallet/non-evm/solana-unstake.real.test.ts +0 -19
  21. package/src/__tests__/real-wallet/non-evm/starknet-unstake.real.test.ts +0 -19
  22. package/src/__tests__/real-wallet/non-evm/sui-unstake.real.test.ts +0 -19
  23. package/src/__tests__/services/ApiService.test.ts +0 -62
  24. package/src/__tests__/services/BtcService.test.ts +0 -30
  25. package/src/__tests__/services/EvmService.test.ts +0 -39
  26. package/src/__tests__/setup.ts +0 -16
  27. package/src/__tests__/test-utils/eip1193-adapter.ts +0 -48
  28. package/src/__tests__/test-utils/evm-wallet.ts +0 -38
  29. package/src/__tests__/test-utils/solana-wallet.ts +0 -22
  30. package/src/__tests__/test-utils/starknet-wallet.ts +0 -9
  31. package/src/__tests__/test-utils/sui-wallet.ts +0 -14
  32. package/src/__tests__/test-utils/test-constraints.ts +0 -110
  33. package/src/__tests__/unit/btc/BtcDeposit.test.ts +0 -253
  34. package/src/__tests__/unit/btc/BtcDepositAndDeploy.test.ts +0 -174
  35. package/src/__tests__/unit/btc/BtcDepositConfig.test.ts +0 -143
  36. package/src/__tests__/unit/btc/BtcDepositStatusTransition.test.ts +0 -221
  37. package/src/__tests__/unit/btc/BtcStakeAndDeploy.test.ts +0 -194
  38. package/src/__tests__/unit/btc/ExistingSignatureHandling.test.ts +0 -301
  39. package/src/__tests__/unit/btc/StakeAndBakeRatioConversion.test.ts +0 -200
  40. package/src/__tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts +0 -216
  41. package/src/__tests__/unit/btc/TokenParameterConsistency.test.ts +0 -184
  42. package/src/__tests__/unit/btc/btc-deposit-token.test.ts +0 -191
  43. package/src/__tests__/unit/catalog/AssetCatalog.test.ts +0 -293
  44. package/src/__tests__/unit/config/ChainConfig.test.ts +0 -47
  45. package/src/__tests__/unit/config/FeeAuthConfig.test.ts +0 -76
  46. package/src/__tests__/unit/contract-functions/getLBTCMintingFee.test.ts +0 -128
  47. package/src/__tests__/unit/core/chain-parsing.test.ts +0 -257
  48. package/src/__tests__/unit/defi/AvailableProtocols.test.ts +0 -100
  49. package/src/__tests__/unit/defi/DefiRegistry.test.ts +0 -25
  50. package/src/__tests__/unit/evm/EvmDeploy.test.ts +0 -224
  51. package/src/__tests__/unit/evm/EvmRedeem.test.ts +0 -207
  52. package/src/__tests__/unit/evm/EvmRedeemFeeAuth.test.ts +0 -93
  53. package/src/__tests__/unit/evm/EvmStake.test.ts +0 -207
  54. package/src/__tests__/unit/evm/EvmStakeFeeAuth.test.ts +0 -193
  55. package/src/__tests__/unit/evm/EvmUnstakeAllowance.test.ts +0 -69
  56. package/src/__tests__/unit/evm/EvmUnstakeConfig.test.ts +0 -203
  57. package/src/__tests__/unit/fee-signature-expiration.test.ts +0 -76
  58. package/src/__tests__/unit/modules/CapabilityRegistry.test.ts +0 -55
  59. package/src/__tests__/unit/shared/BaseAction.test.ts +0 -122
  60. package/src/__tests__/unit/shared/BaseBtcAction.test.ts +0 -114
  61. package/src/__tests__/unit/solana/SolanaUnstake.test.ts +0 -314
  62. package/src/__tests__/unit/starknet/StarknetUnstake.test.ts +0 -318
  63. package/src/__tests__/unit/sui/SuiUnstake.test.ts +0 -310
  64. package/src/__tests__/unit/utils/satoshi.test.ts +0 -27
  65. package/src/__tests__/unit/validation/address-validation.test.ts +0 -350
  66. package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.tsx +0 -71
  67. package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts +0 -235
  68. package/src/api-functions/generateDepositBtcAddress/index.ts +0 -1
  69. package/src/api-functions/get-badges-by-address/get-badges-by-address.ts +0 -13
  70. package/src/api-functions/get-badges-by-address/index.ts +0 -1
  71. package/src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts +0 -38
  72. package/src/api-functions/getDepositAddressReferrer/index.ts +0 -1
  73. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.tsx +0 -59
  74. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.ts +0 -265
  75. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts +0 -167
  76. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.tsx +0 -58
  77. package/src/api-functions/getDepositBtcAddress/index.ts +0 -1
  78. package/src/api-functions/getDepositBtcAddress/make-request.ts +0 -59
  79. package/src/api-functions/getDepositBtcAddress/types.ts +0 -106
  80. package/src/api-functions/getDepositsByAddress/getDepositsByAddress.stories.tsx +0 -51
  81. package/src/api-functions/getDepositsByAddress/getDepositsByAddress.ts +0 -502
  82. package/src/api-functions/getDepositsByAddress/index.ts +0 -1
  83. package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.tsx +0 -48
  84. package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.ts +0 -59
  85. package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.tsx +0 -55
  86. package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.ts +0 -75
  87. package/src/api-functions/getLBTCExchangeRate/index.ts +0 -2
  88. package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.tsx +0 -59
  89. package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts +0 -116
  90. package/src/api-functions/getNetworkFeeSignature/index.ts +0 -1
  91. package/src/api-functions/getPointsByAddress/getPointsByAddress.stories.tsx +0 -51
  92. package/src/api-functions/getPointsByAddress/getPointsByAddress.ts +0 -304
  93. package/src/api-functions/getPointsByAddress/index.ts +0 -1
  94. package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.tsx +0 -51
  95. package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts +0 -368
  96. package/src/api-functions/getUnstakesByAddress/index.ts +0 -1
  97. package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.tsx +0 -70
  98. package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts +0 -91
  99. package/src/api-functions/getUserStakeAndBakeSignature/index.ts +0 -1
  100. package/src/api-functions/index.ts +0 -11
  101. package/src/api-functions/setReferral/index.ts +0 -1
  102. package/src/api-functions/setReferral/setReferral.ts +0 -67
  103. package/src/api-functions/storeNetworkFeeSignature/index.ts +0 -1
  104. package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.tsx +0 -57
  105. package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.ts +0 -75
  106. package/src/api-functions/storeStakeAndBakeSignature/index.ts +0 -1
  107. package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.tsx +0 -57
  108. package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +0 -61
  109. package/src/bridge/abi/CCIP_BRIDGE_ADAPTER_ABI.json +0 -704
  110. package/src/bridge/abi/CCIP_ROUTER_ABI.json +0 -702
  111. package/src/bridge/abi/OFT_BRIDGE_ADAPTER_ABI.json +0 -912
  112. package/src/bridge/index.ts +0 -16
  113. package/src/bridge/lib/bridge.stories.tsx +0 -90
  114. package/src/bridge/lib/bridge.ts +0 -115
  115. package/src/bridge/lib/ccip-bridge.stories.tsx +0 -91
  116. package/src/bridge/lib/ccip-bridge.ts +0 -214
  117. package/src/bridge/lib/ccip-config.ts +0 -54
  118. package/src/bridge/lib/config.ts +0 -384
  119. package/src/bridge/lib/oft-bridge.stories.tsx +0 -90
  120. package/src/bridge/lib/oft-bridge.ts +0 -217
  121. package/src/chains/btc/BtcActions.ts +0 -192
  122. package/src/chains/btc/actions/deposit/BtcDeposit.ts +0 -388
  123. package/src/chains/btc/actions/deposit/config/evm.ts +0 -197
  124. package/src/chains/btc/actions/deposit/config/index.ts +0 -53
  125. package/src/chains/btc/actions/deposit/config/types.ts +0 -108
  126. package/src/chains/btc/actions/deposit/factory.ts +0 -53
  127. package/src/chains/btc/actions/deposit/index.ts +0 -23
  128. package/src/chains/btc/actions/deposit/types.ts +0 -120
  129. package/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts +0 -366
  130. package/src/chains/btc/actions/depositAndDeploy/config/evm.ts +0 -105
  131. package/src/chains/btc/actions/depositAndDeploy/config/index.ts +0 -111
  132. package/src/chains/btc/actions/depositAndDeploy/config/types.ts +0 -67
  133. package/src/chains/btc/actions/depositAndDeploy/factory.ts +0 -38
  134. package/src/chains/btc/actions/depositAndDeploy/index.ts +0 -24
  135. package/src/chains/btc/actions/depositAndDeploy/types.ts +0 -120
  136. package/src/chains/btc/actions/index.ts +0 -14
  137. package/src/chains/btc/actions/shared/BaseBtcAction.ts +0 -495
  138. package/src/chains/btc/actions/shared/index.ts +0 -28
  139. package/src/chains/btc/actions/shared/tokenUtils.ts +0 -68
  140. package/src/chains/btc/actions/shared/validation.ts +0 -180
  141. package/src/chains/btc/actions/stake/BtcStake.ts +0 -433
  142. package/src/chains/btc/actions/stake/__tests__/BtcStake.test.ts +0 -247
  143. package/src/chains/btc/actions/stake/config/evm.ts +0 -183
  144. package/src/chains/btc/actions/stake/config/index.ts +0 -122
  145. package/src/chains/btc/actions/stake/config/solana.ts +0 -96
  146. package/src/chains/btc/actions/stake/config/starknet.ts +0 -66
  147. package/src/chains/btc/actions/stake/config/sui.ts +0 -61
  148. package/src/chains/btc/actions/stake/config/types.ts +0 -165
  149. package/src/chains/btc/actions/stake/factory.ts +0 -53
  150. package/src/chains/btc/actions/stake/index.ts +0 -22
  151. package/src/chains/btc/actions/stake/types.ts +0 -175
  152. package/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts +0 -415
  153. package/src/chains/btc/actions/stakeAndDeploy/config/evm.ts +0 -135
  154. package/src/chains/btc/actions/stakeAndDeploy/config/index.ts +0 -119
  155. package/src/chains/btc/actions/stakeAndDeploy/config/types.ts +0 -93
  156. package/src/chains/btc/actions/stakeAndDeploy/factory.ts +0 -54
  157. package/src/chains/btc/actions/stakeAndDeploy/index.ts +0 -26
  158. package/src/chains/btc/actions/stakeAndDeploy/types.ts +0 -118
  159. package/src/chains/btc/client/getCurrentBlockHeight.ts +0 -28
  160. package/src/chains/btc/client/mempool/error.ts +0 -24
  161. package/src/chains/btc/client/mempool/mempool.ts +0 -23
  162. package/src/chains/btc/index.ts +0 -71
  163. package/src/chains/evm/EvmActions.ts +0 -185
  164. package/src/chains/evm/actions/deploy/EvmDeploy.ts +0 -256
  165. package/src/chains/evm/actions/deploy/config/evm.ts +0 -80
  166. package/src/chains/evm/actions/deploy/config/index.ts +0 -8
  167. package/src/chains/evm/actions/deploy/config/types.ts +0 -43
  168. package/src/chains/evm/actions/deploy/factory.ts +0 -44
  169. package/src/chains/evm/actions/deploy/index.ts +0 -17
  170. package/src/chains/evm/actions/deploy/types.ts +0 -74
  171. package/src/chains/evm/actions/deposit/EvmDeposit.ts +0 -159
  172. package/src/chains/evm/actions/deposit/config/evm.ts +0 -100
  173. package/src/chains/evm/actions/deposit/config/index.ts +0 -8
  174. package/src/chains/evm/actions/deposit/config/types.ts +0 -39
  175. package/src/chains/evm/actions/deposit/factory.ts +0 -44
  176. package/src/chains/evm/actions/deposit/index.ts +0 -17
  177. package/src/chains/evm/actions/deposit/types.ts +0 -87
  178. package/src/chains/evm/actions/index.ts +0 -67
  179. package/src/chains/evm/actions/redeem/EvmRedeem.ts +0 -263
  180. package/src/chains/evm/actions/redeem/config/evm.ts +0 -85
  181. package/src/chains/evm/actions/redeem/config/index.ts +0 -8
  182. package/src/chains/evm/actions/redeem/config/types.ts +0 -39
  183. package/src/chains/evm/actions/redeem/factory.ts +0 -43
  184. package/src/chains/evm/actions/redeem/index.ts +0 -17
  185. package/src/chains/evm/actions/redeem/types.ts +0 -93
  186. package/src/chains/evm/actions/stake/EvmStake.ts +0 -339
  187. package/src/chains/evm/actions/stake/config/evm.ts +0 -89
  188. package/src/chains/evm/actions/stake/config/index.ts +0 -8
  189. package/src/chains/evm/actions/stake/config/types.ts +0 -89
  190. package/src/chains/evm/actions/stake/factory.ts +0 -52
  191. package/src/chains/evm/actions/stake/index.ts +0 -30
  192. package/src/chains/evm/actions/stake/types.ts +0 -104
  193. package/src/chains/evm/actions/unstake/EvmUnstake.ts +0 -258
  194. package/src/chains/evm/actions/unstake/config/evm.ts +0 -123
  195. package/src/chains/evm/actions/unstake/config/index.ts +0 -13
  196. package/src/chains/evm/actions/unstake/config/types.ts +0 -37
  197. package/src/chains/evm/actions/unstake/factory.ts +0 -44
  198. package/src/chains/evm/actions/unstake/index.ts +0 -22
  199. package/src/chains/evm/actions/unstake/types.ts +0 -87
  200. package/src/chains/evm/index.ts +0 -16
  201. package/src/chains/evm/shared/feeAuth.ts +0 -198
  202. package/src/chains/evm/shared/index.ts +0 -7
  203. package/src/chains/solana/SolanaActions.ts +0 -85
  204. package/src/chains/solana/actions/index.ts +0 -7
  205. package/src/chains/solana/actions/unstake/SolanaUnstake.ts +0 -151
  206. package/src/chains/solana/actions/unstake/config/btc.ts +0 -47
  207. package/src/chains/solana/actions/unstake/config/index.ts +0 -8
  208. package/src/chains/solana/actions/unstake/config/solana.ts +0 -47
  209. package/src/chains/solana/actions/unstake/config/types.ts +0 -35
  210. package/src/chains/solana/actions/unstake/factory.ts +0 -34
  211. package/src/chains/solana/actions/unstake/index.ts +0 -14
  212. package/src/chains/solana/actions/unstake/types.ts +0 -58
  213. package/src/chains/solana/index.ts +0 -8
  214. package/src/chains/starknet/StarknetActions.ts +0 -85
  215. package/src/chains/starknet/actions/index.ts +0 -7
  216. package/src/chains/starknet/actions/unstake/StarknetUnstake.ts +0 -128
  217. package/src/chains/starknet/actions/unstake/config/btc.ts +0 -43
  218. package/src/chains/starknet/actions/unstake/config/index.ts +0 -8
  219. package/src/chains/starknet/actions/unstake/config/starknet.ts +0 -43
  220. package/src/chains/starknet/actions/unstake/config/types.ts +0 -27
  221. package/src/chains/starknet/actions/unstake/factory.ts +0 -32
  222. package/src/chains/starknet/actions/unstake/index.ts +0 -14
  223. package/src/chains/starknet/actions/unstake/types.ts +0 -57
  224. package/src/chains/starknet/index.ts +0 -8
  225. package/src/chains/sui/SuiActions.ts +0 -82
  226. package/src/chains/sui/actions/index.ts +0 -7
  227. package/src/chains/sui/actions/unstake/SuiUnstake.ts +0 -146
  228. package/src/chains/sui/actions/unstake/config/btc.ts +0 -43
  229. package/src/chains/sui/actions/unstake/config/index.ts +0 -8
  230. package/src/chains/sui/actions/unstake/config/sui.ts +0 -43
  231. package/src/chains/sui/actions/unstake/config/types.ts +0 -27
  232. package/src/chains/sui/actions/unstake/factory.ts +0 -32
  233. package/src/chains/sui/actions/unstake/index.ts +0 -14
  234. package/src/chains/sui/actions/unstake/types.ts +0 -57
  235. package/src/chains/sui/index.ts +0 -8
  236. package/src/client/ApiNamespace.ts +0 -302
  237. package/src/client/AssetNamespace.ts +0 -112
  238. package/src/client/LombardSDK.ts +0 -212
  239. package/src/client/PartnerConfiguration.ts +0 -50
  240. package/src/client/createConfig.ts +0 -90
  241. package/src/client/createLombardSDK.ts +0 -130
  242. package/src/clients/evm-signer-adapter.ts +0 -313
  243. package/src/clients/public-client.ts +0 -49
  244. package/src/clients/rpc-url-config.ts +0 -64
  245. package/src/clients/wallet-client.ts +0 -34
  246. package/src/common/api-config.ts +0 -48
  247. package/src/common/blockchain-identifier.ts +0 -217
  248. package/src/common/chains.stories.tsx +0 -68
  249. package/src/common/chains.ts +0 -449
  250. package/src/common/constants.ts +0 -1
  251. package/src/common/contract-info.ts +0 -9
  252. package/src/common/feature-config.ts +0 -79
  253. package/src/common/fee-requirements.ts +0 -34
  254. package/src/common/parameters.ts +0 -89
  255. package/src/config/defaults.ts +0 -49
  256. package/src/config/index.ts +0 -12
  257. package/src/config/providers.ts +0 -81
  258. package/src/config/types.ts +0 -216
  259. package/src/config/validation.ts +0 -69
  260. package/src/contract-functions/approveLBTC/approveLBTC.stories.tsx +0 -79
  261. package/src/contract-functions/approveLBTC/approveLBTC.ts +0 -66
  262. package/src/contract-functions/approveLBTC/index.ts +0 -1
  263. package/src/contract-functions/approveToken/approveToken.ts +0 -126
  264. package/src/contract-functions/approveToken/index.ts +0 -1
  265. package/src/contract-functions/claimLBTC/claimLBTC.stories.tsx +0 -82
  266. package/src/contract-functions/claimLBTC/claimLBTC.ts +0 -159
  267. package/src/contract-functions/claimLBTC/index.ts +0 -1
  268. package/src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts +0 -95
  269. package/src/contract-functions/claimUnstakeRedeem/index.ts +0 -1
  270. package/src/contract-functions/deposit/depositToken.stories.tsx +0 -83
  271. package/src/contract-functions/deposit/depositToken.ts +0 -214
  272. package/src/contract-functions/deposit/index.ts +0 -1
  273. package/src/contract-functions/getBasculeDepositStatus/decodeBasculeDepositStatus.ts +0 -170
  274. package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +0 -62
  275. package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.ts +0 -211
  276. package/src/contract-functions/getBasculeDepositStatus/index.ts +0 -2
  277. package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.tsx +0 -61
  278. package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.ts +0 -193
  279. package/src/contract-functions/getLBTCMintingFee/index.ts +0 -1
  280. package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.tsx +0 -51
  281. package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts +0 -40
  282. package/src/contract-functions/getLBTCTotalSupply/index.ts +0 -1
  283. package/src/contract-functions/getPermitNonce/getPermitNonce.stories.tsx +0 -56
  284. package/src/contract-functions/getPermitNonce/getPermitNonce.ts +0 -50
  285. package/src/contract-functions/getPermitNonce/index.ts +0 -1
  286. package/src/contract-functions/getShareValue/getShareValue.stories.tsx +0 -58
  287. package/src/contract-functions/getShareValue/getShareValue.ts +0 -59
  288. package/src/contract-functions/getShareValue/index.ts +0 -1
  289. package/src/contract-functions/getSharesByAddress/getSharesByAddress.stories.tsx +0 -65
  290. package/src/contract-functions/getSharesByAddress/getSharesByAddress.ts +0 -86
  291. package/src/contract-functions/getSharesByAddress/index.ts +0 -4
  292. package/src/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.ts +0 -167
  293. package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.tsx +0 -180
  294. package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.tsx +0 -101
  295. package/src/contract-functions/getStakeAndBakeFee/index.ts +0 -1
  296. package/src/contract-functions/index.ts +0 -21
  297. package/src/contract-functions/signLbtcDestionationAddr/index.ts +0 -1
  298. package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.ts +0 -32
  299. package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.tsx +0 -64
  300. package/src/contract-functions/signNetworkFee/getTypedData.ts +0 -41
  301. package/src/contract-functions/signNetworkFee/index.ts +0 -1
  302. package/src/contract-functions/signNetworkFee/signNetworkFee.stories.tsx +0 -94
  303. package/src/contract-functions/signNetworkFee/signNetworkFee.ts +0 -106
  304. package/src/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.ts +0 -888
  305. package/src/contract-functions/signStakeAndBake/handleApprove.ts +0 -81
  306. package/src/contract-functions/signStakeAndBake/handlePermit.ts +0 -28
  307. package/src/contract-functions/signStakeAndBake/index.ts +0 -2
  308. package/src/contract-functions/signStakeAndBake/signStakeAndBake.stories.tsx +0 -202
  309. package/src/contract-functions/signStakeAndBake/signStakeAndBake.ts +0 -160
  310. package/src/contract-functions/signStakeAndBake/typed-data-builder.ts +0 -137
  311. package/src/contract-functions/signStakeAndBake/utils.ts +0 -61
  312. package/src/contract-functions/signStakeAndBake/validation.ts +0 -124
  313. package/src/contract-functions/unstakeLBTC/index.ts +0 -1
  314. package/src/contract-functions/unstakeLBTC/unstakeLBTC.stories.tsx +0 -92
  315. package/src/contract-functions/unstakeLBTC/unstakeLBTC.ts +0 -396
  316. package/src/contracts/abis/index.ts +0 -29
  317. package/src/contracts/index.ts +0 -63
  318. package/src/contracts/types.ts +0 -143
  319. package/src/contracts/utils.ts +0 -288
  320. package/src/core/assets/catalog.ts +0 -343
  321. package/src/core/assets/index.ts +0 -40
  322. package/src/core/assets/types.ts +0 -142
  323. package/src/core/assets/utils.ts +0 -287
  324. package/src/core/chains/catalog.ts +0 -396
  325. package/src/core/chains/index.ts +0 -39
  326. package/src/core/chains/types.ts +0 -193
  327. package/src/core/chains/utils.ts +0 -245
  328. package/src/core/index.ts +0 -72
  329. package/src/core/types.ts +0 -126
  330. package/src/debug-api/btc-script-to-address.ts +0 -20
  331. package/src/debug-api/btc-tx-info.ts +0 -32
  332. package/src/debug-api/evm-by-btc-address.ts +0 -26
  333. package/src/debug-api/index.ts +0 -3
  334. package/src/defi/README.md +0 -517
  335. package/src/defi/defi-registry.stories.tsx +0 -527
  336. package/src/defi/defi-registry.ts +0 -295
  337. package/src/defi/index.ts +0 -17
  338. package/src/index.ts +0 -336
  339. package/src/metrics/get-additional-rewards.ts +0 -69
  340. package/src/metrics/get-lbtc-apy.ts +0 -74
  341. package/src/metrics/get-lbtc-stats.stories.tsx +0 -57
  342. package/src/metrics/get-lbtc-stats.ts +0 -59
  343. package/src/metrics/get-positions-summary.stories.tsx +0 -58
  344. package/src/metrics/get-positions-summary.ts +0 -132
  345. package/src/modules/CapabilityRegistry.ts +0 -125
  346. package/src/modules/apiModule.ts +0 -51
  347. package/src/modules/btcModule.ts +0 -43
  348. package/src/modules/evmModule.ts +0 -48
  349. package/src/modules/index.ts +0 -60
  350. package/src/referrals/ReferralsClient.ts +0 -34
  351. package/src/referrals/index.ts +0 -1
  352. package/src/services/ApiService.ts +0 -152
  353. package/src/services/BtcService.ts +0 -29
  354. package/src/services/EvmService.ts +0 -127
  355. package/src/services/index.ts +0 -43
  356. package/src/shared/__tests__/errors.test.ts +0 -185
  357. package/src/shared/__tests__/events.test.ts +0 -120
  358. package/src/shared/__tests__/types.test.ts +0 -155
  359. package/src/shared/actions/BaseAction.ts +0 -497
  360. package/src/shared/actions/__tests__/BaseAction.test.ts +0 -292
  361. package/src/shared/actions/index.ts +0 -9
  362. package/src/shared/constants/statusConstants.ts +0 -108
  363. package/src/shared/context/ContextBuilder.ts +0 -149
  364. package/src/shared/context/index.ts +0 -8
  365. package/src/shared/context/types.ts +0 -156
  366. package/src/shared/deposits/depositStatus.ts +0 -402
  367. package/src/shared/deposits/index.ts +0 -29
  368. package/src/shared/errors.ts +0 -405
  369. package/src/shared/events.ts +0 -260
  370. package/src/shared/evm/switchChain.ts +0 -109
  371. package/src/shared/index.ts +0 -54
  372. package/src/shared/monitoring/__tests__/createEventEmitter.test.ts +0 -150
  373. package/src/shared/monitoring/createEventEmitter.ts +0 -160
  374. package/src/shared/monitoring/createProgressEmitter.ts +0 -46
  375. package/src/shared/monitoring/depositMonitor.ts +0 -211
  376. package/src/shared/monitoring/index.ts +0 -25
  377. package/src/shared/validation/index.ts +0 -411
  378. package/src/stories/arg-types.ts +0 -38
  379. package/src/stories/components/Badge.tsx +0 -27
  380. package/src/stories/components/Button/Button.css +0 -10
  381. package/src/stories/components/Button/Button.tsx +0 -52
  382. package/src/stories/components/Button/index.ts +0 -1
  383. package/src/stories/components/Card.tsx +0 -18
  384. package/src/stories/components/CodeBlock/CodeBlock.tsx +0 -27
  385. package/src/stories/components/CodeBlock/CodeBlockStyles.css +0 -3
  386. package/src/stories/components/CodeBlock/index.ts +0 -1
  387. package/src/stories/components/ConnectButton/connect-button.tsx +0 -248
  388. package/src/stories/components/ConnectButton/index.ts +0 -1
  389. package/src/stories/components/JsonPreview.tsx +0 -84
  390. package/src/stories/components/Spinner/Spinner.tsx +0 -27
  391. package/src/stories/components/Spinner/index.ts +0 -1
  392. package/src/stories/components/StatsCard.tsx +0 -30
  393. package/src/stories/components/StatusIndicator.tsx +0 -37
  394. package/src/stories/components/TreeNode.tsx +0 -47
  395. package/src/stories/components/decorators/function-type.tsx +0 -63
  396. package/src/stories/components/decorators/index.ts +0 -2
  397. package/src/stories/components/decorators/wagmi-decorator.tsx +0 -92
  398. package/src/stories/components/error-block.tsx +0 -21
  399. package/src/stories/components/index.ts +0 -11
  400. package/src/stories/constants.ts +0 -3
  401. package/src/stories/hooks/useConnection.ts +0 -63
  402. package/src/stories/hooks/useQuery.ts +0 -57
  403. package/src/tokens/__tests__/token-addresses.test.ts +0 -551
  404. package/src/tokens/abi/ASSET_ROUTER_ABI.ts +0 -1966
  405. package/src/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.ts +0 -1405
  406. package/src/tokens/abi/BTCK_ABI.ts +0 -1092
  407. package/src/tokens/abi/KATANA_BASCULE_ABI.ts +0 -653
  408. package/src/tokens/abi/LBTC_ABI.json +0 -1761
  409. package/src/tokens/abi/LBTC_ABI.ts +0 -1761
  410. package/src/tokens/abi/LBTC_BASCULE_ABI.json +0 -850
  411. package/src/tokens/abi/NATIVE_LBTC_ABI.ts +0 -1147
  412. package/src/tokens/abi/STLBTC_ABI.ts +0 -1062
  413. package/src/tokens/cross-chain-addresses.stories.tsx +0 -236
  414. package/src/tokens/denomination-utils.stories.tsx +0 -176
  415. package/src/tokens/getLbtcContractAddresses.stories.tsx +0 -158
  416. package/src/tokens/getTokenByAddress.stories.tsx +0 -172
  417. package/src/tokens/getTokenContractInfo.stories.tsx +0 -148
  418. package/src/tokens/getTokenInfo.stories.tsx +0 -133
  419. package/src/tokens/isUpgradedContract.stories.tsx +0 -124
  420. package/src/tokens/lbtc-addresses.ts +0 -18
  421. package/src/tokens/token-addresses.ts +0 -477
  422. package/src/tokens/tokens.ts +0 -249
  423. package/src/tokens/types.ts +0 -80
  424. package/src/utils/array.ts +0 -31
  425. package/src/utils/block.ts +0 -23
  426. package/src/utils/chain.ts +0 -152
  427. package/src/utils/consoleLogger.ts +0 -140
  428. package/src/utils/ensureNotSanctionedAddress.ts +0 -11
  429. package/src/utils/env.ts +0 -20
  430. package/src/utils/err.ts +0 -83
  431. package/src/utils/evmAccount.ts +0 -47
  432. package/src/utils/gas.ts +0 -36
  433. package/src/utils/hex.ts +0 -9
  434. package/src/utils/http.ts +0 -224
  435. package/src/utils/numbers.ts +0 -37
  436. package/src/utils/pagination.ts +0 -70
  437. package/src/utils/satoshi.ts +0 -41
  438. package/src/utils/time.ts +0 -12
  439. package/src/utils/transaction-executor.ts +0 -299
  440. package/src/vaults/abi/SILO_VAULT_SPENDER_ABI.json +0 -793
  441. package/src/vaults/abi/VEDA_VAULT_ABI.json +0 -452
  442. package/src/vaults/abi/VEDA_VAULT_ACCOUNTANT_ABI.json +0 -591
  443. package/src/vaults/abi/VEDA_VAULT_BASE_ASSET_ABI.json +0 -296
  444. package/src/vaults/abi/VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI.json +0 -502
  445. package/src/vaults/abi/VEDA_VAULT_LENS_ABI.json +0 -175
  446. package/src/vaults/abi/VEDA_VAULT_SPENDER_ABI.json +0 -408
  447. package/src/vaults/abi/VEDA_VAULT_TELLER_ABI.json +0 -700
  448. package/src/vaults/abi/index.ts +0 -4
  449. package/src/vaults/index.ts +0 -46
  450. package/src/vaults/lib/config.ts +0 -184
  451. package/src/vaults/lib/metrics/get-vault-apy.stories.tsx +0 -58
  452. package/src/vaults/lib/metrics/get-vault-apy.ts +0 -176
  453. package/src/vaults/lib/metrics/get-vault-points.stories.tsx +0 -60
  454. package/src/vaults/lib/metrics/get-vault-points.ts +0 -74
  455. package/src/vaults/lib/metrics/get-vault-tvl.stories.tsx +0 -58
  456. package/src/vaults/lib/metrics/get-vault-tvl.ts +0 -121
  457. package/src/vaults/lib/ops/cancel-withdraw.stories.tsx +0 -80
  458. package/src/vaults/lib/ops/deposit.stories.tsx +0 -82
  459. package/src/vaults/lib/ops/deposit.ts +0 -152
  460. package/src/vaults/lib/ops/get-vault-deposits.stories.tsx +0 -65
  461. package/src/vaults/lib/ops/get-vault-deposits.ts +0 -209
  462. package/src/vaults/lib/ops/get-vault-withdrawals.stories.tsx +0 -67
  463. package/src/vaults/lib/ops/get-vault-withdrawals.ts +0 -349
  464. package/src/vaults/lib/ops/withdraw.stories.tsx +0 -82
  465. package/src/vaults/lib/ops/withdraw.ts +0 -225
  466. package/src/version.ts +0 -56
  467. package/src/vite-env.d.ts +0 -1
@@ -1,216 +0,0 @@
1
- /**
2
- * StakeAndBake Signature Restoration Tests
3
- *
4
- * Tests the logic for checking existing stake and bake signatures
5
- * before prompting the user to sign.
6
- *
7
- * Bug #7: Stake & Bake always asks user to sign even if valid signature exists
8
- *
9
- * @module __tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts
10
- */
11
-
12
- import { describe, expect, it } from 'vitest';
13
-
14
- describe('StakeAndBake Signature Restoration Logic', () => {
15
- describe('Expiration Check', () => {
16
- it('should reject expired signatures', () => {
17
- // Simulate expiration check logic from restoreStakeAndBakeSignature
18
- const checkExpiration = (expirationDate: string): boolean => {
19
- const expirationMs = Number(expirationDate) * 1000;
20
- return expirationMs >= Date.now();
21
- };
22
-
23
- // Expired signature (1 hour ago)
24
- const expiredTimestamp = String(Math.floor(Date.now() / 1000) - 3600);
25
- expect(checkExpiration(expiredTimestamp)).toBe(false);
26
-
27
- // Valid signature (expires in 24 hours)
28
- const validTimestamp = String(Math.floor(Date.now() / 1000) + 86400);
29
- expect(checkExpiration(validTimestamp)).toBe(true);
30
-
31
- // Valid signature (expires in 1 minute)
32
- const almostExpiredTimestamp = String(Math.floor(Date.now() / 1000) + 60);
33
- expect(checkExpiration(almostExpiredTimestamp)).toBe(true);
34
- });
35
-
36
- it('should handle edge case of exactly now (within tolerance)', () => {
37
- // Note: The actual implementation uses `< Date.now()` which means
38
- // a signature expiring at the current second is considered expired.
39
- // This is the safer behavior to avoid race conditions.
40
- const checkExpiration = (expirationDate: string): boolean => {
41
- const expirationMs = Number(expirationDate) * 1000;
42
- return expirationMs >= Date.now();
43
- };
44
-
45
- // Edge case: expires 2 seconds from now (to avoid timing issues in test)
46
- const soonTimestamp = String(Math.floor(Date.now() / 1000) + 2);
47
- expect(checkExpiration(soonTimestamp)).toBe(true);
48
-
49
- // Edge case: expired 2 seconds ago
50
- const justExpiredTimestamp = String(Math.floor(Date.now() / 1000) - 2);
51
- expect(checkExpiration(justExpiredTimestamp)).toBe(false);
52
- });
53
- });
54
-
55
- describe('Signature Restoration Result Handling', () => {
56
- interface StakeAndBakeRestoreResult {
57
- hasSignature: boolean;
58
- signature?: string;
59
- depositAmount?: string;
60
- expirationDate?: string;
61
- }
62
-
63
- const shouldSkipAuthorization = (
64
- result: StakeAndBakeRestoreResult | null,
65
- ): boolean => {
66
- return result?.hasSignature === true;
67
- };
68
-
69
- it('should skip authorization when valid signature exists', () => {
70
- const validResult: StakeAndBakeRestoreResult = {
71
- hasSignature: true,
72
- signature: '0xabc123',
73
- depositAmount: '20000',
74
- expirationDate: String(Math.floor(Date.now() / 1000) + 86400),
75
- };
76
-
77
- expect(shouldSkipAuthorization(validResult)).toBe(true);
78
- });
79
-
80
- it('should require authorization when result is null', () => {
81
- expect(shouldSkipAuthorization(null)).toBe(false);
82
- });
83
-
84
- it('should require authorization when hasSignature is false', () => {
85
- const noSignatureResult: StakeAndBakeRestoreResult = {
86
- hasSignature: false,
87
- };
88
-
89
- expect(shouldSkipAuthorization(noSignatureResult)).toBe(false);
90
- });
91
-
92
- it('should skip authorization even if signature string is undefined (server has it)', () => {
93
- // In some cases, the API may not return the actual signature string
94
- // but still indicate that a valid signature exists
95
- const hasSignatureNoString: StakeAndBakeRestoreResult = {
96
- hasSignature: true,
97
- depositAmount: '20000',
98
- expirationDate: String(Math.floor(Date.now() / 1000) + 86400),
99
- };
100
-
101
- expect(shouldSkipAuthorization(hasSignatureNoString)).toBe(true);
102
- });
103
- });
104
-
105
- describe('Status Flow Documentation', () => {
106
- /**
107
- * Documents the expected status transitions for BtcStakeAndDeploy.prepare()
108
- *
109
- * Scenario 1: No existing deposit, no existing signature
110
- * IDLE → prepare() → NEEDS_DEPLOY_AUTHORIZATION
111
- *
112
- * Scenario 2: No existing deposit, valid signature exists
113
- * IDLE → prepare() → READY (skip authorization)
114
- *
115
- * Scenario 3: Existing deposit, valid signature exists
116
- * IDLE → prepare() → ADDRESS_READY (skip authorization)
117
- *
118
- * Scenario 4: Existing deposit, signature expired/missing
119
- * IDLE → prepare() → NEEDS_DEPLOY_AUTHORIZATION (re-auth needed)
120
- */
121
-
122
- it('should document scenario 1: fresh start requires authorization', () => {
123
- const hasDeposit = false;
124
- const hasValidSignature = false;
125
-
126
- const expectedStatus = !hasDeposit && !hasValidSignature
127
- ? 'NEEDS_DEPLOY_AUTHORIZATION'
128
- : 'READY';
129
-
130
- expect(expectedStatus).toBe('NEEDS_DEPLOY_AUTHORIZATION');
131
- });
132
-
133
- it('should document scenario 2: existing signature skips to READY', () => {
134
- const _hasDeposit = false; // Not used in this scenario - signature alone determines status
135
- const hasValidSignature = true;
136
-
137
- const expectedStatus = hasValidSignature ? 'READY' : 'NEEDS_DEPLOY_AUTHORIZATION';
138
-
139
- expect(expectedStatus).toBe('READY');
140
- });
141
-
142
- it('should document scenario 3: existing deposit + signature → ADDRESS_READY', () => {
143
- const hasDeposit = true;
144
- const hasValidSignature = true;
145
-
146
- const expectedStatus = hasDeposit && hasValidSignature
147
- ? 'ADDRESS_READY'
148
- : 'NEEDS_DEPLOY_AUTHORIZATION';
149
-
150
- expect(expectedStatus).toBe('ADDRESS_READY');
151
- });
152
-
153
- it('should document scenario 4: deposit exists but signature expired → re-auth', () => {
154
- const hasDeposit = true;
155
- const hasValidSignature = false;
156
-
157
- const expectedStatus = hasDeposit && !hasValidSignature
158
- ? 'NEEDS_DEPLOY_AUTHORIZATION'
159
- : 'ADDRESS_READY';
160
-
161
- expect(expectedStatus).toBe('NEEDS_DEPLOY_AUTHORIZATION');
162
- });
163
- });
164
-
165
- describe('Error Handling', () => {
166
- it('should treat API errors as no-signature-found', async () => {
167
- // Simulate the error handling in restoreStakeAndBakeSignature
168
- const restoreWithErrorHandling = async (): Promise<null> => {
169
- try {
170
- throw new Error('Network error');
171
- } catch {
172
- return null;
173
- }
174
- };
175
-
176
- const result = await restoreWithErrorHandling();
177
- expect(result).toBeNull();
178
- });
179
- });
180
- });
181
-
182
- describe('getUserStakeAndBakeSignature API Response Parsing', () => {
183
- interface ApiResponse {
184
- user_destination_address: string;
185
- signature: string;
186
- expiration_date: string;
187
- deposit_amount: string;
188
- chain_id: string;
189
- }
190
-
191
- const parseApiResponse = (data: ApiResponse) => ({
192
- userDestinationAddress: data.user_destination_address,
193
- signature: data.signature,
194
- expirationDate: data.expiration_date,
195
- depositAmount: data.deposit_amount,
196
- chainId: data.chain_id,
197
- });
198
-
199
- it('should correctly parse snake_case API response to camelCase', () => {
200
- const apiResponse: ApiResponse = {
201
- user_destination_address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
202
- signature: '0xabc123def456',
203
- expiration_date: '1704067200', // Unix timestamp
204
- deposit_amount: '20000',
205
- chain_id: '1',
206
- };
207
-
208
- const parsed = parseApiResponse(apiResponse);
209
-
210
- expect(parsed.userDestinationAddress).toBe('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
211
- expect(parsed.signature).toBe('0xabc123def456');
212
- expect(parsed.expirationDate).toBe('1704067200');
213
- expect(parsed.depositAmount).toBe('20000');
214
- expect(parsed.chainId).toBe('1');
215
- });
216
- });
@@ -1,184 +0,0 @@
1
- /**
2
- * Token Parameter Consistency Tests
3
- *
4
- * Ensures all BTC actions pass the correct token parameter to their
5
- * authorization functions, which is critical for:
6
- * - Correct ratio conversion (BTC → LBTC)
7
- * - Correct signature storage (token address)
8
- * - Backend matching signatures to deposits
9
- *
10
- * This test file documents the expected token parameter for each action
11
- * to prevent regressions like APP-1993.
12
- *
13
- * @module __tests__/unit/btc/TokenParameterConsistency.test.ts
14
- */
15
-
16
- import { describe, expect, it } from 'vitest';
17
-
18
- import { DEFI_REGISTRY,DefiProtocol } from '../../../defi/defi-registry';
19
- import { Token } from '../../../tokens/token-addresses';
20
-
21
- describe('Token Parameter Consistency', () => {
22
- /**
23
- * This test suite documents and verifies the expected token parameters
24
- * for each BTC action type.
25
- *
26
- * Token Parameter Mapping:
27
- * ┌─────────────────────────┬────────────────┬─────────────────────┬─────────────────┐
28
- * │ Action │ Source → Dest │ Token Param │ Amount Strategy │
29
- * ├─────────────────────────┼────────────────┼─────────────────────┼─────────────────┤
30
- * │ BtcStake │ BTC → LBTC │ Token.LBTC │ N/A (fee only) │
31
- * │ BtcDeposit │ BTC → BTC.b │ Token.BTCb │ N/A (fee only) │
32
- * │ BtcStakeAndDeploy │ BTC → LBTC │ 'BTC' │ btcToLbtc │
33
- * │ BtcDepositAndDeploy │ BTC → BTC.b │ Token.BTCb │ identity │
34
- * └─────────────────────────┴────────────────┴─────────────────────┴─────────────────┘
35
- *
36
- * Key Insight:
37
- * - BtcStake and BtcDeposit use token for fee authorization (signNetworkFee)
38
- * - BtcStakeAndDeploy and BtcDepositAndDeploy use token for vault permit (signStakeAndBake)
39
- * - Only BtcStakeAndDeploy needs ratio conversion because it creates LBTC from BTC
40
- */
41
-
42
- describe('BtcStake Action', () => {
43
- it('uses Token.LBTC for network fee authorization', () => {
44
- /**
45
- * BtcStake authorizes network fee using Token.LBTC.
46
- * This is for the fee signature, not the deposit amount.
47
- *
48
- * Code location: packages/sdk/src/chains/btc/actions/stake/config/evm.ts
49
- * Line: token: Token.LBTC
50
- */
51
- expect(Token.LBTC).toBe('LBTC');
52
- });
53
- });
54
-
55
- describe('BtcDeposit Action', () => {
56
- it('uses Token.BTCb for network fee authorization', () => {
57
- /**
58
- * BtcDeposit authorizes network fee using Token.BTCb.
59
- * This distinguishes BTC.b fee signatures from LBTC fee signatures.
60
- *
61
- * Code location: packages/sdk/src/chains/btc/actions/deposit/config/evm.ts
62
- * Line: token: Token.BTCb
63
- */
64
- expect(Token.BTCb).toBe('BTC.b');
65
- });
66
- });
67
-
68
- describe('BtcStakeAndDeploy Action', () => {
69
- it('uses "BTC" token for stake and bake permit (triggers ratio conversion)', () => {
70
- /**
71
- * BtcStakeAndDeploy uses 'BTC' as token parameter to trigger ratio conversion.
72
- *
73
- * This is CRITICAL because:
74
- * 1. User deposits BTC (e.g., 20000 satoshis)
75
- * 2. They receive LBTC (e.g., 19947 satoshis after ratio)
76
- * 3. The permit signature must contain the LBTC amount (19947)
77
- * 4. Backend matches signature by this adjusted amount
78
- *
79
- * Using 'BTC' hits DEFI_REGISTRY[Veda]['BTC'] which has:
80
- * amountStrategy: 'btcToLbtc' → applies ratio conversion
81
- *
82
- * Code location: packages/sdk/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts
83
- * Line: token: 'BTC'
84
- */
85
- const vedaBtcConfig = DEFI_REGISTRY[DefiProtocol.Veda]?.['BTC'];
86
- expect(vedaBtcConfig).toBeDefined();
87
- if (!vedaBtcConfig) return;
88
-
89
- // Verify btcToLbtc strategy exists in at least one env/chain
90
- const hasConversion = Object.values(vedaBtcConfig).some(envMap =>
91
- envMap ? Object.values(envMap).some(
92
- chainConfig => chainConfig?.amountStrategy === 'btcToLbtc',
93
- ) : false,
94
- );
95
-
96
- expect(hasConversion).toBe(true);
97
- });
98
-
99
- it('should NOT use AssetId.LBTC (would skip ratio conversion)', () => {
100
- /**
101
- * If BtcStakeAndDeploy used AssetId.LBTC (or Token.LBTC) as token,
102
- * it would hit DEFI_REGISTRY[Veda][Token.LBTC] which has:
103
- * amountStrategy: 'identity' → NO ratio conversion
104
- *
105
- * This was the bug in APP-1993:
106
- * - Signature had raw amount (20000)
107
- * - Backend expected adjusted amount (19947)
108
- * - Result: "signature not found" / deposit not claimed
109
- */
110
- const vedaLbtcConfig = DEFI_REGISTRY[DefiProtocol.Veda]?.[Token.LBTC];
111
- expect(vedaLbtcConfig).toBeDefined();
112
- if (!vedaLbtcConfig) return;
113
-
114
- // Verify identity strategy (no conversion) for LBTC token
115
- const hasIdentity = Object.values(vedaLbtcConfig).some(envMap =>
116
- envMap ? Object.values(envMap).some(
117
- chainConfig => chainConfig?.amountStrategy === 'identity',
118
- ) : false,
119
- );
120
-
121
- expect(hasIdentity).toBe(true);
122
- });
123
- });
124
-
125
- describe('BtcDepositAndDeploy Action', () => {
126
- it('uses Token.BTCb for deposit and deploy permit (no ratio conversion needed)', () => {
127
- /**
128
- * BtcDepositAndDeploy uses Token.BTCb which has:
129
- * amountStrategy: 'identity' → no conversion
130
- *
131
- * This is correct because 1 BTC = 1 BTC.b (no exchange rate).
132
- *
133
- * Code location: packages/sdk/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts
134
- * Line: token: Token.BTCb
135
- */
136
- const siloBtcbConfig = DEFI_REGISTRY[DefiProtocol.Silo]?.[Token.BTCb];
137
- expect(siloBtcbConfig).toBeDefined();
138
-
139
- // Verify identity strategy for BTCb
140
- const hasIdentity = Object.values(siloBtcbConfig!).some(envMap =>
141
- Object.values(envMap!).some(
142
- chainConfig => chainConfig?.amountStrategy === 'identity',
143
- ),
144
- );
145
-
146
- expect(hasIdentity).toBe(true);
147
- });
148
- });
149
-
150
- describe('Amount Strategy Summary', () => {
151
- it('documents all amount strategies in DEFI_REGISTRY', () => {
152
- /**
153
- * Amount Strategy Reference:
154
- *
155
- * - 'identity': No conversion, use amount as-is
156
- * → Used for: LBTC permits, BTCb permits
157
- *
158
- * - 'btcToLbtc': Divide amount by BTCTokenRatio
159
- * → Used for: BTC → LBTC stake and bake
160
- * → Formula: lbtcAmount = btcAmount / ratio
161
- * → Example: 20000 / 1.00265 = 19947
162
- */
163
-
164
- const strategies = new Set<string>();
165
-
166
- // Collect all strategies from registry
167
- for (const protocolMap of Object.values(DEFI_REGISTRY)) {
168
- for (const tokenMap of Object.values(protocolMap)) {
169
- for (const envMap of Object.values(tokenMap!)) {
170
- for (const chainConfig of Object.values(envMap!)) {
171
- if (chainConfig?.amountStrategy) {
172
- strategies.add(chainConfig.amountStrategy);
173
- }
174
- }
175
- }
176
- }
177
- }
178
-
179
- expect(strategies.has('identity')).toBe(true);
180
- expect(strategies.has('btcToLbtc')).toBe(true);
181
- expect(strategies.size).toBe(2); // Only these two strategies exist
182
- });
183
- });
184
- });
@@ -1,191 +0,0 @@
1
- /**
2
- * BTC Deposit Token Parameter Tests
3
- *
4
- * Tests to verify that the correct token (BTCb vs LBTC) is used
5
- * when generating deposit addresses.
6
- *
7
- * Related Issue: APP-1974
8
- * - BTC.b deposit was incorrectly generating LBTC deposit addresses
9
- * - The root cause was token parameter not being properly derived from assetOut
10
- *
11
- * @module __tests__/unit/btc/btc-deposit-token.test.ts
12
- */
13
-
14
- import { describe, expect, it } from 'vitest';
15
-
16
- import { assetIdToToken } from '../../../chains/btc/actions/shared/tokenUtils';
17
- import { AssetId } from '../../../core';
18
- import { Token } from '../../../tokens/token-addresses';
19
-
20
- describe('BTC Deposit Token Resolution (APP-1974)', () => {
21
- // ═══════════════════════════════════════════════════════════════════════════
22
- // assetIdToToken
23
- // ═══════════════════════════════════════════════════════════════════════════
24
-
25
- describe('assetIdToToken', () => {
26
- describe('should map AssetId to correct Token', () => {
27
- it('should return Token.BTCb for AssetId.BTCb', () => {
28
- const token = assetIdToToken(AssetId.BTCb);
29
- expect(token).toBe(Token.BTCb);
30
- });
31
-
32
- it('should return Token.LBTC for AssetId.LBTC', () => {
33
- const token = assetIdToToken(AssetId.LBTC);
34
- expect(token).toBe(Token.LBTC);
35
- });
36
-
37
- it('should return default token for unknown AssetId', () => {
38
- // Using BTC as an example of an input-only asset
39
- const token = assetIdToToken(AssetId.BTC);
40
- expect(token).toBe(Token.LBTC); // Default is LBTC
41
- });
42
-
43
- it('should use provided default for unknown AssetId', () => {
44
- const token = assetIdToToken(AssetId.BTC, Token.BTCb);
45
- expect(token).toBe(Token.BTCb);
46
- });
47
- });
48
-
49
- describe('BTC Deposit specific behavior', () => {
50
- /**
51
- * APP-1974 Root Cause:
52
- * The BtcDeposit.getExpectedToken() method correctly calls
53
- * assetIdToToken(this.params.assetOut, Token.BTCb)
54
- *
55
- * However, if assetOut is not properly passed (e.g., undefined or wrong value),
56
- * it could default to LBTC, causing the wrong deposit address to be generated.
57
- */
58
-
59
- it('should return BTCb when assetOut is BTCb (BTC Deposit)', () => {
60
- // This simulates what BtcDeposit.getExpectedToken() does
61
- const assetOut = AssetId.BTCb;
62
- const defaultToken = Token.BTCb;
63
-
64
- const token = assetIdToToken(assetOut, defaultToken);
65
- expect(token).toBe(Token.BTCb);
66
- });
67
-
68
- it('should still return BTCb as default even for non-mapped assets in deposit', () => {
69
- // BtcDeposit uses Token.BTCb as default
70
- const defaultToken = Token.BTCb;
71
-
72
- // Even if assetOut is somehow invalid, it should fall back to BTCb for deposit
73
- const token = assetIdToToken(AssetId.BTC, defaultToken);
74
- expect(token).toBe(Token.BTCb);
75
- });
76
- });
77
-
78
- describe('BTC Stake specific behavior', () => {
79
- it('should return LBTC when assetOut is LBTC (BTC Stake)', () => {
80
- // This simulates what BtcStake.getExpectedToken() does
81
- const assetOut = AssetId.LBTC;
82
- const defaultToken = Token.LBTC;
83
-
84
- const token = assetIdToToken(assetOut, defaultToken);
85
- expect(token).toBe(Token.LBTC);
86
- });
87
- });
88
-
89
- describe('Token/AssetId mapping', () => {
90
- /**
91
- * Token and AssetId share the same string values for common assets:
92
- * - Token.BTCb = 'BTC.b'
93
- * - AssetId.BTCb = 'BTC.b'
94
- *
95
- * This ensures consistency between API calls and action parameters.
96
- */
97
-
98
- it('Token and AssetId values are defined correctly', () => {
99
- // Both use 'BTC.b' for BTCb
100
- expect(Token.BTCb).toBe('BTC.b');
101
- expect(AssetId.BTCb).toBe('BTC.b');
102
-
103
- // Both use 'LBTC' for LBTC
104
- expect(Token.LBTC).toBe('LBTC');
105
- expect(AssetId.LBTC).toBe('LBTC');
106
- });
107
-
108
- it('assetIdToToken correctly maps AssetId.BTCb to Token.BTCb', () => {
109
- const token = assetIdToToken(AssetId.BTCb);
110
- expect(token).toBe(Token.BTCb); // 'BTC.b'
111
- });
112
-
113
- it('assetIdToToken correctly maps AssetId.LBTC to Token.LBTC', () => {
114
- const token = assetIdToToken(AssetId.LBTC);
115
- expect(token).toBe(Token.LBTC); // 'LBTC'
116
- });
117
- });
118
- });
119
-
120
- // ═══════════════════════════════════════════════════════════════════════════
121
- // Integration with getDepositBtcAddress
122
- // ═══════════════════════════════════════════════════════════════════════════
123
-
124
- describe('Token parameter flow', () => {
125
- /**
126
- * The getDepositBtcAddress function has this signature:
127
- *
128
- * token: tokenParam = Token.LBTC // Default is LBTC!
129
- *
130
- * This means if token is not explicitly passed, it defaults to LBTC.
131
- *
132
- * The BtcDeposit and BtcStake actions must always pass the token explicitly.
133
- */
134
-
135
- it('should use BTCb token for BTC Deposit actions', () => {
136
- // Simulates the full flow from action to API call
137
- const actionAssetOut = AssetId.BTCb;
138
- const actionDefault = Token.BTCb;
139
-
140
- // Action calls getExpectedToken() which does this:
141
- const tokenForApi = assetIdToToken(actionAssetOut, actionDefault);
142
-
143
- // This token should be BTCb, not LBTC
144
- expect(tokenForApi).toBe(Token.BTCb);
145
- expect(tokenForApi).not.toBe(Token.LBTC);
146
- });
147
-
148
- it('should use LBTC token for BTC Stake actions', () => {
149
- const actionAssetOut = AssetId.LBTC;
150
- const actionDefault = Token.LBTC;
151
-
152
- const tokenForApi = assetIdToToken(actionAssetOut, actionDefault);
153
-
154
- expect(tokenForApi).toBe(Token.LBTC);
155
- });
156
-
157
- it('should never allow BTCb deposit to use LBTC token', () => {
158
- // This is the core test for APP-1974
159
- // If assetOut is BTCb, the token MUST be BTCb
160
- const actionAssetOut = AssetId.BTCb;
161
- const tokenForApi = assetIdToToken(actionAssetOut, Token.BTCb);
162
-
163
- // CRITICAL: This must not be LBTC
164
- expect(tokenForApi).not.toBe(Token.LBTC);
165
- expect(tokenForApi).toBe(Token.BTCb);
166
- });
167
- });
168
-
169
- // ═══════════════════════════════════════════════════════════════════════════
170
- // Edge Cases
171
- // ═══════════════════════════════════════════════════════════════════════════
172
-
173
- describe('Edge cases', () => {
174
- it('should handle BTCK token if supported', () => {
175
- // BTCK is used in some test environments
176
- if ('BTCK' in AssetId) {
177
- const assetId = 'BTCK' as AssetId;
178
- const token = assetIdToToken(assetId);
179
- // Should not throw, returns default
180
- expect(token).toBeDefined();
181
- }
182
- });
183
-
184
- it('should handle undefined-like inputs gracefully', () => {
185
- // TypeScript prevents this, but runtime safety is important
186
- const token = assetIdToToken(undefined as unknown as AssetId, Token.BTCb);
187
- expect(token).toBe(Token.BTCb);
188
- });
189
- });
190
- });
191
-