@1delta/margin-fetcher-sol 0.0.1 → 0.0.3

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.
package/dist/index.d.ts CHANGED
@@ -800,6 +800,14 @@ interface KlendReserveChain extends KlendReserveFlash {
800
800
  /** `config.disableUsageAsCollOutsideEmode` — outside a group, an obligation holding this deposit cannot borrow. */
801
801
  disableUsageAsCollOutsideEmode: boolean;
802
802
  utilizationLimitBlockBorrowingAbovePct: number;
803
+ /**
804
+ * `config.borrowRateCurve` — the reserve's 11 knots as `[utilization,
805
+ * borrowRate]` FRACTIONS (bps / 1e4), padding included: unused knots repeat
806
+ * the last one. The rate is on the reserve's `interestRateBasis` (a `legacy`
807
+ * reserve quotes per slot on the 0.5 s slot-year). Matches the API's
808
+ * deduplicated `borrowCurve` as a function (irm-sdk `solana.test.ts`).
809
+ */
810
+ borrowRateCurve: [number, number][];
803
811
  /** Cap on debt of THIS reserve taken outside any group, raw units of this reserve. */
804
812
  borrowLimitOutsideElevationGroup: bigint;
805
813
  /** Per group (index = id − 1): cap on debt this reserve may BACK as collateral in the group, raw units of the group's DEBT reserve. */
@@ -1105,6 +1113,8 @@ interface KaminoMarketInputs {
1105
1113
  collateralReserves?: KaminoCollateralReserve[];
1106
1114
  /** Kamino's Multiply/Leverage pair book for the market. */
1107
1115
  leveragePairs?: KaminoLeveragePair[];
1116
+ /** Measured wall-clock seconds per slot (svm-kit `measureSlotSeconds`) — stamped on `legacy` reserves' `kamino.slotSeconds`. */
1117
+ slotSeconds?: number;
1108
1118
  /** Optional curated currency for `asset` (name/symbol/assetGroup); falls back to the API's symbol and `solana-<mint>`. */
1109
1119
  tokenList?: {
1110
1120
  [mint: string]: GenericCurrency;
@@ -1126,7 +1136,23 @@ interface KaminoReserveExt {
1126
1136
  interestRateBasis: KaminoReserveStats['interestRateBasis'];
1127
1137
  protocolTakeRatePct: number;
1128
1138
  hostFixedInterestRateBps: number;
1139
+ /**
1140
+ * `[utilization, borrowRate]` FRACTIONS on the reserve's own
1141
+ * `interestRateBasis`, first knot at 0, last at 1. From the chain's
1142
+ * `borrowRateCurve` when the reserve was read (padding knots dropped),
1143
+ * else the API's — the same function (irm-sdk `solana.test.ts`).
1144
+ */
1129
1145
  borrowCurve: [number, number][];
1146
+ borrowCurveSource: 'chain' | 'api';
1147
+ /**
1148
+ * `legacy` reserves only: the measured seconds per slot the curve must be
1149
+ * scaled by (`× 0.5 / slotSeconds` — per-slot accrual on the nominal 0.5 s
1150
+ * slot-year). Absent when not measured: a consumer then has no basis and
1151
+ * must not evaluate the curve.
1152
+ */
1153
+ slotSeconds?: number;
1154
+ /** `config.utilizationLimitBlockBorrowingAbovePct` — borrows refused above it; 0 = no limit. `undefined` = not read. */
1155
+ utilizationLimitBlockBorrowingAbovePct?: number;
1130
1156
  autoDeleverage: KaminoReserveStats['autoDeleverage'];
1131
1157
  /** Where the config / limits / indices came from. */
1132
1158
  source: 'chain' | 'api';
@@ -1252,6 +1278,7 @@ declare function convertKaminoReserve(inp: KaminoReserveInputs, ctx: {
1252
1278
  closeFactor: number;
1253
1279
  chainMarket?: KlendMarketChain;
1254
1280
  slot?: number;
1281
+ slotSeconds?: number;
1255
1282
  tokenList?: KaminoMarketInputs['tokenList'];
1256
1283
  }): KaminoPoolData;
1257
1284
  /** Risk inputs for every reserve of the market (chain when read, else API). */
@@ -1314,6 +1341,12 @@ interface FetchKaminoPublicOptions extends KaminoApiOptions, ListServedMarketsOp
1314
1341
  * market and never invents a group.
1315
1342
  */
1316
1343
  rpc?: SvmRpc;
1344
+ /**
1345
+ * Wall-clock seconds per slot for the `legacy` reserves' curves. Absent
1346
+ * with an `rpc`: measured once (`measureSlotSeconds`); absent without one:
1347
+ * not stamped, and those curves are unusable downstream (never guessed).
1348
+ */
1349
+ slotSeconds?: number;
1317
1350
  }
1318
1351
  /**
1319
1352
  * Public market data for every served Kamino market: one bundle per market
@@ -1564,6 +1597,263 @@ declare function createJupiterLendApi(opts?: JupiterLendApiOptions): {
1564
1597
  };
1565
1598
  type JupiterLendApi = ReturnType<typeof createJupiterLendApi>;
1566
1599
 
1600
+ /**
1601
+ * Jupiter Lend vaults read straight from the VAULTS program — for the ids
1602
+ * `lite-api.jup.ag/lend/v1/borrow/vaults` does not list (on 2026-10-02 it
1603
+ * served 82 of main's 104: ids 65–67, 74–76, 85–87, 89–99 were missing,
1604
+ * and users transact on 91 / 96 / 97). The program numbers vaults
1605
+ * contiguously from 1 (`VaultAdmin.next_vault_id`), so enumeration is PDA
1606
+ * derivation, no `getProgramAccounts`.
1607
+ *
1608
+ * The arithmetic is `@jup-ag/lend-read` 0.0.14's `getVaultEntireDataV2`,
1609
+ * ported to bigint (liquidity exchange prices → the vault's, the layer's
1610
+ * supply / borrow rate, the vault's limits). Verified against the API's own
1611
+ * numbers for the vaults it does list (`test/jupiterLend.onchain.live.test.ts`).
1612
+ *
1613
+ * Scales, measured: vault-internal amounts (`VaultState.total_supply` /
1614
+ * `total_borrow`) are normalised to 9 DECIMALS whatever the mint
1615
+ * (`× 10^(decimals − 9)` gives base units — vault 1's USDC debt reads 1000×
1616
+ * the API otherwise); the liquidity layer's amounts are mint base units.
1617
+ *
1618
+ * SMART vaults (type 2 = smart collateral, 3 = smart debt, 4 = both — the
1619
+ * Fluid T2/T3/T4) put a DEX where the mint would be: `supply_token` /
1620
+ * `borrow_token` is the DEX account, and that side's amounts are DEX SHARES
1621
+ * (9 decimals), not tokens. The smart side is served as a leg keyed by the
1622
+ * DEX address (the key pos-indexer's decoder uses, since it reads the same
1623
+ * account off the instruction), denominated in shares, UNPRICED (price
1624
+ * `'0'`): a share's token value needs the DEX's reserve math, which is not
1625
+ * ported. `params.jupiterLendVault.smart` says which side it is.
1626
+ *
1627
+ * Not read: the vault ORACLE price (the oracle program combines its sources;
1628
+ * `oraclePrice*` are left `''`, which the converter turns into an absent
1629
+ * Fluid oracle price, never a 0), rewards, and `metadata` flags (UI-only).
1630
+ */
1631
+ declare const JL_VAULTS_ACCOUNTS_IDL: Idl;
1632
+ /** The vaults program per market (`@jup-ag/lend`'s `PROGRAM_IDS`). */
1633
+ declare const JUP_VAULTS_PROGRAMS: Record<JupiterLendMarket, string>;
1634
+ /** The Jupiter Lend DEX (smart-vault AMM) program — owner of a smart side's `Dex`. */
1635
+ declare const JUP_DEX_PROGRAM = "jupZ4m2GqUCJ5iueMfzQf8khFfH31d4XAQt3RzCT9Vd";
1636
+ declare const JL_EXCHANGE_PRICES_PRECISION: bigint;
1637
+ /** Vault-internal amounts are 9-decimal normalised. */
1638
+ declare const JL_VAULT_AMOUNT_DECIMALS = 9;
1639
+ /** Fluid's vault types; 0 is the legacy spelling of 1. */
1640
+ declare const isJlSmartCol: (t: number) => t is 2 | 4;
1641
+ declare const isJlSmartDebt: (t: number) => t is 3 | 4;
1642
+ declare const jlVaultConfigPda: (vaultId: number, market?: JupiterLendMarket) => Promise<string>;
1643
+ declare const jlVaultStatePda: (vaultId: number, market?: JupiterLendMarket) => Promise<string>;
1644
+ declare const jlVaultAdminPda: (market?: JupiterLendMarket) => Promise<string>;
1645
+ interface RawVaultConfig {
1646
+ vault_id: number;
1647
+ supply_rate_magnifier: number;
1648
+ borrow_rate_magnifier: number;
1649
+ collateral_factor: number;
1650
+ liquidation_threshold: number;
1651
+ liquidation_max_limit: number;
1652
+ withdraw_gap: number;
1653
+ liquidation_penalty: number;
1654
+ borrow_fee: number;
1655
+ vault_type: number;
1656
+ oracle: string;
1657
+ supply_token: string;
1658
+ borrow_token: string;
1659
+ }
1660
+ interface RawVaultState {
1661
+ vault_id: number;
1662
+ topmost_tick: number;
1663
+ total_supply: bigint;
1664
+ total_borrow: bigint;
1665
+ total_positions: number;
1666
+ absorbed_debt_amount: bigint;
1667
+ absorbed_col_amount: bigint;
1668
+ liquidity_supply_exchange_price: bigint;
1669
+ liquidity_borrow_exchange_price: bigint;
1670
+ vault_supply_exchange_price: bigint;
1671
+ vault_borrow_exchange_price: bigint;
1672
+ last_update_timestamp: bigint;
1673
+ }
1674
+ interface RawTokenReserve {
1675
+ mint: string;
1676
+ /** The layer's token account for the mint — its balance is what can leave now. */
1677
+ vault: string;
1678
+ borrow_rate: number;
1679
+ fee_on_interest: number;
1680
+ last_utilization: number;
1681
+ last_update_timestamp: bigint;
1682
+ supply_exchange_price: bigint;
1683
+ borrow_exchange_price: bigint;
1684
+ max_utilization: number;
1685
+ total_supply_with_interest: bigint;
1686
+ total_supply_interest_free: bigint;
1687
+ total_borrow_with_interest: bigint;
1688
+ total_borrow_interest_free: bigint;
1689
+ }
1690
+ interface RawUserSupply {
1691
+ with_interest: number;
1692
+ amount: bigint;
1693
+ withdrawal_limit: bigint;
1694
+ decay_amount: bigint;
1695
+ last_update: bigint;
1696
+ expand_pct: number;
1697
+ expand_duration: number;
1698
+ decay_duration: number;
1699
+ base_withdrawal_limit: bigint;
1700
+ }
1701
+ interface RawUserBorrow {
1702
+ with_interest: number;
1703
+ amount: bigint;
1704
+ debt_ceiling: bigint;
1705
+ last_update: bigint;
1706
+ expand_pct: number;
1707
+ expand_duration: number;
1708
+ base_debt_ceiling: bigint;
1709
+ max_debt_ceiling: bigint;
1710
+ }
1711
+ /** The layer's exchange prices advanced to `now` (`calculateExchangePrice`). */
1712
+ declare function jlLiquidityExchangePrices(r: RawTokenReserve, now: bigint): {
1713
+ supplyEx: bigint;
1714
+ borrowEx: bigint;
1715
+ };
1716
+ /** The layer's per-token totals + supply rate (bps) (`processOverallTokenData`). */
1717
+ declare function jlOverallTokenData(r: RawTokenReserve, now: bigint): {
1718
+ supplyEx: bigint;
1719
+ borrowEx: bigint;
1720
+ totalSupply: bigint;
1721
+ totalBorrow: bigint;
1722
+ supplyRate: bigint;
1723
+ borrowRate: bigint;
1724
+ maxUtilization: bigint;
1725
+ };
1726
+ type Overall = ReturnType<typeof jlOverallTokenData>;
1727
+ /** A protocol's supply position on the layer (`processUserSupplyData`). */
1728
+ declare function jlUserSupplyData(u: RawUserSupply | undefined, o: Overall, balance: bigint, now: bigint): {
1729
+ modeWithInterest: boolean;
1730
+ supply: bigint;
1731
+ withdrawalLimit: bigint;
1732
+ lastUpdateTimestamp: bigint;
1733
+ expandPercent: bigint;
1734
+ expandDuration: bigint;
1735
+ baseWithdrawalLimit: bigint;
1736
+ withdrawableUntilLimit: bigint;
1737
+ withdrawable: bigint;
1738
+ decayAmount: bigint;
1739
+ decayEndTimestamp: bigint;
1740
+ };
1741
+ /** A protocol's borrow position on the layer (`processUserBorrowData`). */
1742
+ declare function jlUserBorrowData(u: RawUserBorrow | undefined, o: Overall, balance: bigint, now: bigint): {
1743
+ modeWithInterest: boolean;
1744
+ borrow: bigint;
1745
+ borrowLimit: bigint;
1746
+ lastUpdateTimestamp: bigint;
1747
+ expandPercent: bigint;
1748
+ expandDuration: bigint;
1749
+ baseBorrowLimit: bigint;
1750
+ maxBorrowLimit: bigint;
1751
+ borrowLimitUtilization: bigint;
1752
+ borrowableUntilLimit: bigint;
1753
+ borrowable: bigint;
1754
+ };
1755
+ /** The vault's exchange prices advanced with the layer's (`updateExchangePrices`). */
1756
+ declare function jlVaultExchangePrices(s: RawVaultState, c: RawVaultConfig, liqSupplyEx: bigint, liqBorrowEx: bigint, now: bigint): {
1757
+ supplyEx: bigint;
1758
+ borrowEx: bigint;
1759
+ };
1760
+ /** Vault-internal (9-dec normalised) → base units of a `decimals` mint. */
1761
+ declare const jlVaultToRaw: (v: bigint, decimals: number) => bigint;
1762
+ interface JlOnchainVault {
1763
+ vault: JupiterLendVault;
1764
+ smartCol: boolean;
1765
+ smartDebt: boolean;
1766
+ /** The DEX behind a smart side, decoded (`token_0` / `token_1`). */
1767
+ supplyDex?: {
1768
+ address: string;
1769
+ token0: string;
1770
+ token1: string;
1771
+ };
1772
+ borrowDex?: {
1773
+ address: string;
1774
+ token0: string;
1775
+ token1: string;
1776
+ };
1777
+ slot: number;
1778
+ }
1779
+ interface ReadJlVaultsOptions {
1780
+ /** Known token facts by mint (the API's own `supplyToken` / `borrowToken` / earn `asset`) — symbol, logo and the USD price. */
1781
+ tokens?: {
1782
+ [mint: string]: JupiterLendToken;
1783
+ };
1784
+ /** Symbols / decimals for mints the API does not name. */
1785
+ tokenList?: {
1786
+ [mint: string]: {
1787
+ symbol?: string;
1788
+ name?: string;
1789
+ decimals?: number;
1790
+ logoURI?: unknown;
1791
+ };
1792
+ };
1793
+ /** Unix seconds "now" for the accrual (default: the clock). */
1794
+ now?: number;
1795
+ }
1796
+ /** `VaultAdmin.next_vault_id` — ids run 1 … next − 1. `undefined` when the admin cannot be read. */
1797
+ declare function readJlNextVaultId(rpc: SvmRpc, market?: JupiterLendMarket): Promise<number | undefined>;
1798
+ /**
1799
+ * Read `vaultIds` of `market` from the chain and shape each as the API's
1800
+ * `JupiterLendVault`, so the API path's converter serves it unchanged.
1801
+ * Three batched reads: config + state, then the layer accounts (reserves,
1802
+ * the vault's positions on the layer, mints, DEXes, the oracle), then the
1803
+ * reserves' token accounts (what can leave the layer now). An id with no config / state account is skipped.
1804
+ */
1805
+ declare function readJupiterLendVaultsOnchain(rpc: SvmRpc, market: JupiterLendMarket, vaultIds: number[], opts?: ReadJlVaultsOptions): Promise<JlOnchainVault[]>;
1806
+ /**
1807
+ * One mint's Liquidity-layer IRM, as irm-sdk's `jupiter_lend` model takes it
1808
+ * (`JupiterLendIRMParams`, the magnifiers added per row). Every rate / kink /
1809
+ * fee is on the 1e2 scale the accounts use (10000 = 100 %).
1810
+ */
1811
+ interface JlLayerIrm {
1812
+ version: 1 | 2;
1813
+ rateAtZero: number;
1814
+ kink1: number;
1815
+ rateAtKink1: number;
1816
+ /** v2 only — a v1 model keeps stale values in these fields. */
1817
+ kink2?: number;
1818
+ rateAtKink2?: number;
1819
+ rateAtMax: number;
1820
+ /** `TokenReserve.fee_on_interest`. */
1821
+ feeOnInterest: number;
1822
+ /** `TokenReserve.max_utilization` (0 read as the program's default 100 %). */
1823
+ maxUtilization: number;
1824
+ /** `(B_wi / S_wi) / u` over the layer's live totals — 1 when nothing is interest-free. */
1825
+ supplyWithInterestRatio: number;
1826
+ /** The program's own last evaluation — `borrow_rate` at `last_utilization` (1e2). */
1827
+ lastUtilization: number;
1828
+ borrowRate: number;
1829
+ }
1830
+ /**
1831
+ * `RateModel` (PDA `['rate_model', mint]` on the Liquidity program),
1832
+ * bytemuck-packed after the 8-byte discriminator: mint (32) · version u8 ·
1833
+ * rate_at_zero · kink1_utilization · rate_at_kink1 · rate_at_max ·
1834
+ * kink2_utilization · rate_at_kink2 (u16 LE each) = 53 bytes. Layout from
1835
+ * `@jup-ag/lend` 0.4.0's liquidity IDL (the program publishes no on-chain
1836
+ * IDL); `rate_at_max` sits BEFORE `kink2`. Verified 2026-10-03: the curve
1837
+ * at `TokenReserve.last_utilization` reproduces `borrow_rate` to the unit
1838
+ * on every live mint (irm-sdk `solana.test.ts`).
1839
+ */
1840
+ declare function decodeJlRateModel(data: Uint8Array): {
1841
+ kink2?: number | undefined;
1842
+ rateAtKink2?: number | undefined;
1843
+ version: 1 | 2;
1844
+ rateAtZero: number;
1845
+ kink1: number;
1846
+ rateAtKink1: number;
1847
+ rateAtMax: number;
1848
+ };
1849
+ /**
1850
+ * Every listed mint's layer IRM for a market: one batched read of the
1851
+ * `RateModel` + `TokenReserve` PDAs. A mint whose either account is missing
1852
+ * or undecodable is absent from the map (its rows then carry no curve),
1853
+ * never defaulted.
1854
+ */
1855
+ declare function readJlLayerIrms(rpc: SvmRpc, market: JupiterLendMarket, mints: string[], now?: bigint): Promise<Map<string, JlLayerIrm>>;
1856
+
1567
1857
  /**
1568
1858
  * Scales — JUPITER_LEND.md §2, verified against the program source
1569
1859
  * (UNIFIED_API_AUDIT.md §9): factors 1e3 (`vault_config.rs`), penalty and
@@ -1634,10 +1924,11 @@ interface JupiterLendFluidVault {
1634
1924
  /** Raw debt per raw collateral × 1e27 — EVM Fluid's scale (`jlOracleToFluidRaw`). */
1635
1925
  oraclePriceOperate?: string;
1636
1926
  oraclePriceLiquidate?: string;
1637
- isSmartCol: false;
1638
- isSmartDebt: false;
1639
- /** Both JL types (0 legacy, 1) are plain T1. */
1640
- vaultType: typeof FLUID_VAULT_TYPE_T1;
1927
+ /** True on a smart side (JL type 2 / 4 col, 3 / 4 debt — chain-enumerated vaults only; the API lists T1 only). The smart side's `dex` stays `null`: the DEX is on `params.jupiterLendVault.smart`. */
1928
+ isSmartCol: boolean;
1929
+ isSmartDebt: boolean;
1930
+ /** Fluid's `TYPE()`: 10000 T1 (JL 0 / 1), 20000 T2, 30000 T3, 40000 T4. */
1931
+ vaultType: number;
1641
1932
  collateral: JupiterLendFluidSide;
1642
1933
  loan: JupiterLendFluidSide;
1643
1934
  }
@@ -1710,6 +2001,29 @@ interface JupiterLendVaultMeta {
1710
2001
  supplyFlashable: boolean;
1711
2002
  borrowFlashable: boolean;
1712
2003
  };
2004
+ /** `api` = Jupiter's listing; `chain` = read from the vaults program because the listing omits the id (`onchain.ts`). */
2005
+ source?: 'api' | 'chain';
2006
+ /** The slot of a chain read. */
2007
+ slot?: number;
2008
+ /**
2009
+ * A smart side's DEX (chain-enumerated vaults): that side's leg is keyed
2010
+ * by the DEX address, denominated in DEX SHARES (9 decimals) and UNPRICED
2011
+ * (USD 0 — the share's token value needs the DEX math, not ported).
2012
+ */
2013
+ smart?: {
2014
+ col?: {
2015
+ dex: string;
2016
+ token0?: string;
2017
+ token1?: string;
2018
+ };
2019
+ debt?: {
2020
+ dex: string;
2021
+ token0?: string;
2022
+ token1?: string;
2023
+ };
2024
+ };
2025
+ /** Mints whose USD the read could not source (the leg's USD reads 0 because the price is unknown, not because the leg is empty). */
2026
+ unpriced?: string[];
1713
2027
  }
1714
2028
  /** Both params slots of one vault bundle. */
1715
2029
  interface JupiterLendBundleParams {
@@ -1758,6 +2072,18 @@ type JupiterLendPoolData = Omit<PoolData, 'borrowCap' | 'supplyCap' | 'config'>
1758
2072
  config: {
1759
2073
  [mode: string]: JupiterLendConfigEntry;
1760
2074
  };
2075
+ /**
2076
+ * The row's interest-rate model: its token's Liquidity-layer `RateModel`
2077
+ * plus THIS vault's ADDITIVE magnifiers (bps) — irm-sdk's `jupiter_lend`
2078
+ * model takes it verbatim. Absent when the layer was not read (no `rpc`)
2079
+ * or on a smart side (its token is a DEX share, not a layer token).
2080
+ */
2081
+ jupiterLend?: {
2082
+ irm: JlLayerIrm & {
2083
+ supplyMagnifier: number;
2084
+ borrowMagnifier: number;
2085
+ };
2086
+ };
1761
2087
  };
1762
2088
  interface ConvertJupiterLendOptions {
1763
2089
  tokenList?: {
@@ -1841,8 +2167,14 @@ interface FetchJupiterLendPublicOptions extends JupiterLendApiOptions {
1841
2167
  intrinsicYields?: {
1842
2168
  [assetGroup: string]: number;
1843
2169
  };
1844
- /** With an RPC: the market's flashloan admin (fee, activation) and the flash-able set, on `params.vault.flashloan` and the term sheet. */
2170
+ /** With an RPC: the market's flashloan admin (fee, activation) and the flash-able set, on `params.vault.flashloan` and the term sheet; and the vaults the listing omits, read from the chain (`enumerateOnchain`). */
1845
2171
  rpc?: SvmRpc;
2172
+ /**
2173
+ * With an `rpc`: enumerate the vaults program (`VaultAdmin.next_vault_id`)
2174
+ * and read every id the API does not list (`onchain.ts`). API rows are
2175
+ * kept as they are; the chain only fills the gaps. Default true.
2176
+ */
2177
+ enumerateOnchain?: boolean;
1846
2178
  }
1847
2179
  /**
1848
2180
  * Every Jupiter Lend vault in the margin-fetcher return shape — one lender
@@ -1855,6 +2187,13 @@ interface FetchJupiterLendPublicOptions extends JupiterLendApiOptions {
1855
2187
  * token needs the jl token's supply, JUPITER_LEND.md §3). Both markets = 4
1856
2188
  * GETs, ~0.5 s. A market whose read fails fails the fetch — a partial
1857
2189
  * roster is not served.
2190
+ *
2191
+ * With an `rpc`, the ids the listing omits are read from the chain (3
2192
+ * batched account reads per market; on 2026-10-02 main served 82 of 104 —
2193
+ * the gaps include the smart-debt / smart-collateral vaults 90–98, which
2194
+ * users transact on). A failed chain read keeps the API rows and warns: the
2195
+ * enumeration only ever ADDS bundles. Chain bundles carry
2196
+ * `params.jupiterLendVault.source = 'chain'`.
1858
2197
  */
1859
2198
  declare function fetchJupiterLendPublic(opts?: FetchJupiterLendPublicOptions): Promise<{
1860
2199
  [lender: string]: JupiterLendPublicResponse;
@@ -2103,12 +2442,21 @@ declare const SAVE_WAD: bigint;
2103
2442
  declare const SAVE_U64_MAX = "18446744073709551615";
2104
2443
  /**
2105
2444
  * The program's slot-year: interest compounds `rate / 63,072,000` PER SLOT,
2106
- * i.e. it assumes a 0.5 s slot. Mainnet runs ~0.39–0.40 s, so the curve
2107
- * under-states the wall-clock rate by ~25 % (SAVE_FINANCE.md §3.2).
2445
+ * i.e. it assumes a 0.5 s slot. The wall-clock rate is `curve × 0.5 /
2446
+ * slotSeconds`, and the slot time MOVES: ~0.39–0.40 s through 2025 (×1.25),
2447
+ * 0.2665 s on 2026-10-03 (×1.88) — SAVE_FINANCE.md §3.2.
2108
2448
  */
2109
2449
  declare const SAVE_SLOTS_PER_YEAR = 63072000;
2110
- /** Default wall-clock slot time used to scale the curve; measured 0.393 s over 441 days to 2026-09-16. */
2111
- declare const SAVE_DEFAULT_AVG_SLOT_SECONDS = 0.4;
2450
+ /**
2451
+ * FALLBACK wall-clock slot time, used only when no measurement is passed
2452
+ * (`avgSlotSeconds`; `getLenderPublicDataAll` measures it with svm-kit
2453
+ * `measureSlotSeconds` whenever it has an rpc). 0.2665 s = the mean of 327
2454
+ * one-minute `getRecentPerformanceSamples` on 2026-10-03 (266.3–266.5 ms over
2455
+ * every sub-window). It was 0.4 until then — measured 0.393 s over the 441
2456
+ * days to 2026-09-16 — and that stale constant understated every Save rate by
2457
+ * a third once the chain sped up. Re-measure before trusting it.
2458
+ */
2459
+ declare const SAVE_DEFAULT_AVG_SLOT_SECONDS = 0.2665;
2112
2460
  /** Program constants (sdk/src/state/reserve.rs). */
2113
2461
  declare const SAVE_LIQUIDATION_CLOSE_FACTOR = 0.2;
2114
2462
  declare const SAVE_MAX_LIQUIDATABLE_VALUE_USD = 500000;
@@ -2168,8 +2516,9 @@ type SaveApi = ReturnType<typeof createSaveApi>;
2168
2516
  * with `opt == 0 ⇒ min`. Supply = u × borrow × (1 − protocolTakeRate).
2169
2517
  *
2170
2518
  * Save's own SDK (`calculateBorrowInterest`) agrees to the digit on live
2171
- * state; the hosted API's `rates` field does NOT (×1.61, unexplained), which
2172
- * is why the row recomputes.
2519
+ * state; the hosted API's `rates` field does NOT (×1.61 on 2026-09-16, mostly
2520
+ * a fresher slot time and APY quoting — SAVE_FINANCE.md §2), which is why the
2521
+ * row recomputes.
2173
2522
  */
2174
2523
  declare function saveBorrowCurvePercent(c: Pick<SaveReserveConfigState, 'optimalUtilizationRate' | 'maxUtilizationRate' | 'minBorrowRate' | 'optimalBorrowRate' | 'maxBorrowRate' | 'superMaxBorrowRate'>, utilization: number): number;
2175
2524
  /** `borrowedAmountWads / 1e18` in RAW token units (a bigint-exact division, then float). */
@@ -2195,7 +2544,8 @@ declare const wadsToFloat: (wads: bigint) => number;
2195
2544
  */
2196
2545
  declare function saveUtilization(liquidity: SaveReserveAccount['liquidity']): number;
2197
2546
  /**
2198
- * The curve is denominated in a 0.5 s slot-year; the chain runs ~0.4 s slots,
2547
+ * The curve is denominated in a 0.5 s slot-year; the chain runs faster slots
2548
+ * (~0.27 s in 2026-10, ~0.4 s through 2025),
2199
2549
  * so one wall-clock year contains `31,536,000 / avgSlot` slots and the rate a
2200
2550
  * depositor actually sees is `curve × (that / 63,072,000)` = `curve × 0.5 / avgSlot`.
2201
2551
  */
@@ -2506,7 +2856,7 @@ interface FetchSavePublicOptions extends SaveApiOptions, SaveRosterOptions {
2506
2856
  tokenList?: {
2507
2857
  [mint: string]: GenericCurrency;
2508
2858
  };
2509
- /** Wall-clock slot time the curve is scaled by (default 0.4 s). */
2859
+ /** Wall-clock seconds per slot the curve is scaled by — pass a MEASURED value (svm-kit `measureSlotSeconds`); the default is a dated constant. */
2510
2860
  avgSlotSeconds?: number;
2511
2861
  dropUnrealizable?: boolean;
2512
2862
  /** Already-fetched configs (the user-data path and the action builders share them). */
@@ -3086,7 +3436,12 @@ interface LoopscaleOfferingVault {
3086
3436
  vault: string;
3087
3437
  strategy: string;
3088
3438
  name: string;
3439
+ /** `vaultMetadata.managerName` — the curator's display name ('' when the venue names none). */
3089
3440
  curator: string;
3441
+ /** The vault's `manager` — the curator's ADDRESS, base58 verbatim. */
3442
+ manager: string;
3443
+ /** `vaultMetadata.managerImage`, verbatim; absent when none. */
3444
+ managerImage?: string;
3090
3445
  /** CBPS of interest earned, the vault's take. */
3091
3446
  interestFee: number;
3092
3447
  /** CBPS of principal at origination. */
@@ -3638,13 +3993,28 @@ type LoopscaleConfigEntry = Omit<ConfigEntry, 'collateralDisabled' | 'debtDisabl
3638
3993
  debtDisabled: boolean;
3639
3994
  openParameter?: LoopscaleOpenParameter;
3640
3995
  };
3641
- /** One `market_terms` row (yield-tracer reads `termId`, `durationDays`, `apr`). */
3996
+ /** One `market_terms` row (yield-tracer reads `termId`, `durationDays`, `apr`, `ladder`). */
3642
3997
  interface LoopscaleMarketTerm {
3643
3998
  termId: string;
3644
3999
  durationDays: number;
3645
4000
  durationSecs: number;
3646
4001
  /** Best offer, percent APR. */
3647
4002
  apr: number;
4003
+ /**
4004
+ * The tenor's OWN borrow ladder, cheapest first, in yield-tracer's
4005
+ * `market_terms.ladder` shape: `apr` percent, `assets` = what ONE strategy
4006
+ * can lend at that level, TOKEN units. `fill: 'single'` is the order-book
4007
+ * rule this venue has and Midnight does not: one ledger fills ONE
4008
+ * strategy, and a level's `sum` is that strategy's idle balance repeated on
4009
+ * every pair and tenor it quotes — so the rate at size S is the cheapest
4010
+ * level whose `assets ≥ S`, never a VWAP across levels, and depth is the
4011
+ * MAX, never the total.
4012
+ */
4013
+ ladder: {
4014
+ apr: number;
4015
+ assets: number;
4016
+ fill: 'single';
4017
+ }[];
3648
4018
  }
3649
4019
  /**
3650
4020
  * Structurally margin-fetcher's `FixedTermInfo` with `model: 'loopscale'`
@@ -4655,7 +5025,7 @@ declare const P0_EMODE_BASE_LABEL = "No emode";
4655
5025
  interface P0BankPrice {
4656
5026
  priceUsd: number;
4657
5027
  /** Where the number came from. */
4658
- source: 'pyth-push' | 'pyth-push×multiplier' | 'fixed' | 'bank-cache' | 'none';
5028
+ source: 'pyth-push' | 'pyth-push×multiplier' | 'scope' | 'fixed' | 'bank-cache' | 'none';
4659
5029
  /** Unix seconds of the reading (the oracle's publish time or the cache's timestamp). */
4660
5030
  updatedAt?: number;
4661
5031
  multiplier: number;
@@ -5122,7 +5492,11 @@ roster: {
5122
5492
  * underlying), the price is the underlying's; Drift's shares are
5123
5493
  * 9-decimal scaled balances whatever the mint, so its multiplier is
5124
5494
  * rescaled to the mint;
5125
- * - `PythPushOracle` — the price, multiplier 1; `Fixed*` — `fixed_price`.
5495
+ * - `PythPushOracle` — the price, multiplier 1; `Fixed*` — `fixed_price`;
5496
+ * - `PythMSOL` — live = Pyth SOL × Marinade's `State.msol_price`
5497
+ * (`oracle_keys[1]`), read here (the venue variants stay on the cache);
5498
+ * - `Scope` — live = the Scope `OraclePrices` entry at
5499
+ * `config.scopeEntryIndex` (`oracle_keys[0]`), with its own timestamp.
5126
5500
  * A cached venue multiplier moves at the venue's YIELD rate (bps per day),
5127
5501
  * so a day-old one on a fresh SOL price is the right number to a few bps.
5128
5502
  */
@@ -7145,6 +7519,10 @@ interface LoopscaleEarnVault {
7145
7519
  name: string;
7146
7520
  displayName: string;
7147
7521
  curatorName: string;
7522
+ /** The vault's `manager` — the curator's ADDRESS, base58 verbatim (the chain-role arm of a curator identity). */
7523
+ manager: string;
7524
+ /** The venue's curator logo (`vaultMetadata.managerImage`), verbatim; absent when the venue names none. */
7525
+ managerImage?: string;
7148
7526
  decimals: number;
7149
7527
  assetDecimals: number;
7150
7528
  /** TVL, raw principal units (the guide's four-term sum). */
@@ -7246,6 +7624,254 @@ interface FetchLoopscaleEarnVaultsOptions extends LoopscaleApiOptions {
7246
7624
  /** Every curated Loopscale vault as an earn row — one paged route, zero RPC. A principal with no known decimals is skipped and named. */
7247
7625
  declare function fetchLoopscaleEarnVaults(opts?: FetchLoopscaleEarnVaultsOptions): Promise<LoopscaleEarnVault[]>;
7248
7626
 
7627
+ /**
7628
+ * Kamino kvaults (`KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd`) — curated
7629
+ * earn vaults that allocate one token across K-Lend reserves. Two public
7630
+ * routes carry everything, read off live responses 2026-10-02:
7631
+ *
7632
+ * | route | rows | what it is the only source of |
7633
+ * | ----------------------------- | ---- | ---------------------------------------------------------------- |
7634
+ * | `/kvaults/vaults` | 183 | the ROSTER + the decoded `VaultState` (admins, mints, fees, name) |
7635
+ * | `/kvaults/vaults/metrics` | 186 | per-vault APY, tokens per share, AUM split, USD prices, holders |
7636
+ *
7637
+ * `/kvaults/vaults/metrics` is PAGED (100 rows, `paginationToken`) and
7638
+ * carries 3 vaults the roster omits (closed / not listed); the roster is the
7639
+ * join's left side. `/kvaults/<vault>/metrics` is the per-vault twin — not
7640
+ * needed when the batch answers.
7641
+ *
7642
+ * Scales: every `state` amount is RAW base units of its mint (u64 as a
7643
+ * decimal string; `prevAum` / `pendingFees` carry a Fraction's decimals);
7644
+ * every `metrics` amount is HUMAN units; APYs are FRACTIONS.
7645
+ */
7646
+ interface KaminoKvaultAllocation {
7647
+ reserve: string;
7648
+ ctokenVault: string;
7649
+ targetAllocationWeight: number;
7650
+ tokenAllocationCap: string;
7651
+ ctokenVaultBump: number;
7652
+ ctokenAllocation: string;
7653
+ lastInvestSlot: string;
7654
+ tokenTargetAllocation: string;
7655
+ }
7656
+ interface KaminoKvaultState {
7657
+ /** The vault's admin — the curator's ADDRESS (sets allocations, fees, the allocation admin). */
7658
+ vaultAdminAuthority: string;
7659
+ baseVaultAuthority: string;
7660
+ baseVaultAuthorityBump: number;
7661
+ tokenMint: string;
7662
+ tokenMintDecimals: number;
7663
+ tokenVault: string;
7664
+ tokenProgram: string;
7665
+ sharesMint: string;
7666
+ sharesMintDecimals: number;
7667
+ /** Raw underlying held idle by the vault. */
7668
+ tokenAvailable: string;
7669
+ /** Raw shares outstanding. */
7670
+ sharesIssued: string;
7671
+ availableCrankFunds: string;
7672
+ performanceFeeBps: number;
7673
+ managementFeeBps: number;
7674
+ lastFeeChargeTimestamp: number;
7675
+ prevAum: string;
7676
+ /** Raw underlying owed to the admin, decimal fraction — deducted from AUM. */
7677
+ pendingFees: string;
7678
+ vaultAllocationStrategy: KaminoKvaultAllocation[];
7679
+ minDepositAmount: string;
7680
+ minWithdrawAmount: string;
7681
+ minInvestAmount: string;
7682
+ minInvestDelaySlots: number;
7683
+ crankFundFeePerReserve: string;
7684
+ pendingAdmin: string;
7685
+ cumulativeEarnedInterest: string;
7686
+ cumulativeMgmtFees: string;
7687
+ cumulativePerfFees: string;
7688
+ /** Empty on a handful of vaults. */
7689
+ name: string;
7690
+ vaultLookupTable: string;
7691
+ vaultFarm: string;
7692
+ creationTimestamp: number;
7693
+ /** The key allowed to move allocations (a bot or the curator's own key). */
7694
+ allocationAdmin: string;
7695
+ }
7696
+ /** One row of `/kvaults/vaults`. `address` is the VaultState account. */
7697
+ interface KaminoKvault {
7698
+ address: string;
7699
+ state: KaminoKvaultState;
7700
+ programId: string;
7701
+ }
7702
+ /** One row of `/kvaults/vaults/metrics` (and `/kvaults/<vault>/metrics`, without `kvault`). */
7703
+ interface KaminoKvaultMetrics {
7704
+ kvault?: string;
7705
+ /** Fractions. `apy` = `apyTheoretical` — the current allocation's rate, net of the vault's fees. */
7706
+ apy: string;
7707
+ apyTheoretical: string;
7708
+ apyActual: string;
7709
+ apy24h: string;
7710
+ apy7d: string;
7711
+ apy30d: string;
7712
+ apy90d: string;
7713
+ apy180d: string;
7714
+ apy365d: string;
7715
+ apyFarmRewards: string;
7716
+ apyIncentives: string;
7717
+ apyReservesIncentives: string;
7718
+ /** USD per whole underlying. */
7719
+ tokenPrice: string;
7720
+ solPrice: string;
7721
+ /** Human underlying. */
7722
+ tokensAvailable: string;
7723
+ tokensAvailableUsd: string;
7724
+ tokensInvested: string;
7725
+ tokensInvestedUsd: string;
7726
+ /** USD per whole SHARE (= tokensPerShare × tokenPrice). */
7727
+ sharePrice: string;
7728
+ /** Whole underlying per whole share — the 4626 `convertToAssets(1)`. */
7729
+ tokensPerShare: string;
7730
+ numberOfHolders: number;
7731
+ sharesIssued: string;
7732
+ cumulativeInterestEarned: string;
7733
+ cumulativeInterestEarnedUsd: string;
7734
+ interestEarnedPerSecond: string;
7735
+ cumulativePerformanceFees: string;
7736
+ cumulativeManagementFees: string;
7737
+ [k: string]: unknown;
7738
+ }
7739
+ /**
7740
+ * A kvault as an EARN VAULT row, the 4626 shape the other Solana families
7741
+ * emit (`LoopscaleEarnVault`, `JupiterLendEarnVault`).
7742
+ *
7743
+ * `address` is the VAULT STATE account, NOT the share mint: it is the
7744
+ * account every kvault instruction names (`vaultState`) and the one
7745
+ * pos-indexer's decoder keys a row by — market uid
7746
+ * `vault.kamino-kvault:solana:<vault state>`. The share a holder owns is
7747
+ * `shareMint`.
7748
+ */
7749
+ interface KaminoKvaultEarnVault {
7750
+ provider: 'kamino-kvault';
7751
+ originProvider: 'kamino-kvault';
7752
+ chainId: string;
7753
+ /** The VaultState account (the decoder's key). */
7754
+ address: string;
7755
+ /** The share token a depositor holds. */
7756
+ shareMint: string;
7757
+ underlying: string;
7758
+ symbol: string;
7759
+ name: string;
7760
+ displayName: string;
7761
+ /** The admin address, base58 verbatim — kvaults publish no curator name; a label layer keyed by this address names it. */
7762
+ curatorName: string;
7763
+ /** `vaultAdminAuthority` — the curator's address (the chain-role arm). */
7764
+ manager: string;
7765
+ /** `allocationAdmin` — the key that moves allocations. */
7766
+ allocationAdmin: string;
7767
+ decimals: number;
7768
+ assetDecimals: number;
7769
+ /** Raw underlying: `tokensPerShare × sharesIssued` (idle + invested − pending fees). */
7770
+ totalAssets: string;
7771
+ /** Raw shares. */
7772
+ totalSupply: string;
7773
+ /** Raw underlying per 10^decimals shares. */
7774
+ convertToAssets: string;
7775
+ convertToShares: string;
7776
+ /** percent APR (`ln(1 + apy)`), net of the vault's fees. */
7777
+ supplyRate: number;
7778
+ /** percent APR from the vault farm + incentives. */
7779
+ rewardsRate: number;
7780
+ depositRate: number;
7781
+ asset?: GenericCurrency;
7782
+ priceUsd?: number;
7783
+ totalAssetsFormatted: number;
7784
+ totalAssetsUsd: number;
7785
+ /** Idle underlying (`tokenAvailable`), raw — what `withdrawFromAvailable` pays without touching a reserve. */
7786
+ liquidity: string;
7787
+ liquidityFormatted: number;
7788
+ liquidityUsd: number;
7789
+ sharePrice: number;
7790
+ sharePriceUsd: number;
7791
+ yieldProfile: 'yield-bearing';
7792
+ denomination: Denomination;
7793
+ logoURI?: string;
7794
+ /** Performance fee, PERCENT. */
7795
+ fee: number;
7796
+ managementFeePct: number;
7797
+ withdrawalMode: Extract<OriginWithdrawalMode, 'instant-capped'>;
7798
+ /** `liquidity / totalAssets` — the idle share; a withdraw also disinvests from reserves with cash. */
7799
+ instantLiquidityRatio: number;
7800
+ /** The venue's APY figures, FRACTIONS, verbatim. */
7801
+ apy: {
7802
+ current: number;
7803
+ actual: number;
7804
+ d1: number;
7805
+ d7: number;
7806
+ d30: number;
7807
+ d90: number;
7808
+ farmRewards: number;
7809
+ incentives: number;
7810
+ /** Reserve incentives — not added to `rewardsRate` (whether `apy` already counts them is not documented). */
7811
+ reservesIncentives: number;
7812
+ };
7813
+ holders: number;
7814
+ vaultFarm?: string;
7815
+ /** The K-Lend reserves it allocates to, with the target weight. */
7816
+ allocations: {
7817
+ reserve: string;
7818
+ weight: number;
7819
+ ctokenAllocation: string;
7820
+ }[];
7821
+ createdAt: number;
7822
+ minDepositAmount: string;
7823
+ }
7824
+
7825
+ /** The kvault program, mainnet. */
7826
+ declare const KVAULT_PROGRAM_ID = "KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd";
7827
+ interface KaminoKvaultApiOptions extends HttpOptions {
7828
+ baseUrl?: string;
7829
+ maxInFlight?: number;
7830
+ /** Page cap for `/kvaults/vaults/metrics` (100 rows a page; 2 pages on 2026-10-02). Default 20. */
7831
+ maxPages?: number;
7832
+ }
7833
+ /** The two kvault routes: the roster (one GET) and the batch metrics (paged by `paginationToken`). */
7834
+ declare function createKaminoKvaultApi(opts?: KaminoKvaultApiOptions): {
7835
+ vaults: () => Promise<KaminoKvault[]>;
7836
+ /** Every page of the batch metrics. A page that fails fails the call — a partial metrics set would read as vaults with no APY. */
7837
+ metrics: () => Promise<KaminoKvaultMetrics[]>;
7838
+ vaultMetrics: (vault: string) => Promise<KaminoKvaultMetrics>;
7839
+ };
7840
+ type KaminoKvaultApi = ReturnType<typeof createKaminoKvaultApi>;
7841
+
7842
+ /**
7843
+ * A HUMAN decimal string × 10^decimals → raw bigint, exact (truncates digits
7844
+ * past `decimals`). `undefined` for anything that is not a plain decimal.
7845
+ */
7846
+ declare function decimalStringToRaw(s: string | number | undefined | null, decimals: number): bigint | undefined;
7847
+ /**
7848
+ * One kvault + its metrics → an earn row. `undefined` when the metrics row
7849
+ * is missing (no share price, no APY: the row would be numbers we do not
7850
+ * have). USD is the venue's `tokenPrice` — Kamino's oracle view of the
7851
+ * underlying — and is left absent when it reads ≤ 0.
7852
+ */
7853
+ declare function convertKaminoKvault(v: KaminoKvault, m: KaminoKvaultMetrics | undefined, opts?: {
7854
+ tokenList?: {
7855
+ [mint: string]: GenericCurrency;
7856
+ };
7857
+ }): KaminoKvaultEarnVault | undefined;
7858
+ interface FetchKaminoKvaultsOptions extends KaminoKvaultApiOptions {
7859
+ tokenList?: {
7860
+ [mint: string]: GenericCurrency;
7861
+ };
7862
+ /** Pre-fetched responses (tests, or a caller that already holds them). */
7863
+ vaults?: KaminoKvault[];
7864
+ metrics?: KaminoKvaultMetrics[];
7865
+ /** Serve vaults with no shares outstanding. Default false. */
7866
+ includeEmpty?: boolean;
7867
+ }
7868
+ /**
7869
+ * Every Kamino kvault as an earn row: 2–3 GETs (roster + paged metrics),
7870
+ * zero RPC. A roster vault with no metrics row is skipped and named; the
7871
+ * metrics' extra vaults (not in the roster) are ignored.
7872
+ */
7873
+ declare function fetchKaminoKvaults(opts?: FetchKaminoKvaultsOptions): Promise<KaminoKvaultEarnVault[]>;
7874
+
7249
7875
  /**
7250
7876
  * Liquid-staking tokens (LSTs) as EARN VAULT rows — the 4626
7251
7877
  * (`FluidFToken`) shape `JupiterLendEarnVault` and `SolsticeVault` share, so
@@ -7593,7 +8219,7 @@ declare function fetchLstVaults(opts?: FetchLstVaultsOptions): Promise<LstEarnVa
7593
8219
  */
7594
8220
 
7595
8221
  /** The origin's `vaults_latest.provider` keys a Solana row takes. */
7596
- type OriginVaultProvider = 'savings' | 'lst' | 'jupiter-lend' | 'loopscale';
8222
+ type OriginVaultProvider = 'savings' | 'lst' | 'jupiter-lend' | 'loopscale' | 'kamino-kvault';
7597
8223
  /** yield-tracer `CommonVaultFields` — one `vaults_latest` row (and its snapshot). */
7598
8224
  interface OriginVaultCommon {
7599
8225
  chainId: string;
@@ -7696,6 +8322,12 @@ interface OriginJupiterLendMeta {
7696
8322
  interface OriginLoopscaleMeta {
7697
8323
  vaultAccount: string;
7698
8324
  strategy: string;
8325
+ /** The curator's ADDRESS (the vault's `manager`), base58 verbatim — `vault_loopscale_meta.curator`. */
8326
+ manager: string;
8327
+ /** The curator's display name as the venue publishes it (also the common `curatorName`). */
8328
+ managerName?: string;
8329
+ /** The curator's logo, verbatim. */
8330
+ managerImage?: string;
7699
8331
  grossRate: number;
7700
8332
  venueApy?: number;
7701
8333
  interestFee: number;
@@ -7718,6 +8350,31 @@ interface OriginLoopscaleMeta {
7718
8350
  rewardsSchedules: LoopscaleEarnVault['rewardsSchedules'];
7719
8351
  description?: string;
7720
8352
  }
8353
+ /**
8354
+ * `vault_kamino_kvault_meta` (NEW — yield-tracer needs the table and the
8355
+ * provider key). The row's `vaultAddress` is the VAULT STATE account (what
8356
+ * every kvault instruction and pos-indexer's decoder name), so the share
8357
+ * mint rides here.
8358
+ */
8359
+ interface OriginKaminoKvaultMeta {
8360
+ shareMint: string;
8361
+ /** `vaultAdminAuthority` — the curator's address, base58 verbatim. */
8362
+ manager: string;
8363
+ allocationAdmin: string;
8364
+ /** Percent. The PERFORMANCE fee is the common `fee`. */
8365
+ managementFeePct: number;
8366
+ convertToAssets: string;
8367
+ convertToShares: string;
8368
+ withdrawalMode: OriginWithdrawalMode;
8369
+ instantLiquidityRatio: number;
8370
+ /** FRACTIONS, verbatim from `/kvaults/vaults/metrics`. */
8371
+ apy: KaminoKvaultEarnVault['apy'];
8372
+ holders: number;
8373
+ vaultFarm?: string;
8374
+ allocations: KaminoKvaultEarnVault['allocations'];
8375
+ createdAt: number;
8376
+ minDepositAmount: string;
8377
+ }
7721
8378
  type OriginSavingsRow = OriginVaultCommon & {
7722
8379
  provider: 'savings';
7723
8380
  metaTable: 'vault_savings_meta';
@@ -7738,8 +8395,13 @@ type OriginLoopscaleRow = OriginVaultCommon & {
7738
8395
  metaTable: 'vault_loopscale_meta';
7739
8396
  meta: OriginLoopscaleMeta;
7740
8397
  };
8398
+ type OriginKaminoKvaultRow = OriginVaultCommon & {
8399
+ provider: 'kamino-kvault';
8400
+ metaTable: 'vault_kamino_kvault_meta';
8401
+ meta: OriginKaminoKvaultMeta;
8402
+ };
7741
8403
  /** One `vaults_latest` row + its meta — structurally a yield-tracer `VaultIngestRow` (`metaTable` is extra and ignored by it). */
7742
- type OriginVaultRow = OriginSavingsRow | OriginLstRow | OriginJupiterLendRow | OriginLoopscaleRow;
8404
+ type OriginVaultRow = OriginSavingsRow | OriginLstRow | OriginJupiterLendRow | OriginLoopscaleRow | OriginKaminoKvaultRow;
7743
8405
  /**
7744
8406
  * The `exponent_vaults_latest` row — yield-tracer's `PendleVaultRow`
7745
8407
  * (`buildPendleRow`'s output) plus the three Exponent columns. Every column
@@ -7795,10 +8457,17 @@ declare function lstOriginRow(r: LstEarnVault): OriginLstRow;
7795
8457
  declare function jupiterLendOriginRow(r: JupiterLendEarnVault): OriginJupiterLendRow;
7796
8458
  /** A curated Loopscale Vault → `loopscale`: `vaultAddress` = the LP mint, the vault account in the meta. */
7797
8459
  declare function loopscaleOriginRow(r: LoopscaleEarnVault): OriginLoopscaleRow;
8460
+ /**
8461
+ * A Kamino kvault → `kamino-kvault`. `vaultAddress` = the VAULT STATE (the
8462
+ * uid pos-indexer's decoder builds, `vault.kamino-kvault:solana:<vault>`);
8463
+ * the share mint is `meta.shareMint` and `shareAsset`. Fee = the
8464
+ * performance fee in percent.
8465
+ */
8466
+ declare function kaminoKvaultOriginRow(r: KaminoKvaultEarnVault): OriginKaminoKvaultRow;
7798
8467
  /** An Exponent PT → `exponent_vaults_latest` (the `buildPendleRow` leg + three columns). */
7799
8468
  declare function exponentOriginRow(r: ExponentPtMarket): ExponentOriginRow;
7800
8469
  /** Any Solana 4626-shaped earn row → its origin row, by family. */
7801
- declare function toOriginVaultRow(r: SolsticeVault | HumaVault | LstEarnVault | JupiterLendEarnVault | LoopscaleEarnVault): OriginVaultRow;
8470
+ declare function toOriginVaultRow(r: SolsticeVault | HumaVault | LstEarnVault | JupiterLendEarnVault | LoopscaleEarnVault | KaminoKvaultEarnVault): OriginVaultRow;
7802
8471
 
7803
8472
  interface KaminoOracleEntryOptions extends KaminoApiOptions {
7804
8473
  /** unix seconds; defaults to now — the reference for each price's own `maxAgeInSeconds`. */
@@ -7855,23 +8524,35 @@ declare function fetchJupiterLendOracleEntries(opts?: JupiterLendApiOptions): Pr
7855
8524
  [lender: string]: OraclePriceEntry[];
7856
8525
  }>;
7857
8526
 
7858
- /**
7859
- * Save's reserve prices — the stored `liquidity.marketPrice` of every served
7860
- * reserve, USD × 1e18 as of the reserve's last refresh (minutes old on
7861
- * touched reserves; can be DAYS old on a dormant one, hence `feedUpdatedAt`
7862
- * is absent and `description` carries the slot). Pyth pull for the majors,
7863
- * Switchboard On-Demand for the tail; every SOL-LST is the SOL feed × the
7864
- * reserve's `scaledPriceOffsetBPS` dial, and says so.
7865
- *
7866
- * This is the Solana side's second price source after Kamino's, and the
7867
- * first to cover the SOL-LST basket (mSOL, bSOL, JitoSOL, JupSOL, saveSOL …).
7868
- */
7869
- declare function fetchSaveOracleEntries(opts?: FetchSavePublicOptions & {
8527
+ interface FetchSaveOracleOptions extends FetchSavePublicOptions {
7870
8528
  /** Reuse an already-fetched public response instead of fetching. */
7871
8529
  publicData?: {
7872
8530
  [lender: string]: SavePublicResponse;
7873
8531
  };
7874
- }): Promise<{
8532
+ /** For the feed reads; the package's default public pool otherwise. */
8533
+ rpc?: SvmRpc;
8534
+ /** `false` = the stored reserve price only (no RPC). Default true. */
8535
+ live?: boolean;
8536
+ }
8537
+ /**
8538
+ * Save's reserve prices, read off the FEEDS the reserves name: the Pyth
8539
+ * `PriceUpdateV2` (`pythOracle`) or the Switchboard account
8540
+ * (`switchboardOracle` — On-Demand pull feed, or a V2 aggregator on old
8541
+ * reserves), plus the legacy Pyth price account on a few. Of the reserve's
8542
+ * readable feeds the most recently updated one is used — the program reads
8543
+ * Pyth first and falls back to Switchboard when Pyth is stale, so the
8544
+ * freshest feed is the one a refresh would land on. Every SOL-LST is the SOL
8545
+ * feed × the reserve's `scaledPriceOffsetBPS` dial, applied here as the
8546
+ * program does (`price × (1 + bps / 1e4)`).
8547
+ *
8548
+ * `feedUpdatedAt` is the FEED's own timestamp: a live feed reads fresh even
8549
+ * when the reserve has not been refreshed for days, and a dead feed (a
8550
+ * Switchboard V2 aggregator, an uncranked pull feed) reads as old as it is.
8551
+ * When no feed decodes (no RPC, an unknown owner), the reserve's STORED
8552
+ * `liquidity.marketPrice` is served as before — with no `feedUpdatedAt`,
8553
+ * because its age is the reserve's, not a feed's.
8554
+ */
8555
+ declare function fetchSaveOracleEntries(opts?: FetchSaveOracleOptions): Promise<{
7875
8556
  [lender: string]: OraclePriceEntry[];
7876
8557
  }>;
7877
8558
 
@@ -7883,6 +8564,8 @@ interface FetchOraclePricesOptions extends KaminoApiOptions {
7883
8564
  };
7884
8565
  /** Restrict to these fetchers (`['kamino']`). */
7885
8566
  onlyFetchers?: string[];
8567
+ /** The pool for the on-chain reads (Save's feeds, Project 0's banks + feeds); the package's default public pool otherwise. */
8568
+ rpc?: SvmRpc;
7886
8569
  }
7887
8570
  /**
7888
8571
  * margin-fetcher's `fetchOraclePrices`, reduced: per chain, run every
@@ -7891,7 +8574,8 @@ interface FetchOraclePricesOptions extends KaminoApiOptions {
7891
8574
  * `failedChains`, never silently empty — the yield-tracer cron logs it.
7892
8575
  *
7893
8576
  * Five fetchers: Kamino (its API's oracle prices), Jupiter Lend (the
7894
- * vault oracle per vault), Save (each reserve's stored `marketPrice`),
8577
+ * vault oracle per vault), Save (each reserve's Pyth / Switchboard feed,
8578
+ * read live; the stored `marketPrice` when no feed decodes),
7895
8579
  * Loopscale (USD derived from its API — the only reader of the RWA
7896
8580
  * collaterals its book is made of) and Project 0 (the bank's Pyth feed ×
7897
8581
  * its stake-pool rate, live — the only reader of the native-stake tokens).
@@ -8885,4 +9569,4 @@ declare function loopscaleTermAdapter(m: LoopscaleMarketMeta, term?: LoopscaleTe
8885
9569
  */
8886
9570
  declare function project0TermAdapter(row: P0PoolData, group?: P0GroupMeta): DeepPartial<TermSheet>;
8887
9571
 
8888
- export { type Base58, type BasketParams, type ConvertContext, type ConvertJupiterLendOptions, type ConvertLoopscaleOptions, type ConvertLoopscaleUserOptions, DEFAULT_ELEVATION_GROUP, type DecimalString, type DecodedStakePool, type Denomination, EXPONENT_API_BASE, EXPONENT_PROGRAMS, type EusxRate, type ExponentApi, type ExponentApiOptions, type ExponentAssetRef, type ExponentOriginRow, type ExponentPtMarket, type ExponentPtMarkets, type ExponentSyToken, type ExponentToken, type ExponentVault, FLUID_ORACLE_DECIMALS, FLUID_VAULT_TYPE_T1, type FetchExponentPtOptions, type FetchHumaVaultsOptions, type FetchJupiterLendPublicOptions, type FetchKaminoPublicOptions, type FetchKaminoUserOnchainOptions, type FetchKaminoUserOptions, type FetchLenderAllOptions, type FetchLoopscaleEarnVaultsOptions, type FetchLoopscalePublicOptions, type FetchLoopscaleUserOptions, type FetchLstVaultsOptions, type FetchOraclePricesOptions, type FetchP0PublicOptions, type FetchP0UserOptions, type FetchSavePublicOptions, type FetchSaveUserOptions, type FetchSolsticeUserOptions, type FetchSolsticeVaultsOptions, type FetchUserAllOptions, type GetLenderPublicDataAllOptions, HUMA_CLASSIC_MODE_ID, HUMA_DECIMALS, HUMA_IDL, HUMA_MPST_MINT, HUMA_POOL, HUMA_PROGRAM, HUMA_PST_MINT, HUMA_REDEMPTION_REQUEST_SIZE, HUMA_REDEMPTION_SLA_SECONDS, HUMA_SEEDS, HttpError, type HttpOptions, type HumaChainState, type HumaConvertContext, type HumaInstantWithdrawalFeeConfig, type HumaLenderState, type HumaModeConfig, type HumaModeState, type HumaPoolConfig, type HumaPoolState, type HumaRedemptionGating, type HumaRedemptionRequest, type HumaVault, type HumaVaults, JL_BPS, JL_FACTOR_SCALE, JL_ORACLE_DECIMALS, JL_ORACLE_SCALE, JUPITER_LEND_API_BASE, JUPITER_LEND_KEYED_API_BASE, JUPITER_LEND_MARKETS, JUPITER_LEND_PROFILE_ID, JUPITER_LEND_PROGRAMS, JUPITER_PRICE_API_BASE, JUPITER_PRICE_KEYED_API_BASE, JUP_FLASHLOAN_IDL, JUP_FLASHLOAN_PROGRAMS, JUP_LIQUIDITY_PROGRAMS, type JupFlashloanAdmin, type JupiterLendApi, type JupiterLendApiOptions, type JupiterLendBorrowPosition, type JupiterLendBundleParams, type JupiterLendConfigEntry, type JupiterLendConversion, type JupiterLendEarnPosition, type JupiterLendEarnToken, type JupiterLendEarnVault, type JupiterLendFluidSide, type JupiterLendFluidVault, type JupiterLendLiquidityBorrowData, type JupiterLendLiquiditySupplyData, type JupiterLendMarket, type JupiterLendMarketId, type JupiterLendOracleSource, type JupiterLendPoolData, type JupiterLendPublicResponse, type JupiterLendSkipReason, type JupiterLendToken, type JupiterLendUserExt, type JupiterLendUserResult, type JupiterLendVault, type JupiterLendVaultMeta, type JupiterPriceApiOptions, type JupiterPriceMap, KAMINO_API_BASE, KAMINO_MAIN_MARKET, KAMINO_MARKET_DENYLIST, KAMINO_MIN_MARKET_DEPOSITS_USD, KAMINO_OBLIGATION_TAGS, KAMINO_PRICE_AGREEMENT, KAMINO_PROFILE_ID, KLEND_COLLATERAL_MINT_DECIMALS, KLEND_IDL, KLEND_MARKET_SIZE, KLEND_OBLIGATION_DISCRIMINATOR, KLEND_OBLIGATION_OWNER_OFFSET, KLEND_OBLIGATION_SIZE, KLEND_PROGRAM_ID, KLEND_RESERVE_FLASH_SLICE, KLEND_RESERVE_SIZE, KLEND_RESERVE_SLICE, KLEND_U64_MAX, type KaminoApi, type KaminoApiOptions, type KaminoApiUserExt, type KaminoApyWindows, type KaminoBorrowReserveTerms, type KaminoCapBucket, type KaminoCollateralReserve, type KaminoCompoundMetadata, type KaminoConfigEntry, type KaminoLeveragePair, type KaminoLoanBorrow, type KaminoLoanDeposit, type KaminoLoanInfo, type KaminoMarketConfig, type KaminoMarketInputs, type KaminoMarketMeta, type KaminoMarketPrices, type KaminoModeContext, type KaminoObligation, type KaminoObligationLegs, type KaminoObligationView, type KaminoOnchainUserExt, type KaminoOracleEntryOptions, type KaminoOraclePrice, type KaminoOraclePriceMap, type KaminoPairIncentive, type KaminoPoolData, type KaminoPublicConversion, type KaminoPublicResponse, type KaminoRateBasis, type KaminoRateType, type KaminoReserveAccountData, type KaminoReserveExt, type KaminoReserveInputs, type KaminoReserveMetrics, type KaminoReserveMetricsDetail, type KaminoReserveRisk, type KaminoReserveState, type KaminoReserveStats, type KaminoReserveStatus, type KaminoRewardApy, type KaminoUserContext, type KaminoUserError, type KaminoUserObligationRef, type KaminoWithdrawalCapStats, type KaminoWithdrawalCapView, type KlendElevationGroupTerms, type KlendMarketChain, type KlendObligationReserves, type KlendReserveChain, type KlendReserveFlash, type KlendWithdrawalCap, LENDER_BRAND_NAMES, LOANS_PAGE, LOOPSCALE_ACCOUNT_DISCRIMINATORS, LOOPSCALE_API_BASE, LOOPSCALE_BEAM_ORACLE_PROGRAM_ID, LOOPSCALE_CONFIG_LABEL, LOOPSCALE_DOCS_URL, LOOPSCALE_GRACE_PERIOD_SECS, LOOPSCALE_IDL, LOOPSCALE_OPEN_LOANS, LOOPSCALE_PROFILE_ID, LOOPSCALE_PROGRAM_ID, LS_CBPS, LS_NO_ACCOUNT, LS_TENORS, LS_U64_MAX, type LayerTotals, type LenderBundle, type LenderPublicDataMap, type LenderPublicResponse, type LendingBasketMeta, type ListServedMarketsOptions, type LoopscaleApi, type LoopscaleApiOptions, type LoopscaleAssetData, type LoopscaleAssetTerms, type LoopscaleBestOffer, type LoopscaleCapMonitor, type LoopscaleCapsDecoded, type LoopscaleCollateralAccount, type LoopscaleConfigEntry, type LoopscaleConversion, type LoopscaleDuration, type LoopscaleDurationAndApy, type LoopscaleEarnVault, type LoopscaleExternalYieldInfo, type LoopscaleFixedTerm, type LoopscaleLadderLevel, type LoopscaleLedger, type LoopscaleLedgerAccount, type LoopscaleLedgerTerm, type LoopscaleLendingVaultInfo, type LoopscaleLoanAccount, type LoopscaleLoanBook, type LoopscaleLoanCollateral, type LoopscaleLoanDecoded, type LoopscaleLoanPiece, type LoopscaleLoanSummaryItem, type LoopscaleLoansRequest, type LoopscaleLoansResponse, type LoopscaleLoopInfo, type LoopscaleLoopsResponse, type LoopscaleMarketAsset, type LoopscaleMarketInfoDecoded, type LoopscaleMarketMeta, type LoopscaleMarketTerm, type LoopscaleMaxQuote, type LoopscaleMaxQuoteRequest, type LoopscaleMorphoMarket, type LoopscaleOfferingVault, type LoopscaleOpenParameter, type LoopscaleOracleRef, type LoopscalePair, type LoopscalePairBook, type LoopscalePieceLedger, type LoopscalePoolData, type LoopscalePrincipalCaps, type LoopscalePublicResponse, type LoopscaleQuoteOffer, type LoopscaleQuoteRequest, type LoopscaleRewardsSchedule, type LoopscaleRosterOptions, type LoopscaleStrategyAccount, type LoopscaleStrategyDecoded, type LoopscaleStrategyInfo, type LoopscaleStrategySummary, type LoopscaleStrategyTerms, type LoopscaleTerm, type LoopscaleTermId, type LoopscaleTotals, type LoopscaleUserExt, type LoopscaleUserLedger, type LoopscaleUserLoan, type LoopscaleUserPosition, type LoopscaleUserResult, type LoopscaleVaultAccount, type LoopscaleVaultMetadata, type LoopscaleVaultsRequest, type LoopscaleVaultsResponse, type LstConvertContext, type LstEarnVault, type LstEntry, type LstStakingApySource, type MarketOverrides, ORACLE_CANONICAL_SIZE, type OraclePriceEntry, type OraclePriceMap, type OriginJupiterLendMeta, type OriginJupiterLendRow, type OriginLoopscaleMeta, type OriginLoopscaleRow, type OriginLstMeta, type OriginLstMetaAdditions, type OriginLstRow, type OriginSavingsMeta, type OriginSavingsRow, type OriginVaultCommon, type OriginVaultProvider, type OriginVaultRow, type OriginWithdrawalMode, type P0AccountView, type P0Api, type P0ApiOptions, type P0AssetTag, type P0Balance, type P0BalanceView, type P0Bank, type P0BankCache, type P0BankConfig, type P0BankDto, type P0BankExt, type P0BankInputs, type P0BankMeta, type P0BankMetaMap, type P0BankPrice, type P0BankRef, type P0CircuitBreakerState, type P0ConfigEntry, type P0ConvertContext, type P0EmodeEntry, type P0EmodeLift, type P0EmodeRoster, type P0EmodeSettings, type P0EmodeTag, type P0Group, type P0GroupInputs, type P0GroupMeta, type P0HealthCache, type P0Integration, type P0InterestRateConfig, type P0MarginfiAccount, type P0OnChainBankMeta, type P0OperationalState, type P0OracleSetup, type P0PoolData, type P0PriceMap, type P0PriceResolution, type P0PublicConversion, type P0PublicResponse, type P0RateLimitWindow, type P0RateLimiter, type P0RatePoint, type P0Rates, type P0RiskTier, type P0StateSemantics, type P0UnservedBalance, type P0UserExt, type P0UserResponse, type P0VenueMultiplier, type P0VenueMultiplierMap, P0_ACCOUNT_AUTHORITY_OFFSET, P0_ACCOUNT_FLAGS, P0_ACCOUNT_GROUP_OFFSET, P0_ADJUSTED_CACHE_SETUPS, P0_API_BASE, P0_ASSET_TAG, P0_BANK_CONFIG_PYTH_PUSH_MIGRATED, P0_BANK_DISCRIMINATOR, P0_BANK_FLAGS, P0_BANK_GROUP_OFFSET, P0_BANK_SIZE, P0_CACHED_PRICE_MULTIPLIER_SETUPS, P0_DEFAULT_LIQUIDATION_FEE, P0_EMODE_BASE_LABEL, P0_EMODE_ON, P0_GROUP_PROGRAM_FEES_ENABLED, P0_GROUP_SIZE, P0_I80F48_FRACTION_BITS, P0_IDL, P0_LIQUIDATION_CLOSEOUT_USD, P0_LOOKUP_TABLES, P0_MAIN_GROUP, P0_MARGINFI_ACCOUNT_DISCRIMINATOR, P0_MARGINFI_ACCOUNT_SIZE, P0_MAX_BALANCES, P0_MAX_EMODE_ENTRIES, P0_NATIVE_STAKE_LOOKUP_TABLES, P0_PAUSE_DURATION_SECONDS, P0_PROGRAM_ID, P0_PYTH_PUSH_SETUPS, P0_SECONDS_PER_YEAR, P0_SEEDS, P0_STAGING_GROUP, P0_STAGING_PROGRAM_ID, P0_STAKE_POOL_PROGRAMS, P0_SVSP_PHANTOM_TOKEN_AMOUNT, P0_U32_MAX, P0_U64_MAX, PROJECT_0_PROFILE_ID, PYTH_PRICE_UPDATE_V2_DISCRIMINATOR, PYTH_RECEIVER_PROGRAM, type PythPriceUpdate, type ResolveP0PricesOptions, type RewardsList, SAVE_API_BASE, SAVE_CREATOR, SAVE_DEFAULT_AVG_SLOT_SECONDS, SAVE_DEFAULT_OBLIGATION_PROBE, SAVE_FULL_LIQUIDATION_VALUE_USD, SAVE_INITIAL_EXCHANGE_RATE_WAD, SAVE_LIQUIDATION_CLOSE_FACTOR, SAVE_MAIN_MARKET, SAVE_MARKET_DENYLIST, SAVE_MAX_BONUS_PCT, SAVE_MAX_LIQUIDATABLE_VALUE_USD, SAVE_MAX_OBLIGATION_PROBE, SAVE_MAX_OBLIGATION_RESERVES, SAVE_NULL_ORACLE, SAVE_OBLIGATION_SIZE, SAVE_POSITION_LIMIT, SAVE_PROFILE_ID, SAVE_PROFILE_ID_PROSE, SAVE_PROGRAM_ID, SAVE_RESERVE_SIZE, SAVE_SLOTS_PER_YEAR, SAVE_U64_MAX, SAVE_UNBORROWABLE_BORROW_FACTOR, SAVE_WAD, SAVE_WALLET_POS_ID, SECONDS_PER_YEAR, SETTLEMENT_BATCH_SIZE, SOLANA_CHAIN_ID, SOLSTICE_APP_API_BASE, SOLSTICE_DECIMALS, SOLSTICE_MINTS, SOLSTICE_PRICE_DECIMALS, SOLSTICE_PROGRAMS, SOLSTICE_STRATEGIES, SOLSTICE_YIELD_STRATEGY_IDL, SOLSTICE_YIELD_VAULT_IDL, SPL_STAKE_POOL_LSTS, SPL_STAKE_POOL_PROGRAM, STABLECOIN_SYMBOLS, STAKE_ACCOUNT_RENT_EXEMPT_LAMPORTS, type SaveApi, type SaveApiOptions, type SaveCompoundV2Metadata, type SaveLastUpdate, type SaveLiquidityToken, type SaveMarketConfig, type SaveMarketInputs, type SaveMarketMeta, type SaveObligation, type SaveObligationBorrow, type SaveObligationDeposit, type SaveObligationView, type SavePoolData, type SavePublicConversion, type SavePublicResponse, type SaveRateLimiter, type SaveRates, type SaveReserveAccount, type SaveReserveCollateral, type SaveReserveConfig, type SaveReserveConfigState, type SaveReserveExt, type SaveReserveFees, type SaveReserveInputs, type SaveReserveLiquidity, type SaveReserveRef, type SaveReserveState, type SaveReservesResponse, type SaveRosterOptions, type SaveUnservedLeg, type SaveUserExt, type SaveUserResponse, type SaveWalletCTokenView, type ServedMarket, type SolanaPoolData, type SolanaSubAccountInfo, type SolanaUserPosition, type SolanaUserPositions, type SolanaUserResult, type SolsticeAccountingState, type SolsticeApiOptions, type SolsticeAppApi, type SolsticeChainState, type SolsticeController, type SolsticeConvertContext, type SolsticeCooldownEscrow, type SolsticeHolding, type SolsticeJuniorUnlockShare, type SolsticeOraclePrice, type SolsticePending, type SolsticeProtocolStats, type SolsticeSeniorUnlockCooldown, type SolsticeSettlementBatch, type SolsticeSettlementBatchView, type SolsticeStrategy, type SolsticeStrategyController, type SolsticeStrategyMode, type SolsticeStrategyName, type SolsticeStrategyPdas, type SolsticeUserPositions, type SolsticeVault, type SolsticeVaults, type SolsticeVestingSchedule, type SolsticeYieldPool, type SolsticeYieldVaultPdas, type StakePoolFee, type StructuredOraclePrices, TERM_PROFILES, type TokenListInput, type TrancheRates, type USDPriceMap, WSOL_MINT, type WireU64, type YieldProfile, accountDiscriminator, aggregateLoopscaleLoanBook, apyFractionToAprPercent, attributeBestOffer, attributeLoopscaleLoan, bigMax0, bpsToPercent, buildKaminoConfig, buildKaminoEModes, buildKaminoMarketMeta, buildLoopscaleRoster, buildLoopscaleTerms, buildP0EModes, buildSolsticeVaults, capOrUndefined, cbpsToFraction, cbpsToPercent, cbpsToWad, convertEusx, convertExponentVault, convertHumaPst, convertJupiterLendEarnToken, convertJupiterLendOracleEntries, convertJupiterLendUserPositions, convertJupiterLendVault, convertKaminoLoans, convertKaminoMarket, convertKaminoOraclePrices, convertKaminoReserve, convertLoopscalePair, convertLoopscaleUser, convertLoopscaleVault, convertLst, convertP0Bank, convertP0Group, convertSaveMarket, convertSaveReserve, convertTranche, createExponentApi, createJupiterLendApi, createKaminoApi, createLimiter, createLoopscaleApi, createMarketUid, createP0Api, createPacer, createSaveApi, createSolsticeAppApi, createWithSeed, decimalStringToI80F48, decodeAccountingState, decodeController, decodeCooldownEscrow, decodeHumaLenderState, decodeHumaModeConfig, decodeHumaPoolConfig, decodeHumaPoolState, decodeHumaRedemptionRequest, decodeJuniorUnlockShare, decodeJupFlashloanAdmin, decodeKaminoObligation, decodeKaminoReserveState, decodeLoopscaleLoan, decodeLoopscaleMarketInformation, decodeLoopscaleStrategy, decodeOracleCanonical, decodeP0Bank, decodeP0BankMetadata, decodeP0Group, decodeP0MarginfiAccount, decodePythPriceUpdate, decodeSaveObligation, decodeSeniorUnlockCooldown, decodeSettlementBatch, decodeStakePool, decodeStrategy, decodeStrategyController, decodeVestingSchedule, decodeYieldPool, denominationOf, deriveLayerTotals, deriveLoopscalePrices, deriveP0Mode, describeBasket, describeKaminoObligation, durationDays, epochRatePercent, epochRealizedApr, eusxAssetsToShares, eusxEpochRatePercent, eusxRate, eusxSharesToAssets, exchangeRateWad, exponentOriginRow, feeBps, fetchExponentPtMarkets, fetchHumaPstVaults, fetchJupiterLendEarnVaults, fetchJupiterLendOracleEntries, fetchJupiterLendPublic, fetchJupiterLendUser, fetchJupiterPrices, fetchKaminoOracleEntries, fetchKaminoOraclePrices, fetchKaminoPublic, fetchKaminoUser, fetchKaminoUserOnchain, fetchLenderAll, fetchLoopscaleEarnVaults, fetchLoopscaleLoanBook, fetchLoopscalePublic, fetchLoopscaleUser, fetchLstVaults, fetchOraclePrices, fetchProject0Public, fetchProject0User, fetchSaveOracleEntries, fetchSavePublic, fetchSaveUser, fetchSolsticeSettlementBatches, fetchSolsticeUser, fetchSolsticeVaults, fetchUserAll, formatRawUnits, getJson, getLenderPublicData, getLenderPublicDataAll, getLendersForChain, getTermProfile, humaDeploymentStatePda, humaLenderStatePda, humaModeConfigPda, humaModeMintPda, humaOriginRow, humaPoolAuthorityPda, humaPoolConfigPda, humaPoolStatePda, humaRedemptionRequestPda, i80f48ToDecimalString, i80f48ToNumber, isBorrowable, isLenderBrand, isLiveVault, isNullKey, isP0FixedSetup, isP0U64Max, isSaveBorrowable, isSaveUnrealizable, isStablecoinSymbol, isStaleKaminoPrice, isSyntheticQuoteMint, isU64Max, isUncapped, jlOraclePriceInBorrow, jlOracleToFluidRaw, joinableBatch, juniorUnlockSharePda, jupFlashBorrowPosition, jupFlashloanAdmin, jupLiquidity, jupLiquidityReserve, jupLiquidityVault, jupRateModel, jupiterLendCurrency, jupiterLendOriginRow, jupiterLendTermAdapter, kaminoAsset, kaminoBorrowFactorToRow, kaminoCloseFactor, kaminoDefaultEntry, kaminoGroupLabel, kaminoOracleEntriesFromMarkets, kaminoRewards, kaminoRiskByReserve, kaminoTagLabel, kaminoTermAdapter, klendMarketAuthority, klendObligationPda, ledgerFaceAt, ledgerInterestAt, ledgerPrincipal, lenderBrandName, lenderDisplayName, liquidityRatio, listServedMarkets, loopscaleOriginRow, loopscaleTermAdapter, lstOriginRow, maxLeverageOf, mintSupply, normalizeP0BankDto, num, obligationPubkey, oracleCanonicalPda, p0BankMetadataPda, p0BankRef, p0CurveKnots, p0DecimalString, p0EmodeRoster, p0FeeState, p0GroupPausedAt, p0Integration, p0LegacyBaseRate, p0LiquidationFee, p0LiquidityVault, p0LiquidityVaultAuthority, p0MarginfiAccountPda, p0MultipointBaseRate, p0NeedsVenueMultiplier, p0Rates, p0StateSemantics, p0SupplyCapTokens, p0Utilization, parseExpirySeconds, pieceLqt, podBool, podDecimalToNumber, podToBigInt, podToNumber, postJson, project0TermAdapter, readEpochClock, readHumaChainState, readHumaLenderState, readHumaRedemptionRequests, readJupFlashAssets, readJupFlashAvailable, readJupFlashloanAdmin, readKlendElevationGroups, readKlendFlashFacts, readKlendLendingMarket, readKlendMarketState, readKlendObligationReserves, readKlendReserveChain, readKlendReserveFlash, readLoopscaleLoans, readLoopscaleMarketInformation, readP0BankMetadata, readP0Banks, readReserveLamports, readSolsticeChainState, readStakePools, registriesToRead, resolveP0Prices, sameDuration, saveAssetGroup, saveBorrowCurvePercent, saveBorrowedRaw, saveExchangeRateWad, saveLiquidationPenalty, saveObligationAddress, saveObligationSeed, saveRates, saveReserveRef, saveSlotYearScale, saveTermAdapter, saveTotalSupplyWads, saveUtilization, scaledToDecimal, scanP0Banks, selectAssetGroupPrices, selectSaveMarkets, seniorCooldownPdas, settlementBatchPdas, solsticeOriginRow, strategyMode, strategyNameOf, strategyPdas, strategyTvlRaw, tenorOf, termIdOf, toOriginVaultRow, tokenAmount, trancheAssetsToShares, trancheRates, trancheSharesToAssets, u32ToBasis, u32ToCenti, u32ToMilli, unvestedAt, valueKaminoObligations, wadToNumber, wadsToFloat, yieldVaultCooldownPdas, yieldVaultPdas };
9572
+ export { type Base58, type BasketParams, type ConvertContext, type ConvertJupiterLendOptions, type ConvertLoopscaleOptions, type ConvertLoopscaleUserOptions, DEFAULT_ELEVATION_GROUP, type DecimalString, type DecodedStakePool, type Denomination, EXPONENT_API_BASE, EXPONENT_PROGRAMS, type EusxRate, type ExponentApi, type ExponentApiOptions, type ExponentAssetRef, type ExponentOriginRow, type ExponentPtMarket, type ExponentPtMarkets, type ExponentSyToken, type ExponentToken, type ExponentVault, FLUID_ORACLE_DECIMALS, FLUID_VAULT_TYPE_T1, type FetchExponentPtOptions, type FetchHumaVaultsOptions, type FetchJupiterLendPublicOptions, type FetchKaminoKvaultsOptions, type FetchKaminoPublicOptions, type FetchKaminoUserOnchainOptions, type FetchKaminoUserOptions, type FetchLenderAllOptions, type FetchLoopscaleEarnVaultsOptions, type FetchLoopscalePublicOptions, type FetchLoopscaleUserOptions, type FetchLstVaultsOptions, type FetchOraclePricesOptions, type FetchP0PublicOptions, type FetchP0UserOptions, type FetchSaveOracleOptions, type FetchSavePublicOptions, type FetchSaveUserOptions, type FetchSolsticeUserOptions, type FetchSolsticeVaultsOptions, type FetchUserAllOptions, type GetLenderPublicDataAllOptions, HUMA_CLASSIC_MODE_ID, HUMA_DECIMALS, HUMA_IDL, HUMA_MPST_MINT, HUMA_POOL, HUMA_PROGRAM, HUMA_PST_MINT, HUMA_REDEMPTION_REQUEST_SIZE, HUMA_REDEMPTION_SLA_SECONDS, HUMA_SEEDS, HttpError, type HttpOptions, type HumaChainState, type HumaConvertContext, type HumaInstantWithdrawalFeeConfig, type HumaLenderState, type HumaModeConfig, type HumaModeState, type HumaPoolConfig, type HumaPoolState, type HumaRedemptionGating, type HumaRedemptionRequest, type HumaVault, type HumaVaults, JL_BPS, JL_EXCHANGE_PRICES_PRECISION, JL_FACTOR_SCALE, JL_ORACLE_DECIMALS, JL_ORACLE_SCALE, JL_VAULTS_ACCOUNTS_IDL, JL_VAULT_AMOUNT_DECIMALS, JUPITER_LEND_API_BASE, JUPITER_LEND_KEYED_API_BASE, JUPITER_LEND_MARKETS, JUPITER_LEND_PROFILE_ID, JUPITER_LEND_PROGRAMS, JUPITER_PRICE_API_BASE, JUPITER_PRICE_KEYED_API_BASE, JUP_DEX_PROGRAM, JUP_FLASHLOAN_IDL, JUP_FLASHLOAN_PROGRAMS, JUP_LIQUIDITY_PROGRAMS, JUP_VAULTS_PROGRAMS, type JlLayerIrm, type JlOnchainVault, type JupFlashloanAdmin, type JupiterLendApi, type JupiterLendApiOptions, type JupiterLendBorrowPosition, type JupiterLendBundleParams, type JupiterLendConfigEntry, type JupiterLendConversion, type JupiterLendEarnPosition, type JupiterLendEarnToken, type JupiterLendEarnVault, type JupiterLendFluidSide, type JupiterLendFluidVault, type JupiterLendLiquidityBorrowData, type JupiterLendLiquiditySupplyData, type JupiterLendMarket, type JupiterLendMarketId, type JupiterLendOracleSource, type JupiterLendPoolData, type JupiterLendPublicResponse, type JupiterLendSkipReason, type JupiterLendToken, type JupiterLendUserExt, type JupiterLendUserResult, type JupiterLendVault, type JupiterLendVaultMeta, type JupiterPriceApiOptions, type JupiterPriceMap, KAMINO_API_BASE, KAMINO_MAIN_MARKET, KAMINO_MARKET_DENYLIST, KAMINO_MIN_MARKET_DEPOSITS_USD, KAMINO_OBLIGATION_TAGS, KAMINO_PRICE_AGREEMENT, KAMINO_PROFILE_ID, KLEND_COLLATERAL_MINT_DECIMALS, KLEND_IDL, KLEND_MARKET_SIZE, KLEND_OBLIGATION_DISCRIMINATOR, KLEND_OBLIGATION_OWNER_OFFSET, KLEND_OBLIGATION_SIZE, KLEND_PROGRAM_ID, KLEND_RESERVE_FLASH_SLICE, KLEND_RESERVE_SIZE, KLEND_RESERVE_SLICE, KLEND_U64_MAX, KVAULT_PROGRAM_ID, type KaminoApi, type KaminoApiOptions, type KaminoApiUserExt, type KaminoApyWindows, type KaminoBorrowReserveTerms, type KaminoCapBucket, type KaminoCollateralReserve, type KaminoCompoundMetadata, type KaminoConfigEntry, type KaminoKvault, type KaminoKvaultAllocation, type KaminoKvaultApi, type KaminoKvaultApiOptions, type KaminoKvaultEarnVault, type KaminoKvaultMetrics, type KaminoKvaultState, type KaminoLeveragePair, type KaminoLoanBorrow, type KaminoLoanDeposit, type KaminoLoanInfo, type KaminoMarketConfig, type KaminoMarketInputs, type KaminoMarketMeta, type KaminoMarketPrices, type KaminoModeContext, type KaminoObligation, type KaminoObligationLegs, type KaminoObligationView, type KaminoOnchainUserExt, type KaminoOracleEntryOptions, type KaminoOraclePrice, type KaminoOraclePriceMap, type KaminoPairIncentive, type KaminoPoolData, type KaminoPublicConversion, type KaminoPublicResponse, type KaminoRateBasis, type KaminoRateType, type KaminoReserveAccountData, type KaminoReserveExt, type KaminoReserveInputs, type KaminoReserveMetrics, type KaminoReserveMetricsDetail, type KaminoReserveRisk, type KaminoReserveState, type KaminoReserveStats, type KaminoReserveStatus, type KaminoRewardApy, type KaminoUserContext, type KaminoUserError, type KaminoUserObligationRef, type KaminoWithdrawalCapStats, type KaminoWithdrawalCapView, type KlendElevationGroupTerms, type KlendMarketChain, type KlendObligationReserves, type KlendReserveChain, type KlendReserveFlash, type KlendWithdrawalCap, LENDER_BRAND_NAMES, LOANS_PAGE, LOOPSCALE_ACCOUNT_DISCRIMINATORS, LOOPSCALE_API_BASE, LOOPSCALE_BEAM_ORACLE_PROGRAM_ID, LOOPSCALE_CONFIG_LABEL, LOOPSCALE_DOCS_URL, LOOPSCALE_GRACE_PERIOD_SECS, LOOPSCALE_IDL, LOOPSCALE_OPEN_LOANS, LOOPSCALE_PROFILE_ID, LOOPSCALE_PROGRAM_ID, LS_CBPS, LS_NO_ACCOUNT, LS_TENORS, LS_U64_MAX, type LayerTotals, type LenderBundle, type LenderPublicDataMap, type LenderPublicResponse, type LendingBasketMeta, type ListServedMarketsOptions, type LoopscaleApi, type LoopscaleApiOptions, type LoopscaleAssetData, type LoopscaleAssetTerms, type LoopscaleBestOffer, type LoopscaleCapMonitor, type LoopscaleCapsDecoded, type LoopscaleCollateralAccount, type LoopscaleConfigEntry, type LoopscaleConversion, type LoopscaleDuration, type LoopscaleDurationAndApy, type LoopscaleEarnVault, type LoopscaleExternalYieldInfo, type LoopscaleFixedTerm, type LoopscaleLadderLevel, type LoopscaleLedger, type LoopscaleLedgerAccount, type LoopscaleLedgerTerm, type LoopscaleLendingVaultInfo, type LoopscaleLoanAccount, type LoopscaleLoanBook, type LoopscaleLoanCollateral, type LoopscaleLoanDecoded, type LoopscaleLoanPiece, type LoopscaleLoanSummaryItem, type LoopscaleLoansRequest, type LoopscaleLoansResponse, type LoopscaleLoopInfo, type LoopscaleLoopsResponse, type LoopscaleMarketAsset, type LoopscaleMarketInfoDecoded, type LoopscaleMarketMeta, type LoopscaleMarketTerm, type LoopscaleMaxQuote, type LoopscaleMaxQuoteRequest, type LoopscaleMorphoMarket, type LoopscaleOfferingVault, type LoopscaleOpenParameter, type LoopscaleOracleRef, type LoopscalePair, type LoopscalePairBook, type LoopscalePieceLedger, type LoopscalePoolData, type LoopscalePrincipalCaps, type LoopscalePublicResponse, type LoopscaleQuoteOffer, type LoopscaleQuoteRequest, type LoopscaleRewardsSchedule, type LoopscaleRosterOptions, type LoopscaleStrategyAccount, type LoopscaleStrategyDecoded, type LoopscaleStrategyInfo, type LoopscaleStrategySummary, type LoopscaleStrategyTerms, type LoopscaleTerm, type LoopscaleTermId, type LoopscaleTotals, type LoopscaleUserExt, type LoopscaleUserLedger, type LoopscaleUserLoan, type LoopscaleUserPosition, type LoopscaleUserResult, type LoopscaleVaultAccount, type LoopscaleVaultMetadata, type LoopscaleVaultsRequest, type LoopscaleVaultsResponse, type LstConvertContext, type LstEarnVault, type LstEntry, type LstStakingApySource, type MarketOverrides, ORACLE_CANONICAL_SIZE, type OraclePriceEntry, type OraclePriceMap, type OriginJupiterLendMeta, type OriginJupiterLendRow, type OriginKaminoKvaultMeta, type OriginKaminoKvaultRow, type OriginLoopscaleMeta, type OriginLoopscaleRow, type OriginLstMeta, type OriginLstMetaAdditions, type OriginLstRow, type OriginSavingsMeta, type OriginSavingsRow, type OriginVaultCommon, type OriginVaultProvider, type OriginVaultRow, type OriginWithdrawalMode, type P0AccountView, type P0Api, type P0ApiOptions, type P0AssetTag, type P0Balance, type P0BalanceView, type P0Bank, type P0BankCache, type P0BankConfig, type P0BankDto, type P0BankExt, type P0BankInputs, type P0BankMeta, type P0BankMetaMap, type P0BankPrice, type P0BankRef, type P0CircuitBreakerState, type P0ConfigEntry, type P0ConvertContext, type P0EmodeEntry, type P0EmodeLift, type P0EmodeRoster, type P0EmodeSettings, type P0EmodeTag, type P0Group, type P0GroupInputs, type P0GroupMeta, type P0HealthCache, type P0Integration, type P0InterestRateConfig, type P0MarginfiAccount, type P0OnChainBankMeta, type P0OperationalState, type P0OracleSetup, type P0PoolData, type P0PriceMap, type P0PriceResolution, type P0PublicConversion, type P0PublicResponse, type P0RateLimitWindow, type P0RateLimiter, type P0RatePoint, type P0Rates, type P0RiskTier, type P0StateSemantics, type P0UnservedBalance, type P0UserExt, type P0UserResponse, type P0VenueMultiplier, type P0VenueMultiplierMap, P0_ACCOUNT_AUTHORITY_OFFSET, P0_ACCOUNT_FLAGS, P0_ACCOUNT_GROUP_OFFSET, P0_ADJUSTED_CACHE_SETUPS, P0_API_BASE, P0_ASSET_TAG, P0_BANK_CONFIG_PYTH_PUSH_MIGRATED, P0_BANK_DISCRIMINATOR, P0_BANK_FLAGS, P0_BANK_GROUP_OFFSET, P0_BANK_SIZE, P0_CACHED_PRICE_MULTIPLIER_SETUPS, P0_DEFAULT_LIQUIDATION_FEE, P0_EMODE_BASE_LABEL, P0_EMODE_ON, P0_GROUP_PROGRAM_FEES_ENABLED, P0_GROUP_SIZE, P0_I80F48_FRACTION_BITS, P0_IDL, P0_LIQUIDATION_CLOSEOUT_USD, P0_LOOKUP_TABLES, P0_MAIN_GROUP, P0_MARGINFI_ACCOUNT_DISCRIMINATOR, P0_MARGINFI_ACCOUNT_SIZE, P0_MAX_BALANCES, P0_MAX_EMODE_ENTRIES, P0_NATIVE_STAKE_LOOKUP_TABLES, P0_PAUSE_DURATION_SECONDS, P0_PROGRAM_ID, P0_PYTH_PUSH_SETUPS, P0_SECONDS_PER_YEAR, P0_SEEDS, P0_STAGING_GROUP, P0_STAGING_PROGRAM_ID, P0_STAKE_POOL_PROGRAMS, P0_SVSP_PHANTOM_TOKEN_AMOUNT, P0_U32_MAX, P0_U64_MAX, PROJECT_0_PROFILE_ID, PYTH_PRICE_UPDATE_V2_DISCRIMINATOR, PYTH_RECEIVER_PROGRAM, type PythPriceUpdate, type ReadJlVaultsOptions, type ResolveP0PricesOptions, type RewardsList, SAVE_API_BASE, SAVE_CREATOR, SAVE_DEFAULT_AVG_SLOT_SECONDS, SAVE_DEFAULT_OBLIGATION_PROBE, SAVE_FULL_LIQUIDATION_VALUE_USD, SAVE_INITIAL_EXCHANGE_RATE_WAD, SAVE_LIQUIDATION_CLOSE_FACTOR, SAVE_MAIN_MARKET, SAVE_MARKET_DENYLIST, SAVE_MAX_BONUS_PCT, SAVE_MAX_LIQUIDATABLE_VALUE_USD, SAVE_MAX_OBLIGATION_PROBE, SAVE_MAX_OBLIGATION_RESERVES, SAVE_NULL_ORACLE, SAVE_OBLIGATION_SIZE, SAVE_POSITION_LIMIT, SAVE_PROFILE_ID, SAVE_PROFILE_ID_PROSE, SAVE_PROGRAM_ID, SAVE_RESERVE_SIZE, SAVE_SLOTS_PER_YEAR, SAVE_U64_MAX, SAVE_UNBORROWABLE_BORROW_FACTOR, SAVE_WAD, SAVE_WALLET_POS_ID, SECONDS_PER_YEAR, SETTLEMENT_BATCH_SIZE, SOLANA_CHAIN_ID, SOLSTICE_APP_API_BASE, SOLSTICE_DECIMALS, SOLSTICE_MINTS, SOLSTICE_PRICE_DECIMALS, SOLSTICE_PROGRAMS, SOLSTICE_STRATEGIES, SOLSTICE_YIELD_STRATEGY_IDL, SOLSTICE_YIELD_VAULT_IDL, SPL_STAKE_POOL_LSTS, SPL_STAKE_POOL_PROGRAM, STABLECOIN_SYMBOLS, STAKE_ACCOUNT_RENT_EXEMPT_LAMPORTS, type SaveApi, type SaveApiOptions, type SaveCompoundV2Metadata, type SaveLastUpdate, type SaveLiquidityToken, type SaveMarketConfig, type SaveMarketInputs, type SaveMarketMeta, type SaveObligation, type SaveObligationBorrow, type SaveObligationDeposit, type SaveObligationView, type SavePoolData, type SavePublicConversion, type SavePublicResponse, type SaveRateLimiter, type SaveRates, type SaveReserveAccount, type SaveReserveCollateral, type SaveReserveConfig, type SaveReserveConfigState, type SaveReserveExt, type SaveReserveFees, type SaveReserveInputs, type SaveReserveLiquidity, type SaveReserveRef, type SaveReserveState, type SaveReservesResponse, type SaveRosterOptions, type SaveUnservedLeg, type SaveUserExt, type SaveUserResponse, type SaveWalletCTokenView, type ServedMarket, type SolanaPoolData, type SolanaSubAccountInfo, type SolanaUserPosition, type SolanaUserPositions, type SolanaUserResult, type SolsticeAccountingState, type SolsticeApiOptions, type SolsticeAppApi, type SolsticeChainState, type SolsticeController, type SolsticeConvertContext, type SolsticeCooldownEscrow, type SolsticeHolding, type SolsticeJuniorUnlockShare, type SolsticeOraclePrice, type SolsticePending, type SolsticeProtocolStats, type SolsticeSeniorUnlockCooldown, type SolsticeSettlementBatch, type SolsticeSettlementBatchView, type SolsticeStrategy, type SolsticeStrategyController, type SolsticeStrategyMode, type SolsticeStrategyName, type SolsticeStrategyPdas, type SolsticeUserPositions, type SolsticeVault, type SolsticeVaults, type SolsticeVestingSchedule, type SolsticeYieldPool, type SolsticeYieldVaultPdas, type StakePoolFee, type StructuredOraclePrices, TERM_PROFILES, type TokenListInput, type TrancheRates, type USDPriceMap, WSOL_MINT, type WireU64, type YieldProfile, accountDiscriminator, aggregateLoopscaleLoanBook, apyFractionToAprPercent, attributeBestOffer, attributeLoopscaleLoan, bigMax0, bpsToPercent, buildKaminoConfig, buildKaminoEModes, buildKaminoMarketMeta, buildLoopscaleRoster, buildLoopscaleTerms, buildP0EModes, buildSolsticeVaults, capOrUndefined, cbpsToFraction, cbpsToPercent, cbpsToWad, convertEusx, convertExponentVault, convertHumaPst, convertJupiterLendEarnToken, convertJupiterLendOracleEntries, convertJupiterLendUserPositions, convertJupiterLendVault, convertKaminoKvault, convertKaminoLoans, convertKaminoMarket, convertKaminoOraclePrices, convertKaminoReserve, convertLoopscalePair, convertLoopscaleUser, convertLoopscaleVault, convertLst, convertP0Bank, convertP0Group, convertSaveMarket, convertSaveReserve, convertTranche, createExponentApi, createJupiterLendApi, createKaminoApi, createKaminoKvaultApi, createLimiter, createLoopscaleApi, createMarketUid, createP0Api, createPacer, createSaveApi, createSolsticeAppApi, createWithSeed, decimalStringToI80F48, decimalStringToRaw, decodeAccountingState, decodeController, decodeCooldownEscrow, decodeHumaLenderState, decodeHumaModeConfig, decodeHumaPoolConfig, decodeHumaPoolState, decodeHumaRedemptionRequest, decodeJlRateModel, decodeJuniorUnlockShare, decodeJupFlashloanAdmin, decodeKaminoObligation, decodeKaminoReserveState, decodeLoopscaleLoan, decodeLoopscaleMarketInformation, decodeLoopscaleStrategy, decodeOracleCanonical, decodeP0Bank, decodeP0BankMetadata, decodeP0Group, decodeP0MarginfiAccount, decodePythPriceUpdate, decodeSaveObligation, decodeSeniorUnlockCooldown, decodeSettlementBatch, decodeStakePool, decodeStrategy, decodeStrategyController, decodeVestingSchedule, decodeYieldPool, denominationOf, deriveLayerTotals, deriveLoopscalePrices, deriveP0Mode, describeBasket, describeKaminoObligation, durationDays, epochRatePercent, epochRealizedApr, eusxAssetsToShares, eusxEpochRatePercent, eusxRate, eusxSharesToAssets, exchangeRateWad, exponentOriginRow, feeBps, fetchExponentPtMarkets, fetchHumaPstVaults, fetchJupiterLendEarnVaults, fetchJupiterLendOracleEntries, fetchJupiterLendPublic, fetchJupiterLendUser, fetchJupiterPrices, fetchKaminoKvaults, fetchKaminoOracleEntries, fetchKaminoOraclePrices, fetchKaminoPublic, fetchKaminoUser, fetchKaminoUserOnchain, fetchLenderAll, fetchLoopscaleEarnVaults, fetchLoopscaleLoanBook, fetchLoopscalePublic, fetchLoopscaleUser, fetchLstVaults, fetchOraclePrices, fetchProject0Public, fetchProject0User, fetchSaveOracleEntries, fetchSavePublic, fetchSaveUser, fetchSolsticeSettlementBatches, fetchSolsticeUser, fetchSolsticeVaults, fetchUserAll, formatRawUnits, getJson, getLenderPublicData, getLenderPublicDataAll, getLendersForChain, getTermProfile, humaDeploymentStatePda, humaLenderStatePda, humaModeConfigPda, humaModeMintPda, humaOriginRow, humaPoolAuthorityPda, humaPoolConfigPda, humaPoolStatePda, humaRedemptionRequestPda, i80f48ToDecimalString, i80f48ToNumber, isBorrowable, isJlSmartCol, isJlSmartDebt, isLenderBrand, isLiveVault, isNullKey, isP0FixedSetup, isP0U64Max, isSaveBorrowable, isSaveUnrealizable, isStablecoinSymbol, isStaleKaminoPrice, isSyntheticQuoteMint, isU64Max, isUncapped, jlLiquidityExchangePrices, jlOraclePriceInBorrow, jlOracleToFluidRaw, jlOverallTokenData, jlUserBorrowData, jlUserSupplyData, jlVaultAdminPda, jlVaultConfigPda, jlVaultExchangePrices, jlVaultStatePda, jlVaultToRaw, joinableBatch, juniorUnlockSharePda, jupFlashBorrowPosition, jupFlashloanAdmin, jupLiquidity, jupLiquidityReserve, jupLiquidityVault, jupRateModel, jupiterLendCurrency, jupiterLendOriginRow, jupiterLendTermAdapter, kaminoAsset, kaminoBorrowFactorToRow, kaminoCloseFactor, kaminoDefaultEntry, kaminoGroupLabel, kaminoKvaultOriginRow, kaminoOracleEntriesFromMarkets, kaminoRewards, kaminoRiskByReserve, kaminoTagLabel, kaminoTermAdapter, klendMarketAuthority, klendObligationPda, ledgerFaceAt, ledgerInterestAt, ledgerPrincipal, lenderBrandName, lenderDisplayName, liquidityRatio, listServedMarkets, loopscaleOriginRow, loopscaleTermAdapter, lstOriginRow, maxLeverageOf, mintSupply, normalizeP0BankDto, num, obligationPubkey, oracleCanonicalPda, p0BankMetadataPda, p0BankRef, p0CurveKnots, p0DecimalString, p0EmodeRoster, p0FeeState, p0GroupPausedAt, p0Integration, p0LegacyBaseRate, p0LiquidationFee, p0LiquidityVault, p0LiquidityVaultAuthority, p0MarginfiAccountPda, p0MultipointBaseRate, p0NeedsVenueMultiplier, p0Rates, p0StateSemantics, p0SupplyCapTokens, p0Utilization, parseExpirySeconds, pieceLqt, podBool, podDecimalToNumber, podToBigInt, podToNumber, postJson, project0TermAdapter, readEpochClock, readHumaChainState, readHumaLenderState, readHumaRedemptionRequests, readJlLayerIrms, readJlNextVaultId, readJupFlashAssets, readJupFlashAvailable, readJupFlashloanAdmin, readJupiterLendVaultsOnchain, readKlendElevationGroups, readKlendFlashFacts, readKlendLendingMarket, readKlendMarketState, readKlendObligationReserves, readKlendReserveChain, readKlendReserveFlash, readLoopscaleLoans, readLoopscaleMarketInformation, readP0BankMetadata, readP0Banks, readReserveLamports, readSolsticeChainState, readStakePools, registriesToRead, resolveP0Prices, sameDuration, saveAssetGroup, saveBorrowCurvePercent, saveBorrowedRaw, saveExchangeRateWad, saveLiquidationPenalty, saveObligationAddress, saveObligationSeed, saveRates, saveReserveRef, saveSlotYearScale, saveTermAdapter, saveTotalSupplyWads, saveUtilization, scaledToDecimal, scanP0Banks, selectAssetGroupPrices, selectSaveMarkets, seniorCooldownPdas, settlementBatchPdas, solsticeOriginRow, strategyMode, strategyNameOf, strategyPdas, strategyTvlRaw, tenorOf, termIdOf, toOriginVaultRow, tokenAmount, trancheAssetsToShares, trancheRates, trancheSharesToAssets, u32ToBasis, u32ToCenti, u32ToMilli, unvestedAt, valueKaminoObligations, wadToNumber, wadsToFloat, yieldVaultCooldownPdas, yieldVaultPdas };