import { GenericCurrency } from '../../types/general';
import type { VaultClassificationFields } from '../classification';
/**
 * Parsed Upshift vault entry.
 *
 * Upshift vaults are curator-run ERC-4626-style yield vaults exposed via
 * a single public REST listing (`https://app.upshift.finance/api/proxy/
 * vaults`). The deposit contract (`vaultAddress`) and the receipt/share
 * token a depositor actually holds (`address`) can differ on the newer
 * `evm-2` vaults, so we key the vault by the **receipt** token — that's
 * what shows up in a user's wallet and what the user-balance lookup
 * resolves against.
 *
 * Mirrors the cross-provider load-bearing fields (`address`,
 * `underlying`, `symbol`, `name`, `decimals`, `totalAssets`,
 * `totalSupply`) so `buildVaultLookup` picks it up without branching.
 * Share and underlying decimals can diverge, so `assetDecimals` is
 * carried through for correct share→asset math.
 */
export interface UpshiftVault extends VaultClassificationFields {
    /** Receipt / share token address (held by depositors), lowercased. */
    address: string;
    /** Deposit (vault) contract address, lowercased. Equals `address` on
     *  older single-token vaults. */
    vaultAddress: string;
    /** Underlying ERC-20 address (first accepted deposit asset), lowercased. */
    underlying: string;
    /** Receipt-token symbol, e.g. `earnAUSD`. */
    symbol: string;
    /** Vault display name as returned by the API. */
    name: string;
    /** Receipt-token decimals. */
    decimals: number;
    /** Underlying asset decimals — may differ from `decimals`. */
    assetDecimals: number;
    /** Total underlying held by the vault, raw integer as string
     *  (asset-decimal scaled). */
    totalAssets: string;
    /** Total shares minted, raw integer as string (share-decimal scaled). */
    totalSupply: string;
    /** Derived `pricePerShare` — 1 share → X underlying, asset-decimal
     *  scaled (`totalAssets * 10**shareDecimals / totalSupply`). `'0'` for
     *  an empty vault. */
    pricePerShare: string;
    /** Base supply APY in percent (e.g. `10` = 10 %). From `apy.apy`. */
    supplyRate: number;
    /** Incentive / campaign APR in percent, when the API reports one
     *  (`apy.campaignApy`). Kept separate from the base rate. */
    rewardsRate: number;
    /** `supplyRate + rewardsRate` — total APR a depositor earns. */
    depositRate: number;
    /** All APY components reported by the API (percent), for transparency. */
    apy: {
        base: number | null;
        campaign: number | null;
        points: number | null;
        underlying: number | null;
    };
    /** Whether deposits are currently paused. */
    isDepositPaused: boolean;
    /** Whether withdrawals are currently paused. */
    isWithdrawalPaused: boolean;
    /** Hydrated underlying 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**assetDecimals`). */
    totalAssetsFormatted: number;
    /** Human-formatted total assets in USD. */
    totalAssetsUsd: number;
}
/**
 * Full parsed payload — per-vault map keyed by lowercased receipt-token
 * address (parity with the other vault providers).
 */
export type UpshiftVaults = {
    [vaultAddress: string]: UpshiftVault;
};
//# sourceMappingURL=types.d.ts.map