@babylonlabs-io/ts-sdk 0.48.0 → 0.48.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 (40) hide show
  1. package/dist/buildAndBroadcastRefund-CLvF5ETe.cjs +2 -0
  2. package/dist/{buildAndBroadcastRefund-tR9sGPwy.cjs.map → buildAndBroadcastRefund-CLvF5ETe.cjs.map} +1 -1
  3. package/dist/{buildAndBroadcastRefund-sfl7Aac9.js → buildAndBroadcastRefund-hM9Wo0VZ.js} +369 -345
  4. package/dist/{buildAndBroadcastRefund-sfl7Aac9.js.map → buildAndBroadcastRefund-hM9Wo0VZ.js.map} +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/noPayout-B2Xd40nk.cjs +2 -0
  8. package/dist/noPayout-B2Xd40nk.cjs.map +1 -0
  9. package/dist/noPayout-BwSaoU7w.js +174 -0
  10. package/dist/noPayout-BwSaoU7w.js.map +1 -0
  11. package/dist/tbv/core/index.cjs +1 -1
  12. package/dist/tbv/core/index.js +2 -2
  13. package/dist/tbv/core/primitives/index.cjs +1 -1
  14. package/dist/tbv/core/primitives/index.js +1 -1
  15. package/dist/tbv/core/primitives/psbt/refund.d.ts.map +1 -1
  16. package/dist/tbv/core/services/index.cjs +1 -1
  17. package/dist/tbv/core/services/index.js +1 -1
  18. package/dist/tbv/core/services/refund/buildAndBroadcastRefund.d.ts +20 -0
  19. package/dist/tbv/core/services/refund/buildAndBroadcastRefund.d.ts.map +1 -1
  20. package/dist/tbv/index.cjs +1 -1
  21. package/dist/tbv/index.js +2 -2
  22. package/dist/tbv/integrations/aave/clients/__tests__/hub.test.d.ts +2 -0
  23. package/dist/tbv/integrations/aave/clients/__tests__/hub.test.d.ts.map +1 -0
  24. package/dist/tbv/integrations/aave/clients/abis/AaveHub.abi.json.d.ts +24 -0
  25. package/dist/tbv/integrations/aave/clients/hub.d.ts +28 -0
  26. package/dist/tbv/integrations/aave/clients/hub.d.ts.map +1 -0
  27. package/dist/tbv/integrations/aave/clients/index.d.ts +1 -0
  28. package/dist/tbv/integrations/aave/clients/index.d.ts.map +1 -1
  29. package/dist/tbv/integrations/aave/index.cjs +1 -1
  30. package/dist/tbv/integrations/aave/index.cjs.map +1 -1
  31. package/dist/tbv/integrations/aave/index.d.ts +1 -1
  32. package/dist/tbv/integrations/aave/index.d.ts.map +1 -1
  33. package/dist/tbv/integrations/aave/index.js +246 -193
  34. package/dist/tbv/integrations/aave/index.js.map +1 -1
  35. package/package.json +3 -3
  36. package/dist/buildAndBroadcastRefund-tR9sGPwy.cjs +0 -2
  37. package/dist/noPayout-5-wtWQ_f.js +0 -154
  38. package/dist/noPayout-5-wtWQ_f.js.map +0 -1
  39. package/dist/noPayout-DNevEzJR.cjs +0 -2
  40. package/dist/noPayout-DNevEzJR.cjs.map +0 -1
package/dist/tbv/index.js CHANGED
@@ -2,7 +2,7 @@ import { a as s, b as t, c as r } from "../challengeAssert-1fy_EzAi.js";
2
2
  import { computeMinClaimValue as i, computeMinPeginFee as n, deriveVaultId as u, expandAuthAnchor as l, expandHashlockSecret as p, expandWotsSeed as d } from "@babylonlabs-io/babylon-tbv-rust-wasm";
3
3
  import { P as c, d as T, c as E, a as A, b as S, f as _, e as R } from "../assertPsbtUnsignedTxMatches-BHyBdtxs.js";
4
4
  import { b as m, e as x, f } from "../peginInput-BPRB9tUi.js";
5
- import { a as I, b as O } from "../noPayout-5-wtWQ_f.js";
5
+ import { a as I, b as O } from "../noPayout-BwSaoU7w.js";
6
6
  import { d as v, a as C, b as F, e as h, f as U, j as N, g as y, h as B, i as D, c as M, p as H, s as L, t as X, u as k, v as W } from "../bitcoin-B5aNKtsk.js";
7
7
  import { c as w } from "../signing-DaLvGwQe.js";
8
8
  import { B as Y, H as Z, K as J, M as j, T as q } from "../validation-CxqROCno.js";
@@ -18,7 +18,7 @@ import { M as re, V as oe, g as ie, a as ne, b as ue, c as le, d as pe, e as de,
18
18
  import { O as Re, S as ge, V as me, g as xe, h as fe, i as be, a as Ie, d as Oe, b as Ve, f as ve, p as Ce, r as Fe, v as he, c as Ue, e as Ne } from "../primeVpAuth-rbejoBPu.js";
19
19
  import { A as Be, D as De, b as Me, J as He, a as Le, d as Xe, P as ke, R as We, e as Ke, c as we, V as Ge } from "../types-CQDRQvV-.js";
20
20
  import { i as Ze, p as Je } from "../errors-9AkghWyk.js";
21
- import { B as qe, C as ze, p as Qe, q as $e, t as as, u as es, R as ss, a as ts, n as rs, o as os, i as is, m as ns, l as us, j as ls, r as ps, b as ds, s as Ps, v as cs, g as Ts, h as Es, d as As, c as Ss, e as _s, f as Rs, k as gs, w as ms } from "../buildAndBroadcastRefund-sfl7Aac9.js";
21
+ import { B as qe, C as ze, p as Qe, q as $e, t as as, u as es, R as ss, a as ts, n as rs, o as os, i as is, m as ns, l as us, j as ls, r as ps, b as ds, s as Ps, v as cs, g as Ts, h as Es, d as As, c as Ss, e as _s, f as Rs, k as gs, w as ms } from "../buildAndBroadcastRefund-hM9Wo0VZ.js";
22
22
  import { C as fs, P as bs, c as Is, g as Os } from "../peginState-CBAlxgXk.js";
23
23
  export {
24
24
  Be as AUTH_EXPIRED_DATA_KIND,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hub.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/clients/__tests__/hub.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ declare const _default: [
2
+ {
3
+ "type": "function",
4
+ "name": "getAssetDrawnRate",
5
+ "inputs": [
6
+ {
7
+ "name": "assetId",
8
+ "type": "uint256",
9
+ "internalType": "uint256"
10
+ }
11
+ ],
12
+ "outputs": [
13
+ {
14
+ "name": "",
15
+ "type": "uint256",
16
+ "internalType": "uint256"
17
+ }
18
+ ],
19
+ "stateMutability": "view"
20
+ }
21
+ ]
22
+ ;
23
+
24
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { Address, PublicClient } from 'viem';
2
+ /** Identifies one Hub asset to read the drawn rate for. */
3
+ export interface AssetDrawnRateRequest {
4
+ /** Hub contract address (from the reserve's `hub` field). */
5
+ hub: Address;
6
+ /** Asset identifier on that Hub (from the reserve's `assetId` field). */
7
+ assetId: number;
8
+ }
9
+ export interface AssetDrawnRateResult {
10
+ hub: Address;
11
+ assetId: number;
12
+ /** Annual borrow (drawn) rate in RAY (1e27 = 100%), or null on revert. */
13
+ rateRay: bigint | null;
14
+ error: Error | null;
15
+ }
16
+ /**
17
+ * Per-asset isolated read of `getAssetDrawnRate` for display lists (one bad
18
+ * asset ≠ whole list blank). One multicall round-trip instead of one
19
+ * `eth_call` per asset, with `allowFailure: true` so a single reverting asset
20
+ * isolates to its own error entry. A network-level multicall failure marks
21
+ * every asset failed rather than throwing — callers (display hooks) rely on
22
+ * always getting a per-asset result array.
23
+ *
24
+ * The returned rate is the linear annual rate in RAY (the Hub accrues
25
+ * interest as `rate * dt / SECONDS_PER_YEAR`), i.e. an APR, not an APY.
26
+ */
27
+ export declare function getAssetDrawnRatesSafe(publicClient: PublicClient, requests: AssetDrawnRateRequest[]): Promise<AssetDrawnRateResult[]>;
28
+ //# sourceMappingURL=hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/clients/hub.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAO,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,GAAG,EAAE,OAAO,CAAC;IACb,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,qBAAqB,EAAE,GAChC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAmCjC"}
@@ -1,5 +1,6 @@
1
1
  export { getPosition, getPositionSizeParams, } from './query.js';
2
2
  export { getDynamicReserveConfig, getReserve, getTargetHealthFactor, getUserAccountData, getUserPosition, getUserPositionAndAccountData, getUserPositions, getUserTotalDebt, getUserTotalDebts, hasCollateral, hasDebt, } from './spoke.js';
3
3
  export { getOracleAddress, getReservesPrices, getReservesPricesSafe, type ReservePriceResult, } from './oracle.js';
4
+ export { getAssetDrawnRatesSafe, type AssetDrawnRateRequest, type AssetDrawnRateResult, } from './hub.js';
4
5
  export { buildBorrowTx, buildReorderVaultsTx, buildRepayTx, buildWithdrawCollateralsTx, } from './transaction.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,OAAO,GACR,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/integrations/aave/clients/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,OAAO,GACR,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("viem"),w={WITHDRAW_COLLATERALS:"withdrawCollaterals",BORROW:"borrowFromCorePosition",REPAY:"repayToCorePosition",REORDER_VAULTS:"reorderVaults"},ne=8,ae=6,ie=100,q=1e4,H=26,G=53,W=18,K=1.5,re=1.05,Y=200n,se=1/Number(Y),M=JSON.parse('[{"type":"constructor","inputs":[{"name":"vaultBTC_","type":"address","internalType":"address"},{"name":"coreSpoke_","type":"address","internalType":"address"},{"name":"btcVaultRegistry_","type":"address","internalType":"address"},{"name":"applicationRegistry_","type":"address","internalType":"address"},{"name":"proxyManager_","type":"address","internalType":"address"},{"name":"coreVaultBtcReserveId_","type":"uint256","internalType":"uint256"},{"name":"coreWbtcReserveId_","type":"uint256","internalType":"uint256"},{"name":"protocolParams_","type":"address","internalType":"address"},{"name":"llpRegistry_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"APP_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IApplicationRegistry"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_CORE_SPOKE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITBVAaveSpoke"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_CORE_VAULT_BTC_RESERVE_ID","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_CORE_WBTC_RESERVE_ID","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBTCVaultRegistry"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TIMELOCK_UPGRADER","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VAULT_BTC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVaultBTC"}],"stateMutability":"view"},{"type":"function","name":"activateVault","inputs":[{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"vault","type":"tuple","internalType":"struct IBTCVaultRegistry.BTCVault","components":[{"name":"depositor","type":"address","internalType":"address"},{"name":"depositorBtcPubKey","type":"bytes32","internalType":"bytes32"},{"name":"depositorSignedPeginTx","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"vaultProvider","type":"address","internalType":"address"},{"name":"status","type":"uint8","internalType":"enum IBTCVaultRegistry.BTCVaultStatus"},{"name":"applicationEntryPoint","type":"address","internalType":"address"},{"name":"universalChallengersVersion","type":"uint16","internalType":"uint16"},{"name":"appVaultKeepersVersion","type":"uint16","internalType":"uint16"},{"name":"offchainParamsVersion","type":"uint16","internalType":"uint16"},{"name":"createdAt","type":"uint256","internalType":"uint256"},{"name":"verifiedAt","type":"uint256","internalType":"uint256"},{"name":"depositorWotsPkHash","type":"bytes32","internalType":"bytes32"},{"name":"hashlock","type":"bytes32","internalType":"bytes32"},{"name":"htlcVout","type":"uint8","internalType":"uint8"},{"name":"depositorPopSignature","type":"bytes","internalType":"bytes"},{"name":"prePeginTxHash","type":"bytes32","internalType":"bytes32"}]},{"name":"activationMetadata","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"applicationRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"borrowFromCorePosition","inputs":[{"name":"debtReserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"borrowedShares","type":"uint256","internalType":"uint256"},{"name":"borrowedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"freeze","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fullPause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getFairnessPaymentTokenConfig","inputs":[],"outputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getInterestFeeIndex","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"interestFeeIndex","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPosition","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"position","type":"tuple","internalType":"struct IAaveIntegrationAdapter.MarketPosition","components":[{"name":"vaultIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"totalCollateralBTC","type":"uint256","internalType":"uint256"},{"name":"proxyContract","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getPositionSizeParams","inputs":[],"outputs":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"maxVaultsPerPosition","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getVaultUsageStatus","inputs":[{"name":"vaultId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"status","type":"uint8","internalType":"enum AaveVaultHandler.VaultUsageStatus"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialTBVAdmin","type":"address","internalType":"address"},{"name":"_applicationRecipient","type":"address","internalType":"address"},{"name":"_liquidationRedemptionFeeBps","type":"uint256","internalType":"uint256"},{"name":"_initialInterestFeeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"interestFeeBps","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidPositionResolver","inputs":[{"name":"resolver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"liquidate","inputs":[{"name":"borrower","type":"address","internalType":"address"},{"name":"directBtcRedeemKey","type":"bytes32","internalType":"bytes32"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"priorityOrder","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"vaultIds","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"liquidateWithLLP","inputs":[{"name":"borrower","type":"address","internalType":"address"},{"name":"llp","type":"address","internalType":"address"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"priorityOrder","type":"uint256[]","internalType":"uint256[]"},{"name":"requestedTokens","type":"tuple[]","internalType":"struct TokenAmountLib.TokenAmount[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"vaultIds","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"liquidationRedemptionFeeBps","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauseState","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"enum ITBVPausable.PauseState"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"redeemVaultFromLLP","inputs":[{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"btcRedeemKey","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerResolver","inputs":[{"name":"resolver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeResolver","inputs":[{"name":"resolver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reorderVaults","inputs":[{"name":"permuted","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"repayToCorePosition","inputs":[{"name":"borrower","type":"address","internalType":"address"},{"name":"debtReserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"repaidFee","type":"uint256","internalType":"uint256"},{"name":"repaidShares","type":"uint256","internalType":"uint256"},{"name":"repaidAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApplicationRecipient","inputs":[{"name":"_applicationRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInterestFeeBps","inputs":[{"name":"feeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLiquidationRedemptionFeeBps","inputs":[{"name":"feeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPositionSizeParams","inputs":[{"name":"params","type":"tuple","internalType":"struct IAaveIntegrationAdapter.PositionSizeParams","components":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"maxVaultsPerPosition","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unfreeze","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaultOwner","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"withdrawCollaterals","inputs":[{"name":"vaultsToWithdraw","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"amountWithdrawn","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterApplicationRecipientUpdated","inputs":[{"name":"applicationFeeRecipient","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterLiquidationRedemptionFeeUpdated","inputs":[{"name":"liquidationRedemptionFeeBps","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AdapterPositionResolverAdded","inputs":[{"name":"positionResolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterPositionResolverRemoved","inputs":[{"name":"positionResolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BTCVaultCoreSpokeLiquidated","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"amountCollateralSeized","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueCollateralSeized","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueDebtRepaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BorrowedFromPosition","inputs":[{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"debtReserveId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"borrowAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CollateralAdded","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CollateralWithdrawn","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"FairnessPaymentFailed","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"protocolRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FairnessPaymentPaid","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"InterestFeeUpdated","inputs":[{"name":"newInterestFeeBps","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LiquidationSettledViaLLP","inputs":[{"name":"llp","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"vaultIds","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"},{"name":"payouts","type":"tuple[]","indexed":false,"internalType":"struct TokenAmountLib.TokenAmount[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"PausedWith","inputs":[{"name":"state","type":"uint8","indexed":true,"internalType":"enum ITBVPausable.PauseState"},{"name":"pauser","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PositionSizeParamsUpdated","inputs":[{"name":"newParams","type":"tuple","indexed":false,"internalType":"struct IAaveIntegrationAdapter.PositionSizeParams","components":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"maxVaultsPerPosition","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"RepaidFromPosition","inputs":[{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"debtReserveId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"repayAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unfrozen","inputs":[{"name":"pauser","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"pauser","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UserProxyCreated","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"proxy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultLiquidated","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"liquidator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultMarkedCollateralized","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VaultMarkedLLPOwned","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VaultMarkedRedeemed","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VaultOwnershipChanged","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultsReordered","inputs":[{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"newVaults","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EmptyArray","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FairnessDebtRepaymentTargetNotMet","inputs":[{"name":"target","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncompleteWithdrawal","inputs":[{"name":"expected","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidActivationMetadataVersion","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidAmountsLength","inputs":[{"name":"amountsLength","type":"uint256","internalType":"uint256"},{"name":"reserveCount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInterestFeeBps","inputs":[]},{"type":"error","name":"InvalidOraclePrice","inputs":[]},{"type":"error","name":"InvalidPositionResolver","inputs":[]},{"type":"error","name":"InvalidPriorityOrderLength","inputs":[{"name":"priorityOrderLength","type":"uint256","internalType":"uint256"},{"name":"amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidProxyContract","inputs":[]},{"type":"error","name":"InvalidReserveId","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidVaultStatus","inputs":[]},{"type":"error","name":"InvalidVaultsPermutation","inputs":[]},{"type":"error","name":"InvalidVaultsToRemove","inputs":[]},{"type":"error","name":"LLPDisabled","inputs":[{"name":"llp","type":"address","internalType":"address"}]},{"type":"error","name":"MaxPositionBelowVaultMin","inputs":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"minimumPegInAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NoDebtToLiquidate","inputs":[]},{"type":"error","name":"OnlyApplicationEntryPoint","inputs":[]},{"type":"error","name":"PositionAboveMaximum","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"maximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PositionMaxBelowVaultMax","inputs":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"vaultMaximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PositionNotLiquidatable","inputs":[]},{"type":"error","name":"PrefixLengthExceedsArray","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"TBV_AlreadyFrozen","inputs":[]},{"type":"error","name":"TBV_AlreadyPaused","inputs":[]},{"type":"error","name":"TBV_Frozen","inputs":[]},{"type":"error","name":"TBV_NotFrozen","inputs":[]},{"type":"error","name":"TBV_NotPaused","inputs":[]},{"type":"error","name":"TBV_Paused","inputs":[]},{"type":"error","name":"TBV_Unauthorized","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"VaultCountExceedsMaximum","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"maximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroAmount","inputs":[]},{"type":"error","name":"ZeroBorrowAmount","inputs":[]},{"type":"error","name":"ZeroBtcKey","inputs":[]}]');async function ue(e,t,n){const a=await e.readContract({address:t,abi:M,functionName:"getPosition",args:[n]});return a.proxyContract===h.zeroAddress?null:{proxyContract:a.proxyContract,vaultIds:a.vaultIds,totalCollateralBTC:a.totalCollateralBTC}}async function pe(e,t){const n=await e.readContract({address:t,abi:M,functionName:"getPositionSizeParams"}),[i,a]=n;return{maxPositionBTC:i,maxVaultsPerPosition:a}}function X(e){return e.drawnShares>0n||e.premiumShares>0n}const b=JSON.parse('[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ORACLE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SET_USER_POSITION_MANAGER_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"addDynamicReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"dynamicConfig","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"outputs":[{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"addReserve","inputs":[{"name":"hub","type":"address","internalType":"address"},{"name":"assetId","type":"uint256","internalType":"uint256"},{"name":"priceSource","type":"address","internalType":"address"},{"name":"config","type":"tuple","internalType":"struct ITBVAaveSpoke.ReserveConfig","components":[{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"frozen","type":"bool","internalType":"bool"},{"name":"borrowable","type":"bool","internalType":"bool"},{"name":"receiveSharesEnabled","type":"bool","internalType":"bool"}]},{"name":"dynamicConfig","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"borrow","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getDynamicReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getLiquidationBonus","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"healthFactor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLiquidationConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.LiquidationConfig","components":[{"name":"targetHealthFactor","type":"uint128","internalType":"uint128"},{"name":"healthFactorForMaxBonus","type":"uint64","internalType":"uint64"},{"name":"liquidationBonusFactor","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getLiquidationLogic","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getReserve","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.Reserve","components":[{"name":"underlying","type":"address","internalType":"address"},{"name":"hub","type":"address","internalType":"address"},{"name":"assetId","type":"uint16","internalType":"uint16"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"flags","type":"uint8","internalType":"ReserveFlags"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.ReserveConfig","components":[{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"frozen","type":"bool","internalType":"bool"},{"name":"borrowable","type":"bool","internalType":"bool"},{"name":"receiveSharesEnabled","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getReserveCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveSuppliedAssets","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveSuppliedShares","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveTotalDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserAccountData","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.UserAccountData","components":[{"name":"riskPremium","type":"uint256","internalType":"uint256"},{"name":"avgCollateralFactor","type":"uint256","internalType":"uint256"},{"name":"healthFactor","type":"uint256","internalType":"uint256"},{"name":"totalCollateralValue","type":"uint256","internalType":"uint256"},{"name":"totalDebtValueRay","type":"uint256","internalType":"uint256"},{"name":"activeCollateralCount","type":"uint256","internalType":"uint256"},{"name":"borrowCount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getUserDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserPosition","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.UserPosition","components":[{"name":"drawnShares","type":"uint120","internalType":"uint120"},{"name":"premiumShares","type":"uint120","internalType":"uint120"},{"name":"premiumOffsetRay","type":"int200","internalType":"int200"},{"name":"suppliedShares","type":"uint120","internalType":"uint120"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getUserPremiumDebtRay","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserReserveStatus","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getUserSuppliedAssets","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserSuppliedShares","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserTotalDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isPositionManager","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"positionManager","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPositionManagerActive","inputs":[{"name":"positionManager","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"liquidationCall","inputs":[{"name":"collateralReserveId","type":"uint256","internalType":"uint256"},{"name":"debtReserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"debtToCover","type":"uint256","internalType":"uint256"},{"name":"receiveShares","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"permitReserve","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"permitV","type":"uint8","internalType":"uint8"},{"name":"permitR","type":"bytes32","internalType":"bytes32"},{"name":"permitS","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renouncePositionManagerRole","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"repay","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUserPositionManager","inputs":[{"name":"positionManager","type":"address","internalType":"address"},{"name":"approve","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUserPositionManagerWithSig","inputs":[{"name":"positionManager","type":"address","internalType":"address"},{"name":"user","type":"address","internalType":"address"},{"name":"approve","type":"bool","internalType":"bool"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUsingAsCollateral","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"usingAsCollateral","type":"bool","internalType":"bool"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supply","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateDynamicReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"},{"name":"dynamicConfig","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateLiquidationConfig","inputs":[{"name":"config","type":"tuple","internalType":"struct ITBVAaveSpoke.LiquidationConfig","components":[{"name":"targetHealthFactor","type":"uint128","internalType":"uint128"},{"name":"healthFactorForMaxBonus","type":"uint64","internalType":"uint64"},{"name":"liquidationBonusFactor","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePositionManager","inputs":[{"name":"positionManager","type":"address","internalType":"address"},{"name":"active","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"params","type":"tuple","internalType":"struct ITBVAaveSpoke.ReserveConfig","components":[{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"frozen","type":"bool","internalType":"bool"},{"name":"borrowable","type":"bool","internalType":"bool"},{"name":"receiveSharesEnabled","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateReservePriceSource","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"priceSource","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateUserDynamicConfig","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateUserRiskPremium","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"error","name":"AssetNotListed","inputs":[]},{"type":"error","name":"ReserveExists","inputs":[]},{"type":"error","name":"InvalidAssetId","inputs":[]},{"type":"error","name":"ReserveNotListed","inputs":[]},{"type":"error","name":"ReserveNotBorrowable","inputs":[]},{"type":"error","name":"ReservePaused","inputs":[]},{"type":"error","name":"ReserveFrozen","inputs":[]},{"type":"error","name":"HealthFactorBelowThreshold","inputs":[]},{"type":"error","name":"CollateralCannotBeLiquidated","inputs":[]},{"type":"error","name":"ReserveNotSupplied","inputs":[]},{"type":"error","name":"ReserveNotBorrowed","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"ConfigKeyUninitialized","inputs":[]},{"type":"error","name":"InactivePositionManager","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidOracleDecimals","inputs":[]},{"type":"error","name":"InvalidCollateralRisk","inputs":[]},{"type":"error","name":"InvalidLiquidationConfig","inputs":[]},{"type":"error","name":"InvalidLiquidationFee","inputs":[]},{"type":"error","name":"InvalidCollateralFactorAndMaxLiquidationBonus","inputs":[]},{"type":"error","name":"InvalidCollateralFactor","inputs":[]},{"type":"error","name":"SelfLiquidation","inputs":[]},{"type":"error","name":"HealthFactorNotBelowThreshold","inputs":[]},{"type":"error","name":"MustNotLeaveDust","inputs":[]},{"type":"error","name":"InvalidDebtToCover","inputs":[]},{"type":"error","name":"CannotReceiveShares","inputs":[]},{"type":"error","name":"MaximumDynamicConfigKeyReached","inputs":[]}]');function U(e){return{drawnShares:e.drawnShares,premiumShares:e.premiumShares,premiumOffsetRay:e.premiumOffsetRay,suppliedShares:e.suppliedShares,dynamicConfigKey:e.dynamicConfigKey}}function Z(e){return{riskPremium:e.riskPremium,avgCollateralFactor:e.avgCollateralFactor,healthFactor:e.healthFactor,totalCollateralValue:e.totalCollateralValue,totalDebtValueRay:e.totalDebtValueRay,activeCollateralCount:e.activeCollateralCount,borrowCount:e.borrowCount}}async function oe(e,t,n){const i=await e.readContract({address:t,abi:b,functionName:"getUserAccountData",args:[n]});return Z(i)}async function ye(e,t,n,i){const[a,r]=await e.multicall({contracts:[{address:t,abi:b,functionName:"getUserPosition",args:[n,i]},{address:t,abi:b,functionName:"getUserAccountData",args:[i]}],allowFailure:!1});return{position:U(a),accountData:Z(r)}}async function O(e,t,n,i){const a=await e.readContract({address:t,abi:b,functionName:"getUserPosition",args:[n,i]});return U(a)}async function le(e,t,n,i){const a=await O(e,t,n,i);return X(a)}async function de(e,t,n,i){return(await O(e,t,n,i)).suppliedShares>0n}async function me(e,t,n,i){return await e.readContract({address:t,abi:b,functionName:"getUserTotalDebt",args:[n,i]})}async function ce(e,t,n,i){return n.length===0?[]:(await e.multicall({contracts:n.map(r=>({address:t,abi:b,functionName:"getUserPosition",args:[r,i]})),allowFailure:!0})).map(r=>r.status==="success"?U(r.result):null)}async function Te(e,t,n,i){return n.length===0?[]:await e.multicall({contracts:n.map(r=>({address:t,abi:b,functionName:"getUserTotalDebt",args:[r,i]})),allowFailure:!1})}async function be(e,t,n){return await e.readContract({address:t,abi:b,functionName:"getReserve",args:[n]})}async function fe(e,t){return(await e.readContract({address:t,abi:b,functionName:"getLiquidationConfig"})).targetHealthFactor}async function ve(e,t,n,i){return await e.readContract({address:t,abi:b,functionName:"getDynamicReserveConfig",args:[n,i]})}const J=[{inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{name:"reserveIds",type:"uint256[]"}],name:"getReservesPrices",outputs:[{name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{name:"reserveId",type:"uint256"}],name:"getReserveSource",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{type:"error",name:"InvalidSource",inputs:[{name:"reserveId",type:"uint256"}]},{type:"error",name:"InvalidPrice",inputs:[{name:"reserveId",type:"uint256"}]}];async function ge(e,t){return await e.readContract({address:t,abi:b,functionName:"ORACLE"})}async function Re(e,t,n){return await e.readContract({address:t,abi:J,functionName:"getReservesPrices",args:[n]})}async function Ae(e,t,n){if(n.length===0)return[];let i;try{i=await e.multicall({contracts:n.map(a=>({address:t,abi:J,functionName:"getReservesPrices",args:[[a]]})),allowFailure:!0})}catch(a){const r=a instanceof Error?a:new Error(String(a));return n.map(s=>({reserveId:s,priceRaw:null,error:r}))}return i.map((a,r)=>{const s=n[r];if(a.status!=="success"){const o=a.error instanceof Error?a.error:new Error(String(a.error??"getReservesPrices reverted"));return{reserveId:s,priceRaw:null,error:o}}const[u]=a.result;return{reserveId:s,priceRaw:u,error:null}})}function Ie(e,t){const n=h.encodeFunctionData({abi:M,functionName:w.REORDER_VAULTS,args:[t]});return{to:e,data:n}}function Ce(e,t){const n=h.encodeFunctionData({abi:M,functionName:w.WITHDRAW_COLLATERALS,args:[t]});return{to:e,data:n}}function Se(e,t,n,i){const a=h.encodeFunctionData({abi:M,functionName:w.BORROW,args:[t,n,i]});return{to:e,data:a}}function Me(e,t,n,i){const a=h.encodeFunctionData({abi:M,functionName:w.REPAY,args:[t,n,i]});return{to:e,data:a}}function Pe(e){return Number(e)/10**H}function he(e){return Number(e)/10**G}function we(e){return Number(e)/10**W}function Be(e,t){return t<=0?"0%":`${(e/t*100).toFixed(1)}%`}function $(e,t){return t?e===null?"safe":e<1?"danger":e<K?"warning":"safe":"no_debt"}function Fe(e){return e===null?!0:e>=1}function _e(e){const t=isFinite(e),n=isFinite(e)?e:null;return $(n,t)}function Ee(e,t,n){return t<=0?1/0:e*(n/q)/t}function xe(e,t){if(t<=0)return{vaultIds:[],actualAmount:0};const n=[...e].sort((r,s)=>s.amount-r.amount),i=[];let a=0;for(const r of n){if(a>=t)break;i.push(r.id),a+=r.amount}return{vaultIds:i,actualAmount:a}}function Ve(e){return e.reduce((t,n)=>t+n.amount,0)}const Le=.01,j=20,Q=.01;function De(e,t,n){if(e.length===0)return[];const a=e.reduce((u,o)=>u+o.btc,0)*t*(1-n);let r=0,s=0;for(;s<e.length&&r<a;)r+=e[s].btc,s++;return e.slice(0,s)}function Ue(e,t,n,i,a,r,s,u,o){const y=u*r,l=n/(t*r),d=t*a,T=Math.max(0,e-d),m=s-y,c=m===0?n:n*((s-o)/m);let v;if(i)v=0;else{const g=T*l/u,f=Math.min(g,n-c);v=Math.max(0,n-c-f)}return{debtAfter:v,btcAfter:Math.max(0,t-e)}}function D(e,t,n,i,a,r,s,u){let o=[...e],y=t;const l=e.reduce((c,v)=>c+v.btc,0);let d=-1,T=0,m=0;for(;o.length>0&&y>Q&&m<j;){const c=o.reduce((B,p)=>B+p.btc,0),v=c*n*(1-i);let g=0,f=0;for(;f<o.length&&g<v;)g+=o[f].btc,f++;const V=f>=o.length,{debtAfter:P}=Ue(g,c,y,V,n,a,r,s,u);o=o.slice(f),y=P;const C=c-g;T+=C,d<0&&(d=C),m++}return{sumBtcAfterEvents:T,btcAfterG1:d<0?l:d}}const Oe=10;function Ne(e,t){const n=e.map(i=>({vaults:[i],sum:i.btc}));for(n.sort((i,a)=>a.sum-i.sum);n.length>t;){const i=n.pop(),a=n.pop(),r={vaults:[...i.vaults,...a.vaults],sum:i.sum+a.sum};let s=!1;for(let u=0;u<n.length;u++)if(r.sum>n[u].sum){n.splice(u,0,r),s=!0;break}s||n.push(r)}for(const i of n)i.vaults.sort((a,r)=>r.btc-a.btc);return n}function ze(e,t,n,i,a,r,s,u){if(e.length===0)return{order:[],sumBtcAfterEvents:0,btcAfterG1:0};if(e.length===1){const p=D(e,t,n,i,a,r,s,u);return{order:[...e],...p}}const o=Ne(e,Oe),y=o.length,l=1<<y,d=o.reduce((p,R)=>p+R.sum,0),T=n*(1-i),m=new Float64Array(l);for(let p=1;p<l;p++){const R=p&-p,A=31-Math.clz32(R);m[p]=m[p^R]+o[A].sum}const c=new Float64Array(l),v=new Float64Array(l),g=new Int32Array(l);c.fill(-1/0),g.fill(-1),c[0]=0;const f=1e-9;for(let p=1;p<l;p++){const R=d-m[p];let A=-1/0,I=-1/0,F=-1;for(let S=p;S>0;S=S-1&p){const _=p^S,N=c[_];if(N===-1/0)continue;const te=d-m[_];if(m[S]<te*T)continue;const L=N+R,z=_===0?d-m[S]:v[_];(L>A+f||Math.abs(L-A)<=f&&z>I+f)&&(A=L,I=z,F=S)}c[p]=A,v[p]=I,g[p]=F}const V=l-1,P=[];for(let p=V;p>0;){const R=g[p];if(R===-1)break;const A=[];for(let I=0;I<y;I++)R&1<<I&&A.push(...o[I].vaults);A.sort((I,F)=>F.btc-I.btc),P.push(A),p^=R}P.reverse();const C=P.flat();if(C.length!==e.length)throw new Error(`DP reconstruction failed — expected ${e.length} vaults in order, got ${C.length}.`);const B=D(C,t,n,i,a,r,s,u);return{order:C,sumBtcAfterEvents:B.sumBtcAfterEvents,btcAfterG1:B.btcAfterG1}}const ke=BigInt(Number.MAX_SAFE_INTEGER),k=2000n;function E(e,t){if(e>ke)throw new RangeError(`${t} (${e}) exceeds Number.MAX_SAFE_INTEGER; precision would be lost`)}function ee(e,t,n,i){if(i<=0)return{seizedFraction:1,seizedFractionRaw:1/0};const a=t*e;if(n<=a)return{seizedFraction:1,seizedFractionRaw:1/0};const r=e*(n-i)/(n-a)*(t/i);return{seizedFraction:Math.max(0,Math.min(1,r)),seizedFractionRaw:r}}function x(e,t,n,i){return ee(e,t,n,i).seizedFraction}function qe(e){const{totalBtc:t,CF:n,LB:i,THF:a,expectedHF:r,safetyMargin:s}=e;if(t<=0n)return{sacrificialVault:0n,protectedVault:0n,seizedFraction:0,targetSeizureBtc:0n};E(t,"totalBtc");const u=x(n,i,a,r),o=Number(t),y=BigInt(Math.ceil(o*u)),l=BigInt(Math.ceil(o*u*s)),d=l>t?t:l,T=t-d;return d>0n&&d<k||T>0n&&T<k?{sacrificialVault:0n,protectedVault:0n,seizedFraction:u,targetSeizureBtc:0n}:{sacrificialVault:d,protectedVault:T,seizedFraction:u,targetSeizureBtc:y}}function He(e){const{minPegin:t,seizedFraction:n,safetyMargin:i}=e;E(t,"minPegin");const a=n*i;if(a>=1||a<=0)return 0n;const r=1-a,s=Math.ceil(Number(t)/r),u=Math.ceil(Number(t)/a);return BigInt(Math.max(s,u))}function Ge(e){const{vaultAmounts:t,CF:n,LB:i,THF:a,expectedHF:r,safetyMargin:s}=e;if(t.length===0)return{needsRebalance:!1,deficit:0n,currentCoverage:0n,targetCoverage:0n};const u=t.reduce((T,m)=>T+m,0n);E(u,"totalBtc");const o=x(n,i,a,r),y=BigInt(Math.ceil(Number(u)*o*s)),l=t[0],d=y>l?y-l:0n;return{needsRebalance:d>0n,deficit:d,currentCoverage:l,targetCoverage:y}}function We(e){const{totalCollateralSats:t,CF:n,LB:i,THF:a,expectedHF:r}=e;if(t<=0n)return 0n;E(t,"totalCollateralSats");const s=x(n,i,a,r);return BigInt(Math.ceil(Number(t)*s))}function Ke(e){const{orderedVaults:t,targetSeizureSats:n}=e;if(t.length===0)throw new Error("orderedVaults must not be empty");if(n<=0n)throw new Error("targetSeizureSats must be positive; use computeTargetSeizureSats to derive it");let i=0n,a=t.length;for(let y=0;y<t.length;y++)if(i+=t[y].amountSats,i>=n){a=y+1;break}const r=t.slice(0,a),s=t.slice(a),u=i,o=u>n?u-n:0n;return{seizedVaults:r,protectedVaults:s,overSeizureSats:o,cutoffIndex:a,totalSeizedSats:u}}exports.AAVE_BASE_CURRENCY_DECIMALS=H;exports.AAVE_BASE_CURRENCY_RAY_DECIMALS=G;exports.AAVE_FUNCTION_NAMES=w;exports.AaveIntegrationAdapterABI=M;exports.AaveSpokeABI=b;exports.BPS_SCALE=q;exports.BPS_TO_PERCENT_DIVISOR=ie;exports.BTC_DECIMALS=ne;exports.FULL_REPAY_BUFFER_DIVISOR=Y;exports.FULL_REPAY_BUFFER_FRACTION=se;exports.HEALTH_FACTOR_WARNING_THRESHOLD=K;exports.MAX_GROUPS=j;exports.MIN_DEBT_THRESHOLD=Q;exports.MIN_HEALTH_FACTOR_FOR_BORROW=re;exports.SEIZURE_TOL=Le;exports.USDC_DECIMALS=ae;exports.WAD_DECIMALS=W;exports.aaveRayValueToUsd=he;exports.aaveValueToUsd=Pe;exports.buildBorrowTx=Se;exports.buildReorderVaultsTx=Ie;exports.buildRepayTx=Me;exports.buildWithdrawCollateralsTx=Ce;exports.calculateBorrowRatio=Be;exports.calculateHealthFactor=Ee;exports.calculateTotalVaultAmount=Ve;exports.checkRebalanceNeeded=Ge;exports.computeMinDepositForSplit=He;exports.computeOptimalOrder=ze;exports.computeOptimalSplit=qe;exports.computeSeizedFraction=x;exports.computeSeizedFractionDetailed=ee;exports.computeTargetSeizureSats=We;exports.getDynamicReserveConfig=ve;exports.getGroup1FromOrder=De;exports.getHealthFactorStatus=$;exports.getHealthFactorStatusFromValue=_e;exports.getOracleAddress=ge;exports.getPosition=ue;exports.getPositionSizeParams=pe;exports.getReserve=be;exports.getReservesPrices=Re;exports.getReservesPricesSafe=Ae;exports.getTargetHealthFactor=fe;exports.getUserAccountData=oe;exports.getUserPosition=O;exports.getUserPositionAndAccountData=ye;exports.getUserPositions=ce;exports.getUserTotalDebt=me;exports.getUserTotalDebts=Te;exports.hasCollateral=de;exports.hasDebt=le;exports.hasDebtFromPosition=X;exports.isHealthFactorHealthy=Fe;exports.selectVaultsForAmount=xe;exports.simulateCascade=D;exports.simulatePrefixSeizure=Ke;exports.wadToNumber=we;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("viem"),P={WITHDRAW_COLLATERALS:"withdrawCollaterals",BORROW:"borrowFromCorePosition",REPAY:"repayToCorePosition",REORDER_VAULTS:"reorderVaults"},ne=8,ae=6,ie=100,H=1e4,q=26,G=53,W=18,K=1.5,re=1.05,Y=200n,se=1/Number(Y),M=JSON.parse('[{"type":"constructor","inputs":[{"name":"vaultBTC_","type":"address","internalType":"address"},{"name":"coreSpoke_","type":"address","internalType":"address"},{"name":"btcVaultRegistry_","type":"address","internalType":"address"},{"name":"applicationRegistry_","type":"address","internalType":"address"},{"name":"proxyManager_","type":"address","internalType":"address"},{"name":"coreVaultBtcReserveId_","type":"uint256","internalType":"uint256"},{"name":"coreWbtcReserveId_","type":"uint256","internalType":"uint256"},{"name":"protocolParams_","type":"address","internalType":"address"},{"name":"llpRegistry_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"APP_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IApplicationRegistry"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_CORE_SPOKE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITBVAaveSpoke"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_CORE_VAULT_BTC_RESERVE_ID","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_CORE_WBTC_RESERVE_ID","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"BTC_VAULT_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBTCVaultRegistry"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TIMELOCK_UPGRADER","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VAULT_BTC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVaultBTC"}],"stateMutability":"view"},{"type":"function","name":"activateVault","inputs":[{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"vault","type":"tuple","internalType":"struct IBTCVaultRegistry.BTCVault","components":[{"name":"depositor","type":"address","internalType":"address"},{"name":"depositorBtcPubKey","type":"bytes32","internalType":"bytes32"},{"name":"depositorSignedPeginTx","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"vaultProvider","type":"address","internalType":"address"},{"name":"status","type":"uint8","internalType":"enum IBTCVaultRegistry.BTCVaultStatus"},{"name":"applicationEntryPoint","type":"address","internalType":"address"},{"name":"universalChallengersVersion","type":"uint16","internalType":"uint16"},{"name":"appVaultKeepersVersion","type":"uint16","internalType":"uint16"},{"name":"offchainParamsVersion","type":"uint16","internalType":"uint16"},{"name":"createdAt","type":"uint256","internalType":"uint256"},{"name":"verifiedAt","type":"uint256","internalType":"uint256"},{"name":"depositorWotsPkHash","type":"bytes32","internalType":"bytes32"},{"name":"hashlock","type":"bytes32","internalType":"bytes32"},{"name":"htlcVout","type":"uint8","internalType":"uint8"},{"name":"depositorPopSignature","type":"bytes","internalType":"bytes"},{"name":"prePeginTxHash","type":"bytes32","internalType":"bytes32"}]},{"name":"activationMetadata","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"applicationRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"borrowFromCorePosition","inputs":[{"name":"debtReserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"receiver","type":"address","internalType":"address"}],"outputs":[{"name":"borrowedShares","type":"uint256","internalType":"uint256"},{"name":"borrowedAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"freeze","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fullPause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getFairnessPaymentTokenConfig","inputs":[],"outputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getInterestFeeIndex","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"interestFeeIndex","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPosition","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"position","type":"tuple","internalType":"struct IAaveIntegrationAdapter.MarketPosition","components":[{"name":"vaultIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"totalCollateralBTC","type":"uint256","internalType":"uint256"},{"name":"proxyContract","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getPositionSizeParams","inputs":[],"outputs":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"maxVaultsPerPosition","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getVaultUsageStatus","inputs":[{"name":"vaultId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"status","type":"uint8","internalType":"enum AaveVaultHandler.VaultUsageStatus"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialTBVAdmin","type":"address","internalType":"address"},{"name":"_applicationRecipient","type":"address","internalType":"address"},{"name":"_liquidationRedemptionFeeBps","type":"uint256","internalType":"uint256"},{"name":"_initialInterestFeeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"interestFeeBps","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidPositionResolver","inputs":[{"name":"resolver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"liquidate","inputs":[{"name":"borrower","type":"address","internalType":"address"},{"name":"directBtcRedeemKey","type":"bytes32","internalType":"bytes32"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"priorityOrder","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"vaultIds","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"liquidateWithLLP","inputs":[{"name":"borrower","type":"address","internalType":"address"},{"name":"llp","type":"address","internalType":"address"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"priorityOrder","type":"uint256[]","internalType":"uint256[]"},{"name":"requestedTokens","type":"tuple[]","internalType":"struct TokenAmountLib.TokenAmount[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"vaultIds","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"liquidationRedemptionFeeBps","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauseState","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"enum ITBVPausable.PauseState"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"redeemVaultFromLLP","inputs":[{"name":"vaultId","type":"bytes32","internalType":"bytes32"},{"name":"btcRedeemKey","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerResolver","inputs":[{"name":"resolver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeResolver","inputs":[{"name":"resolver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reorderVaults","inputs":[{"name":"permuted","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"repayToCorePosition","inputs":[{"name":"borrower","type":"address","internalType":"address"},{"name":"debtReserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"repaidFee","type":"uint256","internalType":"uint256"},{"name":"repaidShares","type":"uint256","internalType":"uint256"},{"name":"repaidAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApplicationRecipient","inputs":[{"name":"_applicationRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInterestFeeBps","inputs":[{"name":"feeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLiquidationRedemptionFeeBps","inputs":[{"name":"feeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPositionSizeParams","inputs":[{"name":"params","type":"tuple","internalType":"struct IAaveIntegrationAdapter.PositionSizeParams","components":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"maxVaultsPerPosition","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unfreeze","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaultOwner","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"withdrawCollaterals","inputs":[{"name":"vaultsToWithdraw","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"amountWithdrawn","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"AdapterApplicationRecipientUpdated","inputs":[{"name":"applicationFeeRecipient","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterLiquidationRedemptionFeeUpdated","inputs":[{"name":"liquidationRedemptionFeeBps","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AdapterPositionResolverAdded","inputs":[{"name":"positionResolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AdapterPositionResolverRemoved","inputs":[{"name":"positionResolver","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BTCVaultCoreSpokeLiquidated","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"amountCollateralSeized","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueCollateralSeized","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"valueDebtRepaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BorrowedFromPosition","inputs":[{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"debtReserveId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"borrowAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CollateralAdded","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CollateralWithdrawn","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"FairnessPaymentFailed","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"protocolRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FairnessPaymentPaid","inputs":[{"name":"positionAccount","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"InterestFeeUpdated","inputs":[{"name":"newInterestFeeBps","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"LiquidationSettledViaLLP","inputs":[{"name":"llp","type":"address","indexed":true,"internalType":"address"},{"name":"liquidator","type":"address","indexed":true,"internalType":"address"},{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"vaultIds","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"},{"name":"payouts","type":"tuple[]","indexed":false,"internalType":"struct TokenAmountLib.TokenAmount[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"PausedWith","inputs":[{"name":"state","type":"uint8","indexed":true,"internalType":"enum ITBVPausable.PauseState"},{"name":"pauser","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PositionSizeParamsUpdated","inputs":[{"name":"newParams","type":"tuple","indexed":false,"internalType":"struct IAaveIntegrationAdapter.PositionSizeParams","components":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"maxVaultsPerPosition","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"RepaidFromPosition","inputs":[{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"debtReserveId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"repayAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unfrozen","inputs":[{"name":"pauser","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"pauser","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UserProxyCreated","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"proxy","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultLiquidated","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"liquidator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultMarkedCollateralized","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VaultMarkedLLPOwned","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VaultMarkedRedeemed","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VaultOwnershipChanged","inputs":[{"name":"vaultId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultsReordered","inputs":[{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"newVaults","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EmptyArray","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FairnessDebtRepaymentTargetNotMet","inputs":[{"name":"target","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncompleteWithdrawal","inputs":[{"name":"expected","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidActivationMetadataVersion","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidAmountsLength","inputs":[{"name":"amountsLength","type":"uint256","internalType":"uint256"},{"name":"reserveCount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInterestFeeBps","inputs":[]},{"type":"error","name":"InvalidOraclePrice","inputs":[]},{"type":"error","name":"InvalidPositionResolver","inputs":[]},{"type":"error","name":"InvalidPriorityOrderLength","inputs":[{"name":"priorityOrderLength","type":"uint256","internalType":"uint256"},{"name":"amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidProxyContract","inputs":[]},{"type":"error","name":"InvalidReserveId","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidVaultStatus","inputs":[]},{"type":"error","name":"InvalidVaultsPermutation","inputs":[]},{"type":"error","name":"InvalidVaultsToRemove","inputs":[]},{"type":"error","name":"LLPDisabled","inputs":[{"name":"llp","type":"address","internalType":"address"}]},{"type":"error","name":"MaxPositionBelowVaultMin","inputs":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"minimumPegInAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NoDebtToLiquidate","inputs":[]},{"type":"error","name":"OnlyApplicationEntryPoint","inputs":[]},{"type":"error","name":"PositionAboveMaximum","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"maximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PositionMaxBelowVaultMax","inputs":[{"name":"maxPositionBTC","type":"uint256","internalType":"uint256"},{"name":"vaultMaximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PositionNotLiquidatable","inputs":[]},{"type":"error","name":"PrefixLengthExceedsArray","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"TBV_AlreadyFrozen","inputs":[]},{"type":"error","name":"TBV_AlreadyPaused","inputs":[]},{"type":"error","name":"TBV_Frozen","inputs":[]},{"type":"error","name":"TBV_NotFrozen","inputs":[]},{"type":"error","name":"TBV_NotPaused","inputs":[]},{"type":"error","name":"TBV_Paused","inputs":[]},{"type":"error","name":"TBV_Unauthorized","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"VaultCountExceedsMaximum","inputs":[{"name":"actual","type":"uint256","internalType":"uint256"},{"name":"maximum","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroAmount","inputs":[]},{"type":"error","name":"ZeroBorrowAmount","inputs":[]},{"type":"error","name":"ZeroBtcKey","inputs":[]}]');async function ue(e,t,n){const i=await e.readContract({address:t,abi:M,functionName:"getPosition",args:[n]});return i.proxyContract===h.zeroAddress?null:{proxyContract:i.proxyContract,vaultIds:i.vaultIds,totalCollateralBTC:i.totalCollateralBTC}}async function pe(e,t){const n=await e.readContract({address:t,abi:M,functionName:"getPositionSizeParams"}),[a,i]=n;return{maxPositionBTC:a,maxVaultsPerPosition:i}}function X(e){return e.drawnShares>0n||e.premiumShares>0n}const b=JSON.parse('[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ORACLE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"SET_USER_POSITION_MANAGER_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"addDynamicReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"dynamicConfig","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"outputs":[{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"addReserve","inputs":[{"name":"hub","type":"address","internalType":"address"},{"name":"assetId","type":"uint256","internalType":"uint256"},{"name":"priceSource","type":"address","internalType":"address"},{"name":"config","type":"tuple","internalType":"struct ITBVAaveSpoke.ReserveConfig","components":[{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"frozen","type":"bool","internalType":"bool"},{"name":"borrowable","type":"bool","internalType":"bool"},{"name":"receiveSharesEnabled","type":"bool","internalType":"bool"}]},{"name":"dynamicConfig","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"borrow","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getDynamicReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getLiquidationBonus","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"healthFactor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLiquidationConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.LiquidationConfig","components":[{"name":"targetHealthFactor","type":"uint128","internalType":"uint128"},{"name":"healthFactorForMaxBonus","type":"uint64","internalType":"uint64"},{"name":"liquidationBonusFactor","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getLiquidationLogic","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getReserve","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.Reserve","components":[{"name":"underlying","type":"address","internalType":"address"},{"name":"hub","type":"address","internalType":"address"},{"name":"assetId","type":"uint16","internalType":"uint16"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"flags","type":"uint8","internalType":"ReserveFlags"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.ReserveConfig","components":[{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"frozen","type":"bool","internalType":"bool"},{"name":"borrowable","type":"bool","internalType":"bool"},{"name":"receiveSharesEnabled","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getReserveCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveSuppliedAssets","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveSuppliedShares","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserveTotalDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserAccountData","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.UserAccountData","components":[{"name":"riskPremium","type":"uint256","internalType":"uint256"},{"name":"avgCollateralFactor","type":"uint256","internalType":"uint256"},{"name":"healthFactor","type":"uint256","internalType":"uint256"},{"name":"totalCollateralValue","type":"uint256","internalType":"uint256"},{"name":"totalDebtValueRay","type":"uint256","internalType":"uint256"},{"name":"activeCollateralCount","type":"uint256","internalType":"uint256"},{"name":"borrowCount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getUserDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserPosition","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITBVAaveSpoke.UserPosition","components":[{"name":"drawnShares","type":"uint120","internalType":"uint120"},{"name":"premiumShares","type":"uint120","internalType":"uint120"},{"name":"premiumOffsetRay","type":"int200","internalType":"int200"},{"name":"suppliedShares","type":"uint120","internalType":"uint120"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"}]}],"stateMutability":"view"},{"type":"function","name":"getUserPremiumDebtRay","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserReserveStatus","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getUserSuppliedAssets","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserSuppliedShares","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserTotalDebt","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isPositionManager","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"positionManager","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPositionManagerActive","inputs":[{"name":"positionManager","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"liquidationCall","inputs":[{"name":"collateralReserveId","type":"uint256","internalType":"uint256"},{"name":"debtReserveId","type":"uint256","internalType":"uint256"},{"name":"user","type":"address","internalType":"address"},{"name":"debtToCover","type":"uint256","internalType":"uint256"},{"name":"receiveShares","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"permitReserve","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"permitV","type":"uint8","internalType":"uint8"},{"name":"permitR","type":"bytes32","internalType":"bytes32"},{"name":"permitS","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renouncePositionManagerRole","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"repay","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUserPositionManager","inputs":[{"name":"positionManager","type":"address","internalType":"address"},{"name":"approve","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUserPositionManagerWithSig","inputs":[{"name":"positionManager","type":"address","internalType":"address"},{"name":"user","type":"address","internalType":"address"},{"name":"approve","type":"bool","internalType":"bool"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUsingAsCollateral","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"usingAsCollateral","type":"bool","internalType":"bool"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supply","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateDynamicReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"dynamicConfigKey","type":"uint32","internalType":"uint32"},{"name":"dynamicConfig","type":"tuple","internalType":"struct ITBVAaveSpoke.DynamicReserveConfig","components":[{"name":"collateralFactor","type":"uint16","internalType":"uint16"},{"name":"maxLiquidationBonus","type":"uint32","internalType":"uint32"},{"name":"liquidationFee","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateLiquidationConfig","inputs":[{"name":"config","type":"tuple","internalType":"struct ITBVAaveSpoke.LiquidationConfig","components":[{"name":"targetHealthFactor","type":"uint128","internalType":"uint128"},{"name":"healthFactorForMaxBonus","type":"uint64","internalType":"uint64"},{"name":"liquidationBonusFactor","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePositionManager","inputs":[{"name":"positionManager","type":"address","internalType":"address"},{"name":"active","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateReserveConfig","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"params","type":"tuple","internalType":"struct ITBVAaveSpoke.ReserveConfig","components":[{"name":"collateralRisk","type":"uint24","internalType":"uint24"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"frozen","type":"bool","internalType":"bool"},{"name":"borrowable","type":"bool","internalType":"bool"},{"name":"receiveSharesEnabled","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateReservePriceSource","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"priceSource","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateUserDynamicConfig","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateUserRiskPremium","inputs":[{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"reserveId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"onBehalfOf","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"error","name":"AssetNotListed","inputs":[]},{"type":"error","name":"ReserveExists","inputs":[]},{"type":"error","name":"InvalidAssetId","inputs":[]},{"type":"error","name":"ReserveNotListed","inputs":[]},{"type":"error","name":"ReserveNotBorrowable","inputs":[]},{"type":"error","name":"ReservePaused","inputs":[]},{"type":"error","name":"ReserveFrozen","inputs":[]},{"type":"error","name":"HealthFactorBelowThreshold","inputs":[]},{"type":"error","name":"CollateralCannotBeLiquidated","inputs":[]},{"type":"error","name":"ReserveNotSupplied","inputs":[]},{"type":"error","name":"ReserveNotBorrowed","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"ConfigKeyUninitialized","inputs":[]},{"type":"error","name":"InactivePositionManager","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidOracleDecimals","inputs":[]},{"type":"error","name":"InvalidCollateralRisk","inputs":[]},{"type":"error","name":"InvalidLiquidationConfig","inputs":[]},{"type":"error","name":"InvalidLiquidationFee","inputs":[]},{"type":"error","name":"InvalidCollateralFactorAndMaxLiquidationBonus","inputs":[]},{"type":"error","name":"InvalidCollateralFactor","inputs":[]},{"type":"error","name":"SelfLiquidation","inputs":[]},{"type":"error","name":"HealthFactorNotBelowThreshold","inputs":[]},{"type":"error","name":"MustNotLeaveDust","inputs":[]},{"type":"error","name":"InvalidDebtToCover","inputs":[]},{"type":"error","name":"CannotReceiveShares","inputs":[]},{"type":"error","name":"MaximumDynamicConfigKeyReached","inputs":[]}]');function U(e){return{drawnShares:e.drawnShares,premiumShares:e.premiumShares,premiumOffsetRay:e.premiumOffsetRay,suppliedShares:e.suppliedShares,dynamicConfigKey:e.dynamicConfigKey}}function Z(e){return{riskPremium:e.riskPremium,avgCollateralFactor:e.avgCollateralFactor,healthFactor:e.healthFactor,totalCollateralValue:e.totalCollateralValue,totalDebtValueRay:e.totalDebtValueRay,activeCollateralCount:e.activeCollateralCount,borrowCount:e.borrowCount}}async function oe(e,t,n){const a=await e.readContract({address:t,abi:b,functionName:"getUserAccountData",args:[n]});return Z(a)}async function ye(e,t,n,a){const[i,r]=await e.multicall({contracts:[{address:t,abi:b,functionName:"getUserPosition",args:[n,a]},{address:t,abi:b,functionName:"getUserAccountData",args:[a]}],allowFailure:!1});return{position:U(i),accountData:Z(r)}}async function O(e,t,n,a){const i=await e.readContract({address:t,abi:b,functionName:"getUserPosition",args:[n,a]});return U(i)}async function le(e,t,n,a){const i=await O(e,t,n,a);return X(i)}async function de(e,t,n,a){return(await O(e,t,n,a)).suppliedShares>0n}async function me(e,t,n,a){return await e.readContract({address:t,abi:b,functionName:"getUserTotalDebt",args:[n,a]})}async function ce(e,t,n,a){return n.length===0?[]:(await e.multicall({contracts:n.map(r=>({address:t,abi:b,functionName:"getUserPosition",args:[r,a]})),allowFailure:!0})).map(r=>r.status==="success"?U(r.result):null)}async function Te(e,t,n,a){return n.length===0?[]:await e.multicall({contracts:n.map(r=>({address:t,abi:b,functionName:"getUserTotalDebt",args:[r,a]})),allowFailure:!1})}async function be(e,t,n){return await e.readContract({address:t,abi:b,functionName:"getReserve",args:[n]})}async function fe(e,t){return(await e.readContract({address:t,abi:b,functionName:"getLiquidationConfig"})).targetHealthFactor}async function ve(e,t,n,a){return await e.readContract({address:t,abi:b,functionName:"getDynamicReserveConfig",args:[n,a]})}const J=[{inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{name:"reserveIds",type:"uint256[]"}],name:"getReservesPrices",outputs:[{name:"",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{name:"reserveId",type:"uint256"}],name:"getReserveSource",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{type:"error",name:"InvalidSource",inputs:[{name:"reserveId",type:"uint256"}]},{type:"error",name:"InvalidPrice",inputs:[{name:"reserveId",type:"uint256"}]}];async function ge(e,t){return await e.readContract({address:t,abi:b,functionName:"ORACLE"})}async function Re(e,t,n){return await e.readContract({address:t,abi:J,functionName:"getReservesPrices",args:[n]})}async function Ae(e,t,n){if(n.length===0)return[];let a;try{a=await e.multicall({contracts:n.map(i=>({address:t,abi:J,functionName:"getReservesPrices",args:[[i]]})),allowFailure:!0})}catch(i){const r=i instanceof Error?i:new Error(String(i));return n.map(s=>({reserveId:s,priceRaw:null,error:r}))}return a.map((i,r)=>{const s=n[r];if(i.status!=="success"){const o=i.error instanceof Error?i.error:new Error(String(i.error??"getReservesPrices reverted"));return{reserveId:s,priceRaw:null,error:o}}const[u]=i.result;return{reserveId:s,priceRaw:u,error:null}})}const Ie=[{type:"function",name:"getAssetDrawnRate",inputs:[{name:"assetId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"}];async function Se(e,t){if(t.length===0)return[];let n;try{n=await e.multicall({contracts:t.map(({hub:a,assetId:i})=>({address:a,abi:Ie,functionName:"getAssetDrawnRate",args:[BigInt(i)]})),allowFailure:!0})}catch(a){const i=a instanceof Error?a:new Error(String(a));return t.map(({hub:r,assetId:s})=>({hub:r,assetId:s,rateRay:null,error:i}))}return n.map((a,i)=>{const{hub:r,assetId:s}=t[i];if(a.status!=="success"){const u=a.error instanceof Error?a.error:new Error(String(a.error??"getAssetDrawnRate reverted"));return{hub:r,assetId:s,rateRay:null,error:u}}return{hub:r,assetId:s,rateRay:a.result,error:null}})}function Ce(e,t){const n=h.encodeFunctionData({abi:M,functionName:P.REORDER_VAULTS,args:[t]});return{to:e,data:n}}function Me(e,t){const n=h.encodeFunctionData({abi:M,functionName:P.WITHDRAW_COLLATERALS,args:[t]});return{to:e,data:n}}function we(e,t,n,a){const i=h.encodeFunctionData({abi:M,functionName:P.BORROW,args:[t,n,a]});return{to:e,data:i}}function he(e,t,n,a){const i=h.encodeFunctionData({abi:M,functionName:P.REPAY,args:[t,n,a]});return{to:e,data:i}}function Pe(e){return Number(e)/10**q}function Be(e){return Number(e)/10**G}function Fe(e){return Number(e)/10**W}function Ee(e,t){return t<=0?"0%":`${(e/t*100).toFixed(1)}%`}function $(e,t){return t?e===null?"safe":e<1?"danger":e<K?"warning":"safe":"no_debt"}function _e(e){return e===null?!0:e>=1}function xe(e){const t=isFinite(e),n=isFinite(e)?e:null;return $(n,t)}function Ve(e,t,n){return t<=0?1/0:e*(n/H)/t}function De(e,t){if(t<=0)return{vaultIds:[],actualAmount:0};const n=[...e].sort((r,s)=>s.amount-r.amount),a=[];let i=0;for(const r of n){if(i>=t)break;a.push(r.id),i+=r.amount}return{vaultIds:a,actualAmount:i}}function Le(e){return e.reduce((t,n)=>t+n.amount,0)}const Ue=.01,j=20,Q=.01;function Oe(e,t,n){if(e.length===0)return[];const i=e.reduce((u,o)=>u+o.btc,0)*t*(1-n);let r=0,s=0;for(;s<e.length&&r<i;)r+=e[s].btc,s++;return e.slice(0,s)}function Ne(e,t,n,a,i,r,s,u,o){const y=u*r,l=n/(t*r),d=t*i,T=Math.max(0,e-d),m=s-y,c=m===0?n:n*((s-o)/m);let v;if(a)v=0;else{const g=T*l/u,f=Math.min(g,n-c);v=Math.max(0,n-c-f)}return{debtAfter:v,btcAfter:Math.max(0,t-e)}}function L(e,t,n,a,i,r,s,u){let o=[...e],y=t;const l=e.reduce((c,v)=>c+v.btc,0);let d=-1,T=0,m=0;for(;o.length>0&&y>Q&&m<j;){const c=o.reduce((B,p)=>B+p.btc,0),v=c*n*(1-a);let g=0,f=0;for(;f<o.length&&g<v;)g+=o[f].btc,f++;const V=f>=o.length,{debtAfter:w}=Ne(g,c,y,V,n,i,r,s,u);o=o.slice(f),y=w;const S=c-g;T+=S,d<0&&(d=S),m++}return{sumBtcAfterEvents:T,btcAfterG1:d<0?l:d}}const ze=10;function ke(e,t){const n=e.map(a=>({vaults:[a],sum:a.btc}));for(n.sort((a,i)=>i.sum-a.sum);n.length>t;){const a=n.pop(),i=n.pop(),r={vaults:[...a.vaults,...i.vaults],sum:a.sum+i.sum};let s=!1;for(let u=0;u<n.length;u++)if(r.sum>n[u].sum){n.splice(u,0,r),s=!0;break}s||n.push(r)}for(const a of n)a.vaults.sort((i,r)=>r.btc-i.btc);return n}function He(e,t,n,a,i,r,s,u){if(e.length===0)return{order:[],sumBtcAfterEvents:0,btcAfterG1:0};if(e.length===1){const p=L(e,t,n,a,i,r,s,u);return{order:[...e],...p}}const o=ke(e,ze),y=o.length,l=1<<y,d=o.reduce((p,R)=>p+R.sum,0),T=n*(1-a),m=new Float64Array(l);for(let p=1;p<l;p++){const R=p&-p,A=31-Math.clz32(R);m[p]=m[p^R]+o[A].sum}const c=new Float64Array(l),v=new Float64Array(l),g=new Int32Array(l);c.fill(-1/0),g.fill(-1),c[0]=0;const f=1e-9;for(let p=1;p<l;p++){const R=d-m[p];let A=-1/0,I=-1/0,F=-1;for(let C=p;C>0;C=C-1&p){const E=p^C,N=c[E];if(N===-1/0)continue;const te=d-m[E];if(m[C]<te*T)continue;const D=N+R,z=E===0?d-m[C]:v[E];(D>A+f||Math.abs(D-A)<=f&&z>I+f)&&(A=D,I=z,F=C)}c[p]=A,v[p]=I,g[p]=F}const V=l-1,w=[];for(let p=V;p>0;){const R=g[p];if(R===-1)break;const A=[];for(let I=0;I<y;I++)R&1<<I&&A.push(...o[I].vaults);A.sort((I,F)=>F.btc-I.btc),w.push(A),p^=R}w.reverse();const S=w.flat();if(S.length!==e.length)throw new Error(`DP reconstruction failed — expected ${e.length} vaults in order, got ${S.length}.`);const B=L(S,t,n,a,i,r,s,u);return{order:S,sumBtcAfterEvents:B.sumBtcAfterEvents,btcAfterG1:B.btcAfterG1}}const qe=BigInt(Number.MAX_SAFE_INTEGER),k=2000n;function _(e,t){if(e>qe)throw new RangeError(`${t} (${e}) exceeds Number.MAX_SAFE_INTEGER; precision would be lost`)}function ee(e,t,n,a){if(a<=0)return{seizedFraction:1,seizedFractionRaw:1/0};const i=t*e;if(n<=i)return{seizedFraction:1,seizedFractionRaw:1/0};const r=e*(n-a)/(n-i)*(t/a);return{seizedFraction:Math.max(0,Math.min(1,r)),seizedFractionRaw:r}}function x(e,t,n,a){return ee(e,t,n,a).seizedFraction}function Ge(e){const{totalBtc:t,CF:n,LB:a,THF:i,expectedHF:r,safetyMargin:s}=e;if(t<=0n)return{sacrificialVault:0n,protectedVault:0n,seizedFraction:0,targetSeizureBtc:0n};_(t,"totalBtc");const u=x(n,a,i,r),o=Number(t),y=BigInt(Math.ceil(o*u)),l=BigInt(Math.ceil(o*u*s)),d=l>t?t:l,T=t-d;return d>0n&&d<k||T>0n&&T<k?{sacrificialVault:0n,protectedVault:0n,seizedFraction:u,targetSeizureBtc:0n}:{sacrificialVault:d,protectedVault:T,seizedFraction:u,targetSeizureBtc:y}}function We(e){const{minPegin:t,seizedFraction:n,safetyMargin:a}=e;_(t,"minPegin");const i=n*a;if(i>=1||i<=0)return 0n;const r=1-i,s=Math.ceil(Number(t)/r),u=Math.ceil(Number(t)/i);return BigInt(Math.max(s,u))}function Ke(e){const{vaultAmounts:t,CF:n,LB:a,THF:i,expectedHF:r,safetyMargin:s}=e;if(t.length===0)return{needsRebalance:!1,deficit:0n,currentCoverage:0n,targetCoverage:0n};const u=t.reduce((T,m)=>T+m,0n);_(u,"totalBtc");const o=x(n,a,i,r),y=BigInt(Math.ceil(Number(u)*o*s)),l=t[0],d=y>l?y-l:0n;return{needsRebalance:d>0n,deficit:d,currentCoverage:l,targetCoverage:y}}function Ye(e){const{totalCollateralSats:t,CF:n,LB:a,THF:i,expectedHF:r}=e;if(t<=0n)return 0n;_(t,"totalCollateralSats");const s=x(n,a,i,r);return BigInt(Math.ceil(Number(t)*s))}function Xe(e){const{orderedVaults:t,targetSeizureSats:n}=e;if(t.length===0)throw new Error("orderedVaults must not be empty");if(n<=0n)throw new Error("targetSeizureSats must be positive; use computeTargetSeizureSats to derive it");let a=0n,i=t.length;for(let y=0;y<t.length;y++)if(a+=t[y].amountSats,a>=n){i=y+1;break}const r=t.slice(0,i),s=t.slice(i),u=a,o=u>n?u-n:0n;return{seizedVaults:r,protectedVaults:s,overSeizureSats:o,cutoffIndex:i,totalSeizedSats:u}}exports.AAVE_BASE_CURRENCY_DECIMALS=q;exports.AAVE_BASE_CURRENCY_RAY_DECIMALS=G;exports.AAVE_FUNCTION_NAMES=P;exports.AaveIntegrationAdapterABI=M;exports.AaveSpokeABI=b;exports.BPS_SCALE=H;exports.BPS_TO_PERCENT_DIVISOR=ie;exports.BTC_DECIMALS=ne;exports.FULL_REPAY_BUFFER_DIVISOR=Y;exports.FULL_REPAY_BUFFER_FRACTION=se;exports.HEALTH_FACTOR_WARNING_THRESHOLD=K;exports.MAX_GROUPS=j;exports.MIN_DEBT_THRESHOLD=Q;exports.MIN_HEALTH_FACTOR_FOR_BORROW=re;exports.SEIZURE_TOL=Ue;exports.USDC_DECIMALS=ae;exports.WAD_DECIMALS=W;exports.aaveRayValueToUsd=Be;exports.aaveValueToUsd=Pe;exports.buildBorrowTx=we;exports.buildReorderVaultsTx=Ce;exports.buildRepayTx=he;exports.buildWithdrawCollateralsTx=Me;exports.calculateBorrowRatio=Ee;exports.calculateHealthFactor=Ve;exports.calculateTotalVaultAmount=Le;exports.checkRebalanceNeeded=Ke;exports.computeMinDepositForSplit=We;exports.computeOptimalOrder=He;exports.computeOptimalSplit=Ge;exports.computeSeizedFraction=x;exports.computeSeizedFractionDetailed=ee;exports.computeTargetSeizureSats=Ye;exports.getAssetDrawnRatesSafe=Se;exports.getDynamicReserveConfig=ve;exports.getGroup1FromOrder=Oe;exports.getHealthFactorStatus=$;exports.getHealthFactorStatusFromValue=xe;exports.getOracleAddress=ge;exports.getPosition=ue;exports.getPositionSizeParams=pe;exports.getReserve=be;exports.getReservesPrices=Re;exports.getReservesPricesSafe=Ae;exports.getTargetHealthFactor=fe;exports.getUserAccountData=oe;exports.getUserPosition=O;exports.getUserPositionAndAccountData=ye;exports.getUserPositions=ce;exports.getUserTotalDebt=me;exports.getUserTotalDebts=Te;exports.hasCollateral=de;exports.hasDebt=le;exports.hasDebtFromPosition=X;exports.isHealthFactorHealthy=_e;exports.selectVaultsForAmount=De;exports.simulateCascade=L;exports.simulatePrefixSeizure=Xe;exports.wadToNumber=Fe;
2
2
  //# sourceMappingURL=index.cjs.map