import BigNumber from 'bignumber.js';
import { Exchange, Poolstatus, PoolType, SafeboxStatus, UniswapV3Range, WTokenType } from './enums';
export declare type IExchange = {
    name: Exchange;
    logo: string;
    spellAddress: string;
    stakingAddress?: string;
    reward: {
        tokenName: string;
        rewardTokenAddress: string;
    };
};
export declare type PoolPosition = {
    id: number;
    owner: string;
    borrowCredit: string;
    collateralCredit: string;
    collateralSize: string;
    debtRatio: string;
    pool: {
        key: string;
    };
};
export declare type Pool = {
    key: string;
    name: string;
    tokens: string[];
    lpTokenAddress: string;
    poolAddress?: string;
    wTokenAddress: string;
    exchange: IExchange;
    type: PoolType;
    color?: string;
    logo?: string;
    logoSize?: number;
    pid?: number;
    gid?: number;
    rewardSymbol?: string;
    rewardAddress?: string;
    poolContractAbi?: Record<string, unknown>;
    curveGaugeAddress?: string;
    curveGaugeControllerAddress?: string;
    curveRawStatsApiUrl?: string;
    isFarmingDisabled?: boolean;
    status?: Poolstatus;
    delistedTimestamp?: number;
    isPoolAvailableV1?: boolean;
    wTokenType: WTokenType;
    stakingAddress?: string;
    spellAddress?: string;
    migrateTo?: string;
    rewardText?: string;
    uniswapV3Info?: UniswapV3PoolInfo;
    launchTimestamp?: number;
    beetxPoolInfo?: {
        vaultPoolId: string;
    };
};
export declare type Safebox = {
    address: string;
    safeboxAddress: string;
    cyTokenAddress: string;
    status?: SafeboxStatus;
    ibStakingReward?: string;
};
export declare type TickInfo = {
    tick: number;
    price0: BigNumber;
    price1: BigNumber;
    price0Usd?: BigNumber;
    price1Usd?: BigNumber;
};
export declare type PriceRange = {
    lower: TickInfo;
    upper: TickInfo;
    apr: number;
    name: UniswapV3Range;
};
declare type SafePriceRange = PriceRange;
declare type NeutralPriceRange = PriceRange;
declare type RiskyPriceRange = PriceRange;
export declare type PriceRanges = [SafePriceRange, NeutralPriceRange, RiskyPriceRange];
export declare type PriceRangeInfo = {
    lastUpdatedTimestamp: number;
    lastUpdatedTick: number;
    priceRanges: PriceRanges;
};
export declare type FeeBps = 100 | 500 | 3000 | 10000;
declare type SafeBps = number;
declare type NeutralBps = number;
declare type RiskyBps = number;
export interface UniswapV3PoolInfo extends PriceRangeInfo {
    priceRatioBps: [SafeBps, NeutralBps, RiskyBps];
    poolFeeBps: FeeBps;
    tickSpacing: 1 | 10 | 60 | 200;
}
export declare type HomoraV2FarmingPositionDefinition = {
    key: string;
    address: string;
    poolAddress: string;
    tokenAddresses: string[];
    poolName: string;
    exchange: string;
    tradingVolume: number;
    feeTier?: number;
    rewardAddress?: string;
};
export declare type HomoraV2FarmingPositionDataProps = {
    tradingVolume: number;
    poolAddress: string;
    feeTier?: number;
    key: string;
    positionKey: string;
};
export declare type HomoraV2LendingPositionDefinition = {
    tokenAddress: string;
    safeboxAddress: string;
    address: string;
};
export declare type HomoraV2LendingPositionDataProps = {
    supply: number;
    borrow: number;
    utilization: string;
    liquidity: number;
    reserves: number[];
    apy: number;
};
export {};
