@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,32 +0,0 @@
1
- import { Env } from '@lombard.finance/sdk-common';
2
- import axios from 'axios';
3
- import { Address } from 'viem';
4
-
5
- import { getApiConfig } from '../common/api-config';
6
- import { BlockchainIdentifier } from '../common/blockchain-identifier';
7
-
8
- type BtcTxInfoResponse = {
9
- addresses: [
10
- {
11
- btc_address: string;
12
- type: 'ADDRESS_TYPE_DEPOSIT';
13
- deposit_metadata: {
14
- to_address: Address;
15
- to_blockchain: BlockchainIdentifier;
16
- };
17
- created_at: string;
18
- },
19
- ];
20
- };
21
-
22
- export const fetchBtcTxInfo = async (txHash: string, env?: Env) => {
23
- const { baseApiUrl } = getApiConfig(env);
24
- try {
25
- const { data } = await axios.get<BtcTxInfoResponse>(
26
- `${baseApiUrl}/api/v1/debug/btc-tx-info/${txHash}`,
27
- );
28
- return data;
29
- } catch {
30
- return undefined;
31
- }
32
- };
@@ -1,26 +0,0 @@
1
- import { Env } from '@lombard.finance/sdk-common';
2
- import axios from 'axios';
3
- import { Address } from 'viem';
4
-
5
- import { getApiConfig } from '../common/api-config';
6
- import { BlockchainIdentifier } from '../common/blockchain-identifier';
7
-
8
- type EvmByBtcAddressResponse = {
9
- metadata: {
10
- to_address: Address;
11
- to_blockchain: BlockchainIdentifier;
12
- referral: string;
13
- };
14
- };
15
-
16
- export const fetchEvmByBtcAddress = async (btcAddress: string, env?: Env) => {
17
- const { baseApiUrl } = getApiConfig(env);
18
- try {
19
- const { data } = await axios.get<EvmByBtcAddressResponse>(
20
- `${baseApiUrl}/api/v1/debug/evm-by-btc-address/${btcAddress}`,
21
- );
22
- return data.metadata;
23
- } catch {
24
- return undefined;
25
- }
26
- };
@@ -1,3 +0,0 @@
1
- export * from './btc-script-to-address';
2
- export * from './btc-tx-info';
3
- export * from './evm-by-btc-address';
@@ -1,517 +0,0 @@
1
- # DeFi Registry
2
-
3
- Configuration registry for stake-and-bake integrations across DeFi protocols, tokens, chains, and environments.
4
-
5
- ## ๐Ÿ“‹ Overview
6
-
7
- The DeFi Registry is a **configuration-driven system** that defines which tokens can be used with which DeFi protocols for stake-and-bake operations. Instead of hard-coding approval logic in functions, we store it in a structured registry.
8
-
9
- **Key Concept:** Adding support for new tokens or protocols requires **configuration changes only** - no code changes to core functions.
10
-
11
- ---
12
-
13
- ## ๐Ÿ—๏ธ Architecture
14
-
15
- ```
16
- DEFI_REGISTRY
17
- โ”œโ”€โ”€ Protocol (Veda, Silo, etc.)
18
- โ”‚ โ””โ”€โ”€ Token (LBTC, BTC, BTCb, etc.)
19
- โ”‚ โ””โ”€โ”€ Environment (prod, testnet, etc.)
20
- โ”‚ โ””โ”€โ”€ Chain (Ethereum, BSC, Avalanche, etc.)
21
- โ”‚ โ”œโ”€โ”€ approvalConfig (permit vs approve, EIP-712 settings)
22
- โ”‚ โ””โ”€โ”€ spenderContract (address, ABI, chainId)
23
- ```
24
-
25
- ### Components
26
-
27
- 1. **`ApprovalMode`** - How tokens are approved:
28
- - `'permit'` - Off-chain EIP-2612 signature (gasless for user)
29
- - `'approve'` - On-chain ERC-20 approval transaction (user pays gas)
30
-
31
- 2. **`TokenApprovalConfig`** - Defines approval behavior:
32
-
33
- ```typescript
34
- {
35
- mode: 'permit' | 'approve',
36
- eip712Domain: { name: string, version: string },
37
- requiresConversion?: boolean, // e.g., BTC โ†’ LBTC
38
- requiresNonce: boolean, // Fetch nonce from chain?
39
- expiryBehavior?: 'standard' | 'zero',
40
- }
41
- ```
42
-
43
- 3. **`DefiRegistryEntry`** - Complete registration:
44
- ```typescript
45
- {
46
- approvalConfig: TokenApprovalConfig,
47
- spenderContract: ContractInfo,
48
- }
49
- ```
50
-
51
- ---
52
-
53
- ## ๐Ÿ“– How It Works
54
-
55
- ### 1. **Query the Registry**
56
-
57
- The `getStakeAndBakeConfig()` function queries the registry:
58
-
59
- ```typescript
60
- import { getStakeAndBakeConfig } from './validation';
61
-
62
- const { tokenConfig, spenderContract } = getStakeAndBakeConfig(
63
- 'Veda', // Protocol
64
- Token.LBTC, // Token
65
- ChainId.ethereum, // Chain
66
- Env.prod, // Environment
67
- );
68
-
69
- // Returns:
70
- // tokenConfig = { mode: 'permit', eip712Domain: {...}, ... }
71
- // spenderContract = { address: '0x...', abi: [...], chainId: 1 }
72
- ```
73
-
74
- ### 2. **Used By `signStakeAndBake()`**
75
-
76
- The main function uses the registry to determine behavior:
77
-
78
- ```typescript
79
- // packages/sdk/src/contract-functions/signStakeAndBake/signStakeAndBake.ts
80
-
81
- export async function signStakeAndBake(params) {
82
- // 1. Get config from registry
83
- const { tokenConfig, spenderContract } = getStakeAndBakeConfig(...);
84
-
85
- // 2. Build typed data based on config
86
- const typedData = buildTypedData({
87
- mode: tokenConfig.mode, // permit or approve
88
- domainName: tokenConfig.eip712Domain.name,
89
- // ...
90
- });
91
-
92
- // 3. Route to appropriate handler
93
- if (tokenConfig.mode === 'approve') {
94
- return handleApproveFlow({ ... }); // Submit transaction
95
- }
96
- return handlePermitFlow({ ... }); // Sign message
97
- }
98
- ```
99
-
100
- ---
101
-
102
- ## ๐Ÿ”ง Adding New Integrations
103
-
104
- ### Example 1: Add Existing Token to New Chain (Veda Stake & Deploy)
105
-
106
- **Scenario:** Add LBTC support on a new chain for Veda protocol Stake & Deploy.
107
-
108
- **Source of Truth:** `packages/sdk/src/vaults/lib/config.ts`
109
-
110
- ```typescript
111
- // Step 1: In vaults/lib/config.ts - Add chain to VEDA_VAULT_STAKE_AND_BAKE_CHAINS
112
-
113
- export const VEDA_VAULT_STAKE_AND_BAKE_CHAINS = [
114
- ChainId.ethereum,
115
- ChainId.binanceSmartChain,
116
- ChainId.base,
117
- ChainId.newChain, // โ† ADD THIS
118
- // Testnets:
119
- ChainId.binanceSmartChainTestnet,
120
- ChainId.holesky,
121
- ];
122
-
123
- // Step 2: In vaults/lib/config.ts - Add spender contract
124
- export const VEDA_VAULT_SPENDER_CONTRACTS: Record<
125
- VedaVaultStakeAndBakeChain,
126
- ContractInfo
127
- > = {
128
- // ... existing contracts
129
- [ChainId.newChain]: {
130
- abi: VEDA_VAULT_SPENDER_ABI as Abi,
131
- address: '0x...', // Spender contract address on new chain
132
- chainId: ChainId.newChain,
133
- },
134
- };
135
- ```
136
-
137
- **What Happens:**
138
-
139
- - `DEFI_REGISTRY` imports `VEDA_VAULT_STAKE_AND_BAKE_CHAINS` (single source of truth)
140
- - LBTC inherits the same `LBTC_PERMIT_CONFIG` on new chain
141
- - Uses the correct spender contract from `VEDA_VAULT_SPENDER_CONTRACTS`
142
-
143
- **Important:** Do NOT add chains directly to `defi-registry.ts` - it uses the imported
144
- `VEDA_VAULT_STAKE_AND_BAKE_CHAINS` to ensure consistency
145
-
146
- ---
147
-
148
- ### Example 2: Add New Token to Existing Protocol
149
-
150
- **Scenario:** Add wBTC support for Veda on Ethereum (uses permit).
151
-
152
- ```typescript
153
- // In defi-registry.ts
154
-
155
- // 1. Define approval config (or reuse existing)
156
- const WBTC_PERMIT_CONFIG: TokenApprovalConfig = {
157
- mode: 'permit',
158
- eip712Domain: {
159
- name: 'Wrapped Bitcoin', // Check wBTC contract
160
- version: '1',
161
- },
162
- requiresNonce: true,
163
- expiryBehavior: 'standard',
164
- };
165
-
166
- // 2. Add to DEFI_REGISTRY
167
- export const DEFI_REGISTRY = {
168
- Veda: {
169
- [Token.LBTC]: {
170
- /* existing */
171
- },
172
- BTC: {
173
- /* existing */
174
- },
175
-
176
- // Add wBTC
177
- [Token.wBTC]: forEnvs([Env.prod, Env.testnet], env => {
178
- return forChains([ChainId.ethereum, ChainId.base], chain => ({
179
- approvalConfig: WBTC_PERMIT_CONFIG,
180
- spenderContract: VEDA_VAULT_SPENDER_CONTRACTS[chain],
181
- }));
182
- }),
183
- },
184
- // ...
185
- };
186
- ```
187
-
188
- ---
189
-
190
- ### Example 3: Add New DeFi Protocol (Aave)
191
-
192
- **Scenario:** Add Aave protocol that accepts LBTC on Ethereum and Base.
193
-
194
- ```typescript
195
- // In defi-registry.ts
196
-
197
- // 1. Add protocol to DefiProtocol enum
198
- export const DefiProtocol = {
199
- Veda: 'Veda',
200
- Silo: 'Silo',
201
- Aave: 'Aave', // โ† ADD THIS
202
- } as const;
203
-
204
- // 2. Add protocol metadata
205
- export const DefiProtocols = {
206
- [DefiProtocol.Veda]: {
207
- /* existing */
208
- },
209
- [DefiProtocol.Silo]: {
210
- /* existing */
211
- },
212
- [DefiProtocol.Aave]: {
213
- name: 'Aave v3',
214
- url: 'https://aave.com',
215
- },
216
- };
217
-
218
- // 3. Define spender contracts
219
- const AAVE_SPENDER_CONTRACTS = {
220
- [ChainId.ethereum]: {
221
- abi: AAVE_POOL_ABI,
222
- address: '0xAavePoolAddressOnEthereum',
223
- chainId: ChainId.ethereum,
224
- },
225
- [ChainId.base]: {
226
- abi: AAVE_POOL_ABI,
227
- address: '0xAavePoolAddressOnBase',
228
- chainId: ChainId.base,
229
- },
230
- };
231
-
232
- // 4. Add to registry
233
- export const DEFI_REGISTRY = {
234
- // ... existing protocols
235
-
236
- Aave: {
237
- // LBTC uses standard permit
238
- [Token.LBTC]: forEnvs([Env.prod], () => {
239
- return forChains([ChainId.ethereum, ChainId.base], chain => ({
240
- approvalConfig: LBTC_PERMIT_CONFIG, // Reuse existing config
241
- spenderContract: AAVE_SPENDER_CONTRACTS[chain],
242
- }));
243
- }),
244
- },
245
- };
246
- ```
247
-
248
- **That's it!** Now you can call:
249
-
250
- ```typescript
251
- await signStakeAndBake({
252
- vaultKey: 'Aave',
253
- token: Token.LBTC,
254
- chainId: ChainId.ethereum,
255
- // ...
256
- });
257
- ```
258
-
259
- ---
260
-
261
- ### Example 4: Token That Uses Approve Mode
262
-
263
- **Scenario:** Add USDC to Silo on Avalanche (requires on-chain approve).
264
-
265
- ```typescript
266
- // In defi-registry.ts
267
-
268
- // 1. Define approval config for USDC
269
- const USDC_APPROVE_CONFIG: TokenApprovalConfig = {
270
- mode: 'approve', // On-chain transaction
271
- eip712Domain: {
272
- name: 'USD Coin',
273
- version: '2',
274
- },
275
- requiresNonce: false, // Approve doesn't use nonce
276
- expiryBehavior: 'zero', // Approve uses zero deadline
277
- };
278
-
279
- // 2. Add to Silo registry
280
- export const DEFI_REGISTRY = {
281
- // ...
282
- Silo: {
283
- [Token.BTCb]: {
284
- /* existing */
285
- },
286
-
287
- // Add USDC
288
- [Token.USDC]: forEnvs([Env.testnet], () => {
289
- return forChains([ChainId.avalancheFuji], () => ({
290
- approvalConfig: USDC_APPROVE_CONFIG,
291
- spenderContract: {
292
- abi: SILO_VAULT_SPENDER_ABI,
293
- address: '0xSiloSpenderOnAvalancheFuji',
294
- chainId: ChainId.avalancheFuji,
295
- },
296
- }));
297
- }),
298
- },
299
- };
300
- ```
301
-
302
- ---
303
-
304
- ## ๐Ÿ” Validation & Error Handling
305
-
306
- The registry automatically validates:
307
-
308
- ```typescript
309
- // Example: Unsupported token
310
- await signStakeAndBake({
311
- vaultKey: 'Veda',
312
- token: Token.BTCb, // BTCb not configured for Veda
313
- chainId: ChainId.ethereum,
314
- });
315
- // Throws: StakeAndBakeValidationError
316
- // "Token BTC.b is not supported for stake and bake on vault Veda.
317
- // Supported tokens: LBTC, BTC"
318
- ```
319
-
320
- **Error Codes:**
321
-
322
- - `UNSUPPORTED_VAULT` - Protocol not in registry
323
- - `UNSUPPORTED_CHAIN` - Chain not in vault's `stakeAndBakeChains`
324
- - `UNSUPPORTED_TOKEN` - Token not configured for protocol
325
- - `UNSUPPORTED_ENV` - Environment not configured
326
- - `UNSUPPORTED_TOKEN_CHAIN` - Token not configured for specific chain
327
-
328
- ---
329
-
330
- ## ๐Ÿ› ๏ธ Helper Functions
331
-
332
- ### `forChains()`
333
-
334
- Generate config for multiple chains with same settings:
335
-
336
- ```typescript
337
- forChains([ChainId.ethereum, ChainId.base, ChainId.bsc], chain => ({
338
- approvalConfig: LBTC_PERMIT_CONFIG,
339
- spenderContract: SPENDER_CONTRACTS[chain],
340
- }));
341
-
342
- // Generates:
343
- // {
344
- // 1: { approvalConfig: {...}, spenderContract: {...} },
345
- // 8453: { approvalConfig: {...}, spenderContract: {...} },
346
- // 56: { approvalConfig: {...}, spenderContract: {...} },
347
- // }
348
- ```
349
-
350
- ### `forEnvs()`
351
-
352
- Generate config for multiple environments:
353
-
354
- ```typescript
355
- forEnvs([Env.prod, Env.testnet], env => ({
356
- // Config for this env
357
- }));
358
-
359
- // Generates:
360
- // {
361
- // prod: { ... },
362
- // testnet: { ... },
363
- // }
364
- ```
365
-
366
- ---
367
-
368
- ## ๐Ÿ“‚ File Structure
369
-
370
- ```
371
- defi/
372
- โ”œโ”€โ”€ README.md โ† You are here
373
- โ”œโ”€โ”€ index.ts โ† Exports
374
- โ””โ”€โ”€ defi-registry.ts โ† Registry definition
375
- ```
376
-
377
- **Related Files:**
378
-
379
- ```
380
- contract-functions/signStakeAndBake/
381
- โ”œโ”€โ”€ signStakeAndBake.ts โ† Main function (uses registry)
382
- โ”œโ”€โ”€ validation.ts โ† getStakeAndBakeConfig() queries registry
383
- โ”œโ”€โ”€ handleApprove.ts โ† Handles 'approve' mode
384
- โ”œโ”€โ”€ handlePermit.ts โ† Handles 'permit' mode
385
- โ”œโ”€โ”€ typed-data-builder.ts โ† Builds EIP-712 data
386
- โ””โ”€โ”€ utils.ts โ† Helper functions
387
- ```
388
-
389
- ---
390
-
391
- ## ๐ŸŽฏ Best Practices
392
-
393
- ### 1. **Reuse Approval Configs**
394
-
395
- Don't duplicate configs for the same token behavior:
396
-
397
- ```typescript
398
- // โœ… Good: Reuse
399
- [Token.LBTC]: forEnvs(..., () => ({
400
- approvalConfig: LBTC_PERMIT_CONFIG, // Reused
401
- ...
402
- }))
403
-
404
- // โŒ Bad: Duplicate
405
- [Token.LBTC]: forEnvs(..., () => ({
406
- approvalConfig: {
407
- mode: 'permit',
408
- eip712Domain: { name: 'Lombard...', version: '1' },
409
- // ... duplicated values
410
- },
411
- ...
412
- }))
413
- ```
414
-
415
- ### 2. **Use forChains() for Multi-Chain Support**
416
-
417
- ```typescript
418
- // โœ… Good: DRY with forChains()
419
- [Token.LBTC]: forEnvs([Env.prod], () =>
420
- forChains([ChainId.ethereum, ChainId.base], (chain) => ({
421
- approvalConfig: LBTC_PERMIT_CONFIG,
422
- spenderContract: SPENDER_CONTRACTS[chain],
423
- }))
424
- )
425
-
426
- // โŒ Bad: Repetitive
427
- [Token.LBTC]: {
428
- [Env.prod]: {
429
- [ChainId.ethereum]: { ... },
430
- [ChainId.base]: { ... }, // Same config, duplicated
431
- }
432
- }
433
- ```
434
-
435
- ### 3. **Define Spender Contracts Once**
436
-
437
- Store spender contracts in a map:
438
-
439
- ```typescript
440
- // At top of file
441
- const VEDA_VAULT_SPENDER_CONTRACTS = {
442
- [ChainId.ethereum]: { abi, address: '0x...', chainId: 1 },
443
- [ChainId.base]: { abi, address: '0x...', chainId: 8453 },
444
- // ...
445
- };
446
-
447
- // Then reference them
448
- spenderContract: VEDA_VAULT_SPENDER_CONTRACTS[chain];
449
- ```
450
-
451
- ### 4. **Document Token-Specific Behavior**
452
-
453
- Use comments for special cases:
454
-
455
- ```typescript
456
- // BTC is a virtual token that converts to LBTC via exchange ratio
457
- BTC: forEnvs(Object.values(Env), () => {
458
- return forChains(VEDA_STAKE_AND_BAKE_CHAINS, (chain) => ({
459
- approvalConfig: BTC_PERMIT_CONFIG, // Has requiresConversion: true
460
- spenderContract: VEDA_VAULT_SPENDER_CONTRACTS[chain],
461
- }));
462
- }),
463
- ```
464
-
465
- ---
466
-
467
- ## ๐Ÿงช Testing New Integrations
468
-
469
- ### 1. **Unit Tests**
470
-
471
- Add test cases in `signStakeAndBake.test.ts`:
472
-
473
- ```typescript
474
- it('should handle NewToken on NewProtocol', async () => {
475
- const result = await signStakeAndBake({
476
- token: Token.NewToken,
477
- vaultKey: 'NewProtocol',
478
- chainId: ChainId.ethereum,
479
- // ...
480
- });
481
-
482
- expect(result.mode).toBe('permit'); // or 'approve'
483
- expect(result.signature).toBeTruthy();
484
- });
485
- ```
486
-
487
- ### 2. **Storybook Testing**
488
-
489
- Test in Storybook UI:
490
-
491
- ```bash
492
- yarn storybook
493
- # Navigate to: write/signStakeAndBake
494
- # Select your new token/protocol in controls
495
- ```
496
-
497
- ### 3. **Integration Testing**
498
-
499
- Use the verification script:
500
-
501
- ```bash
502
- yarn verify:stake-and-bake
503
- ```
504
-
505
- ---
506
-
507
- ## ๐Ÿš€ Quick Start Checklist
508
-
509
- Adding a new integration? Follow these steps:
510
-
511
- - [ ] Define or reuse `TokenApprovalConfig`
512
- - [ ] Add token to `DEFI_REGISTRY` under appropriate protocol
513
- - [ ] Use `forChains()` and `forEnvs()` helpers
514
- - [ ] Ensure spender contracts are defined
515
- - [ ] Add test case(s)
516
- - [ ] Test in Storybook
517
- - [ ] Update exports in `index.ts` if adding new protocol