/** Hyperliquid HyperCore (L1) vault read types. */
import type { VaultClassificationFields } from '../classification';
/** Status of a HyperCore vault position w.r.t. its withdrawal lockup. */
export type HypercoreLockStatus = 'locked' | 'withdrawable';
/**
 * A user's position in a single HyperCore vault, normalised from the
 * Hyperliquid info API (`userVaultEquities` + `vaultDetails`).
 *
 * HyperCore vaults are USDC-denominated and live on the Hyperliquid L1,
 * so amounts are decimal USD strings (not on-chain integers) and there
 * is no EVM share token. Deposits are subject to a lockup (typically
 * 4 days) before any withdrawal is allowed.
 */
export interface HypercoreVaultPosition {
    /** HyperCore vault address (L1). Lowercased. */
    vault: string;
    /** User's equity in the vault, decimal USD string (e.g. `"1234.56"`). */
    equity: string;
    /** Unix seconds after which the user may withdraw, if known. */
    lockupUntil?: number;
    /** Lock status derived from `lockupUntil` vs the provided `now`. */
    lockStatus?: HypercoreLockStatus;
    /** Amount immediately withdrawable, decimal USD string, if known. */
    maxWithdrawable?: string;
    /** User's PnL in the vault, decimal USD string, if known. */
    pnl?: string;
}
export interface HypercoreUserPositionsOptions {
    /** Override the info API base (defaults to mainnet). */
    apiUrl?: string;
    /** Fetch per-vault `vaultDetails` for lockup/withdrawable (default true). */
    withLockup?: boolean;
    /** `now` in unix seconds for deriving `lockStatus` (defaults to wall clock). */
    nowSeconds?: number;
}
/**
 * Vault-level public data for a single HyperCore vault, normalised from
 * the `vaultDetails` info API. The listing counterpart to
 * {@link HypercoreVaultPosition} (which is per-user).
 *
 * HyperCore vaults are USDC-denominated perp/trading vaults — there's no
 * ERC-4626 share token, so TVL/PnL are decimal USD strings and the vault
 * is always `volatile` + `stable`-denominated.
 */
export interface HypercoreVault extends VaultClassificationFields {
    /** Vault address (L1), lowercased. */
    address: string;
    /** Display name. */
    name: string;
    /** Vault leader / manager address, lowercased, if known. */
    leader?: string;
    /** Total value locked in USDC, decimal string. */
    tvlUsd: string;
    /** Annualised return as a fraction (e.g. `0.12` = 12%), when the API
     *  reports one. */
    apr?: number;
    /** Number of followers (depositors). */
    followerCount?: number;
    /** Whether the vault is closed to new deposits. */
    isClosed?: boolean;
    /** Underlying is always USDC for HyperCore vaults. */
    underlyingSymbol: 'USDC';
    /** Always volatile (perp/trading strategy). */
    yieldProfile: 'volatile';
    /** Always stable-denominated (USDC). */
    denomination: 'stable';
}
/** Vault-level listing keyed by lowercased address. */
export type HypercoreVaults = {
    [address: string]: HypercoreVault;
};
export interface HypercoreVaultsFetchOptions {
    /** Override the info API base (defaults to mainnet). */
    apiUrl?: string;
    /** Registry override — which vaults to list (defaults to the curated set). */
    entries?: {
        address: string;
        name: string;
    }[];
}
//# sourceMappingURL=types.d.ts.map