import type { Address } from "viem"; import type { VaultType } from "../utils/types.js"; import { ERC4626Vault, type ERC4626VaultPopulated, type IERC4626Vault, type IERC4626VaultConversion } from "./ERC4626Vault.js"; import type { IVaultEntity } from "./Account.js"; import type { IVaultMetaService } from "../services/vaults/vaultMetaService/index.js"; import type { DataIssue } from "../utils/entityDiagnostics.js"; export interface EulerEarnAllocationCap { current: bigint; pending: bigint; pendingValidAt: number; } export interface EulerEarnStrategyInfo { address: Address; vaultType: VaultType; allocatedAssets: bigint; availableAssets: bigint; allocationCap: EulerEarnAllocationCap; removableAt: number; vault?: IVaultEntity; } export type EulerEarnStrategyStatus = "active" | "inactive" | "pendingRemoval"; export interface EulerEarnGovernance { owner: Address; creator: Address; curator: Address; guardian: Address; feeReceiver: Address; timelock: number; pendingTimelock: number; pendingTimelockValidAt: number; pendingGuardian: Address; pendingGuardianValidAt: number; } export interface IEulerEarn extends IERC4626Vault { lostAssets: bigint; availableAssets: bigint; performanceFee: number; /** Percentage points, e.g. 5 = 5%. */ supplyApy?: number | undefined; governance: EulerEarnGovernance; supplyQueue: Address[]; withdrawQueue: Address[]; strategies: EulerEarnStrategyInfo[]; timestamp: number; populated?: Partial; } export interface EulerEarnPopulated extends ERC4626VaultPopulated { strategyVaults: boolean; } export declare class EulerEarn extends ERC4626Vault implements IEulerEarn, IERC4626VaultConversion { lostAssets: bigint; availableAssets: bigint; performanceFee: number; /** Percentage points, e.g. 5 = 5%. */ supplyApy: number | undefined; governance: EulerEarnGovernance; supplyQueue: Address[]; withdrawQueue: Address[]; strategies: EulerEarnStrategyInfo[]; timestamp: number; populated: EulerEarnPopulated; constructor(args: IEulerEarn); get isBorrowable(): boolean; get availableLiquidity(): bigint; isPendingRemoval(strategy: EulerEarnStrategyInfo): boolean; getStrategyStatus(strategy: EulerEarnStrategyInfo): EulerEarnStrategyStatus; /** Conversion using VIRTUAL_DEPOSIT (matches EVault contract). */ convertToAssets(shares: bigint): bigint; /** Conversion using VIRTUAL_DEPOSIT (matches EVault contract). */ convertToShares(assets: bigint): bigint; populateStrategyVaults(vaultMetaService: IVaultMetaService): Promise; } //# sourceMappingURL=EulerEarn.d.ts.map