import { GenericCurrency } from '../../types/general';
import type { VaultClassificationFields } from '../classification';
/**
 * Parsed Gearbox V3 `PoolV3` entry — the passive-lender / ERC-4626 side.
 *
 * `PoolV3` contracts are standalone ERC-4626 vaults; the pool contract
 * itself is the Diesel share token. Not a lending market (no collateral,
 * no per-user borrow, no liquidation) — just a deposit → earn shape,
 * funded by draw-downs from attached `CreditManagerV3` suites.
 *
 * Modeled separately from the per-CreditManager credit-side markets
 * (`src/lending/public-data/gearbox/`), which are isolated and each get
 * their own `GEARBOX_V3_<CM_HEX>` lender key.
 */
export interface GearboxV3Pool extends VaultClassificationFields {
    /** Pool (Diesel share) contract address, lowercased. */
    address: string;
    /** Lowercased underlying ERC20 address. WETH is normalized to
     *  `zeroAddress` on Ethereum mainnet so downstream code only sees one
     *  native-ETH shape — matches the convention in the rest of the stack. */
    underlying: string;
    /** Diesel share symbol, e.g. `dUSDCV3`, `dWETHV3`. */
    symbol: string;
    /** Diesel share name as returned by `name()`, e.g. `Gearbox USDC V3`.
     *  Raw — use `displayName` for UI. */
    name: string;
    /** Cross-provider UI label — `${curatorName ?? 'Gearbox'} ${asset.symbol}`
     *  (e.g. `cp0x USDC`, `Re7 WETH`). Always non-empty. */
    displayName: string;
    /** Pool / Diesel decimals (ERC-4626 keeps share and asset decimals
     *  aligned). */
    decimals: number;
    /** Total underlying assets held by the pool, raw integer as string. */
    totalAssets: string;
    /** Total Diesel shares minted, raw integer as string. */
    totalSupply: string;
    /** Raw `convertToAssets(10**shareDecimals)` — 1 share → X underlying,
     *  asset-scaled. Derived from `totalAssets / totalSupply`. */
    convertToAssets: string;
    /** Total underlying currently lent out by all attached Credit Managers. */
    totalBorrowed: string;
    /** Underlying freely withdrawable by lenders (totalAssets − totalBorrowed). */
    availableLiquidity: string;
    /** `expectedLiquidity` on-chain — totalAssets accrual-projected. */
    expectedLiquidity: string;
    /** Diesel-per-underlying rate, raw integer — `1 underlying → N shares`. */
    dieselRate: string;
    /** Withdraw-fee in basis points (e.g. `10` = 0.10 %). */
    withdrawFeeBps: number;
    /** MarketConfigurator address (lowercased) that deployed this pool's
     *  market. Each configurator is operated by a known curator (cp0x, Re7,
     *  Chaos Labs, …); maps 1:1 to `curatorName` via
     *  `gearboxMarketConfigurators(chainId)` in `@1delta/data-sdk`. */
    curator?: string;
    /** Human-readable curator label for UI (e.g. `cp0x`, `Re7`,
     *  `Chaos Labs`). Resolved from the configurator address via the
     *  `gearboxResolvers.chains[chainId].marketConfigurators` registry. */
    curatorName?: string;
    /** Base supply APR in percent (e.g. `3.41` = 3.41 %). Pool-level rate,
     *  same value every attached CM sees. */
    supplyRate: number;
    /** Base borrow APR in percent. */
    baseInterestRate: number;
    /** Hydrated asset metadata from the provided token list, if any. */
    asset?: GenericCurrency;
    /** USD price of one underlying unit, if prices were supplied. */
    priceUsd?: number;
    /** Human-formatted total assets (`totalAssets / 10^decimals`). */
    totalAssetsFormatted: number;
    /** Human-formatted total assets in USD. */
    totalAssetsUsd: number;
    /** Currently withdrawable underlying, raw integer as string. Mirrors
     *  `availableLiquidity` (= expectedLiquidity − totalBorrowed); exposed
     *  under the cross-vault `liquidity*` names for parity with Morpho /
     *  Fluid / Silo. */
    liquidity: string;
    /** Human-formatted immediate withdrawable liquidity. */
    liquidityFormatted: number;
    /** Human-formatted immediate withdrawable liquidity in USD. */
    liquidityUsd: number;
}
/** Full parsed payload: per-underlying map for easy UI lookup. */
export type GearboxV3Pools = {
    /** Keyed by lowercased underlying address (`zeroAddress` for native ETH). */
    [underlying: string]: GearboxV3Pool;
};
//# sourceMappingURL=types.d.ts.map