@1delta/margin-fetcher 5.0.50 → 5.0.51

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
@@ -53,7 +53,14 @@ type RewardsList$1 = RewardEntry$1[];
53
53
  */
54
54
  interface OpenParameter {
55
55
  /** Discriminator — how to interpret the matching `modes[posId]` value. */
56
- kind: 'llamalend-bands' | 'interest-rate';
56
+ /**
57
+ * Discriminator — how to interpret the matching `modes[posId]` value.
58
+ *
59
+ * `twyne-liq-ltv` is the IDENTITY case: the borrower's chosen value IS the
60
+ * liquidation threshold (1e4 on chain, a fraction here), so no `curve` is
61
+ * needed to price a position at its own parameter — see `identityMapping`.
62
+ */
63
+ kind: 'llamalend-bands' | 'interest-rate' | 'twyne-liq-ltv';
57
64
  /** Which of this config's numbers moves with the parameter. */
58
65
  dimension: 'collateralFactor' | 'rate';
59
66
  /** Allowed values: a continuous range, or a discrete set. */
@@ -90,6 +97,16 @@ interface OpenParameter {
90
97
  curve?: {
91
98
  [value: string]: number;
92
99
  };
100
+ /**
101
+ * `true` ⇒ the parameter VALUE IS the moved dimension, so a consumer prices a
102
+ * position by using the value directly and needs neither a `curve` nor the
103
+ * default's numbers (Twyne: the borrower's chosen `twyneLiqLTV` IS the
104
+ * liquidation threshold). Without this flag a curve-less declaration falls
105
+ * back to the DEFAULT point, which for Twyne is the band's FLOOR — i.e. it
106
+ * would price every position as if it had bought no extra LTV at all, which
107
+ * is the entire product missing.
108
+ */
109
+ identityMapping?: boolean;
93
110
  }
94
111
  interface ConfigEntry {
95
112
  category: number;
@@ -1031,6 +1048,8 @@ type MarketConfigEntry = {
1031
1048
  curve?: {
1032
1049
  [value: string]: number;
1033
1050
  };
1051
+ /** The value IS the moved dimension — no curve needed (Twyne). */
1052
+ identityMapping?: boolean;
1034
1053
  };
1035
1054
  };
1036
1055
  type MarketConfigs = Record<string, MarketConfigEntry>;
@@ -4570,6 +4589,15 @@ interface TermMaxBookTop {
4570
4589
  interface TermMaxMarketConfig {
4571
4590
  /** Market contract — also the per-market lender-key body. */
4572
4591
  market: string;
4592
+ /**
4593
+ * The router THIS market's API row points at — the **V1** router on every
4594
+ * live market (even `v2_01` ones), verified on-chain 2026-07-31. This is the
4595
+ * working `borrowTokenFromCollateral` surface: the V1 form takes the order
4596
+ * list directly, while the V2 router's form needs a whitelisted
4597
+ * `TermMaxSwapAdapter` that does not exist on Ethereum (and BNB/Arbitrum
4598
+ * have no V2 router at all). See TERMMAX.md → "The two routers".
4599
+ */
4600
+ routerAddr?: string;
4573
4601
  /** FT: the zero-coupon bond ERC-20. THE LEND POSITION. */
4574
4602
  ft: string;
4575
4603
  /** XT: the complement (`FT + XT = 1` debt token). */
@@ -5957,9 +5985,10 @@ interface SiloVault extends VaultClassificationFields {
5957
5985
  * `displayName` for UI. */
5958
5986
  name: string;
5959
5987
  /** Cross-provider UI label — `${curatorName ?? 'Silo'} ${asset.symbol}`
5960
- * (e.g. `Silo USDC`). `curatorName` is currently always undefined for
5961
- * Silo, so this resolves to `Silo <symbol>` until the indexer adds
5962
- * curator-name support. Always non-empty. */
5988
+ * (e.g. `Turtle USDC`). `curatorName` is name-derived (heuristic) the
5989
+ * indexer exposes only the curator ADDRESS so this falls back to
5990
+ * `Silo <symbol>` when the vault name has no curator prefix. Always
5991
+ * non-empty. */
5963
5992
  displayName: string;
5964
5993
  /** Share and underlying decimals (ERC-4626 keeps them aligned). */
5965
5994
  decimals: number;
@@ -9724,6 +9753,490 @@ declare const assetKey: (chainId: string | number, address: string) => string;
9724
9753
  */
9725
9754
  declare function fetchPendleApiAssets(): Promise<Map<string, PendleApiAsset>>;
9726
9755
 
9756
+ /**
9757
+ * A Spectra Principal Token, modelled as a fixed-rate earn product.
9758
+ *
9759
+ * ## Why this is a provider and not an ERC-4626 vault
9760
+ *
9761
+ * A PT is a zero-coupon bond. Spectra's is **ERC-5095 + ERC-2612**, explicitly
9762
+ * NOT ERC-4626 — and the two entry points it does expose are not a fixed-rate
9763
+ * deposit:
9764
+ *
9765
+ * - `deposit()` mints PT **and** YT from the IBT. Holding both is just the IBT
9766
+ * re-wrapped; a fixed-rate position still requires selling the YT.
9767
+ * - `withdraw()` burns **both** back. It is not an exit from a PT-only
9768
+ * position.
9769
+ * - `redeem()` pays par, and only after `maturity`.
9770
+ *
9771
+ * So the only way to hold the fixed rate is to BUY the PT on its Curve
9772
+ * StableSwap-NG pool, and the only way out before maturity is to sell it there.
9773
+ * Every consequence the Pendle provider documents follows verbatim: no share
9774
+ * price, USD-denominated size, `liquidityUsd` is pool DEPTH rather than idle
9775
+ * cash, exclusion from `buildVaultLookup`, and a row that is only valid until
9776
+ * `expiry`.
9777
+ *
9778
+ * Field names deliberately mirror `PendlePtMarket` where the meaning is the
9779
+ * same (`expiry`, `supplyRate`, `impliedApyPercent`, `liquidityUsd`,
9780
+ * `withdrawalMode`), so the generic term-sheet and earn readers — which key off
9781
+ * names, not types — need no Spectra branch.
9782
+ */
9783
+ interface SpectraPtMarket extends VaultClassificationFields {
9784
+ /** PT (PrincipalToken) address, lowercased. What a holder actually owns. */
9785
+ address: string;
9786
+ /**
9787
+ * The Curve StableSwap-NG pool, lowercased. Where the trade routes, and the
9788
+ * `liquidityUsd` denominator.
9789
+ *
9790
+ * Named `marketAddress` for parity with the Pendle row even though Spectra's
9791
+ * PT and pool are separate contracts (Pendle's "market" IS its AMM).
9792
+ */
9793
+ marketAddress?: string;
9794
+ /**
9795
+ * Underlying/accounting asset address, lowercased — what the PT redeems for
9796
+ * at maturity, and the denomination of the fixed rate.
9797
+ */
9798
+ underlying: string;
9799
+ /** YT address, lowercased. The complement that takes the floating yield. */
9800
+ ytAddress?: string;
9801
+ /**
9802
+ * The interest-bearing token the PT was minted from, lowercased.
9803
+ *
9804
+ * The analogue of Pendle's SY, but a plain ERC-4626 (or a
9805
+ * `Spectra4626Wrapper` over one) rather than a bespoke standard.
9806
+ */
9807
+ ibtAddress?: string;
9808
+ /** The vault behind a wrapper IBT, when the IBT is a `Spectra4626Wrapper`. */
9809
+ baseIbtAddress?: string;
9810
+ /** PT symbol, e.g. `PT-stXRP(FXRP)-2026/12/31`. */
9811
+ symbol: string;
9812
+ /** Display name for the market. */
9813
+ name: string;
9814
+ /**
9815
+ * PT decimals.
9816
+ *
9817
+ * **NOT reliably the underlying's** — 2 of 36 live markets disagreed at
9818
+ * integration. The listing publishes both, so no inference is needed; a
9819
+ * market missing either is DROPPED rather than defaulted, since a wrong
9820
+ * value mis-scales every amount silently.
9821
+ */
9822
+ decimals: number;
9823
+ /** Underlying asset decimals. */
9824
+ assetDecimals: number;
9825
+ /** Unix SECONDS, straight from the API's `maturity`. */
9826
+ expiry: number;
9827
+ /** ISO-8601 mirror, derived. Parity with the Pendle row's `expiryIso`. */
9828
+ expiryIso: string;
9829
+ /** Snapshot at fetch time — recompute from `expiry` for a live countdown. */
9830
+ secondsToExpiry: number;
9831
+ /** `secondsToExpiry` in days, rounded to 2dp. Convenience for display. */
9832
+ daysToExpiry: number;
9833
+ /**
9834
+ * The fixed yield to maturity, as a nominal APR percent.
9835
+ *
9836
+ * Converted from the pool's `impliedApy`, which is a compounded APY **already
9837
+ * in percent** — unlike Pendle, whose `details` block is fractions. Getting
9838
+ * that wrong is invisible: a doubled conversion yields 0.2 %, a missing one
9839
+ * yields nothing that looks out of place.
9840
+ */
9841
+ supplyRate: number;
9842
+ /** Always 0 — SPECTRA emissions accrue to LPs and voters, never PT holders. */
9843
+ rewardsRate: number;
9844
+ /** `supplyRate + rewardsRate`. The headline. */
9845
+ depositRate: number;
9846
+ /** Spectra's own `impliedApy`, unconverted. Display parity with their app. */
9847
+ impliedApyPercent: number;
9848
+ /**
9849
+ * Spectra's `ptApy` — the rate a taker realises after price impact and fee,
9850
+ * as a compounded APY percent.
9851
+ *
9852
+ * **Always ≤ {@link impliedApyPercent}, and the gap measures pool thinness.**
9853
+ * On the deepest market they are 0.06 pp apart; on a $35 market, 9.4 pp; on
9854
+ * one Flare market `ptApy` is negative while the implied rate is positive.
9855
+ * A client that wants to show "what you would actually get" should show this
9856
+ * one — but ranking must use `supplyRate`, or a Spectra row and a Pendle row
9857
+ * in the same column would be answering different questions.
9858
+ */
9859
+ executableApyPercent?: number;
9860
+ /**
9861
+ * The IBT's own floating yield (percent APR) — what a PT buyer GIVES UP.
9862
+ * Spectra's `ibt.apr.total`, often absent. Context, never the row's rate.
9863
+ */
9864
+ underlyingApyPercent?: number;
9865
+ /**
9866
+ * Curve's static pool fee as a FRACTION of the traded amount, charged on
9867
+ * BOTH legs. Converted from the API's 1e10-scaled integer string.
9868
+ */
9869
+ feeRate?: number;
9870
+ /**
9871
+ * Whole-market TVL in USD.
9872
+ *
9873
+ * `tvl.usd` where the API supplies it; otherwise `tvl.underlying × price`
9874
+ * from the caller's price map. **Nullable upstream** (1 of 36 at
9875
+ * integration), and a row sized at 0 sorts to the bottom rather than
9876
+ * disappearing — the quieter failure, hence the fallback.
9877
+ */
9878
+ totalAssetsUsd: number;
9879
+ /** Same number. The cross-source sort field is `formatted`; see PendlePtMarket. */
9880
+ totalAssetsFormatted: number;
9881
+ /**
9882
+ * Pool depth in USD — what can actually be traded in or out right now.
9883
+ * For a PT this is the real exit constraint, not a solvency signal.
9884
+ */
9885
+ liquidityUsd: number;
9886
+ /** TVL denominated in the underlying, which the API always supplies. */
9887
+ totalAssetsUnderlying?: number;
9888
+ /**
9889
+ * `ptRate` as a fraction of par — `1` means the PT redeems 1:1.
9890
+ *
9891
+ * **The number that says a Spectra PT is not an unconditional par claim.**
9892
+ * Spectra writes `ptRate` DOWN whenever the IBT loses value, and it can only
9893
+ * decrease; their own docs work the example where a halved IBT returns half
9894
+ * the deposit. So "redeems 1:1 at maturity" is the normal case, not the
9895
+ * guaranteed one, and this is the field that distinguishes them.
9896
+ *
9897
+ * 33 of 36 live markets read exactly 1 at integration.
9898
+ */
9899
+ ptRate: number;
9900
+ /**
9901
+ * How far below par {@link ptRate} sits, in bps. `0` on a healthy market.
9902
+ *
9903
+ * Surfaced separately so a consumer can gate on it without knowing the
9904
+ * base-27 scale, and so a written-down market cannot be presented as a clean
9905
+ * fixed-rate bond just because its APY still parses.
9906
+ */
9907
+ principalWriteDownBps: number;
9908
+ /** Permissionless — anyone can buy a PT. Always true; kept explicit. */
9909
+ isMintable: boolean;
9910
+ /** `market-sale`: exit is selling on the Curve pool at the prevailing price. */
9911
+ withdrawalMode: 'market-sale';
9912
+ /** Hydrated underlying metadata from the token list, if available. */
9913
+ asset?: GenericCurrency;
9914
+ /** USD price of one underlying unit, when a price map was supplied. */
9915
+ priceUsd?: number;
9916
+ /** USD price of one PT, from the pool's own quote when available. */
9917
+ ptPriceUsd?: number;
9918
+ /** PT price in units of the underlying — the discount that IS the yield. */
9919
+ ptPriceUnderlying?: number;
9920
+ /** Spectra's tags, e.g. `['stable']`. */
9921
+ categoryIds?: string[];
9922
+ /** The protocol behind the IBT, per Spectra, e.g. `Morpho`, `Yearn`. */
9923
+ protocol?: string;
9924
+ }
9925
+ /** Per-chain map, keyed by lowercased PT address (parity with the other providers). */
9926
+ type SpectraPtMarkets = {
9927
+ [ptAddress: string]: SpectraPtMarket;
9928
+ };
9929
+
9930
+ interface FetchSpectraPtOptions {
9931
+ /**
9932
+ * Include markets that have already matured. **Default `false`.**
9933
+ *
9934
+ * Same rule and same reasoning as the Pendle provider: a matured PT redeems
9935
+ * at par, so its forward yield is zero, while every rate field still carries
9936
+ * the last pre-expiry value. Serving those rows puts a stale fixed APY on top
9937
+ * of an APR-sorted list for a product that no longer exists.
9938
+ *
9939
+ * The Spectra-specific caveat is that this switch may have nothing to return.
9940
+ * The upstream listing appears to drop matured markets itself, so a holder of
9941
+ * a matured Spectra PT is not servable from this source at all — unlike
9942
+ * Pendle, whose `/markets/all` carries them. That is a gap in the data, not a
9943
+ * reason to leave the filter off.
9944
+ */
9945
+ includeExpired?: boolean;
9946
+ /**
9947
+ * Clock override, unix seconds. Tests only — production always judges
9948
+ * maturity against the real clock, never against a cached flag.
9949
+ */
9950
+ nowSecs?: number;
9951
+ }
9952
+ /**
9953
+ * Fetch every LIVE Spectra PT market on a chain, modelled as fixed-rate earn
9954
+ * products.
9955
+ *
9956
+ * **HTTP-only in every normal case, and normally ONE request.** Unlike Pendle
9957
+ * there is no global listing — the endpoint is per network — so this issues one
9958
+ * call per chain, cached in-isolate for 60 s and shared between concurrent
9959
+ * callers. Unlike Pendle there is also no second metadata endpoint to need: the
9960
+ * `/pools` response embeds decimals, symbol, name and icon for the PT, YT, IBT
9961
+ * and underlying alike, so the on-chain tier below fires only if that stops
9962
+ * being true.
9963
+ *
9964
+ * The multicall stays a last resort for the reason recorded in the Pendle
9965
+ * provider: viem's `allowFailure` returns `'0x'` per call rather than throwing
9966
+ * when the transport dies, so a decimals batch that fails does not error — it
9967
+ * silently empties a whole chain's listing.
9968
+ *
9969
+ * @param chainId target chain
9970
+ * @param multicallRetry last-resort decimals gap-fill only; normally unused
9971
+ * @param prices price map keyed by oracle key / address — also what
9972
+ * recovers a null `tvl.usd`
9973
+ * @param tokenList token list for PT + underlying metadata
9974
+ * @param options `includeExpired` and a test clock
9975
+ *
9976
+ * @returns map keyed by lowercased PT address; empty on chains without a
9977
+ * Spectra deployment.
9978
+ */
9979
+ declare const fetchSpectraPtMarkets: (chainId: string, multicallRetry: MulticallRetryFunction, prices?: {
9980
+ [asset: string]: number;
9981
+ }, tokenList?: GenericTokenList, options?: FetchSpectraPtOptions) => Promise<SpectraPtMarkets>;
9982
+
9983
+ /**
9984
+ * Spectra V2 public market listing.
9985
+ *
9986
+ * Spectra (ex-APWine, npm org `perspectivefi`) is yield tokenisation with the
9987
+ * same shape as Pendle: an IBT (any yield-bearing ERC-4626) is split into a
9988
+ * **PT** — an ERC-5095 zero-coupon claim on the principal at `maturity` — and a
9989
+ * **YT** carrying the floating yield until then. The PT trades at a discount on
9990
+ * a rate-adjusted Curve StableSwap-NG pool, and that discount is the fixed rate.
9991
+ *
9992
+ * So this provider is the Pendle one with four substitutions, each of which is
9993
+ * a bug if assumed away — they are called out at the field that carries them:
9994
+ *
9995
+ * 1. the route key is a network NAME, not a chain id ({@link SPECTRA_NETWORKS});
9996
+ * 2. one request PER CHAIN, against Pendle's single global listing;
9997
+ * 3. rates arrive in PERCENT (Pendle's are fractions) and are APYs;
9998
+ * 4. `maturity` is unix SECONDS (Pendle's `expiry` is ISO-8601).
9999
+ *
10000
+ * **There is no documented API.** dev.spectra.finance publishes contracts,
10001
+ * oracles and MetaVaults; the endpoint below is the one app.spectra.finance
10002
+ * itself uses and its rate fields are defined nowhere. Everything asserted here
10003
+ * about their meaning was established by reproducing them from the published
10004
+ * prices — see {@link SpectraApiPool.impliedApy}.
10005
+ *
10006
+ * Docs: https://dev.spectra.finance/ · assessment: SPECTRA.md
10007
+ */
10008
+ /**
10009
+ * Chain id → the network name the API routes on.
10010
+ *
10011
+ * **This mapping is hand-maintained and undiscoverable.** `/api/v1/1/pools` and
10012
+ * `/api/v1/ethereum/pools` both answer `400 {"error":"Invalid network"}`, and
10013
+ * there is no `/api/v1/networks` route to enumerate the valid names — so a new
10014
+ * Spectra deployment stays invisible until someone adds its name here. That is
10015
+ * the opposite of Pendle, whose global listing surfaces a new chain the moment
10016
+ * it exists.
10017
+ *
10018
+ * Verified live 2026-08-17: every name below answers 200. `polygon`, `linea`,
10019
+ * `gnosis`, `mode` and `fraxtal` are rejected, so Spectra is not on them under
10020
+ * any name we could find.
10021
+ */
10022
+ declare const SPECTRA_NETWORKS: Readonly<Record<string, string>>;
10023
+ declare const spectraNetwork: (chainId: string) => string | undefined;
10024
+ declare const hasSpectraMarkets: (chainId: string) => boolean;
10025
+ declare const spectraPoolsUrl: (network: string) => string;
10026
+ /** A token as the listing embeds it. Decimals are always present. */
10027
+ interface SpectraApiToken {
10028
+ address?: string | null;
10029
+ chainId?: number | null;
10030
+ name?: string | null;
10031
+ symbol?: string | null;
10032
+ decimals?: number | null;
10033
+ logoURI?: string | null;
10034
+ /** The yield venue behind the IBT, e.g. `Morpho`, `Yearn`, `SMARDEX`. */
10035
+ protocol?: string | null;
10036
+ price?: {
10037
+ underlying?: number | null;
10038
+ usd?: number | null;
10039
+ } | null;
10040
+ /** IBT only — its own floating yield. **PERCENT**, and often `null`. */
10041
+ apr?: {
10042
+ total?: number | null;
10043
+ details?: Record<string, number | null> | null;
10044
+ } | null;
10045
+ /** IBT price in underlying, 1e18-ish fixed point as a decimal string. */
10046
+ rate?: string | null;
10047
+ spotRate?: string | null;
10048
+ }
10049
+ /**
10050
+ * One entry of `market.pools[]` — the Curve StableSwap-NG pool the PT trades on.
10051
+ *
10052
+ * Every live market carries exactly one (36/36 at integration), but the field
10053
+ * is an array and is read as one: {@link pickPool} takes the deepest rather
10054
+ * than `[0]`, so a second pool on a market cannot silently decide the rate.
10055
+ */
10056
+ interface SpectraApiPool {
10057
+ address?: string | null;
10058
+ chainId?: number | null;
10059
+ /**
10060
+ * **The PT's fixed rate, as a compounded APY in PERCENT.**
10061
+ *
10062
+ * Established empirically, because nothing documents it: across all 36 live
10063
+ * markets on 7 chains this field reproduces
10064
+ * `((1 / ptPrice.underlying) ** (1 / yearsToMaturity) - 1) * 100`
10065
+ * to within float noise. It is the mid-price implied rate — the same quantity
10066
+ * as Pendle's `impliedApy`, in different units.
10067
+ *
10068
+ * See {@link ptApy} for the number that is NOT this.
10069
+ */
10070
+ impliedApy?: number | null;
10071
+ /**
10072
+ * The rate a taker would actually realise — price impact and pool fee
10073
+ * included — as a compounded APY in PERCENT.
10074
+ *
10075
+ * **Not the market's rate, and not interchangeable with
10076
+ * {@link impliedApy}.** It is always the lower of the two, by an amount that
10077
+ * tracks pool thinness: 0.06 pp apart on the deepest market, 9.4 pp apart on
10078
+ * a $35 one, and on `PT-stXRP…2026/09/30` it is NEGATIVE (−0.06 %) while the
10079
+ * implied rate is +1.03 %. Carried through as
10080
+ * `SpectraPtMarket.executableApyPercent` because it is genuinely useful — it
10081
+ * is the honest "what you'd get" figure, which Pendle publishes nothing
10082
+ * equivalent to — but the row's `supplyRate` is the implied rate, so that a
10083
+ * Spectra row and a Pendle row mean the same thing when ranked together.
10084
+ */
10085
+ ptApy?: number | null;
10086
+ /** LP-side total return, PERCENT. Neither PT nor YT earns this. */
10087
+ lpApy?: {
10088
+ total?: number | null;
10089
+ details?: Record<string, number | null> | null;
10090
+ } | null;
10091
+ /** YT leverage multiple. Not a rate. */
10092
+ ytLeverage?: number | null;
10093
+ liquidity?: {
10094
+ underlying?: number | null;
10095
+ usd?: number | null;
10096
+ } | null;
10097
+ ptPrice?: {
10098
+ underlying?: number | null;
10099
+ usd?: number | null;
10100
+ } | null;
10101
+ ytPrice?: {
10102
+ underlying?: number | null;
10103
+ usd?: number | null;
10104
+ } | null;
10105
+ /**
10106
+ * Curve's static pool fee — a **1e10-scaled integer string**, not a fraction
10107
+ * and not bps. `"1204544"` is 1.2 bps. `midFee` / `outFee` read 0 on every
10108
+ * live pool; `ibtToPtFee` / `ptToIbtFee` are the per-direction dynamic fees.
10109
+ */
10110
+ feeRate?: string | null;
10111
+ midFee?: string | null;
10112
+ outFee?: string | null;
10113
+ ibtToPtFee?: string | null;
10114
+ ptToIbtFee?: string | null;
10115
+ /** `CURVE_SNG` on every live pool at integration. */
10116
+ type?: string | null;
10117
+ lpt?: {
10118
+ address?: string | null;
10119
+ decimals?: number | null;
10120
+ } | null;
10121
+ }
10122
+ /** One `pools[]` entry — a MARKET (the naming is the API's, not ours). */
10123
+ interface SpectraApiMarket {
10124
+ /** The PrincipalToken contract. This is what a holder owns. */
10125
+ address?: string | null;
10126
+ chainId?: number | null;
10127
+ /** PT name, e.g. `Principal Token: sw-WUSDN(USDN) 2027/01/12`. */
10128
+ name?: string | null;
10129
+ /** PT symbol, e.g. `PT-sw-WUSDN(USDN)-2027/01/12`. */
10130
+ symbol?: string | null;
10131
+ /** **PT decimals** — not the underlying's. See `SpectraPtMarket.decimals`. */
10132
+ decimals?: number | null;
10133
+ /** Unix SECONDS. */
10134
+ maturity?: number | null;
10135
+ createdAt?: number | null;
10136
+ /** `ptRate`, base-27. Starts at 1e27 and can only fall (negative-yield events). */
10137
+ rate?: string | null;
10138
+ tvl?: {
10139
+ ibt?: number | null;
10140
+ underlying?: number | null;
10141
+ usd?: number | null;
10142
+ } | null;
10143
+ yt?: SpectraApiToken | null;
10144
+ /** The interest-bearing token the PT is minted from. */
10145
+ ibt?: SpectraApiToken | null;
10146
+ /** The vault behind a `Spectra4626Wrapper` IBT, when the IBT is a wrapper. */
10147
+ baseIbt?: SpectraApiToken | null;
10148
+ /** What the PT redeems for at maturity, and the rate's denomination. */
10149
+ underlying?: SpectraApiToken | null;
10150
+ pools?: SpectraApiPool[] | null;
10151
+ maturityValue?: {
10152
+ underlying?: number | null;
10153
+ usd?: number | null;
10154
+ } | null;
10155
+ tags?: string[] | null;
10156
+ multipliers?: unknown;
10157
+ }
10158
+ /** Lowercased address, or `undefined` for anything that is not one. */
10159
+ declare const spectraAddress: (v: string | null | undefined) => string | undefined;
10160
+ /**
10161
+ * Is this market still live?
10162
+ *
10163
+ * **Judged against the clock, every time.** The listing appears to filter
10164
+ * matured markets already — zero of 36 had a past maturity on a protocol that
10165
+ * has been running V2 since 2024 — but that is an observation about today's
10166
+ * upstream behaviour, not a contract, and "the API already handles it" is
10167
+ * exactly the assumption `PENDLE_PT.md` §2 exists to refuse. A matured PT keeps
10168
+ * publishing its last pre-expiry implied APY, which on a rate-sorted earn list
10169
+ * puts a dead product on top.
10170
+ *
10171
+ * A market with no parseable maturity is NOT live: an unbounded fixed-rate row
10172
+ * is never the safe default.
10173
+ */
10174
+ declare function isLiveSpectraMarket(market: SpectraApiMarket, nowSecs?: number): boolean;
10175
+ /**
10176
+ * Pick the pool that prices the market.
10177
+ *
10178
+ * The DEEPEST, not the first. Every live market has exactly one pool today, so
10179
+ * this never fires — which is why it is written now rather than after a second
10180
+ * pool quietly halves a published rate.
10181
+ */
10182
+ declare function pickPool(pools: SpectraApiPool[] | null | undefined): SpectraApiPool | undefined;
10183
+ /**
10184
+ * Curve's 1e10-scaled fee integer → a FRACTION, the unit
10185
+ * `VaultTermInput.swapFeeRate` is documented in.
10186
+ */
10187
+ declare function parseCurveFee(raw: string | null | undefined): number | undefined;
10188
+ /**
10189
+ * Bounds a published rate must clear to be believed, in PERCENT.
10190
+ *
10191
+ * **Spectra does not sanity-check its own rate fields.** HyperEVM publishes
10192
+ * `impliedApy: 549844464093797600` and `12307.1` on its two markets — raw fixed
10193
+ * point leaking through on pools holding $318 and $599 — and Hemi publishes
10194
+ * `null` for both rate fields. That is 3 of 36 markets, i.e. ~8 %, and an
10195
+ * unbounded value does not merely look odd: it takes the top of any
10196
+ * rate-sorted earn listing instantly.
10197
+ *
10198
+ * The floor is below zero on purpose. A PT trading ABOVE par is a real, if
10199
+ * unusual, market state and reporting it as such is correct; only the
10200
+ * impossible is rejected.
10201
+ */
10202
+ declare const SPECTRA_RATE_MIN_PERCENT = -99;
10203
+ declare const SPECTRA_RATE_MAX_PERCENT = 1000;
10204
+ /**
10205
+ * A published rate, or `undefined` when it is absent or impossible.
10206
+ *
10207
+ * Callers DROP the market on `undefined` rather than substituting 0 — a
10208
+ * fixed-rate product whose rate we cannot establish is not an offer, and 0 %
10209
+ * is a specific claim rather than a neutral one.
10210
+ */
10211
+ declare function sanePercent(v: number | null | undefined): number | undefined;
10212
+ /**
10213
+ * `ptRate` as a fraction of par (`1` = par, `0.5` = half).
10214
+ *
10215
+ * **This is the field that says a Spectra PT does NOT unconditionally redeem
10216
+ * 1:1.** Spectra's docs are explicit: "The `ptRate` starts as 1 and decreases
10217
+ * if the `ibtRate` … decreases. The `ptRate` can only decrease" — their own
10218
+ * worked example has a holder receive half their deposit back after the IBT
10219
+ * halves. Pendle carries the same economic exposure through its SY and
10220
+ * publishes no equivalent number, so this is strictly better disclosure, and it
10221
+ * is why the row surfaces {@link SpectraPtMarket.principalWriteDownBps}.
10222
+ *
10223
+ * It is also a live integrity check that costs nothing. The three markets whose
10224
+ * `impliedApy` is absent or nonsense (Hemi, both HyperEVM) are EXACTLY the
10225
+ * three whose `ptRate` has been written down to ~0 — two independent signals
10226
+ * agreeing that those rows are not offers.
10227
+ */
10228
+ declare function parsePtRate(raw: string | null | undefined): number | undefined;
10229
+ /** Drop every cached listing. Tests only. */
10230
+ declare function clearSpectraMarketsCache(): void;
10231
+ /**
10232
+ * Fetch one network's live PT listing.
10233
+ *
10234
+ * Chain filtering, maturity filtering and normalization happen in
10235
+ * `fetchPublic`. A non-200 throws — the caller logs and omits the provider for
10236
+ * that chain rather than serving a partial listing as a complete one.
10237
+ */
10238
+ declare function fetchSpectraApiMarkets(chainId: string): Promise<SpectraApiMarket[]>;
10239
+
9727
10240
  /**
9728
10241
  * Vault interface family, detected via ERC-165 `supportsInterface`.
9729
10242
  *
@@ -9851,7 +10364,7 @@ declare function buildVaultLookup(data: VaultPublicDataAll): Map<string, VaultLo
9851
10364
  * input (`parseEarnUid` on an action route's query param) can pass this as
9852
10365
  * `knownProviders` instead of accepting any `vault.<x>` string.
9853
10366
  */
9854
- declare const VAULT_PROVIDERS: readonly ["fluid", "gearbox", "morpho", "lista", "silo", "euler-earn", "termmax", "lst", "savings", "lagoon", "aave-earn", "upshift", "yearn", "hypercore", "gmx", "pendle"];
10367
+ declare const VAULT_PROVIDERS: readonly ["fluid", "gearbox", "morpho", "lista", "silo", "euler-earn", "termmax", "lst", "savings", "lagoon", "aave-earn", "upshift", "yearn", "hypercore", "gmx", "pendle", "spectra"];
9855
10368
  type VaultProvider = (typeof VAULT_PROVIDERS)[number];
9856
10369
  /**
9857
10370
  * Per-provider payload returned by `getVaultPublicDataAll`. Each entry is
@@ -9905,6 +10418,13 @@ interface VaultPublicDataAll {
9905
10418
  * size, and excluded from `buildVaultLookup` — the GMX/HyperCore
9906
10419
  * precedent. */
9907
10420
  pendle?: PendlePtMarkets;
10421
+ /** Spectra V2 Principal Tokens as fixed-rate earn products — one row per
10422
+ * LIVE market, keyed by lowercased PT address. Same instrument and same
10423
+ * rules as `pendle` (matured markets never included; pass
10424
+ * `spectraIncludeExpired` to override), over a rate-adjusted Curve
10425
+ * StableSwap-NG pool instead of Pendle's own AMM. Not a share token:
10426
+ * USD-denominated size, no share price, excluded from `buildVaultLookup`. */
10427
+ spectra?: SpectraPtMarkets;
9908
10428
  }
9909
10429
  interface GetVaultPublicDataAllOptions {
9910
10430
  /** Narrow Silo to a single protocol version (`v2` or `v3`). */
@@ -9920,6 +10440,16 @@ interface GetVaultPublicDataAllOptions {
9920
10440
  * APY, and that number is not an offer.
9921
10441
  */
9922
10442
  pendleIncludeExpired?: boolean;
10443
+ /**
10444
+ * Include MATURED Spectra PT markets. Default `false`.
10445
+ *
10446
+ * Same rule as {@link pendleIncludeExpired}, with one caveat worth knowing
10447
+ * before relying on it: Spectra's listing appears to drop matured markets
10448
+ * upstream, so this switch may return nothing at all. The filter stays
10449
+ * regardless — "the API already handles it" is an observation about today,
10450
+ * not a contract.
10451
+ */
10452
+ spectraIncludeExpired?: boolean;
9923
10453
  }
9924
10454
  /**
9925
10455
  * Combined output of `getVaultPublicDataAll`: the rich per-provider
@@ -13315,4 +13845,4 @@ declare const fetchFluidDexState: (chainId: string, multicallRetry: MulticallRet
13315
13845
  /** Synchronous read of whatever `fetchFluidDexState` last cached for a chain. */
13316
13846
  declare const getCachedFluidDexState: (chainId: string) => FluidDexStateMap | undefined;
13317
13847
 
13318
- export { type AaveMetadata, type AaveV2Public, type AaveV2UserReserveResponse, type AaveV3Public, type AaveV3UserReserveResponse, type AdditionalYields, type AdminKind, ApiBookSource, type AprData, type AprPercent, type AssetQuality, type AssetRiskIndex, type AuctionWindow, type AvailabilityTerms, type BalanceData, type BaseLendingPosition, type BasicReserveResponse, type BorrowExitTerms, type BorrowTermSheet, type BuildTermSheetOptions, type BuildVaultTermSheetOptions, type ChainDiagnostic, type ChainLinkResponse, type ChainQuery, type ChainSummary, type CompoundV2Metadata, type CompoundV3Public, type CompoundV3UserReserveResponse, type ConfigEntry, type ConvertLenderUserDataOptions, type CoreValidators, type CounterpartyTerms, type CoverageInfo, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, type DeepPartial, type Denomination, type DepthMap, type DssMarketRaw, type DssMarketsRaw, type DssPositionInfo, EARN_DESCRIPTIONS, EARN_LABELS, EMPTY_BALANCE, type EModeAssets, type EModeData, type EModeResult, EXACTLY_LENDER_KEY, type EarnActionInput, type EarnActionKind, type EarnAmount, type EarnAppliedDefaults, type EarnAprBreakdown, type EarnAsset, type EarnAvailability, type EarnBasket, type EarnBasketLeg, type EarnCapability, type EarnCurator, type EarnExclusions, type EarnExit, type EarnFacetBucket, type EarnFacets, type EarnGating, type EarnLabelDimension, type EarnLendingPosition, type EarnMarket, type EarnMarketLabelInput, type EarnPosition, type EarnPositionAsset, type EarnPositionBase, type EarnPositionLeg, type EarnPositionSourceStatus, type EarnPositionSubAccount, type EarnPositionTotals, type EarnPositionUid, type EarnPositionsResponse, type EarnProtocol, type EarnProtocolAndCurator, type EarnRate, type EarnRateSource, type EarnRefs, type EarnResponse, type EarnRisk, type EarnShareToken, type EarnSourceStatus, type EarnVaultNormalizeOptions, type EarnVaultPosition, type EarnVenueKind, type EarnVocabulary, type EndpointFailure, type EnrichmentIndex, type EulerEarnVault, type EulerEarnVaults, type EulerV2Metadata, type ExactlyFixedPool, type ExactlyFixedPosition, type ExactlyMarketAccount, type ExactlyMarketsRaw, type ExactlyUserFixedPosition, type ExposureEntry, type ExposureTerms, type ExtraValidationCall, FRACTION_RATE_PROVIDERS, type FeeTerm, type FeeWhen, type FeedObservation, type FeedStat, type FeedStatsMap, type FeedTimestampMap, type FetchListaVaultsFromChainOptions, type FetchMorphoVaultsFromChainOptions, type FetchOraclePricesOptions, type FetchPendlePtOptions, type FetchTokenBalancesOptions, type FlattenPriorityConfig, type FluidDexShareState, type FluidDexStateMap, type FluidFToken, type FluidFTokens, type FrankencoinMarketRaw, type FrankencoinMarketsRaw, type FrankencoinPositionInfo, type FraxlendPairRaw, type FraxlendPairsRaw, type FullLenderRewardsMap, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, type GenericCurrency, type GenericTokenList, type GetVaultPublicDataAllOptions, type GmxExecutionFees, type GmxPendingDeposit, type GmxPendingWithdrawal, type GmxReadContracts, type GmxUserBalance, type GmxUserPositions, type GmxUserPositionsOptions, type GmxVault, type GmxVaultKind, type GmxVaults, type GmxVaultsFetchOptions, type GovernancePower, type GovernanceRow, type GovernanceTerms, type GroupAccumulator, HYPERCORE_VAULT_REGISTRY, type HypercoreLockStatus, type HypercoreUserPositionsOptions, type HypercoreVault, type HypercoreVaultPosition, type HypercoreVaultRegistryEntry, type HypercoreVaults, type HypercoreVaultsFetchOptions, IDLE_MARKET_ID, INTERFACE_IDS, type IncompleteLenderRead, type IncompleteReason, type InitMetadata, type InitPublic, type InitUserReserveResponse, type InterfaceKind, type InvariantViolation, type InverseMarketRaw, type InverseMarketsRaw, type InversePositionInfo, LAGOON_API_URL, LAGOON_CHAIN_IDS, type LagoonApiVault, type LagoonSyncMode, type LagoonVault, type LagoonVaults, type LenderAssetReward, type LenderConfigData, type LenderConfigMap, type LenderCrossPoolMeta, type LenderData, type LenderDataEntry, type LenderInfo, type LenderInfoMap, type LenderPublicBase, type LenderRewardsMap, type LenderSummary, type LenderToLenderCrossPoolMeta, type LenderTotalAmounts, type LenderUserQuery, type LenderUserResponse, type LenderYieldComplete, type LenderYields$1 as LenderYields, LendingMode, type LiquidationPenaltyTerm, type LiquidationTerms, type LiquityBranchRaw, type LiquityDiscoveredTrove, type LiquityDiscovery, type LiquityMarketsRaw, type LiquitySpInfo, type LiquityTroveInfo, type ListaMarketOverrides, type LlamaLendMarketOverride, type LlamaLendMarketOverrides, type LlamaLendMarketRaw, type LlamaLendMarketsRaw, type LlamaLendPositionInfo, type LoopPostTradeMetrics, type LstDelegation, type LstDelegationKind, type LstValidator, type LstWithdrawalFetchOptions, type LstWithdrawalRegistryEntry, type LstWithdrawalRequest, type LstWithdrawalRequestsByLst, type LstWithdrawalStatus, MORPHO_LENS, MULTICALL_FAILURE, type MaturityTerms, MaxParamThresholds, type MergedUserData, type MidnightBook, type MidnightBookLevel, type MidnightBookSource, type ModeBase, type ModeVariant, type MorphoMarketOverrides, type MorphoSubgraphProxyConfig, type MorphoUserMarketBalance, type MorphoUserReserveResponse, type MorphoVault, type MorphoVaults, type MulticallEndpointOptions, type MulticallRpcBatch, type NumberMap, type Open, type OracleBand, type OracleDiagnostics, type OraclePriceEntry, type OraclePricesResult, type OracleRiskRow, type OracleTerms, type OutlierGuardConfig, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, type ParsedBalanceData, type ParsedEarnUid, type ParsedLendingEarnUid, type ParsedResponse, type ParsedUserBalance, type ParsedVaultEarnUid, type PendleApiAsset, type PendleApiMarket, type PendleApiMarketDetails, type PendlePtMarket, type PendlePtMarkets, type PermissionKind, type PermissionParams, type PoolData, type PoolSourceRow, type PoolWithMeta, type PortfolioSummary, type PortfolioTotals, type PositionConstraints, type PostTradeMetrics, type PreparedCall, type PreparedMergedMulticallParams, type PreparedMergedRpcCalls, type PreparedTokenBalanceRpcCalls, type PreparedUserDataRpcCalls, type PriceDerivation, type PriceSelection, type ProtocolParams, type ProviderOptions, type RateKind, type RateMenuEntry, type RateTerms, type RawRpcBatch, type RawRpcCall, type RawRpcResponse, type ReadFailurePolicy, type RedemptionTerms, type ResupplyMarketsRaw, type ResupplyPairIdentity, type ResupplyPairRaw, type ResupplyPositionInfo, type ResupplyWrappedMarket, type RewardSourceRef, type RewardStream, type RewardTerm, type RewardTokenRef, type RiverMarketRaw, type RiverMarketsRaw, type RiverPositionInfo, SDK_FRACTION_RATE_PROVIDERS, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, type SelectPricesOptions, type Severity, type SeverityFinding, type SiloVault, type SiloVaults, type StCeloValidatorGroup, type StaleFeedEntry, type StampOptions, type StructuredOraclePrices, type SubAccountSummary, type SumerPositionInput, type SummaryAprData, type SummaryBalanceData, type SupplyExitMode, type SupplyExitTerms, type SupplyTermSheet, TELLER_CALLS_PER_BID, TERMMAX_CALLS_PER_ACCOUNT, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, type TellerDiscoveredBid, type TellerDiscovery, type TellerMarketsRaw, type TellerPoolRaw, type TermAdapter, type TermAssetRef, type TermAuctionOrder, type TermAuctionOrders, type TermBookSource, type TermBookTop, type TermInfo, type TermListing, type TermMarketRaw, TermMaxApiSource, type TermMaxBookTop, type TermMaxCurveSegment, type TermMaxDataSource, type TermMaxDiscovery, type TermMaxFeeConfig, type TermMaxMarketConfig, type TermMaxMarketRaw, type TermMaxOrderState, type TermProfile, type TermSheet, type TermSheetDigest, type TermSheetInput, type TermSheetViolation, TermSubgraphSource, type TermTag, type TokenApprovalMeta, type TokenApprovalParams, type TokenBalanceEntry, type TokenBalanceQuery, type TokenBalanceResult, type TokenEntry, type TokenList, type TokenListInput, type TrackerDiagnostic, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, type USDPriceMap, type UpshiftApiAsset, type UpshiftApiVault, type UpshiftVault, type UpshiftVaults, type UsddMarketRaw, type UsddMarketsRaw, type DssPositionInfo as UsddPositionInfo, type UserApr, type UserConfig, type UserData, type UserDataResult, type UserLendingPosition, type UtilizationTerms, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, type ValidationResult, type VaultAprResult, type VaultBalanceInput, type VaultClassification, type VaultClassificationFields, type VaultLookupEntry, type VaultMarketExposure, type VaultProvider, type VaultProviderTraits, type VaultPublicDataAll, type VaultPublicDataResult, type VaultSourceRow, type VaultTermInput, type VaultYieldSeries, type VaultYieldSnapshot, type YDaemonVault, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, type YearnVault, type YearnVaultKind, type YearnVaults, type YieldProfile, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isStablecoinSymbol, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, mergeDeep, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, savingsAddresses, savingsBalanceKind, selectAssetGroupPrices, shortDate, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, tickToAprNumber, tickToPrice, toDigest, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };
13848
+ export { type AaveMetadata, type AaveV2Public, type AaveV2UserReserveResponse, type AaveV3Public, type AaveV3UserReserveResponse, type AdditionalYields, type AdminKind, ApiBookSource, type AprData, type AprPercent, type AssetQuality, type AssetRiskIndex, type AuctionWindow, type AvailabilityTerms, type BalanceData, type BaseLendingPosition, type BasicReserveResponse, type BorrowExitTerms, type BorrowTermSheet, type BuildTermSheetOptions, type BuildVaultTermSheetOptions, type ChainDiagnostic, type ChainLinkResponse, type ChainQuery, type ChainSummary, type CompoundV2Metadata, type CompoundV3Public, type CompoundV3UserReserveResponse, type ConfigEntry, type ConvertLenderUserDataOptions, type CoreValidators, type CounterpartyTerms, type CoverageInfo, DEFAULT_MIDNIGHT_API, DEFAULT_OUTLIER_GUARD, DEFAULT_PROFILE_ID, DEFAULT_STALE_REJECT_SECONDS, DEFAULT_TERMMAX_API, type DeepPartial, type Denomination, type DepthMap, type DssMarketRaw, type DssMarketsRaw, type DssPositionInfo, EARN_DESCRIPTIONS, EARN_LABELS, EMPTY_BALANCE, type EModeAssets, type EModeData, type EModeResult, EXACTLY_LENDER_KEY, type EarnActionInput, type EarnActionKind, type EarnAmount, type EarnAppliedDefaults, type EarnAprBreakdown, type EarnAsset, type EarnAvailability, type EarnBasket, type EarnBasketLeg, type EarnCapability, type EarnCurator, type EarnExclusions, type EarnExit, type EarnFacetBucket, type EarnFacets, type EarnGating, type EarnLabelDimension, type EarnLendingPosition, type EarnMarket, type EarnMarketLabelInput, type EarnPosition, type EarnPositionAsset, type EarnPositionBase, type EarnPositionLeg, type EarnPositionSourceStatus, type EarnPositionSubAccount, type EarnPositionTotals, type EarnPositionUid, type EarnPositionsResponse, type EarnProtocol, type EarnProtocolAndCurator, type EarnRate, type EarnRateSource, type EarnRefs, type EarnResponse, type EarnRisk, type EarnShareToken, type EarnSourceStatus, type EarnVaultNormalizeOptions, type EarnVaultPosition, type EarnVenueKind, type EarnVocabulary, type EndpointFailure, type EnrichmentIndex, type EulerEarnVault, type EulerEarnVaults, type EulerV2Metadata, type ExactlyFixedPool, type ExactlyFixedPosition, type ExactlyMarketAccount, type ExactlyMarketsRaw, type ExactlyUserFixedPosition, type ExposureEntry, type ExposureTerms, type ExtraValidationCall, FRACTION_RATE_PROVIDERS, type FeeTerm, type FeeWhen, type FeedObservation, type FeedStat, type FeedStatsMap, type FeedTimestampMap, type FetchListaVaultsFromChainOptions, type FetchMorphoVaultsFromChainOptions, type FetchOraclePricesOptions, type FetchPendlePtOptions, type FetchSpectraPtOptions, type FetchTokenBalancesOptions, type FlattenPriorityConfig, type FluidDexShareState, type FluidDexStateMap, type FluidFToken, type FluidFTokens, type FrankencoinMarketRaw, type FrankencoinMarketsRaw, type FrankencoinPositionInfo, type FraxlendPairRaw, type FraxlendPairsRaw, type FullLenderRewardsMap, GMX_API_HOSTS, GMX_READ_CONTRACTS, GMX_SUPPORTED_CHAINS, type GenericCurrency, type GenericTokenList, type GetVaultPublicDataAllOptions, type GmxExecutionFees, type GmxPendingDeposit, type GmxPendingWithdrawal, type GmxReadContracts, type GmxUserBalance, type GmxUserPositions, type GmxUserPositionsOptions, type GmxVault, type GmxVaultKind, type GmxVaults, type GmxVaultsFetchOptions, type GovernancePower, type GovernanceRow, type GovernanceTerms, type GroupAccumulator, HYPERCORE_VAULT_REGISTRY, type HypercoreLockStatus, type HypercoreUserPositionsOptions, type HypercoreVault, type HypercoreVaultPosition, type HypercoreVaultRegistryEntry, type HypercoreVaults, type HypercoreVaultsFetchOptions, IDLE_MARKET_ID, INTERFACE_IDS, type IncompleteLenderRead, type IncompleteReason, type InitMetadata, type InitPublic, type InitUserReserveResponse, type InterfaceKind, type InvariantViolation, type InverseMarketRaw, type InverseMarketsRaw, type InversePositionInfo, LAGOON_API_URL, LAGOON_CHAIN_IDS, type LagoonApiVault, type LagoonSyncMode, type LagoonVault, type LagoonVaults, type LenderAssetReward, type LenderConfigData, type LenderConfigMap, type LenderCrossPoolMeta, type LenderData, type LenderDataEntry, type LenderInfo, type LenderInfoMap, type LenderPublicBase, type LenderRewardsMap, type LenderSummary, type LenderToLenderCrossPoolMeta, type LenderTotalAmounts, type LenderUserQuery, type LenderUserResponse, type LenderYieldComplete, type LenderYields$1 as LenderYields, LendingMode, type LiquidationPenaltyTerm, type LiquidationTerms, type LiquityBranchRaw, type LiquityDiscoveredTrove, type LiquityDiscovery, type LiquityMarketsRaw, type LiquitySpInfo, type LiquityTroveInfo, type ListaMarketOverrides, type LlamaLendMarketOverride, type LlamaLendMarketOverrides, type LlamaLendMarketRaw, type LlamaLendMarketsRaw, type LlamaLendPositionInfo, type LoopPostTradeMetrics, type LstDelegation, type LstDelegationKind, type LstValidator, type LstWithdrawalFetchOptions, type LstWithdrawalRegistryEntry, type LstWithdrawalRequest, type LstWithdrawalRequestsByLst, type LstWithdrawalStatus, MORPHO_LENS, MULTICALL_FAILURE, type MaturityTerms, MaxParamThresholds, type MergedUserData, type MidnightBook, type MidnightBookLevel, type MidnightBookSource, type ModeBase, type ModeVariant, type MorphoMarketOverrides, type MorphoSubgraphProxyConfig, type MorphoUserMarketBalance, type MorphoUserReserveResponse, type MorphoVault, type MorphoVaults, type MulticallEndpointOptions, type MulticallRpcBatch, type NumberMap, type Open, type OracleBand, type OracleDiagnostics, type OraclePriceEntry, type OraclePricesResult, type OracleRiskRow, type OracleTerms, type OutlierGuardConfig, PASSTHROUGH_RATE_EPSILON, PENDLE_ASSETS_URL, PENDLE_CHAIN_IDS, PENDLE_MARKETS_URL, type ParsedBalanceData, type ParsedEarnUid, type ParsedLendingEarnUid, type ParsedResponse, type ParsedUserBalance, type ParsedVaultEarnUid, type PendleApiAsset, type PendleApiMarket, type PendleApiMarketDetails, type PendlePtMarket, type PendlePtMarkets, type PermissionKind, type PermissionParams, type PoolData, type PoolSourceRow, type PoolWithMeta, type PortfolioSummary, type PortfolioTotals, type PositionConstraints, type PostTradeMetrics, type PreparedCall, type PreparedMergedMulticallParams, type PreparedMergedRpcCalls, type PreparedTokenBalanceRpcCalls, type PreparedUserDataRpcCalls, type PriceDerivation, type PriceSelection, type ProtocolParams, type ProviderOptions, type RateKind, type RateMenuEntry, type RateTerms, type RawRpcBatch, type RawRpcCall, type RawRpcResponse, type ReadFailurePolicy, type RedemptionTerms, type ResupplyMarketsRaw, type ResupplyPairIdentity, type ResupplyPairRaw, type ResupplyPositionInfo, type ResupplyWrappedMarket, type RewardSourceRef, type RewardStream, type RewardTerm, type RewardTokenRef, type RiverMarketRaw, type RiverMarketsRaw, type RiverPositionInfo, SDK_FRACTION_RATE_PROVIDERS, SPECTRA_NETWORKS, SPECTRA_RATE_MAX_PERCENT, SPECTRA_RATE_MIN_PERCENT, STABLECOIN_SYMBOLS, STCELO_MANAGER_ADDRESS, type SelectPricesOptions, type Severity, type SeverityFinding, type SiloVault, type SiloVaults, type SpectraApiMarket, type SpectraApiPool, type SpectraApiToken, type SpectraPtMarket, type SpectraPtMarkets, type StCeloValidatorGroup, type StaleFeedEntry, type StampOptions, type StructuredOraclePrices, type SubAccountSummary, type SumerPositionInput, type SummaryAprData, type SummaryBalanceData, type SupplyExitMode, type SupplyExitTerms, type SupplyTermSheet, TELLER_CALLS_PER_BID, TERMMAX_CALLS_PER_ACCOUNT, DECIMAL_BASE as TERMMAX_DECIMAL_BASE, TERMMAX_LIQUIDATION_PENALTY, TERMMAX_LIQUIDATION_WINDOW_SECS, TERMMAX_LIQUIDATOR_BONUS, TERMMAX_PARTIAL_CLOSE_FACTOR, TERMMAX_PARTIAL_LIQUIDATION_THRESHOLD_USD, TERM_ADAPTERS, TERM_PROFILES, TERM_SHEET_SCHEMA_VERSION, type TellerDiscoveredBid, type TellerDiscovery, type TellerMarketsRaw, type TellerPoolRaw, type TermAdapter, type TermAssetRef, type TermAuctionOrder, type TermAuctionOrders, type TermBookSource, type TermBookTop, type TermInfo, type TermListing, type TermMarketRaw, TermMaxApiSource, type TermMaxBookTop, type TermMaxCurveSegment, type TermMaxDataSource, type TermMaxDiscovery, type TermMaxFeeConfig, type TermMaxMarketConfig, type TermMaxMarketRaw, type TermMaxOrderState, type TermProfile, type TermSheet, type TermSheetDigest, type TermSheetInput, type TermSheetViolation, TermSubgraphSource, type TermTag, type TokenApprovalMeta, type TokenApprovalParams, type TokenBalanceEntry, type TokenBalanceQuery, type TokenBalanceResult, type TokenEntry, type TokenList, type TokenListInput, type TrackerDiagnostic, UPSHIFT_CHAIN_IDS, UPSHIFT_VAULTS_URL, type USDPriceMap, type UpshiftApiAsset, type UpshiftApiVault, type UpshiftVault, type UpshiftVaults, type UsddMarketRaw, type UsddMarketsRaw, type DssPositionInfo as UsddPositionInfo, type UserApr, type UserConfig, type UserData, type UserDataResult, type UserLendingPosition, type UtilizationTerms, VAULT_PROVIDERS, VAULT_PROVIDER_PROFILE, VAULT_PROVIDER_TRAITS, VAULT_SHARE_PRICE_PROBE, VAULT_VENUE_PREFIX, VOLATILE_VAULT_OVERRIDES, type ValidationResult, type VaultAprResult, type VaultBalanceInput, type VaultClassification, type VaultClassificationFields, type VaultLookupEntry, type VaultMarketExposure, type VaultProvider, type VaultProviderTraits, type VaultPublicDataAll, type VaultPublicDataResult, type VaultSourceRow, type VaultTermInput, type VaultYieldSeries, type VaultYieldSnapshot, type YDaemonVault, YEARN_CHAIN_IDS, YEARN_YDAEMON_BASE, type YearnVault, type YearnVaultKind, type YearnVaults, type YieldProfile, __resetResupplyUserCaches, accountDepositListKey, accountWithdrawalListKey, appendSnapshot, applyPositionDelta, attachImplications, attachPricesToFlashLiquidity, borrowDescription, borrowFindings, borrowHeadline, buildExposures, buildFluidFTokensCall, buildLendingPositionUid, buildLiquityUserCall, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, buildTellerUserCall, buildTermMaxUserCall, buildTermSheet, buildTermSheetsForGroup, buildVaultEarnUid, buildVaultLookup, buildVaultTermSheet, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, classifyFreshness, classifyReliability, classifyVault, clearPendleMarketsCache, clearSpectraMarketsCache, collateralSymbolsByVenue, collectFeedObservations, computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeVaultApr, computeWithdrawDelta, computeZapTradeDeltas, consensusReference, convertDssMarketsToResponse, convertExactlyMarketsToResponse, convertFrankencoinMarketsToResponse, convertFraxlendPairsToResponse, convertInverseMarketsToResponse, convertLenderUserDataResult, convertLiquityMarketsToResponse, convertLlamaLendMarketsToResponse, convertResupplyMarketsToResponse, convertRiverMarketsToResponse, convertTellerMarketsToResponse, convertTermMarketsToResponse, convertTermMaxMarketsToResponse, convertUsddMarketsToResponse, createMarketUid, createMidnightBookSource, createMulticallRpcCall, createRawRpcCalls, createTermBookSource, createTermMaxDataSource, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, deriveBorrowTags, deriveSupplyTags, detectInterfaceKinds, dexResolverFor, disambiguateEarnNames, dssIlkBytes32, dssKeyParts, dssLenderKey, duration, earnDescription, earnLabel, earnMarketFromPool, earnMarketFromVault, earnMarketLabel, earnPositionFromLenderEntry, earnPositionFromVaultBalance, earnPositionTotals, earnRowSubtitle, earnUidFromMarketUid, earnVaultTerms, earnVenueKind, encodeBalanceFetcherCalldata, enrichTermSheet, enrichmentIndexFromRows, exactlyPairLtv, exactlyPenaltyRateToAprPercent, exactlyWadRateToPercent, feePhrase, feedKeyOf, feedStatKey, fetchDolomiteAccountNumbers, fetchDssMarkets, fetchEulerEarnVaults, fetchEulerEarnVaultsFromSubgraph, fetchEulerSubAccountIndexes, fetchExactlyMarkets, fetchFlashLiquidityForChain, fetchFluidDexState, fetchFluidFTokens, fetchFrankencoinMarkets, fetchFraxlendPairs, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchGmxExecutionFees, fetchGmxTickerPrices, fetchGmxVaults, fetchHypercoreVaults, fetchInverseMarkets, fetchLagoonApiVaults, fetchLagoonVaults, fetchLiquityMarkets, fetchListaVaultsFromChain, fetchLlamaLendMarkets, fetchMorphoUserBalances, fetchMorphoUserPositionMarkets, fetchMorphoVaults, fetchMorphoVaultsFromApi, fetchMorphoVaultsFromChain, fetchOraclePrices, fetchPendleApiAssets, fetchPendleApiMarkets, fetchPendlePrices, fetchPendlePtMarkets, fetchResupplyMarkets, fetchRiverMarkets, fetchSiloVaults, fetchSpectraApiMarkets, fetchSpectraPtMarkets, fetchTellerMarkets, fetchTermMarkets, fetchTermMaxMarkets, fetchTokenBalances, fetchTokenMetadata, fetchUpshiftApiVaults, fetchUpshiftVaults, fetchUsddMarkets, fetchYearnApiVaults, fetchYearnVaults, filterActiveLenders, filterLendersByProtocol, finalizeInfo, findingsFor, formatRaw, frankencoinKeyParts, frankencoinLenderKey, fraxlendAssetPerCollateral, fraxlendKeyParts, fraxlendLenderKey, fuseLenderData, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getCachedFluidDexState, getCachedLiquityTroves, getCachedTellerBids, getCachedTermMaxDiscovery, getCachedTermMaxMarket, getCachedTermMaxMarkets, getCoreValidators, getFluidFTokensConverter, getGmxApiHost, getGmxReadContracts, getGmxUserPositions, getHealthFactor, getHypercoreUserPositions, getHypercoreVaultRegistry, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getLstDelegation, getLstValidators, getLstWithdrawalRegistry, getLstWithdrawalRequests, getMaxAmountClose, getMaxAmountCollateralSwap, getMaxAmountDebtSwap, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getReadFailurePolicy, getResolvedDolomiteAccountNumbers, getStCeloValidatorGroups, getSubAccountAddress, getSubAccountIndex, getTermProfile, getVaultPublicDataAll, getVaultWithdrawalRequests, hasCritical, hasEulerEarnVaultSubgraph, hasLagoonVaults, hasMorphoPositionIndex, hasMorphoUserApi, hasMorphoUserSubgraph, hasPendleMarkets, hasSpectraMarkets, hasUpshiftVaults, hasYearnVaults, ilkToKeySegment, implausibleRatePercent, inverseKeyParts, inverseLenderKey, isBoundNeed, isFailedCall, isIlliquid, isLendingPosition, isLiveMarket as isLivePendleMarket, isLiveSpectraMarket, isStablecoinSymbol, isVaultPosition, isVaultVenue, isYearnV3, keySegmentToIlk, keysFromMaps, lenderApiOnly, lenderFamily, liquityCandidateTroveIds, liquityKeyParts, liquityLenderKey, llamaLendKeyParts, llamaLendLenderKey, mergeDeep, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseEarnUid, parseMergedResult, parseMulticallRpcResponses, parseExpirySeconds as parsePendleExpirySeconds, parseRawRpcBatchResponses, parseRawRpcResponses, parseCurveFee as parseSpectraCurveFee, parsePtRate as parseSpectraPtRate, parseTermMaxLtv, parseTokenBalanceResult, pct, assetKey as pendleAssetKey, pickPool as pickSpectraPool, positivePart, predictInverseEscrow, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, priceGlvVaults, priceGmMarkets, probeAaveFeedTimestamps, pruneFeedStats, rankFindings, ratePercent, readVaultSharePrices, rejectOutliers as rejectPriceOutliers, resolveAdapter, resolveDerivation, resolveEarnIdentity, resolveModeConfig, resolveStCeloDepositGroup, resolveVaultProfileId, resupplyKeyParts, resupplyLenderKey, resupplyMarketLabel, riverKeyParts, riverLenderKey, sanePercent as saneSpectraPercent, savingsAddresses, savingsBalanceKind, selectAssetGroupPrices, shortDate, spectraAddress, spectraNetwork, spectraPoolsUrl, splitChainScopedAddress as splitPendleChainScopedAddress, stampCapabilities, stampEarnSubtitles, stampVaultClassification, stampVaultTermSheets, stripLeadingBrand, supplyDescription, supplyFindings, supplyHeadline, swapRoutedProvidersArePriceConsistent, tellerBpsToPercent, tellerImpliedLtv, tellerLenderKey, tellerPoolFromLenderKey, termLenderKey, termMaxApiBase, borrowNif as termMaxBorrowNif, curveApr as termMaxCurveApr, curveAprNumber as termMaxCurveAprNumber, daysToMaturity as termMaxDaysToMaturity, lendNif as termMaxLendNif, mintGtFeeRatio as termMaxMintGtFeeRatio, ratioToNumber as termMaxRatioToNumber, ratioToPercent as termMaxRatioToPercent, tickToAprNumber, tickToPrice, toDigest, toTermSheetInput, toVaultTermInput, trancheFromCounterparty, tryParseEarnUid, unflattenLenderData, updateFeedStats, usdValue, usddIlkBytes32, usddKeyParts, usddLenderKey, validateTermSheet, validateTermSheets, validateUserData, vaultSharesToAssets, vaultTermInputFromEarnMarket, vaultTermInputFromSourceRow, vaultTraits, vaultVenue, venueBrand, venueBrandKey, withMaturityLabel, withTrancheLabel };