import type { Address } from "viem"; export interface GearAPY { base: number; crv: number; gear: number; gearPrice: number; } export type GearAPYDetails = GearAPY & { lastUpdated: string; }; export interface TokenOutputDetails { chainId: number; address: string; symbol: string; rewards: { apy: Array>; points: Array, "symbol" | "address">>; extraRewards: Array>; extraCollateralAPY: Array>; extraCollateralPoints: Array, "symbol" | "address">>; }; } export type ApyDetails = Apy & { lastUpdated: string; }; export interface FarmInfo { address: Address; symbol: string; rewardToken: Address; rewardSymbol: string; duration: bigint; finished: bigint; reward: bigint; balance: bigint; } export interface Apy { address: Address; symbol: string; protocol: string; value: number; } export interface ExtraCollateralAPY extends Omit { pool: Address; type: "relative" | "absolute"; } export interface PointsReward { name: string; units: string; multiplier: bigint | "soon"; type: T; } export interface DebtReward extends PointsReward { cm: Address | "any"; } export interface PointsInfo { symbol: string; address: Address; rewards: Array>; debtRewards?: Array>; } export interface ExtraCollateralPointsInfo extends PointsInfo { pool: Address; } export interface PoolOutputDetails { chainId: number; pool: Address; rewards: { points: Array, "pool">>; externalAPY: Array>; extraAPY: Array>; }; } export interface PoolPointsInfo { pool: Address; token: Address; symbol: string; amount: bigint; duration: string | undefined; name: string; type: T; estimation: "absolute" | "relative"; condition: "deposit" | "cross-chain-deposit" | "holding"; } export interface ExternalApy { value: number; name: string; pool: Address; } export interface PoolExtraApy { token: Address; apy: number; rewardToken: Address; rewardTokenSymbol: string; endTimestamp?: number; lastUpdated: string; }