import { Context } from "./Context";
import { CChainId } from "./internal/constants";
import { ClientCore } from "./internal/core";
import { AccountVotesInfo, DaoInfoProp, ProposalDetailProp, ProposalSignProp, ProposalStatus, ProposalVoteHistory, ProposalVotingTypes } from "./internal/interfaces/common";
import { IClique } from "./internal/interfaces/IClique";
import { Token } from "./token";
/**
 * Clique class
 */
export declare class Clique extends ClientCore implements IClique {
    private _daoToken;
    daoInfo: DaoInfoProp | undefined;
    constructor(context: Context);
    /**
     * get governance dao info
     * @returns
     */
    getDaoInfo(): Promise<DaoInfoProp>;
    /**
     * get proposal Info by proposalId
     * @param proposalId
     * @returns
     */
    getProposalInfo(proposalId: number): Promise<ProposalDetailProp>;
    /**
     * get account votes info of proposalId
     * @param account
     * @param proposalId
     * @returns
     */
    getAccountVotesById(account: string, proposalId: number): Promise<AccountVotesInfo[]>;
    /**
     *
     * @param title Proposal title
     * @param introduction Proposal introduction
     * @param content Proposal content
     * @param startTime Proposal end time
     * @param endTime Proposal start time
     * @param votingType Voting type, any, multi-select and simple
     * @param options Vote options
     * @param signData To get signData by _getProposalDataAndSignature
     * @param isCheck Validation rules, affect speed
     * @returns
     */
    createProposal(title: string, introduction: string, content: string, startTime: number, endTime: number, votingType: ProposalVotingTypes, options: string[], signData: ProposalSignProp, isCheck?: boolean): Promise<any>;
    /**
     * To cancel proposal before closing
     * @param proposalId
     * @param checkParams Validation rules, affect speed
     */
    cancelProposal(proposalId: number, checkParams?: {
        account: string;
    }): Promise<any>;
    /**
     *
     * @param proposalId
     * @param index option index
     * @param amountRaw voting amount raw
     * @param signData To get signData by _getProposalDataAndSignature
     * @param isCheck Validation rules, affect speed
     */
    proposalVote(proposalId: number, index: number[], amountRaw: string[], signData: ProposalSignProp, isCheck?: boolean): Promise<any>;
    /**
     * Get token info
     * @param chainId
     * @param tokenAddress
     * @returns
     */
    getToken(chainId: CChainId, tokenAddress: string): Promise<Token>;
    /**
     * Paging to get proposal id
     * @param status Search, proposal status
     * @param offset 0~
     * @param pageSize Default 8
     * @returns
     */
    getProposalListIds(status: ProposalStatus | undefined, offset: number, pageSize?: number): Promise<{
        total: number;
        proposalIds: number[];
    }>;
    /**
     * Get proposal vote history list
     * @param proposalId
     * @param offset 0~
     * @param pageSize Default 8
     * @returns
     */
    getProposalVoteHistory(proposalId: number, offset: number, pageSize?: number): Promise<{
        total: number;
        list: ProposalVoteHistory[];
    }>;
    /**
     * Obtain user voting data and signatures from accounts and proposals
     * @param account
     * @param proposalId
     * @returns
     */
    getVotesDataAndSignature(account: string, proposalId: number): Promise<ProposalSignProp>;
    /**
     * Obtain user create proposal data and signatures from accounts and proposals
     * @param account
     * @param proposalId
     * @returns
     */
    getCreateProposalDataAndSignature(account: string): Promise<ProposalSignProp>;
    /**
     * Get signature data
     * @param account
     * @param signType Create proposal or voting
     * @param proposalId
     * @returns
     */
    private _getProposalDataAndSignature;
    /**
     * Get governance dao token,
     * the token chainId does not necessarily equal DAO chainId
     * @returns
     */
    getDaoToken(): Token | undefined;
    getDaoAddress(): string;
    getDaoChainId(): CChainId;
    private _setDaoToken;
}
