import { type AddressUrlParam } from '../api/types';
import { Endpoint } from '../core';
import { type OrderingDirection } from '../types';
export interface QubeDaoMainPageResponse {
    averageLockTime: number;
    totalAmount: string;
    totalVeAmount: string;
}
export declare enum QubeDaoBalanceColumn {
    CreatedAt = "createdAt"
}
export interface QubeDaoBalanceOrdering {
    column: QubeDaoBalanceColumn;
    direction: OrderingDirection;
}
export interface QubeDaoBalancesRequestParams {
    amountGe?: string;
    amountLe?: string;
    limit: number;
    offset: number;
    ordering?: QubeDaoBalanceOrdering;
    userAddress?: string;
    veAmountGe?: string;
    veAmountLe?: string;
}
export interface QubeDaoBalanceResponse {
    amount: string;
    createdAt: number;
    updatedAt: number;
    userAddress: string;
    veAmount: string;
}
export interface QubeDaoBalancesResponse {
    balances: QubeDaoBalanceResponse[];
    totalCount: number;
}
export declare enum QubeDaoBalancesStatsColumn {
    Day = "day"
}
export interface QubeDaoBalancesStatsOrdering {
    column: QubeDaoBalancesStatsColumn;
    direction: OrderingDirection;
}
export interface QubeDaoBalancesStatsRequestParams {
    dayGe?: number;
    dayLe?: number;
    limit: number;
    offset: number;
    ordering?: QubeDaoBalancesStatsOrdering;
}
export interface QubeDaoBalanceStatResponse {
    amount: string;
    day: number;
    veAmount: string;
}
export interface QubeDaoBalancesStatsResponse {
    balances: QubeDaoBalanceStatResponse[];
    totalCount: number;
}
export declare enum QubeDaoDepositColumn {
    Amount = "amount",
    CreatedAt = "createdAt",
    LockTime = "lockTime",
    VeAmount = "veAmount"
}
export interface QubeDaoDepositsOrdering {
    column: QubeDaoDepositColumn;
    direction: OrderingDirection;
}
export interface QubeDaoDepositsRequestParams {
    isLocked?: boolean;
    key?: number;
    limit: number;
    offset: number;
    ordering?: QubeDaoDepositsOrdering;
    user?: string;
}
export interface QubeDaoDepositResponse {
    amount: string;
    callId: number;
    createdAt: number;
    isLocked: boolean;
    key: number;
    lockTime: number;
    transactionHash: string;
    transactionTime: number;
    user: string;
    veAmount: string;
}
export interface QubeDaoDepositsResponse {
    deposits: QubeDaoDepositResponse[];
    totalCount: number;
}
export declare enum QubeDaoDepositsStatsColumn {
    Day = "day"
}
export interface QubeDaoDepositsStatsOrdering {
    column: QubeDaoDepositsStatsColumn;
    direction: OrderingDirection;
}
export interface QubeDaoDepositsStatsRequestParams {
    dayGe?: number;
    dayLe?: number;
    limit: number;
    offset: number;
    ordering?: QubeDaoDepositsStatsOrdering;
}
export interface QubeDaoDepositStatResponse {
    averageLockTime: number;
    day: number;
}
export interface QubeDaoDepositsStatsResponse {
    deposits: QubeDaoDepositStatResponse[];
    totalCount: number;
}
export declare enum QubeDaoEpochColumn {
    CreatedAt = "createdAt"
}
export interface QubeDaoEpochsOrdering {
    column: QubeDaoEpochColumn;
    direction: OrderingDirection;
}
export interface QubeDaoEpochsRequestParams {
    epochNum?: number;
    epochStartGe?: number;
    epochStartLe?: number;
    limit: number;
    offset: number;
    ordering?: QubeDaoEpochsOrdering;
}
export interface QubeDaoEpochResponse {
    createdAt: number;
    epochEnd: number;
    epochNum: number;
    epochStart: number;
    totalDistribution: string;
    totalVeAmount: string;
    transactionTime: number;
    updatedAt: number;
    voteEnd: number | null;
    voteStart: number | null;
}
export interface QubeDaoEpochsResponse {
    epochs: QubeDaoEpochResponse[];
    totalCount: number;
}
export declare enum QubeDaoEpochDistributionColumn {
    CreatedAt = "createdAt"
}
export interface QubeDaoEpochDistributionsOrdering {
    column: QubeDaoEpochDistributionColumn;
    direction: OrderingDirection;
}
export interface QubeDaoEpochDistributionsRequestParams {
    epochNum?: number;
    gauge?: string;
    ordering?: QubeDaoEpochDistributionsOrdering;
}
export interface QubeDaoEpochDistributionResponse {
    amount: string;
    createdAt: number;
    epochNum: number;
    gauge: string;
}
export interface QubeDaoEpochDistributionsResponse {
    epochDistributions: QubeDaoEpochDistributionResponse[];
    totalCount: number;
}
export declare enum QubeDaoEpochVoteColumn {
    CreatedAt = "createdAt"
}
export interface QubeDaoEpochVotesOrdering {
    column: QubeDaoEpochVoteColumn;
    direction: OrderingDirection;
}
export interface QubeDaoEpochVotesRequestParams {
    epochNum?: number;
    gauge?: string;
    limit: number;
    offset: number;
    ordering?: QubeDaoEpochVotesOrdering;
    userAddress?: string;
}
export interface QubeDaoEpochVoteResponse {
    createdAt: number;
    epochNum: number;
    gauge: string;
    transactionTime: number;
    userAddress: string;
    veAmount: string;
}
export interface QubeDaoEpochVotesResponse {
    epochVotes: QubeDaoEpochVoteResponse[];
    totalCount: number;
}
export interface QubeDaoEpochVotesSumResponse {
    distributedAmount?: string | null;
    gauge: string;
    normalizedAmount?: string | null;
    totalAmount: string;
}
export declare enum QubeDaoTransactionColumn {
    Amount = "amount",
    CreatedAt = "createdAt",
    VeAmount = "veAmount"
}
export declare enum QubeDaoTransactionKind {
    Burn = "Burn",
    Lock = "Lock",
    Unlock = "Unlock"
}
export interface QubeDaoTransactionsOrdering {
    column: QubeDaoTransactionColumn;
    direction: OrderingDirection;
}
export interface QubeDaoTransactionsRequestParams {
    kind?: QubeDaoTransactionKind;
    limit: number;
    offset: number;
    ordering?: QubeDaoTransactionsOrdering;
    transactionTimeGe?: number;
    transactionTimeLe?: number;
    userAddress?: string;
}
export interface QubeDaoTransactionResponse {
    amount: string;
    createdAt: number;
    kind: QubeDaoTransactionKind | null;
    transactionHash: string;
    transactionTime: number;
    userAddress: string;
    veAmount: string;
}
export interface QubeDaoTransactionsResponse {
    totalCount: number;
    transactions: QubeDaoTransactionResponse[];
}
export declare enum QubeDaoWhitelistColumn {
    AverageAmount = "averageAmount",
    AveragePercentage = "averagePercentage",
    CreatedAt = "createdAt"
}
export interface QubeDaoWhitelistOrdering {
    column: QubeDaoWhitelistColumn;
    direction: OrderingDirection;
}
export interface QubeDaoWhitelistRequestParams {
    gaugeAddress?: string;
    isActive?: boolean;
    limit: number;
    offset: number;
    ordering?: QubeDaoWhitelistOrdering;
}
export interface QubeDaoWhitelistGaugeResponse {
    activeEpochs?: number | null;
    address: string;
    averageAmount: string;
    averagePercentage: string;
    daoApprove: boolean;
    isActive: boolean;
    lastEpochAmount: string;
    lastEpochPercentage: string;
}
export interface QubeDaoWhitelistResponse {
    gauges: QubeDaoWhitelistGaugeResponse[];
    totalCount: number;
}
export type EpochNumUrlParam = {
    epochNum: string;
};
export declare function useQubeDaoApi(baseUrl?: string): {
    balance: Endpoint<AddressUrlParam, never, QubeDaoBalanceResponse>;
    balancesSearch: Endpoint<never, QubeDaoBalancesRequestParams, QubeDaoBalancesResponse>;
    balancesStatsSearch: Endpoint<never, QubeDaoBalancesStatsRequestParams, QubeDaoBalancesStatsResponse>;
    depositsSearch: Endpoint<never, QubeDaoDepositsRequestParams, QubeDaoDepositsResponse>;
    depositsStatsSearch: Endpoint<never, QubeDaoDepositsStatsRequestParams, QubeDaoDepositsStatsResponse>;
    epochsDistributionsSearch: Endpoint<never, QubeDaoEpochDistributionsRequestParams, QubeDaoEpochDistributionsResponse>;
    epochsLast: Endpoint<never, never, QubeDaoEpochResponse>;
    epochsSearch: Endpoint<never, QubeDaoEpochsRequestParams, QubeDaoEpochsResponse>;
    epochsVotesSearch: Endpoint<never, QubeDaoEpochVotesRequestParams, QubeDaoEpochVotesResponse>;
    epochsVotesSum: Endpoint<EpochNumUrlParam, never, QubeDaoEpochVotesSumResponse[]>;
    mainPage: Endpoint<never, never, QubeDaoMainPageResponse>;
    transactionsSearch: Endpoint<never, QubeDaoTransactionsRequestParams, QubeDaoTransactionsResponse>;
    whitelistSearch: Endpoint<never, QubeDaoWhitelistRequestParams, QubeDaoWhitelistResponse>;
};
