import { type CommonGraphRequestParams } from '../api/types';
import { Endpoint } from '../core';
export interface GaugePoolTokenInfo {
    amount: string;
    tokenRoot: string;
    tokenSymbol: string;
}
export interface GaugeRewardTokenInfo {
    tokenRoot: string;
    tokenSymbol: string;
}
export interface GaugeItem {
    address: string;
    depositTokenRoot: string;
    endTime: number | null;
    hasQubeReward: boolean;
    isLowBalance: boolean;
    maxApr: string;
    maxAprChange: string;
    maxBoost: number;
    maxLockTime: number;
    minApr: string;
    minAprChange: string;
    poolTokens: GaugePoolTokenInfo[];
    rewardTokens: GaugeRewardTokenInfo[];
    startTime: number | null;
    tvl: string;
    tvlChange: string;
}
export declare enum GaugesOrdering {
    TvlAsc = "TvlAsc",
    TvlDesc = "TvlDesc",
    MaxAprAsc = "MaxAprAsc",
    MaxAprDesc = "MaxAprDesc",
    MinAprAsc = "MinAprAsc",
    MinAprDesc = "MinAprDesc"
}
export interface GaugeRange {
    from: string;
    to: string;
}
export interface GaugesRequestParams {
    additionalTokenRoots?: string[];
    limit: number;
    maxApr?: GaugeRange;
    minApr?: GaugeRange;
    offset: number;
    ordering?: GaugesOrdering;
    showLowBalance?: boolean;
    starredGauges?: string[];
    tvl?: GaugeRange;
    userAddress?: string;
    whitelistUri?: string;
}
export interface GaugesLpRootRequestParams {
    lpAddress: string;
}
export interface GaugesResponse {
    gauges: GaugeItem[];
    total: number;
}
export interface GaugeInfo {
    address: string;
    depositTokenRoot: string;
    hasQubeReward: boolean;
    maxApr: string;
    minApr: string;
    poolTokens: GaugePoolTokenInfo[];
    rewardTokens: GaugeRewardTokenInfo[];
    tvl: string;
}
export interface GaugeDetailsRequestParams {
    gaugeAddress: string;
}
export interface GaugeDetailsReResponse {
    gauge: GaugeItem;
}
export interface GaugesByUserAddressRequestParams {
    userAddress: string;
}
export interface GaugesByUserAddressResponse {
    gauges: GaugeInfo[];
}
export interface QubeDaoGaugeBatchRequestParams {
    gauges: string[];
}
export interface GaugeBatchResponse {
    gauges: GaugeInfo[];
}
export declare enum GaugeTransactionEventType {
    Claim = "claim",
    Deposit = "deposit",
    Reward = "rewardDeposit",
    Withdraw = "withdraw"
}
export interface GaugeTransactionsRequestParams {
    eventType?: GaugeTransactionEventType[];
    gaugeAddress?: string;
    limit: number;
    offset: number;
    timestamp?: {
        from: number;
        to: number;
    };
    userAddress?: string;
}
export interface GaugeTransactionToken {
    amount: string;
    tokenRoot: string;
    tokenSymbol: string;
    value: string;
}
export interface GaugeTransactionResponse {
    gaugeAddress: string;
    kind: GaugeTransactionEventType;
    timestamp: number;
    tokens: GaugeTransactionToken[];
    txHash: string;
    userAddress: string;
}
export interface GaugeTransactionsResponse {
    total: number;
    transactions: GaugeTransactionResponse[];
}
export interface GaugeRewardRoundsRequestParams {
    gaugeAddress: string;
    limit: number;
    offset: number;
}
export interface GaugeRewardRoundToken {
    budget: string;
    farmingSpeed: string;
    tokenRoot: string;
    tokenSymbol: string;
}
export interface GaugeRewardRoundResponse {
    endDate: number;
    id: number;
    rewardTokens: GaugeRewardRoundToken[];
    startDate: number;
}
export interface GaugeRewardRoundsResponse {
    rewardTokens: GaugeRewardRoundResponse[];
    total: number;
}
export interface GaugeGraphRequestParams extends CommonGraphRequestParams {
    gaugeAddress: string;
}
export interface GaugeGraphResponseModel {
    timestamp: number;
    value: string;
}
export interface GaugeGraphResponse {
    stats: GaugeGraphResponseModel[];
}
export declare function useGaugesApi(baseUrl?: string): {
    extraRewardRounds: Endpoint<never, GaugeRewardRoundsRequestParams, GaugeRewardRoundsResponse>;
    gauge: Endpoint<never, GaugeDetailsRequestParams, GaugeDetailsReResponse>;
    gaugeByLpRoot: Endpoint<never, GaugesLpRootRequestParams, GaugesResponse>;
    gauges: Endpoint<never, GaugesRequestParams, GaugesResponse>;
    gaugesBatch: Endpoint<never, QubeDaoGaugeBatchRequestParams, GaugeBatchResponse>;
    gaugesByUserAddress: Endpoint<never, GaugesByUserAddressRequestParams, GaugesByUserAddressResponse>;
    maxApr: Endpoint<never, GaugeGraphRequestParams, GaugeGraphResponse>;
    minApr: Endpoint<never, GaugeGraphRequestParams, GaugeGraphResponse>;
    qubeRewardRounds: Endpoint<never, GaugeRewardRoundsRequestParams, GaugeRewardRoundsResponse>;
    transactions: Endpoint<never, GaugeTransactionsRequestParams, GaugeTransactionsResponse>;
    tvl: Endpoint<never, GaugeGraphRequestParams, GaugeGraphResponse>;
};
