@babylonlabs-io/ts-sdk 0.0.0-semantic-release.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +124 -6
  3. package/dist/MockEthereumWallet-CKQlH2AM.cjs +2 -0
  4. package/dist/MockEthereumWallet-CKQlH2AM.cjs.map +1 -0
  5. package/dist/MockEthereumWallet-ibdry7pZ.js +127 -0
  6. package/dist/MockEthereumWallet-ibdry7pZ.js.map +1 -0
  7. package/dist/PayoutManager-Dg_i_S7w.cjs +2 -0
  8. package/dist/PayoutManager-Dg_i_S7w.cjs.map +1 -0
  9. package/dist/PayoutManager-rMj54HDh.js +1112 -0
  10. package/dist/PayoutManager-rMj54HDh.js.map +1 -0
  11. package/dist/challengeAssert-34HqeVFH.cjs +2 -0
  12. package/dist/challengeAssert-34HqeVFH.cjs.map +1 -0
  13. package/dist/challengeAssert-DVErOd8l.js +423 -0
  14. package/dist/challengeAssert-DVErOd8l.js.map +1 -0
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.js +62 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/shared/index.cjs +1 -1
  19. package/dist/shared/index.d.ts +3 -1
  20. package/dist/shared/index.d.ts.map +1 -1
  21. package/dist/shared/index.js +5 -1
  22. package/dist/shared/index.js.map +1 -1
  23. package/dist/shared/wallets/__tests__/BitcoinWallet.test.d.ts +2 -0
  24. package/dist/shared/wallets/__tests__/BitcoinWallet.test.d.ts.map +1 -0
  25. package/dist/shared/wallets/__tests__/EthereumWallet.test.d.ts +2 -0
  26. package/dist/shared/wallets/__tests__/EthereumWallet.test.d.ts.map +1 -0
  27. package/dist/shared/wallets/index.d.ts +4 -0
  28. package/dist/shared/wallets/index.d.ts.map +1 -0
  29. package/dist/shared/wallets/interfaces/BitcoinWallet.d.ts +106 -0
  30. package/dist/shared/wallets/interfaces/BitcoinWallet.d.ts.map +1 -0
  31. package/dist/shared/wallets/interfaces/EthereumWallet.d.ts +6 -0
  32. package/dist/shared/wallets/interfaces/EthereumWallet.d.ts.map +1 -0
  33. package/dist/shared/wallets/interfaces/index.d.ts +4 -0
  34. package/dist/shared/wallets/interfaces/index.d.ts.map +1 -0
  35. package/dist/shared/wallets/mocks/MockBitcoinWallet.d.ts +29 -0
  36. package/dist/shared/wallets/mocks/MockBitcoinWallet.d.ts.map +1 -0
  37. package/dist/shared/wallets/mocks/MockEthereumWallet.d.ts +51 -0
  38. package/dist/shared/wallets/mocks/MockEthereumWallet.d.ts.map +1 -0
  39. package/dist/shared/wallets/mocks/index.d.ts +5 -0
  40. package/dist/shared/wallets/mocks/index.d.ts.map +1 -0
  41. package/dist/tbv/core/clients/index.d.ts +9 -0
  42. package/dist/tbv/core/clients/index.d.ts.map +1 -0
  43. package/dist/tbv/core/clients/mempool/index.d.ts +11 -0
  44. package/dist/tbv/core/clients/mempool/index.d.ts.map +1 -0
  45. package/dist/tbv/core/clients/mempool/mempoolApi.d.ts +94 -0
  46. package/dist/tbv/core/clients/mempool/mempoolApi.d.ts.map +1 -0
  47. package/dist/tbv/core/clients/mempool/types.d.ts +98 -0
  48. package/dist/tbv/core/clients/mempool/types.d.ts.map +1 -0
  49. package/dist/tbv/core/contracts/abis/BTCVaultsManager.abi.d.ts +187 -0
  50. package/dist/tbv/core/contracts/abis/BTCVaultsManager.abi.d.ts.map +1 -0
  51. package/dist/tbv/core/contracts/errors.d.ts +50 -0
  52. package/dist/tbv/core/contracts/errors.d.ts.map +1 -0
  53. package/dist/tbv/core/contracts/index.d.ts +11 -0
  54. package/dist/tbv/core/contracts/index.d.ts.map +1 -0
  55. package/dist/tbv/core/index.cjs +1 -1
  56. package/dist/tbv/core/index.d.ts +17 -1
  57. package/dist/tbv/core/index.d.ts.map +1 -1
  58. package/dist/tbv/core/index.js +59 -1
  59. package/dist/tbv/core/index.js.map +1 -1
  60. package/dist/tbv/core/managers/PayoutManager.d.ts +158 -0
  61. package/dist/tbv/core/managers/PayoutManager.d.ts.map +1 -0
  62. package/dist/tbv/core/managers/PeginManager.d.ts +327 -0
  63. package/dist/tbv/core/managers/PeginManager.d.ts.map +1 -0
  64. package/dist/tbv/core/managers/__tests__/PayoutManager.test.d.ts +8 -0
  65. package/dist/tbv/core/managers/__tests__/PayoutManager.test.d.ts.map +1 -0
  66. package/dist/tbv/core/managers/__tests__/PeginManager.test.d.ts +8 -0
  67. package/dist/tbv/core/managers/__tests__/PeginManager.test.d.ts.map +1 -0
  68. package/dist/tbv/core/managers/index.d.ts +75 -0
  69. package/dist/tbv/core/managers/index.d.ts.map +1 -0
  70. package/dist/tbv/core/primitives/index.cjs +2 -0
  71. package/dist/tbv/core/primitives/index.d.ts +77 -0
  72. package/dist/tbv/core/primitives/index.d.ts.map +1 -0
  73. package/dist/tbv/core/primitives/index.js +21 -0
  74. package/dist/tbv/{integrations/morpho → core/primitives}/index.js.map +1 -1
  75. package/dist/tbv/core/primitives/psbt/__tests__/constants.d.ts +137 -0
  76. package/dist/tbv/core/primitives/psbt/__tests__/constants.d.ts.map +1 -0
  77. package/dist/tbv/core/primitives/psbt/__tests__/helpers.d.ts +71 -0
  78. package/dist/tbv/core/primitives/psbt/__tests__/helpers.d.ts.map +1 -0
  79. package/dist/tbv/core/primitives/psbt/__tests__/payout.test.d.ts +8 -0
  80. package/dist/tbv/core/primitives/psbt/__tests__/payout.test.d.ts.map +1 -0
  81. package/dist/tbv/core/primitives/psbt/__tests__/pegin.test.d.ts +5 -0
  82. package/dist/tbv/core/primitives/psbt/__tests__/pegin.test.d.ts.map +1 -0
  83. package/dist/tbv/core/primitives/psbt/challengeAssert.d.ts +27 -0
  84. package/dist/tbv/core/primitives/psbt/challengeAssert.d.ts.map +1 -0
  85. package/dist/tbv/core/primitives/psbt/depositorPayout.d.ts +27 -0
  86. package/dist/tbv/core/primitives/psbt/depositorPayout.d.ts.map +1 -0
  87. package/dist/tbv/core/primitives/psbt/index.d.ts +27 -0
  88. package/dist/tbv/core/primitives/psbt/index.d.ts.map +1 -0
  89. package/dist/tbv/core/primitives/psbt/noPayout.d.ts +28 -0
  90. package/dist/tbv/core/primitives/psbt/noPayout.d.ts.map +1 -0
  91. package/dist/tbv/core/primitives/psbt/payout.d.ts +99 -0
  92. package/dist/tbv/core/primitives/psbt/payout.d.ts.map +1 -0
  93. package/dist/tbv/core/primitives/psbt/pegin.d.ts +88 -0
  94. package/dist/tbv/core/primitives/psbt/pegin.d.ts.map +1 -0
  95. package/dist/tbv/core/primitives/scripts/__tests__/payout.test.d.ts +5 -0
  96. package/dist/tbv/core/primitives/scripts/__tests__/payout.test.d.ts.map +1 -0
  97. package/dist/tbv/core/primitives/scripts/index.d.ts +10 -0
  98. package/dist/tbv/core/primitives/scripts/index.d.ts.map +1 -0
  99. package/dist/tbv/core/primitives/scripts/payout.d.ts +102 -0
  100. package/dist/tbv/core/primitives/scripts/payout.d.ts.map +1 -0
  101. package/dist/tbv/core/primitives/utils/__tests__/bitcoin.test.d.ts +5 -0
  102. package/dist/tbv/core/primitives/utils/__tests__/bitcoin.test.d.ts.map +1 -0
  103. package/dist/tbv/core/primitives/utils/bitcoin.d.ts +132 -0
  104. package/dist/tbv/core/primitives/utils/bitcoin.d.ts.map +1 -0
  105. package/dist/tbv/core/primitives/utils/index.d.ts +9 -0
  106. package/dist/tbv/core/primitives/utils/index.d.ts.map +1 -0
  107. package/dist/tbv/core/utils/btc/index.d.ts +10 -0
  108. package/dist/tbv/core/utils/btc/index.d.ts.map +1 -0
  109. package/dist/tbv/core/utils/btc/psbtInputFields.d.ts +41 -0
  110. package/dist/tbv/core/utils/btc/psbtInputFields.d.ts.map +1 -0
  111. package/dist/tbv/core/utils/btc/scriptType.d.ts +34 -0
  112. package/dist/tbv/core/utils/btc/scriptType.d.ts.map +1 -0
  113. package/dist/tbv/core/utils/fee/constants.d.ts +25 -0
  114. package/dist/tbv/core/utils/fee/constants.d.ts.map +1 -0
  115. package/dist/tbv/core/utils/fee/index.d.ts +7 -0
  116. package/dist/tbv/core/utils/fee/index.d.ts.map +1 -0
  117. package/dist/tbv/core/utils/index.d.ts +16 -0
  118. package/dist/tbv/core/utils/index.d.ts.map +1 -0
  119. package/dist/tbv/core/utils/transaction/__tests__/btcTxHash.test.d.ts +5 -0
  120. package/dist/tbv/core/utils/transaction/__tests__/btcTxHash.test.d.ts.map +1 -0
  121. package/dist/tbv/core/utils/transaction/__tests__/createSplitTransaction.test.d.ts +5 -0
  122. package/dist/tbv/core/utils/transaction/__tests__/createSplitTransaction.test.d.ts.map +1 -0
  123. package/dist/tbv/core/utils/transaction/__tests__/fundPeginTransaction.test.d.ts +5 -0
  124. package/dist/tbv/core/utils/transaction/__tests__/fundPeginTransaction.test.d.ts.map +1 -0
  125. package/dist/tbv/core/utils/transaction/btcTxHash.d.ts +15 -0
  126. package/dist/tbv/core/utils/transaction/btcTxHash.d.ts.map +1 -0
  127. package/dist/tbv/core/utils/transaction/createSplitTransaction.d.ts +106 -0
  128. package/dist/tbv/core/utils/transaction/createSplitTransaction.d.ts.map +1 -0
  129. package/dist/tbv/core/utils/transaction/fundPeginTransaction.d.ts +70 -0
  130. package/dist/tbv/core/utils/transaction/fundPeginTransaction.d.ts.map +1 -0
  131. package/dist/tbv/core/utils/transaction/index.d.ts +9 -0
  132. package/dist/tbv/core/utils/transaction/index.d.ts.map +1 -0
  133. package/dist/tbv/core/utils/utxo/__tests__/selectUtxos.test.d.ts +5 -0
  134. package/dist/tbv/core/utils/utxo/__tests__/selectUtxos.test.d.ts.map +1 -0
  135. package/dist/tbv/core/utils/utxo/index.d.ts +7 -0
  136. package/dist/tbv/core/utils/utxo/index.d.ts.map +1 -0
  137. package/dist/tbv/core/utils/utxo/selectUtxos.d.ts +65 -0
  138. package/dist/tbv/core/utils/utxo/selectUtxos.d.ts.map +1 -0
  139. package/dist/tbv/index.cjs +1 -1
  140. package/dist/tbv/index.js +59 -1
  141. package/dist/tbv/index.js.map +1 -1
  142. package/dist/tbv/integrations/aave/clients/__tests__/spoke.test.d.ts +2 -0
  143. package/dist/tbv/integrations/aave/clients/__tests__/spoke.test.d.ts.map +1 -0
  144. package/dist/tbv/integrations/aave/clients/__tests__/transaction.test.d.ts +2 -0
  145. package/dist/tbv/integrations/aave/clients/__tests__/transaction.test.d.ts.map +1 -0
  146. package/dist/tbv/integrations/aave/clients/abis/AaveIntegrationController.abi.json.d.ts +1879 -0
  147. package/dist/tbv/integrations/aave/clients/abis/AaveSpoke.abi.json.d.ts +1262 -0
  148. package/dist/tbv/integrations/aave/clients/index.d.ts +4 -0
  149. package/dist/tbv/integrations/aave/clients/index.d.ts.map +1 -0
  150. package/dist/tbv/integrations/aave/clients/query.d.ts +27 -0
  151. package/dist/tbv/integrations/aave/clients/query.d.ts.map +1 -0
  152. package/dist/tbv/integrations/aave/clients/spoke.d.ts +161 -0
  153. package/dist/tbv/integrations/aave/clients/spoke.d.ts.map +1 -0
  154. package/dist/tbv/integrations/aave/clients/transaction.d.ts +110 -0
  155. package/dist/tbv/integrations/aave/clients/transaction.d.ts.map +1 -0
  156. package/dist/tbv/integrations/aave/config.d.ts +7 -0
  157. package/dist/tbv/integrations/aave/config.d.ts.map +1 -0
  158. package/dist/tbv/integrations/aave/constants.d.ts +113 -0
  159. package/dist/tbv/integrations/aave/constants.d.ts.map +1 -0
  160. package/dist/tbv/integrations/aave/index.cjs +2 -0
  161. package/dist/tbv/integrations/aave/index.cjs.map +1 -0
  162. package/dist/tbv/integrations/aave/index.d.ts +53 -0
  163. package/dist/tbv/integrations/aave/index.d.ts.map +1 -0
  164. package/dist/tbv/integrations/aave/index.js +307 -0
  165. package/dist/tbv/integrations/aave/index.js.map +1 -0
  166. package/dist/tbv/integrations/aave/types.d.ts +66 -0
  167. package/dist/tbv/integrations/aave/types.d.ts.map +1 -0
  168. package/dist/tbv/integrations/aave/utils/__tests__/aaveConversions.test.d.ts +5 -0
  169. package/dist/tbv/integrations/aave/utils/__tests__/aaveConversions.test.d.ts.map +1 -0
  170. package/dist/tbv/integrations/aave/utils/__tests__/borrowRatio.test.d.ts +5 -0
  171. package/dist/tbv/integrations/aave/utils/__tests__/borrowRatio.test.d.ts.map +1 -0
  172. package/dist/tbv/integrations/aave/utils/__tests__/debtUtils.test.d.ts +5 -0
  173. package/dist/tbv/integrations/aave/utils/__tests__/debtUtils.test.d.ts.map +1 -0
  174. package/dist/tbv/integrations/aave/utils/__tests__/healthFactor.test.d.ts +5 -0
  175. package/dist/tbv/integrations/aave/utils/__tests__/healthFactor.test.d.ts.map +1 -0
  176. package/dist/tbv/integrations/aave/utils/__tests__/vaultSelection.test.d.ts +2 -0
  177. package/dist/tbv/integrations/aave/utils/__tests__/vaultSelection.test.d.ts.map +1 -0
  178. package/dist/tbv/integrations/aave/utils/__tests__/vaultSplit.test.d.ts +5 -0
  179. package/dist/tbv/integrations/aave/utils/__tests__/vaultSplit.test.d.ts.map +1 -0
  180. package/dist/tbv/integrations/aave/utils/aaveConversions.d.ts +24 -0
  181. package/dist/tbv/integrations/aave/utils/aaveConversions.d.ts.map +1 -0
  182. package/dist/tbv/integrations/aave/utils/borrowRatio.d.ts +15 -0
  183. package/dist/tbv/integrations/aave/utils/borrowRatio.d.ts.map +1 -0
  184. package/dist/tbv/integrations/aave/utils/debtUtils.d.ts +14 -0
  185. package/dist/tbv/integrations/aave/utils/debtUtils.d.ts.map +1 -0
  186. package/dist/tbv/integrations/aave/utils/healthFactor.d.ts +108 -0
  187. package/dist/tbv/integrations/aave/utils/healthFactor.d.ts.map +1 -0
  188. package/dist/tbv/integrations/aave/utils/index.d.ts +10 -0
  189. package/dist/tbv/integrations/aave/utils/index.d.ts.map +1 -0
  190. package/dist/tbv/integrations/aave/utils/vaultSelection.d.ts +33 -0
  191. package/dist/tbv/integrations/aave/utils/vaultSelection.d.ts.map +1 -0
  192. package/dist/tbv/integrations/aave/utils/vaultSplit.d.ts +191 -0
  193. package/dist/tbv/integrations/aave/utils/vaultSplit.d.ts.map +1 -0
  194. package/package.json +37 -7
  195. package/dist/shared/__tests__/example.test.d.ts +0 -6
  196. package/dist/shared/__tests__/example.test.d.ts.map +0 -1
  197. package/dist/tbv/core/__tests__/example.test.d.ts +0 -6
  198. package/dist/tbv/core/__tests__/example.test.d.ts.map +0 -1
  199. package/dist/tbv/integrations/morpho/index.cjs +0 -2
  200. package/dist/tbv/integrations/morpho/index.d.ts +0 -2
  201. package/dist/tbv/integrations/morpho/index.d.ts.map +0 -1
  202. package/dist/tbv/integrations/morpho/index.js +0 -2
  203. /package/dist/tbv/{integrations/morpho → core/primitives}/index.cjs.map +0 -0
@@ -0,0 +1,66 @@
1
+ import { Address, Hex } from 'viem';
2
+ /**
3
+ * Depositor structure from contract
4
+ */
5
+ export interface DepositorStruct {
6
+ ethAddress: Address;
7
+ btcPubKey: Hex;
8
+ }
9
+ /**
10
+ * Aave position structure from the contract.
11
+ * The controller resolves the user's proxy and vaults from their address.
12
+ */
13
+ export interface AaveMarketPosition {
14
+ proxyContract: Address;
15
+ vaultIds: Hex[];
16
+ }
17
+ /**
18
+ * User account data from the Spoke
19
+ * Contains aggregated position health data calculated by Aave using on-chain oracle prices.
20
+ */
21
+ export interface AaveSpokeUserAccountData {
22
+ /** Risk premium */
23
+ riskPremium: bigint;
24
+ /** Weighted average collateral factor in WAD (1e18 = 100%) */
25
+ avgCollateralFactor: bigint;
26
+ /** Health factor in WAD (1e18 = 1.00) */
27
+ healthFactor: bigint;
28
+ /** Total collateral value in base currency (1e26 = $1 USD) */
29
+ totalCollateralValue: bigint;
30
+ /** Total debt value in base currency (1e26 = $1 USD) */
31
+ totalDebtValue: bigint;
32
+ /** Number of active collateral reserves */
33
+ activeCollateralCount: bigint;
34
+ /** Number of borrowed reserves */
35
+ borrowedCount: bigint;
36
+ }
37
+ /**
38
+ * User position data from the Spoke
39
+ */
40
+ export interface AaveSpokeUserPosition {
41
+ /** Drawn debt shares */
42
+ drawnShares: bigint;
43
+ /** Premium shares (interest) */
44
+ premiumShares: bigint;
45
+ /** Realized premium (ray) */
46
+ realizedPremiumRay: bigint;
47
+ /** Premium offset (ray) */
48
+ premiumOffsetRay: bigint;
49
+ /** Supplied collateral shares */
50
+ suppliedShares: bigint;
51
+ /** Dynamic config key */
52
+ dynamicConfigKey: number;
53
+ }
54
+ /**
55
+ * Transaction parameters for unsigned transactions
56
+ * Compatible with viem's transaction format
57
+ */
58
+ export interface TransactionParams {
59
+ /** Contract address to call */
60
+ to: Address;
61
+ /** Encoded function data */
62
+ data: Hex;
63
+ /** Value to send (optional, defaults to 0) */
64
+ value?: bigint;
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tbv/integrations/aave/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,GAAG,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,4BAA4B;IAC5B,IAAI,EAAE,GAAG,CAAC;IACV,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for Aave value conversion utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=aaveConversions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aaveConversions.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/utils/__tests__/aaveConversions.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for borrow ratio utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=borrowRatio.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borrowRatio.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/utils/__tests__/borrowRatio.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for debt utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=debtUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debtUtils.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/utils/__tests__/debtUtils.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for health factor utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=healthFactor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthFactor.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/utils/__tests__/healthFactor.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vaultSelection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultSelection.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/utils/__tests__/vaultSelection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for vault split calculation utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=vaultSplit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultSplit.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/utils/__tests__/vaultSplit.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Aave Value Conversion Utilities
3
+ *
4
+ * Converts Aave on-chain values to human-readable numbers.
5
+ */
6
+ /**
7
+ * Convert Aave base currency value to USD
8
+ *
9
+ * Aave uses 1e26 = $1 USD for collateral and debt values.
10
+ *
11
+ * @param value - Value in Aave base currency (1e26 = $1)
12
+ * @returns Value in USD
13
+ */
14
+ export declare function aaveValueToUsd(value: bigint): number;
15
+ /**
16
+ * Convert Aave WAD value to number
17
+ *
18
+ * WAD is used for health factor and collateral factor (1e18 = 1.0).
19
+ *
20
+ * @param value - Value in WAD (1e18 = 1.0)
21
+ * @returns Decimal number
22
+ */
23
+ export declare function wadToNumber(value: bigint): number;
24
+ //# sourceMappingURL=aaveConversions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aaveConversions.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/aaveConversions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Borrow Ratio Utilities
3
+ *
4
+ * Borrow ratio = debt / collateral as a percentage.
5
+ * Shows how much of the collateral is being used for borrowing.
6
+ */
7
+ /**
8
+ * Calculate borrow ratio (debt / collateral) as percentage string
9
+ *
10
+ * @param debtUsd - Total debt in USD
11
+ * @param collateralValueUsd - Total collateral value in USD
12
+ * @returns Formatted percentage string (e.g., "15.7%")
13
+ */
14
+ export declare function calculateBorrowRatio(debtUsd: number, collateralValueUsd: number): string;
15
+ //# sourceMappingURL=borrowRatio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borrowRatio.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/borrowRatio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAIR"}
@@ -0,0 +1,14 @@
1
+ import { AaveSpokeUserPosition } from '../types.js';
2
+ /**
3
+ * Check if a position has any debt based on Spoke position data.
4
+ *
5
+ * A position is considered to have debt if any of:
6
+ * - drawnShares > 0 (borrowed principal)
7
+ * - premiumShares > 0 (accrued interest shares)
8
+ * - realizedPremiumRay > 0 (realized interest)
9
+ *
10
+ * @param position - User position data from Spoke
11
+ * @returns true if the position has any debt
12
+ */
13
+ export declare function hasDebtFromPosition(position: AaveSpokeUserPosition): boolean;
14
+ //# sourceMappingURL=debtUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debtUtils.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/debtUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAM5E"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Health Factor Utilities for Aave
3
+ *
4
+ * Health factor is calculated by Aave on-chain using oracle prices.
5
+ * A health factor below 1.0 means the position can be liquidated.
6
+ *
7
+ * Status thresholds:
8
+ * - no_debt: No active debt (null health factor)
9
+ * - danger: < 1.0 (can be liquidated)
10
+ * - warning: < HEALTH_FACTOR_WARNING_THRESHOLD (at risk)
11
+ * - safe: >= HEALTH_FACTOR_WARNING_THRESHOLD (healthy)
12
+ *
13
+ * Color mapping:
14
+ * - Green (#00E676): safe
15
+ * - Amber (#FFC400): warning
16
+ * - Red (#FF1744): danger
17
+ * - Gray (#5A5A5A): no_debt
18
+ */
19
+ export declare const HEALTH_FACTOR_COLORS: {
20
+ readonly GREEN: "#00E676";
21
+ readonly AMBER: "#FFC400";
22
+ readonly RED: "#FF1744";
23
+ readonly GRAY: "#5A5A5A";
24
+ };
25
+ export type HealthFactorColor = (typeof HEALTH_FACTOR_COLORS)[keyof typeof HEALTH_FACTOR_COLORS];
26
+ /**
27
+ * Health factor status based on our liquidation threshold
28
+ */
29
+ export type HealthFactorStatus = "safe" | "warning" | "danger" | "no_debt";
30
+ /**
31
+ * Determine health factor status for UI display
32
+ *
33
+ * @param healthFactor - The health factor as a number (null if no debt)
34
+ * @param hasDebt - Whether the position has active debt
35
+ * @returns The status classification
36
+ */
37
+ export declare function getHealthFactorStatus(healthFactor: number | null, hasDebt: boolean): HealthFactorStatus;
38
+ /**
39
+ * Gets the appropriate color for a health factor status.
40
+ *
41
+ * @param status - The health factor status
42
+ * @returns The color code for the status
43
+ */
44
+ export declare function getHealthFactorColor(status: HealthFactorStatus): HealthFactorColor;
45
+ /**
46
+ * Format health factor number for display
47
+ *
48
+ * @param healthFactor - Health factor number (null if no debt)
49
+ * @returns Formatted string for display
50
+ */
51
+ export declare function formatHealthFactor(healthFactor: number | null): string;
52
+ /**
53
+ * Checks if a health factor value represents a healthy position.
54
+ *
55
+ * @param healthFactor - The health factor as a number
56
+ * @returns true if the health factor is >= 1.0 (healthy), false otherwise
57
+ */
58
+ export declare function isHealthFactorHealthy(healthFactor: number | null): boolean;
59
+ /**
60
+ * Get health factor status from a numeric value.
61
+ * Used for UI components that work with Infinity for no-debt scenarios.
62
+ *
63
+ * @param value - Health factor value (Infinity when no debt)
64
+ * @returns The status classification
65
+ */
66
+ export declare function getHealthFactorStatusFromValue(value: number): HealthFactorStatus;
67
+ /**
68
+ * Calculate health factor for an AAVE position.
69
+ *
70
+ * **Formula:** `HF = (Collateral × Liquidation Threshold) / Total Debt`
71
+ *
72
+ * Health factor determines liquidation risk:
73
+ * - `>= 1.5` - Safe (green)
74
+ * - `1.0 - 1.5` - Warning (amber)
75
+ * - `< 1.0` - Danger, position can be liquidated (red)
76
+ *
77
+ * @param collateralValueUsd - Total collateral value in USD (as number, not bigint)
78
+ * @param totalDebtUsd - Total debt value in USD (as number, not bigint)
79
+ * @param liquidationThresholdBps - Liquidation threshold in basis points (e.g., `8000` = 80%)
80
+ * @returns Health factor value (e.g., `1.5`), or `Infinity` if no debt
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * import { calculateHealthFactor, HEALTH_FACTOR_WARNING_THRESHOLD } from "@babylonlabs-io/ts-sdk/tbv/integrations/aave";
85
+ *
86
+ * // User has $10,000 BTC collateral, $5,000 debt, 80% LT
87
+ * const hf = calculateHealthFactor(10000, 5000, 8000);
88
+ * // Result: 1.6 (safe to borrow more)
89
+ *
90
+ * if (hf < 1.0) {
91
+ * console.error("Position can be liquidated!");
92
+ * } else if (hf < HEALTH_FACTOR_WARNING_THRESHOLD) {
93
+ * console.warn("Position at risk, consider repaying");
94
+ * } else {
95
+ * console.log("Position is safe");
96
+ * }
97
+ * ```
98
+ *
99
+ * @remarks
100
+ * **Before borrowing:**
101
+ * Use this to calculate resulting health factor and ensure it stays above safe threshold.
102
+ *
103
+ * **Unit conversions:**
104
+ * - Convert AAVE base currency (1e26) to USD by dividing by 1e26
105
+ * - Use `aaveValueToUsd()` helper for automatic conversion
106
+ */
107
+ export declare function calculateHealthFactor(collateralValueUsd: number, totalDebtUsd: number, liquidationThresholdBps: number): number;
108
+ //# sourceMappingURL=healthFactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthFactor.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/healthFactor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,EAAE,OAAO,GACf,kBAAkB,CAMpB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GACzB,iBAAiB,CAWnB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKtE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAK1E;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GACZ,kBAAkB,CAIpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,qBAAqB,CACnC,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,MAAM,EACpB,uBAAuB,EAAE,MAAM,GAC9B,MAAM,CAKR"}
@@ -0,0 +1,10 @@
1
+ export { aaveValueToUsd, wadToNumber } from './aaveConversions.js';
2
+ export { calculateBorrowRatio } from './borrowRatio.js';
3
+ export { hasDebtFromPosition } from './debtUtils.js';
4
+ export { HEALTH_FACTOR_COLORS, calculateHealthFactor, formatHealthFactor, getHealthFactorColor, getHealthFactorStatus, getHealthFactorStatusFromValue, isHealthFactorHealthy, } from './healthFactor.js';
5
+ export type { HealthFactorColor, HealthFactorStatus } from './healthFactor.js';
6
+ export { calculateTotalVaultAmount, selectVaultsForAmount, } from './vaultSelection.js';
7
+ export type { SelectableVault, VaultSelectionResult, } from './vaultSelection.js';
8
+ export { checkRebalanceNeeded, computeMinDepositForSplit, computeOptimalSplit, computeSeizedFraction, } from './vaultSplit.js';
9
+ export type { MinDepositForSplitParams, OptimalSplitParams, OptimalSplitResult, RebalanceCheckParams, RebalanceCheckResult, } from './vaultSplit.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Vault Selection Utilities for Aave
3
+ *
4
+ * Provides functions for selecting vaults to match a target collateral amount.
5
+ * Uses a greedy algorithm that prioritizes larger vaults first.
6
+ */
7
+ export interface SelectableVault {
8
+ id: string;
9
+ amount: number;
10
+ }
11
+ export interface VaultSelectionResult {
12
+ /** IDs of selected vaults */
13
+ vaultIds: string[];
14
+ /** Actual total amount from selected vaults */
15
+ actualAmount: number;
16
+ }
17
+ /**
18
+ * Select vaults to match the target amount using a greedy algorithm.
19
+ * Sorts vaults by amount descending and picks until target is met.
20
+ *
21
+ * @param vaults - Available vaults to select from
22
+ * @param targetAmount - Target amount to reach
23
+ * @returns Selected vault IDs and actual amount
24
+ */
25
+ export declare function selectVaultsForAmount(vaults: SelectableVault[], targetAmount: number): VaultSelectionResult;
26
+ /**
27
+ * Calculate total amount from a list of vaults
28
+ *
29
+ * @param vaults - Vaults to sum
30
+ * @returns Total amount in BTC
31
+ */
32
+ export declare function calculateTotalVaultAmount(vaults: SelectableVault[]): number;
33
+ //# sourceMappingURL=vaultSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultSelection.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/vaultSelection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EAAE,EACzB,YAAY,EAAE,MAAM,GACnB,oBAAoB,CAiBtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Vault Split Utilities for Aave Liquidation Protection
3
+ *
4
+ * BTC vaults are indivisible UTXOs. During liquidation, the protocol seizes
5
+ * whole vaults as a prefix of the borrower's ordered vault list until the
6
+ * target seizure amount is covered. Splitting deposits into 2 optimally-sized
7
+ * vaults (sacrificial + protected) minimizes over-seizure loss.
8
+ *
9
+ * The sacrificial vault (index 0) is sized to cover the expected target seizure
10
+ * plus a safety margin. The protected vault (index 1) holds the remainder and
11
+ * survives liquidation.
12
+ *
13
+ * Seizure formula (from Aave v4 Section 4.2):
14
+ * ```
15
+ * liq_penalty = LB × CF
16
+ * debt_to_repay = total_debt × (THF - current_HF) / (THF - liq_penalty)
17
+ * target_seizure = debt_to_repay × LB
18
+ * ```
19
+ */
20
+ /**
21
+ * Parameters for computing the optimal vault split.
22
+ */
23
+ export interface OptimalSplitParams {
24
+ /** Total deposit amount in satoshis */
25
+ totalBtc: bigint;
26
+ /** Collateral factor (e.g. 0.75 for 75%) */
27
+ CF: number;
28
+ /** Liquidation bonus (e.g. 1.05 for 5% bonus) */
29
+ LB: number;
30
+ /** Target health factor (e.g. 1.10) */
31
+ THF: number;
32
+ /** Expected health factor at liquidation (e.g. 0.95) */
33
+ expectedHF: number;
34
+ /** Safety margin multiplier for the sacrificial vault (e.g. 1.05 for 5% buffer) */
35
+ safetyMargin: number;
36
+ }
37
+ /**
38
+ * Result of the optimal vault split computation.
39
+ */
40
+ export interface OptimalSplitResult {
41
+ /** Sacrificial vault amount in satoshis (index 0, seized first) */
42
+ sacrificialVault: bigint;
43
+ /** Protected vault amount in satoshis (index 1, survives liquidation) */
44
+ protectedVault: bigint;
45
+ /** Fraction of collateral that would be seized (0–1) */
46
+ seizedFraction: number;
47
+ /** Raw target seizure amount in satoshis (before safety margin) */
48
+ targetSeizureBtc: bigint;
49
+ }
50
+ /**
51
+ * Parameters for computing the minimum deposit required for a split.
52
+ */
53
+ export interface MinDepositForSplitParams {
54
+ /** Minimum peg-in amount in satoshis */
55
+ minPegin: bigint;
56
+ /** Seized fraction (0–1), from computeOptimalSplit or computeSeizedFraction */
57
+ seizedFraction: number;
58
+ /** Safety margin multiplier (e.g. 1.05) */
59
+ safetyMargin: number;
60
+ }
61
+ /**
62
+ * Parameters for checking if a vault rebalance is needed.
63
+ */
64
+ export interface RebalanceCheckParams {
65
+ /** Ordered vault amounts in satoshis (index 0 is sacrificial) */
66
+ vaultAmounts: bigint[];
67
+ /** Collateral factor (e.g. 0.75) */
68
+ CF: number;
69
+ /** Liquidation bonus (e.g. 1.05) */
70
+ LB: number;
71
+ /** Target health factor (e.g. 1.10) */
72
+ THF: number;
73
+ /** Expected health factor at liquidation (e.g. 0.95) */
74
+ expectedHF: number;
75
+ /** Safety margin multiplier (e.g. 1.05) */
76
+ safetyMargin: number;
77
+ }
78
+ /**
79
+ * Result of a vault rebalance check.
80
+ */
81
+ export interface RebalanceCheckResult {
82
+ /** Whether the sacrificial vault needs to be increased */
83
+ needsRebalance: boolean;
84
+ /** How much more the sacrificial vault needs in satoshis (0n if no rebalance needed) */
85
+ deficit: bigint;
86
+ /** Current sacrificial vault coverage in satoshis */
87
+ currentCoverage: bigint;
88
+ /** Required sacrificial vault coverage in satoshis */
89
+ targetCoverage: bigint;
90
+ }
91
+ /**
92
+ * Compute the fraction of collateral that would be seized during liquidation.
93
+ *
94
+ * Formula:
95
+ * ```
96
+ * liq_penalty = LB × CF
97
+ * seized_fraction = CF × (THF - expectedHF) / (THF - liq_penalty) × LB / expectedHF
98
+ * ```
99
+ *
100
+ * @param CF - Collateral factor (e.g. 0.75)
101
+ * @param LB - Liquidation bonus (e.g. 1.05)
102
+ * @param THF - Target health factor (e.g. 1.10)
103
+ * @param expectedHF - Expected health factor at liquidation (e.g. 0.95)
104
+ * @returns Seized fraction clamped to [0, 1]
105
+ */
106
+ export declare function computeSeizedFraction(CF: number, LB: number, THF: number, expectedHF: number): number;
107
+ /**
108
+ * Compute the optimal split between a sacrificial vault and a protected vault.
109
+ *
110
+ * The sacrificial vault (index 0) is sized to cover the target seizure amount
111
+ * plus a safety margin. The protected vault (index 1) holds the remainder.
112
+ *
113
+ * @param params - Split parameters including total BTC, risk params, and safety margin
114
+ * @returns Split result with vault sizes, seized fraction, and target seizure
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * import { computeOptimalSplit } from "@babylonlabs-io/ts-sdk/tbv/integrations/aave";
119
+ *
120
+ * const result = computeOptimalSplit({
121
+ * totalBtc: 1_000_000_000n, // 10 BTC in sats
122
+ * CF: 0.75,
123
+ * LB: 1.05,
124
+ * THF: 1.10,
125
+ * expectedHF: 0.95,
126
+ * safetyMargin: 1.05,
127
+ * });
128
+ * // result.sacrificialVault ≈ 418_000_000n (4.18 BTC)
129
+ * // result.protectedVault ≈ 582_000_000n (5.82 BTC)
130
+ * ```
131
+ */
132
+ export declare function computeOptimalSplit(params: OptimalSplitParams): OptimalSplitResult;
133
+ /**
134
+ * Compute the minimum total deposit required for a 2-vault split.
135
+ *
136
+ * Both vaults must be at least `minPegin` satoshis. This function returns
137
+ * the minimum total deposit where both the sacrificial and protected vaults
138
+ * would meet the minimum peg-in requirement.
139
+ *
140
+ * @param params - Parameters including minimum peg-in, seized fraction, and safety margin
141
+ * @returns Minimum total deposit in satoshis. Returns 0n in two cases:
142
+ * - `seizedFraction * safetyMargin >= 1`: split impossible (sacrificial vault would consume entire deposit)
143
+ * - `seizedFraction <= 0`: split not useful (no seizure expected at this health factor)
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * import { computeMinDepositForSplit } from "@babylonlabs-io/ts-sdk/tbv/integrations/aave";
148
+ *
149
+ * const minDeposit = computeMinDepositForSplit({
150
+ * minPegin: 50_000n, // 0.0005 BTC
151
+ * seizedFraction: 0.398,
152
+ * safetyMargin: 1.05,
153
+ * });
154
+ * ```
155
+ */
156
+ export declare function computeMinDepositForSplit(params: MinDepositForSplitParams): bigint;
157
+ /**
158
+ * Check if the sacrificial vault (index 0) needs to be increased to cover
159
+ * the current target seizure amount.
160
+ *
161
+ * **Scope:** This function only checks whether the sacrificial vault's sizing
162
+ * is adequate. It does NOT detect whether a split exists — a single vault that
163
+ * exceeds the target coverage returns `needsRebalance: false`. Callers should
164
+ * check `vaultAmounts.length < 2` separately to detect unsplit positions.
165
+ *
166
+ * Used on position page load to detect when parameter changes (THF, CF, LB)
167
+ * have made the current split insufficient.
168
+ *
169
+ * @param params - Current vault amounts and risk parameters
170
+ * @returns Whether rebalance is needed, with deficit details
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * import { checkRebalanceNeeded } from "@babylonlabs-io/ts-sdk/tbv/integrations/aave";
175
+ *
176
+ * const result = checkRebalanceNeeded({
177
+ * vaultAmounts: [300_000_000n, 700_000_000n], // 3 BTC sacrificial, 7 BTC protected
178
+ * CF: 0.75,
179
+ * LB: 1.05,
180
+ * THF: 1.10,
181
+ * expectedHF: 0.95,
182
+ * safetyMargin: 1.05,
183
+ * });
184
+ *
185
+ * if (result.needsRebalance) {
186
+ * console.log(`Sacrificial vault needs ${result.deficit} more sats`);
187
+ * }
188
+ * ```
189
+ */
190
+ export declare function checkRebalanceNeeded(params: RebalanceCheckParams): RebalanceCheckResult;
191
+ //# sourceMappingURL=vaultSplit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultSplit.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/utils/vaultSplit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAYH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,cAAc,EAAE,OAAO,CAAC;IACxB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,MAAM,CAmBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,kBAAkB,GACzB,kBAAkB,CAgCpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CAyBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,CA+BtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonlabs-io/ts-sdk",
3
- "version": "0.0.0-semantic-release.2",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -20,10 +20,20 @@
20
20
  "require": "./dist/tbv/core/index.cjs",
21
21
  "import": "./dist/tbv/core/index.js"
22
22
  },
23
- "./tbv/integrations/morpho": {
24
- "types": "./dist/tbv/integrations/morpho/index.d.ts",
25
- "require": "./dist/tbv/integrations/morpho/index.cjs",
26
- "import": "./dist/tbv/integrations/morpho/index.js"
23
+ "./tbv/core/primitives": {
24
+ "types": "./dist/tbv/core/primitives/index.d.ts",
25
+ "require": "./dist/tbv/core/primitives/index.cjs",
26
+ "import": "./dist/tbv/core/primitives/index.js"
27
+ },
28
+ "./tbv/core/utils": {
29
+ "types": "./dist/tbv/core/utils/index.d.ts",
30
+ "require": "./dist/tbv/core/utils/index.cjs",
31
+ "import": "./dist/tbv/core/utils/index.js"
32
+ },
33
+ "./tbv/integrations/aave": {
34
+ "types": "./dist/tbv/integrations/aave/index.d.ts",
35
+ "require": "./dist/tbv/integrations/aave/index.cjs",
36
+ "import": "./dist/tbv/integrations/aave/index.js"
27
37
  },
28
38
  "./shared": {
29
39
  "types": "./dist/shared/index.d.ts",
@@ -51,27 +61,47 @@
51
61
  "author": "",
52
62
  "license": "ISC",
53
63
  "description": "TypeScript SDK for Babylon protocol integrations",
64
+ "dependencies": {
65
+ "@bitcoin-js/tiny-secp256k1-asmjs": "2.2.3",
66
+ "bitcoinjs-lib": "6.1.7",
67
+ "buffer": "6.0.3",
68
+ "@babylonlabs-io/babylon-tbv-rust-wasm": "0.1.0"
69
+ },
70
+ "peerDependencies": {
71
+ "viem": "^2.38.2"
72
+ },
54
73
  "devDependencies": {
55
74
  "@vitest/coverage-v8": "^4.0.8",
56
75
  "@vitest/ui": "^4.0.8",
76
+ "eslint-plugin-jsdoc": "^50.6.17",
77
+ "eslint-plugin-tsdoc": "^0.4.0",
57
78
  "prettier": "^3.6.2",
58
79
  "prettier-plugin-organize-imports": "^4.1.0",
80
+ "typedoc": "^0.28.5",
81
+ "typedoc-plugin-markdown": "^4.6.3",
59
82
  "typescript": "^5.8.3",
83
+ "viem": "^2.38.2",
60
84
  "vite": "^6.4.1",
61
85
  "vite-plugin-dts": "^4.3.0",
62
86
  "vitest": "^4.0.8",
63
87
  "@internal/eslint-config": "0.0.0"
64
88
  },
65
89
  "publishConfig": {
66
- "access": "public"
90
+ "access": "public",
91
+ "provenance": true
67
92
  },
68
93
  "scripts": {
69
94
  "build": "tsc -b --noEmit tsconfig.lib.json && vite build",
70
95
  "format": "prettier --check \"src/**/*.ts\"",
71
96
  "format:fix": "prettier --write \"src/**/*.ts\"",
97
+ "lint": "eslint .",
98
+ "lint:fix": "eslint . --fix",
72
99
  "test": "vitest run",
73
100
  "test:watch": "vitest",
74
101
  "test:ui": "vitest --ui",
75
- "test:coverage": "vitest run --coverage"
102
+ "test:coverage": "vitest run --coverage",
103
+ "docs:generate": "typedoc",
104
+ "docs:clean": "rm -rf docs/api && pnpm docs:generate",
105
+ "docs:validate": "typedoc --emit none"
76
106
  }
77
107
  }
@@ -1,6 +0,0 @@
1
- /**
2
- * Example test file demonstrating test patterns
3
- * This demonstrates how to structure tests in the SDK
4
- */
5
- export {};
6
- //# sourceMappingURL=example.test.d.ts.map