@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,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
-