import { type AddressUrlParam, type CommonGraphRequestParams, type SingleDataResponseModel } from '../api/types';
import { Endpoint } from '../core';
export declare enum FarmingPoolsOrdering {
    TvlAscending = "tvlascending",
    TvlDescending = "tvldescending",
    AprAscending = "aprascending",
    AprDescending = "aprdescending",
    ShareAscending = "shareascending",
    ShareDescending = "sharedescending"
}
export interface FarmingPoolResponse {
    apr: string;
    apr_change: string;
    farm_end_time?: number;
    farm_start_time: number;
    history_info?: {
        left_amount: string;
        right_amount: string;
        usdt_amount: string;
    };
    is_low_balance: boolean;
    left_address?: string;
    left_balance?: string;
    left_currency?: string;
    pool_address: string;
    pool_balance: string;
    pool_info: {
        vesting_period: number;
        vesting_ratio: number;
        rounds_info: {
            start_time: number;
            end_time?: number;
            reward_info: {
                rewardPerSec: string;
                rewardTokenCurrency: string;
                rewardTokenRootAddress: string;
                rewardTokenScale: string;
            }[];
        }[];
    };
    pool_owner_address: string;
    reward_token_root_info: {
        reward_currency: string;
        reward_per_second: string;
        reward_root_address: string;
        reward_token_scale: number;
    }[];
    right_address?: string;
    right_balance?: string;
    right_currency?: string;
    share: string;
    share_change: string;
    token_root_address: string;
    token_root_currency: string;
    token_root_scale: number;
    tvl: string;
    tvl_change: string;
    user_token_balance: string;
    user_usdt_balance: string;
}
export interface FarmingPoolRequestParams {
    userAddress?: string;
    afterZeroBalance?: boolean;
}
export interface RewardTokenRootInfo {
    reward_currency: string;
    reward_root_address: string;
    reward_scale: number;
}
export interface FarmingPoolsItemResponse {
    apr: string;
    apr_change: string;
    farm_end_time?: number;
    farm_start_time: number;
    left_address?: string;
    left_currency?: string;
    pool_address: string;
    pool_owner_address: string;
    reward_token_root_info: RewardTokenRootInfo[];
    right_address?: string;
    right_currency?: string;
    share: string;
    token_root_address: string;
    token_root_currency: string;
    token_root_scale: number;
    tvl: string;
    tvl_change: string;
    user_token_balance: string;
    is_low_balance: boolean;
}
export interface FarmingPoolsResponse {
    favorite_pools_info: FarmingPoolsItemResponse[];
    favorite_total_count: number;
    pools_info: FarmingPoolsItemResponse[];
    total_count: number;
}
export interface FarmingPoolsRequestParams {
    aprGe?: string;
    aprLe?: string;
    favoritePoolAddresses?: string[];
    isActive?: boolean;
    isAwaitingStart?: boolean;
    isLowBalance?: boolean;
    isWithMyFarming?: boolean;
    leftAddress?: string;
    leftCurrency?: string;
    limit?: number;
    offset?: number;
    ordering?: FarmingPoolsOrdering;
    rightAddress?: string;
    rightCurrency?: string;
    rootAddresses?: string[];
    tvlGe?: string;
    tvlLe?: string;
    userAddress?: string;
    whiteCurrencyAddresses?: string[];
    whiteListUri?: string;
}
export declare enum FarmingPoolTransactionEventType {
    Deposit = "deposit",
    Withdraw = "withdraw",
    Claim = "claim",
    RewardDeposit = "rewarddeposit"
}
export declare enum FarmingPoolTransactionsOrdering {
    BlockTimeAscending = "blocktimeascending",
    BlockTimeDescending = "blocktimedescending",
    LpVolumeAscending = "lpvolumeascending",
    LpVolumeDescending = "lpvolumedescending",
    TvAscending = "tvascending",
    TvDescending = "tvdescending"
}
export type FarmingPoolTransactionsKind = keyof typeof FarmingPoolTransactionEventType;
export interface FarmingPoolTransactionResponse {
    kind: FarmingPoolTransactionsKind;
    leftExec: string | null;
    messageHash: string;
    poolAddress: string;
    rightExec: string | null;
    timestampBlock: number;
    tokenAddress: string;
    tokenCurrency: string;
    tokenExec: string;
    transactionHash: string;
    tvExec: string;
    userAddress: string;
}
export interface FarmingPoolTransactionsResponse {
    totalCount: number;
    transactions: FarmingPoolTransactionResponse[];
}
export interface TransactionsRequestParams {
    eventTypes?: FarmingPoolTransactionEventType[];
    limit?: number;
    offset?: number;
    ordering?: FarmingPoolTransactionsOrdering;
    poolAddress?: string;
    rootTokenAmountGe?: string;
    rootTokenAmountLe?: string;
    timestampBlockGe?: number;
    timestampBlockLe?: number;
    tvGe?: string;
    tvLe?: string;
    userAddress?: string;
    whiteCurrencyAddresses?: string[];
    whiteListUri?: string[];
}
export interface FarmingPoolGraphicRequestParams extends CommonGraphRequestParams {
    farmingPoolAddress: string;
}
export declare function useFarmingPoolsApi(baseUrl?: string): {
    pool: Endpoint<AddressUrlParam, FarmingPoolRequestParams, FarmingPoolResponse>;
    poolApr: Endpoint<never, FarmingPoolGraphicRequestParams, SingleDataResponseModel[]>;
    pools: Endpoint<never, FarmingPoolsRequestParams, FarmingPoolsResponse>;
    poolTvl: Endpoint<never, FarmingPoolGraphicRequestParams, SingleDataResponseModel[]>;
    transactions: Endpoint<never, TransactionsRequestParams, FarmingPoolTransactionsResponse>;
};
