import { Endpoint } from '../core';
import { type OrderingDirection } from '../types';
export declare enum DaoProposalsColumn {
    CreatedAt = "createdAt",
    UpdatedAt = "updatedAt"
}
export interface DaoProposalsOrdering {
    column: DaoProposalsColumn;
    direction: OrderingDirection;
}
export interface EvmAction {
    callData: string;
    chainId: number;
    signature: string;
    target: string;
    value: string;
}
export interface TvmAction {
    payload: string;
    target: string;
    value: string;
}
export declare enum DaoProposalState {
    Active = "Active",
    Canceled = "Canceled",
    Executed = "Executed",
    Expired = "Expired",
    Failed = "Failed",
    Pending = "Pending",
    Queued = "Queued",
    Succeeded = "Succeeded"
}
export interface DaoProposalsRequestParams {
    availableForUnlock?: boolean;
    endTimeGe?: number;
    endTimeLe?: number;
    limit: number;
    locked?: boolean;
    offset: number;
    ordering?: DaoProposalsOrdering;
    proposer?: string;
    proposalId?: number;
    startTimeGe?: number;
    startTimeLe?: number;
    state?: DaoProposalState;
}
export interface DaoProposalResponse {
    actions?: {
        ethActions?: EvmAction[];
        tonActions?: TvmAction[];
    };
    againstVotes?: string;
    canceled?: boolean;
    canceledAt?: number;
    createdAt?: number;
    description?: string;
    endTime?: number;
    executed?: boolean;
    executedAt?: number;
    executionTime?: number;
    forVotes?: string;
    gracePeriod?: number;
    messageHash?: string;
    proposalAddress?: string;
    proposalId: number;
    proposer?: string;
    queued?: boolean;
    queuedAt?: number;
    quorumVotes?: string;
    startTime?: number;
    state?: DaoProposalState;
    timestampBlock?: number;
    transactionHash?: string;
    updatedAt?: number;
    timeLock?: number;
    votingDelay?: number;
}
export interface DaoProposalsResponse {
    proposals: DaoProposalResponse[];
    totalCount: number;
}
export declare enum DaoVotersColumn {
    CreatedAt = "createdAt"
}
export interface DaoVotersOrdering {
    column: DaoVotersColumn;
    direction: OrderingDirection;
}
export interface DaoVotersRequestParams {
    availableForUnlock?: boolean;
    endTimeGe?: number;
    endTimeLe?: number;
    limit: number;
    locked?: boolean;
    offset: number;
    ordering?: DaoVotersOrdering;
    proposalAddress?: string;
    proposalId?: number;
    proposer?: string;
    startTimeGe?: number;
    startTimeLe?: number;
    state?: DaoProposalState;
    support?: boolean;
}
export interface DaoProposalWithVoteResponse {
    proposal: DaoProposalResponse;
    vote: DaoVoteResponse;
}
export interface ProposalsWithVotesResponse {
    proposalWithVotes: DaoProposalWithVoteResponse[];
    totalCount: number;
}
export declare enum DaoVoteColumn {
    CreatedAt = "createdAt"
}
export interface DaoVotesOrdering {
    column: DaoVoteColumn;
    direction: OrderingDirection;
}
export interface DaoVotesRequestParams {
    limit: number;
    locked?: boolean;
    offset: number;
    ordering?: DaoVotesOrdering;
    proposalId?: number;
    support?: boolean;
    voter?: string;
}
export interface DaoVoteResponse {
    createdAt: number;
    locked: boolean;
    messageHash: string;
    proposalId: number;
    reason: string;
    support: boolean;
    transactionHash: string;
    voter: string;
    votes: string;
}
export interface DaoVotesResponse {
    totalCount: number;
    votes: DaoVoteResponse[];
}
export type DaoVoterUrlParam = {
    voter: string;
};
export declare function useDaoApi(baseUrl?: string): {
    proposalsSearch: Endpoint<never, DaoProposalsRequestParams, DaoProposalsResponse>;
    votersSearch: Endpoint<DaoVoterUrlParam, DaoVotersRequestParams, ProposalsWithVotesResponse>;
    votesSearch: Endpoint<never, DaoVotesRequestParams, DaoVotesResponse>;
};
