import { type AddressUrlParam, type CommonGraphRequestParams } from '../api/types';
import { Endpoint } from '../core';
export declare enum StakingDaoStakeholdersOrdering {
    VoteWeightAscending = "voteweightascending",
    VoteWeightDescending = "voteweightdescending",
    VotesAscending = "votesascending",
    VotesDescending = "votesdescending"
}
export interface StakingDaoStakeholdersSearchRequestParams {
    limit: number;
    offset: number;
    ordering: StakingDaoStakeholdersOrdering;
}
export interface StakingDaoStakeholderResponse {
    proposalVotesCount: number;
    userAddress: string;
    voteWeight: string;
    votes: string;
}
export interface StakingDaoStakeholdersResponse {
    stakeholders: StakingDaoStakeholderResponse[];
    totalCount: number;
}
export declare enum StakingStakeholdersOrdering {
    UpdateAtAscending = "updateatascending",
    UpdateAtDescending = "updateatdescending",
    stakeAscending = "stakeascending",
    stakeDescending = "stakedescending",
    FrozenStakeAscending = "frozenstakeascending",
    FrozenStakeDescending = "frozenstakedescending",
    LastRewardAscending = "lastrewardascending",
    LastRewardDescending = "lastrewarddescending",
    TotalRewardAscending = "totalrewardascending",
    TotalRewardDescending = "totalrewarddescending",
    CreatedAtAscending = "createdatascending",
    CreatedAtDescending = "createdatdescending",
    RelayCreatedAtAscending = "relaycreatedatascending",
    RelayCreatedAtDescending = "relaycreatedatdescending",
    VotesAscending = "votesascending",
    VotesDescending = "votesdescending"
}
export declare enum StakingStakeholderKind {
    Ordinary = "ordinary",
    Relay = "relay"
}
export interface StakingStakeholdersSearchRequestParams {
    createdAtGe?: number;
    createdAtLe?: number;
    frozenStakeGe?: string;
    frozenStakeLe?: string;
    lastRewardGe?: string;
    lastRewardLe?: string;
    limit: number;
    offset: number;
    ordering?: StakingStakeholdersOrdering;
    relayCreatedAtGe?: number;
    relayCreatedAtLe?: number;
    stakeholderKind?: StakingStakeholderKind;
    totalRewardGe?: string;
    totalRewardLe?: string;
    untilFrozenGe?: string;
    untilFrozenLe?: string;
    userBalanceGe?: string;
    userBalanceLe?: string;
}
export interface StakingStakeholderResponse {
    createdAt: number;
    frozenStakeBalance: string;
    lastReward: string;
    stakeBalance: string;
    totalReward: string;
    userAddress: string;
    userType: string;
}
export interface StakingStakeholdersResponse {
    stakeholders: StakingStakeholderResponse[];
    totalCount: number;
}
export declare enum StakingTransactionsOrdering {
    AmountAscending = "amountascending",
    AmountDescending = "amountdescending",
    TimestampBlockAscending = "timestampblockascending",
    TimestampBlockAtDescending = "timestampblockatdescending"
}
export declare enum StakingTransactionKind {
    Deposit = "deposit",
    Withdraw = "withdraw",
    Claim = "claim",
    Freeze = "freeze"
}
export interface StakingTransactionsRequestParams {
    amountGe?: string;
    amountLe?: string;
    limit: number;
    offset: number;
    ordering: StakingTransactionsOrdering;
    timestampBlockGe?: number;
    timestampBlockLe?: number;
    transactionKind?: StakingTransactionKind;
    userAddress?: string;
}
export interface StakingTransactionResponse {
    amountExec: string;
    timestampBlock: number;
    transactionHash: string;
    transactionKind: StakingTransactionKind;
    usdtExec: string;
}
export interface StakingTransactionsResponse {
    transactions: StakingTransactionResponse[];
    totalCount: number;
}
export interface StakingAprGraphResponse {
    data: string;
    timestamp: number;
}
export interface StakingTvlGraphResponse {
    data: string;
    timestamp: number;
}
export interface StakingMainResponse {
    averageApr: string;
    reward30d: string;
    reward30dChange: string;
    stakeholders: number;
    tvl: string;
    tvlChange: string;
}
export interface StakingRequestParams {
    userAddress: string;
}
export interface StakingResponse {
    averageApr: string;
    user30dReward: string;
    user30dRewardChange: string;
    userFrozenStake: string;
    userTvl: string;
    userTvlChange: string;
}
export declare function useStakingApi(baseUrl?: string): {
    daoStakeholdersSearch: Endpoint<never, StakingDaoStakeholdersSearchRequestParams, StakingDaoStakeholdersResponse>;
    daoUser: Endpoint<AddressUrlParam, never, StakingDaoStakeholderResponse>;
    stakingStakeholdersSearch: Endpoint<never, StakingStakeholdersSearchRequestParams, StakingStakeholdersResponse>;
    stakingTransactions: Endpoint<never, StakingTransactionsRequestParams, StakingTransactionsResponse>;
    stakingTvlGraph: Endpoint<never, CommonGraphRequestParams, StakingTvlGraphResponse[]>;
    stakingAprGraph: Endpoint<never, CommonGraphRequestParams, StakingAprGraphResponse[]>;
    stakingMain: Endpoint<never, never, StakingMainResponse>;
    staking: Endpoint<never, StakingRequestParams, StakingResponse>;
};
