@lombard.finance/sdk 3.6.20 โ†’ 3.7.0-canary.1

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 (477) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +175 -114
  3. package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.d.ts +67 -0
  4. package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.d.ts.map +1 -0
  5. package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.d.ts +16 -0
  6. package/dist/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.d.ts.map +1 -0
  7. package/dist/api-functions/generateDepositBtcAddress/index.d.ts +2 -0
  8. package/dist/api-functions/generateDepositBtcAddress/index.d.ts.map +1 -0
  9. package/dist/api-functions/get-badges-by-address/get-badges-by-address.d.ts +8 -0
  10. package/dist/api-functions/get-badges-by-address/get-badges-by-address.d.ts.map +1 -0
  11. package/dist/api-functions/get-badges-by-address/index.d.ts +2 -0
  12. package/dist/api-functions/get-badges-by-address/index.d.ts.map +1 -0
  13. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.d.ts +13 -0
  14. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.d.ts.map +1 -0
  15. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.d.ts +16 -0
  16. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.d.ts.map +1 -0
  17. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.d.ts +2 -0
  18. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.d.ts.map +1 -0
  19. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.d.ts +16 -0
  20. package/dist/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.d.ts.map +1 -0
  21. package/dist/api-functions/getDepositBtcAddress/index.d.ts +2 -0
  22. package/dist/api-functions/getDepositBtcAddress/index.d.ts.map +1 -0
  23. package/dist/api-functions/getDepositBtcAddress/make-request.d.ts +3 -0
  24. package/dist/api-functions/getDepositBtcAddress/make-request.d.ts.map +1 -0
  25. package/dist/api-functions/getDepositBtcAddress/types.d.ts +93 -0
  26. package/dist/api-functions/getDepositBtcAddress/types.d.ts.map +1 -0
  27. package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.d.ts +243 -0
  28. package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.d.ts.map +1 -0
  29. package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.stories.d.ts +13 -0
  30. package/dist/api-functions/getDepositsByAddress/getDepositsByAddress.stories.d.ts.map +1 -0
  31. package/dist/api-functions/getDepositsByAddress/index.d.ts +2 -0
  32. package/dist/api-functions/getDepositsByAddress/index.d.ts.map +1 -0
  33. package/dist/api-functions/getLBTCExchangeRate/get-exchange-ratio.d.ts +19 -0
  34. package/dist/api-functions/getLBTCExchangeRate/get-exchange-ratio.d.ts.map +1 -0
  35. package/dist/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.d.ts +16 -0
  36. package/dist/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.d.ts.map +1 -0
  37. package/dist/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.d.ts +42 -0
  38. package/dist/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.d.ts.map +1 -0
  39. package/dist/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.d.ts +16 -0
  40. package/dist/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.d.ts.map +1 -0
  41. package/dist/api-functions/getLBTCExchangeRate/index.d.ts +3 -0
  42. package/dist/api-functions/getLBTCExchangeRate/index.d.ts.map +1 -0
  43. package/dist/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.d.ts +42 -0
  44. package/dist/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.d.ts.map +1 -0
  45. package/dist/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.d.ts +17 -0
  46. package/dist/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.d.ts.map +1 -0
  47. package/dist/api-functions/getNetworkFeeSignature/index.d.ts +2 -0
  48. package/dist/api-functions/getNetworkFeeSignature/index.d.ts.map +1 -0
  49. package/dist/api-functions/getPointsByAddress/getPointsByAddress.d.ts +94 -0
  50. package/dist/api-functions/getPointsByAddress/getPointsByAddress.d.ts.map +1 -0
  51. package/dist/api-functions/getPointsByAddress/getPointsByAddress.stories.d.ts +13 -0
  52. package/dist/api-functions/getPointsByAddress/getPointsByAddress.stories.d.ts.map +1 -0
  53. package/dist/api-functions/getPointsByAddress/index.d.ts +2 -0
  54. package/dist/api-functions/getPointsByAddress/index.d.ts.map +1 -0
  55. package/dist/api-functions/getUnstakesByAddress/getUnstakesByAddress.d.ts +103 -0
  56. package/dist/api-functions/getUnstakesByAddress/getUnstakesByAddress.d.ts.map +1 -0
  57. package/dist/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.d.ts +13 -0
  58. package/dist/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.d.ts.map +1 -0
  59. package/dist/api-functions/getUnstakesByAddress/index.d.ts +2 -0
  60. package/dist/api-functions/getUnstakesByAddress/index.d.ts.map +1 -0
  61. package/dist/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.d.ts +46 -0
  62. package/dist/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.d.ts.map +1 -0
  63. package/dist/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.d.ts +14 -0
  64. package/dist/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.d.ts.map +1 -0
  65. package/dist/api-functions/getUserStakeAndBakeSignature/index.d.ts +2 -0
  66. package/dist/api-functions/getUserStakeAndBakeSignature/index.d.ts.map +1 -0
  67. package/dist/api-functions/index.d.ts +12 -0
  68. package/dist/api-functions/index.d.ts.map +1 -0
  69. package/dist/api-functions/setReferral/index.d.ts +2 -0
  70. package/dist/api-functions/setReferral/index.d.ts.map +1 -0
  71. package/dist/api-functions/setReferral/setReferral.d.ts +29 -0
  72. package/dist/api-functions/setReferral/setReferral.d.ts.map +1 -0
  73. package/dist/api-functions/storeNetworkFeeSignature/index.d.ts +2 -0
  74. package/dist/api-functions/storeNetworkFeeSignature/index.d.ts.map +1 -0
  75. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.d.ts +29 -0
  76. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.d.ts.map +1 -0
  77. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.d.ts +14 -0
  78. package/dist/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.d.ts.map +1 -0
  79. package/dist/api-functions/storeStakeAndBakeSignature/index.d.ts +2 -0
  80. package/dist/api-functions/storeStakeAndBakeSignature/index.d.ts.map +1 -0
  81. package/dist/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.d.ts +24 -0
  82. package/dist/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.d.ts.map +1 -0
  83. package/dist/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.d.ts +14 -0
  84. package/dist/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.d.ts.map +1 -0
  85. package/dist/bridge/index.d.ts +9 -0
  86. package/dist/bridge/index.d.ts.map +1 -0
  87. package/dist/bridge/lib/bridge.d.ts +34 -0
  88. package/dist/bridge/lib/bridge.d.ts.map +1 -0
  89. package/dist/bridge/lib/bridge.stories.d.ts +14 -0
  90. package/dist/bridge/lib/bridge.stories.d.ts.map +1 -0
  91. package/dist/bridge/lib/ccip-bridge.d.ts +25 -0
  92. package/dist/bridge/lib/ccip-bridge.d.ts.map +1 -0
  93. package/dist/bridge/lib/ccip-bridge.stories.d.ts +14 -0
  94. package/dist/bridge/lib/ccip-bridge.stories.d.ts.map +1 -0
  95. package/dist/bridge/lib/ccip-config.d.ts +11 -0
  96. package/dist/bridge/lib/ccip-config.d.ts.map +1 -0
  97. package/dist/bridge/lib/config.d.ts +31 -0
  98. package/dist/bridge/lib/config.d.ts.map +1 -0
  99. package/dist/bridge/lib/oft-bridge.d.ts +20 -0
  100. package/dist/bridge/lib/oft-bridge.d.ts.map +1 -0
  101. package/dist/bridge/lib/oft-bridge.stories.d.ts +14 -0
  102. package/dist/bridge/lib/oft-bridge.stories.d.ts.map +1 -0
  103. package/dist/clients/evm-signer-adapter.d.ts +138 -0
  104. package/dist/clients/evm-signer-adapter.d.ts.map +1 -0
  105. package/dist/clients/public-client.d.ts +17 -0
  106. package/dist/clients/public-client.d.ts.map +1 -0
  107. package/dist/clients/rpc-url-config.d.ts +6 -0
  108. package/dist/clients/rpc-url-config.d.ts.map +1 -0
  109. package/dist/clients/wallet-client.d.ts +15 -0
  110. package/dist/clients/wallet-client.d.ts.map +1 -0
  111. package/dist/common/api-config.d.ts +8 -0
  112. package/dist/common/api-config.d.ts.map +1 -0
  113. package/dist/common/blockchain-identifier.d.ts +38 -0
  114. package/dist/common/blockchain-identifier.d.ts.map +1 -0
  115. package/dist/common/chains.d.ts +1855 -0
  116. package/dist/common/chains.d.ts.map +1 -0
  117. package/dist/common/chains.stories.d.ts +17 -0
  118. package/dist/common/chains.stories.d.ts.map +1 -0
  119. package/dist/common/constants.d.ts +2 -0
  120. package/dist/common/constants.d.ts.map +1 -0
  121. package/dist/common/contract-info.d.ts +8 -0
  122. package/dist/common/contract-info.d.ts.map +1 -0
  123. package/dist/common/parameters.d.ts +72 -0
  124. package/dist/common/parameters.d.ts.map +1 -0
  125. package/dist/contract-functions/approveLBTC/approveLBTC.d.ts +30 -0
  126. package/dist/contract-functions/approveLBTC/approveLBTC.d.ts.map +1 -0
  127. package/dist/contract-functions/approveLBTC/approveLBTC.stories.d.ts +17 -0
  128. package/dist/contract-functions/approveLBTC/approveLBTC.stories.d.ts.map +1 -0
  129. package/dist/contract-functions/approveLBTC/index.d.ts +2 -0
  130. package/dist/contract-functions/approveLBTC/index.d.ts.map +1 -0
  131. package/dist/contract-functions/approveToken/approveToken.d.ts +59 -0
  132. package/dist/contract-functions/approveToken/approveToken.d.ts.map +1 -0
  133. package/dist/contract-functions/approveToken/index.d.ts +2 -0
  134. package/dist/contract-functions/approveToken/index.d.ts.map +1 -0
  135. package/dist/contract-functions/claimLBTC/claimLBTC.d.ts +56 -0
  136. package/dist/contract-functions/claimLBTC/claimLBTC.d.ts.map +1 -0
  137. package/dist/contract-functions/claimLBTC/claimLBTC.stories.d.ts +17 -0
  138. package/dist/contract-functions/claimLBTC/claimLBTC.stories.d.ts.map +1 -0
  139. package/dist/contract-functions/claimLBTC/index.d.ts +2 -0
  140. package/dist/contract-functions/claimLBTC/index.d.ts.map +1 -0
  141. package/dist/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.d.ts +30 -0
  142. package/dist/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.d.ts.map +1 -0
  143. package/dist/contract-functions/claimUnstakeRedeem/index.d.ts +2 -0
  144. package/dist/contract-functions/claimUnstakeRedeem/index.d.ts.map +1 -0
  145. package/dist/contract-functions/deposit/depositToken.d.ts +69 -0
  146. package/dist/contract-functions/deposit/depositToken.d.ts.map +1 -0
  147. package/dist/contract-functions/deposit/depositToken.stories.d.ts +17 -0
  148. package/dist/contract-functions/deposit/depositToken.stories.d.ts.map +1 -0
  149. package/dist/contract-functions/deposit/index.d.ts +2 -0
  150. package/dist/contract-functions/deposit/index.d.ts.map +1 -0
  151. package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts +49 -0
  152. package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts.map +1 -0
  153. package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.d.ts +16 -0
  154. package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.d.ts.map +1 -0
  155. package/dist/contract-functions/getBasculeDepositStatus/index.d.ts +2 -0
  156. package/dist/contract-functions/getBasculeDepositStatus/index.d.ts.map +1 -0
  157. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts +26 -0
  158. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.d.ts.map +1 -0
  159. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.d.ts +17 -0
  160. package/dist/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.d.ts.map +1 -0
  161. package/dist/contract-functions/getLBTCMintingFee/index.d.ts +2 -0
  162. package/dist/contract-functions/getLBTCMintingFee/index.d.ts.map +1 -0
  163. package/dist/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.d.ts +14 -0
  164. package/dist/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.d.ts.map +1 -0
  165. package/dist/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.d.ts +17 -0
  166. package/dist/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.d.ts.map +1 -0
  167. package/dist/contract-functions/getLBTCTotalSupply/index.d.ts +2 -0
  168. package/dist/contract-functions/getLBTCTotalSupply/index.d.ts.map +1 -0
  169. package/dist/contract-functions/getPermitNonce/getPermitNonce.d.ts +20 -0
  170. package/dist/contract-functions/getPermitNonce/getPermitNonce.d.ts.map +1 -0
  171. package/dist/contract-functions/getPermitNonce/getPermitNonce.stories.d.ts +14 -0
  172. package/dist/contract-functions/getPermitNonce/getPermitNonce.stories.d.ts.map +1 -0
  173. package/dist/contract-functions/getPermitNonce/index.d.ts +2 -0
  174. package/dist/contract-functions/getPermitNonce/index.d.ts.map +1 -0
  175. package/dist/contract-functions/getShareValue/getShareValue.d.ts +22 -0
  176. package/dist/contract-functions/getShareValue/getShareValue.d.ts.map +1 -0
  177. package/dist/contract-functions/getShareValue/getShareValue.stories.d.ts +13 -0
  178. package/dist/contract-functions/getShareValue/getShareValue.stories.d.ts.map +1 -0
  179. package/dist/contract-functions/getShareValue/index.d.ts +2 -0
  180. package/dist/contract-functions/getShareValue/index.d.ts.map +1 -0
  181. package/dist/contract-functions/getSharesByAddress/getSharesByAddress.d.ts +35 -0
  182. package/dist/contract-functions/getSharesByAddress/getSharesByAddress.d.ts.map +1 -0
  183. package/dist/contract-functions/getSharesByAddress/getSharesByAddress.stories.d.ts +13 -0
  184. package/dist/contract-functions/getSharesByAddress/getSharesByAddress.stories.d.ts.map +1 -0
  185. package/dist/contract-functions/getSharesByAddress/index.d.ts +2 -0
  186. package/dist/contract-functions/getSharesByAddress/index.d.ts.map +1 -0
  187. package/dist/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.d.ts +2 -0
  188. package/dist/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.d.ts.map +1 -0
  189. package/dist/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.d.ts +34 -0
  190. package/dist/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.d.ts.map +1 -0
  191. package/dist/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.d.ts +17 -0
  192. package/dist/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.d.ts.map +1 -0
  193. package/dist/contract-functions/getStakeAndBakeFee/index.d.ts +2 -0
  194. package/dist/contract-functions/getStakeAndBakeFee/index.d.ts.map +1 -0
  195. package/dist/contract-functions/index.d.ts +17 -0
  196. package/dist/contract-functions/index.d.ts.map +1 -0
  197. package/dist/contract-functions/signLbtcDestionationAddr/index.d.ts +2 -0
  198. package/dist/contract-functions/signLbtcDestionationAddr/index.d.ts.map +1 -0
  199. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts +16 -0
  200. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.d.ts.map +1 -0
  201. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.d.ts +9 -0
  202. package/dist/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.d.ts.map +1 -0
  203. package/dist/contract-functions/signNetworkFee/getTypedData.d.ts +32 -0
  204. package/dist/contract-functions/signNetworkFee/getTypedData.d.ts.map +1 -0
  205. package/dist/contract-functions/signNetworkFee/index.d.ts +2 -0
  206. package/dist/contract-functions/signNetworkFee/index.d.ts.map +1 -0
  207. package/dist/contract-functions/signNetworkFee/signNetworkFee.d.ts +47 -0
  208. package/dist/contract-functions/signNetworkFee/signNetworkFee.d.ts.map +1 -0
  209. package/dist/contract-functions/signNetworkFee/signNetworkFee.stories.d.ts +14 -0
  210. package/dist/contract-functions/signNetworkFee/signNetworkFee.stories.d.ts.map +1 -0
  211. package/dist/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.d.ts +17 -0
  212. package/dist/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.d.ts.map +1 -0
  213. package/dist/contract-functions/signStakeAndBake/handleApprove.d.ts +20 -0
  214. package/dist/contract-functions/signStakeAndBake/handleApprove.d.ts.map +1 -0
  215. package/dist/contract-functions/signStakeAndBake/handlePermit.d.ts +13 -0
  216. package/dist/contract-functions/signStakeAndBake/handlePermit.d.ts.map +1 -0
  217. package/dist/contract-functions/signStakeAndBake/index.d.ts +3 -0
  218. package/dist/contract-functions/signStakeAndBake/index.d.ts.map +1 -0
  219. package/dist/contract-functions/signStakeAndBake/signStakeAndBake.d.ts +71 -0
  220. package/dist/contract-functions/signStakeAndBake/signStakeAndBake.d.ts.map +1 -0
  221. package/dist/contract-functions/signStakeAndBake/signStakeAndBake.stories.d.ts +50 -0
  222. package/dist/contract-functions/signStakeAndBake/signStakeAndBake.stories.d.ts.map +1 -0
  223. package/dist/contract-functions/signStakeAndBake/typed-data-builder.d.ts +189 -0
  224. package/dist/contract-functions/signStakeAndBake/typed-data-builder.d.ts.map +1 -0
  225. package/dist/contract-functions/signStakeAndBake/utils.d.ts +4471 -0
  226. package/dist/contract-functions/signStakeAndBake/utils.d.ts.map +1 -0
  227. package/dist/contract-functions/signStakeAndBake/validation.d.ts +40 -0
  228. package/dist/contract-functions/signStakeAndBake/validation.d.ts.map +1 -0
  229. package/dist/contract-functions/unstakeLBTC/index.d.ts +2 -0
  230. package/dist/contract-functions/unstakeLBTC/index.d.ts.map +1 -0
  231. package/dist/contract-functions/unstakeLBTC/unstakeLBTC.d.ts +132 -0
  232. package/dist/contract-functions/unstakeLBTC/unstakeLBTC.d.ts.map +1 -0
  233. package/dist/contract-functions/unstakeLBTC/unstakeLBTC.stories.d.ts +17 -0
  234. package/dist/contract-functions/unstakeLBTC/unstakeLBTC.stories.d.ts.map +1 -0
  235. package/dist/debug-api/btc-script-to-address.d.ts +3 -0
  236. package/dist/debug-api/btc-script-to-address.d.ts.map +1 -0
  237. package/dist/debug-api/btc-tx-info.d.ts +19 -0
  238. package/dist/debug-api/btc-tx-info.d.ts.map +1 -0
  239. package/dist/debug-api/evm-by-btc-address.d.ts +9 -0
  240. package/dist/debug-api/evm-by-btc-address.d.ts.map +1 -0
  241. package/dist/debug-api/index.d.ts +4 -0
  242. package/dist/debug-api/index.d.ts.map +1 -0
  243. package/dist/defi/defi-registry.d.ts +73 -0
  244. package/dist/defi/defi-registry.d.ts.map +1 -0
  245. package/dist/defi/defi-registry.stories.d.ts +18 -0
  246. package/dist/defi/defi-registry.stories.d.ts.map +1 -0
  247. package/dist/defi/index.d.ts +2 -0
  248. package/dist/defi/index.d.ts.map +1 -0
  249. package/dist/index.cjs +1 -1
  250. package/dist/index.d.ts +24 -0
  251. package/dist/index.d.ts.map +1 -0
  252. package/dist/index.js +143 -120
  253. package/dist/index2.cjs +66 -66
  254. package/dist/index2.js +17984 -16636
  255. package/dist/metrics/get-additional-rewards.d.ts +31 -0
  256. package/dist/metrics/get-additional-rewards.d.ts.map +1 -0
  257. package/dist/metrics/get-lbtc-apy.d.ts +35 -0
  258. package/dist/metrics/get-lbtc-apy.d.ts.map +1 -0
  259. package/dist/metrics/get-lbtc-stats.d.ts +21 -0
  260. package/dist/metrics/get-lbtc-stats.d.ts.map +1 -0
  261. package/dist/metrics/get-lbtc-stats.stories.d.ts +17 -0
  262. package/dist/metrics/get-lbtc-stats.stories.d.ts.map +1 -0
  263. package/dist/metrics/get-positions-summary.d.ts +75 -0
  264. package/dist/metrics/get-positions-summary.d.ts.map +1 -0
  265. package/dist/metrics/get-positions-summary.stories.d.ts +17 -0
  266. package/dist/metrics/get-positions-summary.stories.d.ts.map +1 -0
  267. package/dist/stories/arg-types.d.ts +6 -0
  268. package/dist/stories/arg-types.d.ts.map +1 -0
  269. package/dist/stories/components/Button/Button.d.ts +16 -0
  270. package/dist/stories/components/Button/Button.d.ts.map +1 -0
  271. package/dist/stories/components/Button/index.d.ts +2 -0
  272. package/dist/stories/components/Button/index.d.ts.map +1 -0
  273. package/dist/stories/components/CodeBlock/CodeBlock.d.ts +9 -0
  274. package/dist/stories/components/CodeBlock/CodeBlock.d.ts.map +1 -0
  275. package/dist/stories/components/CodeBlock/index.d.ts +2 -0
  276. package/dist/stories/components/CodeBlock/index.d.ts.map +1 -0
  277. package/dist/stories/components/ConnectButton/connect-button.d.ts +5 -0
  278. package/dist/stories/components/ConnectButton/connect-button.d.ts.map +1 -0
  279. package/dist/stories/components/ConnectButton/index.d.ts +2 -0
  280. package/dist/stories/components/ConnectButton/index.d.ts.map +1 -0
  281. package/dist/stories/components/Spinner/Spinner.d.ts +9 -0
  282. package/dist/stories/components/Spinner/Spinner.d.ts.map +1 -0
  283. package/dist/stories/components/Spinner/index.d.ts +2 -0
  284. package/dist/stories/components/Spinner/index.d.ts.map +1 -0
  285. package/dist/stories/components/decorators/function-type.d.ts +4 -0
  286. package/dist/stories/components/decorators/function-type.d.ts.map +1 -0
  287. package/dist/stories/components/decorators/index.d.ts +3 -0
  288. package/dist/stories/components/decorators/index.d.ts.map +1 -0
  289. package/dist/stories/components/decorators/wagmi-decorator.d.ts +6 -0
  290. package/dist/stories/components/decorators/wagmi-decorator.d.ts.map +1 -0
  291. package/dist/stories/components/error-block.d.ts +5 -0
  292. package/dist/stories/components/error-block.d.ts.map +1 -0
  293. package/dist/stories/constants.d.ts +3 -0
  294. package/dist/stories/constants.d.ts.map +1 -0
  295. package/dist/stories/hooks/useConnection.d.ts +27 -0
  296. package/dist/stories/hooks/useConnection.d.ts.map +1 -0
  297. package/dist/stories/hooks/useQuery.d.ts +19 -0
  298. package/dist/stories/hooks/useQuery.d.ts.map +1 -0
  299. package/dist/tokens/abi/ASSET_ROUTER_ABI.d.ts +68 -0
  300. package/dist/tokens/abi/ASSET_ROUTER_ABI.d.ts.map +1 -0
  301. package/dist/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.d.ts +1095 -0
  302. package/dist/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.d.ts.map +1 -0
  303. package/dist/tokens/abi/BTCK_ABI.d.ts +1487 -0
  304. package/dist/tokens/abi/BTCK_ABI.d.ts.map +1 -0
  305. package/dist/tokens/abi/LBTC_ABI.d.ts +1364 -0
  306. package/dist/tokens/abi/LBTC_ABI.d.ts.map +1 -0
  307. package/dist/tokens/abi/NATIVE_LBTC_ABI.d.ts +1551 -0
  308. package/dist/tokens/abi/NATIVE_LBTC_ABI.d.ts.map +1 -0
  309. package/dist/tokens/abi/STLBTC_ABI.d.ts +1399 -0
  310. package/dist/tokens/abi/STLBTC_ABI.d.ts.map +1 -0
  311. package/dist/tokens/cross-chain-addresses.stories.d.ts +60 -0
  312. package/dist/tokens/cross-chain-addresses.stories.d.ts.map +1 -0
  313. package/dist/tokens/denomination-utils.stories.d.ts +62 -0
  314. package/dist/tokens/denomination-utils.stories.d.ts.map +1 -0
  315. package/dist/tokens/getLbtcContractAddresses.stories.d.ts +59 -0
  316. package/dist/tokens/getLbtcContractAddresses.stories.d.ts.map +1 -0
  317. package/dist/tokens/getTokenByAddress.stories.d.ts +64 -0
  318. package/dist/tokens/getTokenByAddress.stories.d.ts.map +1 -0
  319. package/dist/tokens/getTokenContractInfo.stories.d.ts +52 -0
  320. package/dist/tokens/getTokenContractInfo.stories.d.ts.map +1 -0
  321. package/dist/tokens/getTokenInfo.stories.d.ts +42 -0
  322. package/dist/tokens/getTokenInfo.stories.d.ts.map +1 -0
  323. package/dist/tokens/isUpgradedContract.stories.d.ts +50 -0
  324. package/dist/tokens/isUpgradedContract.stories.d.ts.map +1 -0
  325. package/dist/tokens/lbtc-addresses.d.ts +11 -0
  326. package/dist/tokens/lbtc-addresses.d.ts.map +1 -0
  327. package/dist/tokens/token-addresses.d.ts +37 -0
  328. package/dist/tokens/token-addresses.d.ts.map +1 -0
  329. package/dist/tokens/tokens.d.ts +319 -0
  330. package/dist/tokens/tokens.d.ts.map +1 -0
  331. package/dist/tokens/types.d.ts +78 -0
  332. package/dist/tokens/types.d.ts.map +1 -0
  333. package/dist/utils/array.d.ts +3 -0
  334. package/dist/utils/array.d.ts.map +1 -0
  335. package/dist/utils/block.d.ts +3 -0
  336. package/dist/utils/block.d.ts.map +1 -0
  337. package/dist/utils/env.d.ts +4 -0
  338. package/dist/utils/env.d.ts.map +1 -0
  339. package/dist/utils/err.d.ts +22 -0
  340. package/dist/utils/err.d.ts.map +1 -0
  341. package/dist/utils/gas.d.ts +7 -0
  342. package/dist/utils/gas.d.ts.map +1 -0
  343. package/dist/utils/hex.d.ts +4 -0
  344. package/dist/utils/hex.d.ts.map +1 -0
  345. package/dist/utils/numbers.d.ts +5 -0
  346. package/dist/utils/numbers.d.ts.map +1 -0
  347. package/dist/utils/pagination.d.ts +26 -0
  348. package/dist/utils/pagination.d.ts.map +1 -0
  349. package/dist/utils/satoshi.d.ts +17 -0
  350. package/dist/utils/satoshi.d.ts.map +1 -0
  351. package/dist/utils/time.d.ts +7 -0
  352. package/dist/utils/time.d.ts.map +1 -0
  353. package/dist/utils/transaction-executor.d.ts +96 -0
  354. package/dist/utils/transaction-executor.d.ts.map +1 -0
  355. package/dist/vaults/abi/index.d.ts +4 -0
  356. package/dist/vaults/abi/index.d.ts.map +1 -0
  357. package/dist/vaults/index.d.ts +9 -0
  358. package/dist/vaults/index.d.ts.map +1 -0
  359. package/dist/vaults/lib/config.d.ts +215 -0
  360. package/dist/vaults/lib/config.d.ts.map +1 -0
  361. package/dist/vaults/lib/metrics/get-vault-apy.d.ts +22 -0
  362. package/dist/vaults/lib/metrics/get-vault-apy.d.ts.map +1 -0
  363. package/dist/vaults/lib/metrics/get-vault-apy.stories.d.ts +14 -0
  364. package/dist/vaults/lib/metrics/get-vault-apy.stories.d.ts.map +1 -0
  365. package/dist/vaults/lib/metrics/get-vault-points.d.ts +16 -0
  366. package/dist/vaults/lib/metrics/get-vault-points.d.ts.map +1 -0
  367. package/dist/vaults/lib/metrics/get-vault-points.stories.d.ts +14 -0
  368. package/dist/vaults/lib/metrics/get-vault-points.stories.d.ts.map +1 -0
  369. package/dist/vaults/lib/metrics/get-vault-tvl.d.ts +22 -0
  370. package/dist/vaults/lib/metrics/get-vault-tvl.d.ts.map +1 -0
  371. package/dist/vaults/lib/metrics/get-vault-tvl.stories.d.ts +14 -0
  372. package/dist/vaults/lib/metrics/get-vault-tvl.stories.d.ts.map +1 -0
  373. package/dist/vaults/lib/ops/cancel-withdraw.stories.d.ts +14 -0
  374. package/dist/vaults/lib/ops/cancel-withdraw.stories.d.ts.map +1 -0
  375. package/dist/vaults/lib/ops/deposit.d.ts +34 -0
  376. package/dist/vaults/lib/ops/deposit.d.ts.map +1 -0
  377. package/dist/vaults/lib/ops/deposit.stories.d.ts +14 -0
  378. package/dist/vaults/lib/ops/deposit.stories.d.ts.map +1 -0
  379. package/dist/vaults/lib/ops/get-vault-deposits.d.ts +57 -0
  380. package/dist/vaults/lib/ops/get-vault-deposits.d.ts.map +1 -0
  381. package/dist/vaults/lib/ops/get-vault-deposits.stories.d.ts +14 -0
  382. package/dist/vaults/lib/ops/get-vault-deposits.stories.d.ts.map +1 -0
  383. package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts +74 -0
  384. package/dist/vaults/lib/ops/get-vault-withdrawals.d.ts.map +1 -0
  385. package/dist/vaults/lib/ops/get-vault-withdrawals.stories.d.ts +14 -0
  386. package/dist/vaults/lib/ops/get-vault-withdrawals.stories.d.ts.map +1 -0
  387. package/dist/vaults/lib/ops/withdraw.d.ts +49 -0
  388. package/dist/vaults/lib/ops/withdraw.d.ts.map +1 -0
  389. package/dist/vaults/lib/ops/withdraw.stories.d.ts +14 -0
  390. package/dist/vaults/lib/ops/withdraw.stories.d.ts.map +1 -0
  391. package/package.json +7 -5
  392. package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.tsx +1 -1
  393. package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts +4 -3
  394. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.tsx +1 -1
  395. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.ts +6 -6
  396. package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts +13 -7
  397. package/src/api-functions/getDepositsByAddress/getDepositsByAddress.ts +425 -74
  398. package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.tsx +4 -4
  399. package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts +15 -4
  400. package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts +289 -111
  401. package/src/api-functions/getUnstakesByAddress/index.ts +1 -5
  402. package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +3 -1
  403. package/src/bridge/abi/CCIP_ROUTER_ABI.json +702 -0
  404. package/src/bridge/lib/ccip-bridge.ts +76 -26
  405. package/src/bridge/lib/ccip-config.ts +53 -0
  406. package/src/bridge/lib/config.ts +1 -0
  407. package/src/clients/evm-signer-adapter.ts +312 -0
  408. package/src/clients/public-client.ts +2 -2
  409. package/src/common/api-config.ts +10 -2
  410. package/src/common/blockchain-identifier.ts +13 -2
  411. package/src/common/chains.ts +9 -1
  412. package/src/common/parameters.ts +37 -0
  413. package/src/contract-functions/approveToken/approveToken.ts +125 -0
  414. package/src/contract-functions/approveToken/index.ts +2 -0
  415. package/src/contract-functions/claimLBTC/claimLBTC.stories.tsx +1 -1
  416. package/src/contract-functions/claimLBTC/claimLBTC.ts +66 -37
  417. package/src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts +94 -0
  418. package/src/contract-functions/claimUnstakeRedeem/index.ts +2 -0
  419. package/src/contract-functions/deposit/depositToken.stories.tsx +82 -0
  420. package/src/contract-functions/deposit/depositToken.ts +213 -0
  421. package/src/contract-functions/deposit/index.ts +1 -0
  422. package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +1 -1
  423. package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.ts +42 -9
  424. package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.tsx +0 -1
  425. package/src/contract-functions/getLBTCMintingFee/{getLBTCMintingFee.tsx โ†’ getLBTCMintingFee.ts} +33 -18
  426. package/src/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.ts +163 -0
  427. package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.tsx +109 -6
  428. package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.tsx +64 -29
  429. package/src/contract-functions/index.ts +3 -0
  430. package/src/contract-functions/signNetworkFee/signNetworkFee.ts +7 -1
  431. package/src/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.ts +886 -0
  432. package/src/contract-functions/signStakeAndBake/handleApprove.ts +80 -0
  433. package/src/contract-functions/signStakeAndBake/handlePermit.ts +28 -0
  434. package/src/contract-functions/signStakeAndBake/index.ts +2 -0
  435. package/src/contract-functions/signStakeAndBake/signStakeAndBake.stories.tsx +118 -28
  436. package/src/contract-functions/signStakeAndBake/signStakeAndBake.ts +86 -110
  437. package/src/contract-functions/signStakeAndBake/typed-data-builder.ts +137 -0
  438. package/src/contract-functions/signStakeAndBake/utils.ts +60 -0
  439. package/src/contract-functions/signStakeAndBake/validation.ts +123 -0
  440. package/src/contract-functions/unstakeLBTC/unstakeLBTC.stories.tsx +3 -3
  441. package/src/contract-functions/unstakeLBTC/unstakeLBTC.ts +356 -71
  442. package/src/debug-api/btc-script-to-address.ts +19 -0
  443. package/src/debug-api/btc-tx-info.ts +31 -0
  444. package/src/debug-api/evm-by-btc-address.ts +25 -0
  445. package/src/debug-api/index.ts +3 -0
  446. package/src/defi/README.md +472 -0
  447. package/src/defi/defi-registry.stories.tsx +524 -0
  448. package/src/defi/defi-registry.ts +178 -0
  449. package/src/defi/index.ts +6 -0
  450. package/src/index.ts +44 -27
  451. package/src/metrics/get-additional-rewards.ts +1 -1
  452. package/src/stories/arg-types.ts +5 -2
  453. package/src/stories/components/ConnectButton/connect-button.tsx +152 -5
  454. package/src/stories/components/decorators/wagmi-decorator.tsx +6 -1
  455. package/src/tokens/abi/ASSET_ROUTER_ABI.ts +1049 -214
  456. package/src/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.ts +1405 -0
  457. package/src/tokens/cross-chain-addresses.stories.tsx +236 -0
  458. package/src/tokens/denomination-utils.stories.tsx +176 -0
  459. package/src/tokens/getLbtcContractAddresses.stories.tsx +158 -0
  460. package/src/tokens/getTokenByAddress.stories.tsx +172 -0
  461. package/src/tokens/getTokenContractInfo.stories.tsx +148 -0
  462. package/src/tokens/getTokenInfo.stories.tsx +132 -0
  463. package/src/tokens/isUpgradedContract.stories.tsx +124 -0
  464. package/src/tokens/lbtc-addresses.ts +3 -2
  465. package/src/tokens/token-addresses.ts +223 -107
  466. package/src/tokens/tokens.ts +64 -29
  467. package/src/tokens/types.ts +80 -0
  468. package/src/utils/err.ts +12 -0
  469. package/src/utils/pagination.ts +70 -0
  470. package/src/utils/transaction-executor.ts +290 -0
  471. package/src/vaults/abi/SILO_VAULT_SPENDER_ABI.json +793 -0
  472. package/src/vaults/abi/index.ts +4 -0
  473. package/src/vaults/index.ts +7 -0
  474. package/src/vaults/lib/config.ts +7 -1
  475. package/src/vaults/lib/metrics/get-vault-apy.ts +68 -25
  476. package/src/vaults/lib/ops/get-vault-deposits.ts +98 -17
  477. package/src/vaults/lib/ops/get-vault-withdrawals.ts +146 -24
@@ -0,0 +1,472 @@
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
+ ```typescript
33
+ {
34
+ mode: 'permit' | 'approve',
35
+ eip712Domain: { name: string, version: string },
36
+ requiresConversion?: boolean, // e.g., BTC โ†’ LBTC
37
+ requiresNonce: boolean, // Fetch nonce from chain?
38
+ expiryBehavior?: 'standard' | 'zero',
39
+ }
40
+ ```
41
+
42
+ 3. **`DefiRegistryEntry`** - Complete registration:
43
+ ```typescript
44
+ {
45
+ approvalConfig: TokenApprovalConfig,
46
+ spenderContract: ContractInfo,
47
+ }
48
+ ```
49
+
50
+ ---
51
+
52
+ ## ๐Ÿ“– How It Works
53
+
54
+ ### 1. **Query the Registry**
55
+
56
+ The `getStakeAndBakeConfig()` function queries the registry:
57
+
58
+ ```typescript
59
+ import { getStakeAndBakeConfig } from './validation';
60
+
61
+ const { tokenConfig, spenderContract } = getStakeAndBakeConfig(
62
+ 'Veda', // Protocol
63
+ Token.LBTC, // Token
64
+ ChainId.ethereum, // Chain
65
+ Env.prod, // Environment
66
+ );
67
+
68
+ // Returns:
69
+ // tokenConfig = { mode: 'permit', eip712Domain: {...}, ... }
70
+ // spenderContract = { address: '0x...', abi: [...], chainId: 1 }
71
+ ```
72
+
73
+ ### 2. **Used By `signStakeAndBake()`**
74
+
75
+ The main function uses the registry to determine behavior:
76
+
77
+ ```typescript
78
+ // packages/sdk/src/contract-functions/signStakeAndBake/signStakeAndBake.ts
79
+
80
+ export async function signStakeAndBake(params) {
81
+ // 1. Get config from registry
82
+ const { tokenConfig, spenderContract } = getStakeAndBakeConfig(...);
83
+
84
+ // 2. Build typed data based on config
85
+ const typedData = buildTypedData({
86
+ mode: tokenConfig.mode, // permit or approve
87
+ domainName: tokenConfig.eip712Domain.name,
88
+ // ...
89
+ });
90
+
91
+ // 3. Route to appropriate handler
92
+ if (tokenConfig.mode === 'approve') {
93
+ return handleApproveFlow({ ... }); // Submit transaction
94
+ }
95
+ return handlePermitFlow({ ... }); // Sign message
96
+ }
97
+ ```
98
+
99
+ ---
100
+
101
+ ## ๐Ÿ”ง Adding New Integrations
102
+
103
+ ### Example 1: Add Existing Token to New Chain
104
+
105
+ **Scenario:** Add LBTC support on Base for Veda protocol.
106
+
107
+ ```typescript
108
+ // In defi-registry.ts
109
+
110
+ const VEDA_STAKE_AND_BAKE_CHAINS = [
111
+ ChainId.ethereum,
112
+ ChainId.binanceSmartChain,
113
+ ChainId.base, // โ† ADD THIS
114
+ // Testnets:
115
+ ChainId.binanceSmartChainTestnet,
116
+ ChainId.holesky,
117
+ ] as const;
118
+
119
+ // That's it! LBTC now works on Base because it uses forChains()
120
+ // which generates config for all chains in the array.
121
+ ```
122
+
123
+ **What Happens:**
124
+ - `forChains()` automatically creates registry entries for all chains
125
+ - LBTC inherits the same `LBTC_PERMIT_CONFIG` on Base
126
+ - Uses the correct spender contract from `VEDA_VAULT_SPENDER_CONTRACTS[ChainId.base]`
127
+
128
+ ---
129
+
130
+ ### Example 2: Add New Token to Existing Protocol
131
+
132
+ **Scenario:** Add wBTC support for Veda on Ethereum (uses permit).
133
+
134
+ ```typescript
135
+ // In defi-registry.ts
136
+
137
+ // 1. Define approval config (or reuse existing)
138
+ const WBTC_PERMIT_CONFIG: TokenApprovalConfig = {
139
+ mode: 'permit',
140
+ eip712Domain: {
141
+ name: 'Wrapped Bitcoin', // Check wBTC contract
142
+ version: '1',
143
+ },
144
+ requiresNonce: true,
145
+ expiryBehavior: 'standard',
146
+ };
147
+
148
+ // 2. Add to DEFI_REGISTRY
149
+ export const DEFI_REGISTRY = {
150
+ Veda: {
151
+ [Token.LBTC]: { /* existing */ },
152
+ BTC: { /* existing */ },
153
+
154
+ // Add wBTC
155
+ [Token.wBTC]: forEnvs([Env.prod, Env.testnet], (env) => {
156
+ return forChains([ChainId.ethereum, ChainId.base], (chain) => ({
157
+ approvalConfig: WBTC_PERMIT_CONFIG,
158
+ spenderContract: VEDA_VAULT_SPENDER_CONTRACTS[chain],
159
+ }));
160
+ }),
161
+ },
162
+ // ...
163
+ };
164
+ ```
165
+
166
+ ---
167
+
168
+ ### Example 3: Add New DeFi Protocol (Aave)
169
+
170
+ **Scenario:** Add Aave protocol that accepts LBTC on Ethereum and Base.
171
+
172
+ ```typescript
173
+ // In defi-registry.ts
174
+
175
+ // 1. Add protocol to DefiProtocol enum
176
+ export const DefiProtocol = {
177
+ Veda: 'Veda',
178
+ Silo: 'Silo',
179
+ Aave: 'Aave', // โ† ADD THIS
180
+ } as const;
181
+
182
+ // 2. Add protocol metadata
183
+ export const DefiProtocols = {
184
+ [DefiProtocol.Veda]: { /* existing */ },
185
+ [DefiProtocol.Silo]: { /* existing */ },
186
+ [DefiProtocol.Aave]: {
187
+ name: 'Aave v3',
188
+ url: 'https://aave.com',
189
+ },
190
+ };
191
+
192
+ // 3. Define spender contracts
193
+ const AAVE_SPENDER_CONTRACTS = {
194
+ [ChainId.ethereum]: {
195
+ abi: AAVE_POOL_ABI,
196
+ address: '0xAavePoolAddressOnEthereum',
197
+ chainId: ChainId.ethereum,
198
+ },
199
+ [ChainId.base]: {
200
+ abi: AAVE_POOL_ABI,
201
+ address: '0xAavePoolAddressOnBase',
202
+ chainId: ChainId.base,
203
+ },
204
+ };
205
+
206
+ // 4. Add to registry
207
+ export const DEFI_REGISTRY = {
208
+ // ... existing protocols
209
+
210
+ Aave: {
211
+ // LBTC uses standard permit
212
+ [Token.LBTC]: forEnvs([Env.prod], () => {
213
+ return forChains([ChainId.ethereum, ChainId.base], (chain) => ({
214
+ approvalConfig: LBTC_PERMIT_CONFIG, // Reuse existing config
215
+ spenderContract: AAVE_SPENDER_CONTRACTS[chain],
216
+ }));
217
+ }),
218
+ },
219
+ };
220
+ ```
221
+
222
+ **That's it!** Now you can call:
223
+ ```typescript
224
+ await signStakeAndBake({
225
+ vaultKey: 'Aave',
226
+ token: Token.LBTC,
227
+ chainId: ChainId.ethereum,
228
+ // ...
229
+ });
230
+ ```
231
+
232
+ ---
233
+
234
+ ### Example 4: Token That Uses Approve Mode
235
+
236
+ **Scenario:** Add USDC to Silo on Avalanche (requires on-chain approve).
237
+
238
+ ```typescript
239
+ // In defi-registry.ts
240
+
241
+ // 1. Define approval config for USDC
242
+ const USDC_APPROVE_CONFIG: TokenApprovalConfig = {
243
+ mode: 'approve', // On-chain transaction
244
+ eip712Domain: {
245
+ name: 'USD Coin',
246
+ version: '2',
247
+ },
248
+ requiresNonce: false, // Approve doesn't use nonce
249
+ expiryBehavior: 'zero', // Approve uses zero deadline
250
+ };
251
+
252
+ // 2. Add to Silo registry
253
+ export const DEFI_REGISTRY = {
254
+ // ...
255
+ Silo: {
256
+ [Token.BTCb]: { /* existing */ },
257
+
258
+ // Add USDC
259
+ [Token.USDC]: forEnvs([Env.testnet], () => {
260
+ return forChains([ChainId.avalancheFuji], () => ({
261
+ approvalConfig: USDC_APPROVE_CONFIG,
262
+ spenderContract: {
263
+ abi: SILO_VAULT_SPENDER_ABI,
264
+ address: '0xSiloSpenderOnAvalancheFuji',
265
+ chainId: ChainId.avalancheFuji,
266
+ },
267
+ }));
268
+ }),
269
+ },
270
+ };
271
+ ```
272
+
273
+ ---
274
+
275
+ ## ๐Ÿ” Validation & Error Handling
276
+
277
+ The registry automatically validates:
278
+
279
+ ```typescript
280
+ // Example: Unsupported token
281
+ await signStakeAndBake({
282
+ vaultKey: 'Veda',
283
+ token: Token.BTCb, // BTCb not configured for Veda
284
+ chainId: ChainId.ethereum,
285
+ });
286
+ // Throws: StakeAndBakeValidationError
287
+ // "Token BTC.b is not supported for stake and bake on vault Veda.
288
+ // Supported tokens: LBTC, BTC"
289
+ ```
290
+
291
+ **Error Codes:**
292
+ - `UNSUPPORTED_VAULT` - Protocol not in registry
293
+ - `UNSUPPORTED_CHAIN` - Chain not in vault's `stakeAndBakeChains`
294
+ - `UNSUPPORTED_TOKEN` - Token not configured for protocol
295
+ - `UNSUPPORTED_ENV` - Environment not configured
296
+ - `UNSUPPORTED_TOKEN_CHAIN` - Token not configured for specific chain
297
+
298
+ ---
299
+
300
+ ## ๐Ÿ› ๏ธ Helper Functions
301
+
302
+ ### `forChains()`
303
+ Generate config for multiple chains with same settings:
304
+
305
+ ```typescript
306
+ forChains([ChainId.ethereum, ChainId.base, ChainId.bsc], (chain) => ({
307
+ approvalConfig: LBTC_PERMIT_CONFIG,
308
+ spenderContract: SPENDER_CONTRACTS[chain],
309
+ }))
310
+
311
+ // Generates:
312
+ // {
313
+ // 1: { approvalConfig: {...}, spenderContract: {...} },
314
+ // 8453: { approvalConfig: {...}, spenderContract: {...} },
315
+ // 56: { approvalConfig: {...}, spenderContract: {...} },
316
+ // }
317
+ ```
318
+
319
+ ### `forEnvs()`
320
+ Generate config for multiple environments:
321
+
322
+ ```typescript
323
+ forEnvs([Env.prod, Env.testnet], (env) => ({
324
+ // Config for this env
325
+ }))
326
+
327
+ // Generates:
328
+ // {
329
+ // prod: { ... },
330
+ // testnet: { ... },
331
+ // }
332
+ ```
333
+
334
+ ---
335
+
336
+ ## ๐Ÿ“‚ File Structure
337
+
338
+ ```
339
+ defi/
340
+ โ”œโ”€โ”€ README.md โ† You are here
341
+ โ”œโ”€โ”€ index.ts โ† Exports
342
+ โ””โ”€โ”€ defi-registry.ts โ† Registry definition
343
+ ```
344
+
345
+ **Related Files:**
346
+ ```
347
+ contract-functions/signStakeAndBake/
348
+ โ”œโ”€โ”€ signStakeAndBake.ts โ† Main function (uses registry)
349
+ โ”œโ”€โ”€ validation.ts โ† getStakeAndBakeConfig() queries registry
350
+ โ”œโ”€โ”€ handleApprove.ts โ† Handles 'approve' mode
351
+ โ”œโ”€โ”€ handlePermit.ts โ† Handles 'permit' mode
352
+ โ”œโ”€โ”€ typed-data-builder.ts โ† Builds EIP-712 data
353
+ โ””โ”€โ”€ utils.ts โ† Helper functions
354
+ ```
355
+
356
+ ---
357
+
358
+ ## ๐ŸŽฏ Best Practices
359
+
360
+ ### 1. **Reuse Approval Configs**
361
+ Don't duplicate configs for the same token behavior:
362
+ ```typescript
363
+ // โœ… Good: Reuse
364
+ [Token.LBTC]: forEnvs(..., () => ({
365
+ approvalConfig: LBTC_PERMIT_CONFIG, // Reused
366
+ ...
367
+ }))
368
+
369
+ // โŒ Bad: Duplicate
370
+ [Token.LBTC]: forEnvs(..., () => ({
371
+ approvalConfig: {
372
+ mode: 'permit',
373
+ eip712Domain: { name: 'Lombard...', version: '1' },
374
+ // ... duplicated values
375
+ },
376
+ ...
377
+ }))
378
+ ```
379
+
380
+ ### 2. **Use forChains() for Multi-Chain Support**
381
+ ```typescript
382
+ // โœ… Good: DRY with forChains()
383
+ [Token.LBTC]: forEnvs([Env.prod], () =>
384
+ forChains([ChainId.ethereum, ChainId.base], (chain) => ({
385
+ approvalConfig: LBTC_PERMIT_CONFIG,
386
+ spenderContract: SPENDER_CONTRACTS[chain],
387
+ }))
388
+ )
389
+
390
+ // โŒ Bad: Repetitive
391
+ [Token.LBTC]: {
392
+ [Env.prod]: {
393
+ [ChainId.ethereum]: { ... },
394
+ [ChainId.base]: { ... }, // Same config, duplicated
395
+ }
396
+ }
397
+ ```
398
+
399
+ ### 3. **Define Spender Contracts Once**
400
+ Store spender contracts in a map:
401
+ ```typescript
402
+ // At top of file
403
+ const VEDA_VAULT_SPENDER_CONTRACTS = {
404
+ [ChainId.ethereum]: { abi, address: '0x...', chainId: 1 },
405
+ [ChainId.base]: { abi, address: '0x...', chainId: 8453 },
406
+ // ...
407
+ };
408
+
409
+ // Then reference them
410
+ spenderContract: VEDA_VAULT_SPENDER_CONTRACTS[chain]
411
+ ```
412
+
413
+ ### 4. **Document Token-Specific Behavior**
414
+ Use comments for special cases:
415
+ ```typescript
416
+ // BTC is a virtual token that converts to LBTC via exchange ratio
417
+ BTC: forEnvs(Object.values(Env), () => {
418
+ return forChains(VEDA_STAKE_AND_BAKE_CHAINS, (chain) => ({
419
+ approvalConfig: BTC_PERMIT_CONFIG, // Has requiresConversion: true
420
+ spenderContract: VEDA_VAULT_SPENDER_CONTRACTS[chain],
421
+ }));
422
+ }),
423
+ ```
424
+
425
+ ---
426
+
427
+ ## ๐Ÿงช Testing New Integrations
428
+
429
+ ### 1. **Unit Tests**
430
+ Add test cases in `signStakeAndBake.test.ts`:
431
+ ```typescript
432
+ it('should handle NewToken on NewProtocol', async () => {
433
+ const result = await signStakeAndBake({
434
+ token: Token.NewToken,
435
+ vaultKey: 'NewProtocol',
436
+ chainId: ChainId.ethereum,
437
+ // ...
438
+ });
439
+
440
+ expect(result.mode).toBe('permit'); // or 'approve'
441
+ expect(result.signature).toBeTruthy();
442
+ });
443
+ ```
444
+
445
+ ### 2. **Storybook Testing**
446
+ Test in Storybook UI:
447
+ ```bash
448
+ yarn storybook
449
+ # Navigate to: write/signStakeAndBake
450
+ # Select your new token/protocol in controls
451
+ ```
452
+
453
+ ### 3. **Integration Testing**
454
+ Use the verification script:
455
+ ```bash
456
+ yarn verify:stake-and-bake
457
+ ```
458
+
459
+ ---
460
+
461
+ ## ๐Ÿš€ Quick Start Checklist
462
+
463
+ Adding a new integration? Follow these steps:
464
+
465
+ - [ ] Define or reuse `TokenApprovalConfig`
466
+ - [ ] Add token to `DEFI_REGISTRY` under appropriate protocol
467
+ - [ ] Use `forChains()` and `forEnvs()` helpers
468
+ - [ ] Ensure spender contracts are defined
469
+ - [ ] Add test case(s)
470
+ - [ ] Test in Storybook
471
+ - [ ] Update exports in `index.ts` if adding new protocol
472
+