import { Modules, Types } from 'klayr-framework';
import { CreateProposalParams, ProposalStatus, ProposalStoreData, SetProposalAttributesParams, VoteParams, Votes } from '../../types';
import { ProposalStore } from '../proposal';
import { BaseInstance } from './base';
import { GovernanceGovernableConfig } from '../../config';
import { GovernableConfigRegistry } from '../../registry';
export declare class Proposal extends BaseInstance<ProposalStoreData, ProposalStore> implements ProposalStoreData {
    constructor(stores: Modules.NamedRegistry, events: Modules.NamedRegistry, config: GovernanceGovernableConfig, genesisConfig: Types.GenesisConfig, moduleName: string, governableConfigRegistry: GovernableConfigRegistry, proposal: ProposalStoreData | undefined, key: Buffer);
    toJSON(): Types.JSONObject<ProposalStoreData>;
    toObject(): ProposalStoreData;
    verifyCreate(params: CreateProposalParams): Promise<void>;
    create(params: CreateProposalParams, verify?: boolean): Promise<void>;
    verifyVote(params: VoteParams): Promise<void>;
    vote(params: VoteParams, verify?: boolean): Promise<void>;
    verifySetAttributes(params: SetProposalAttributesParams): Promise<void>;
    setAttributes(params: SetProposalAttributesParams, verify?: boolean): Promise<void>;
    getVoteScore(address: Buffer): Promise<bigint>;
    addVote(score: bigint, decision: Votes, boostingHeight: number): Promise<void>;
    subtractVote(score: bigint, decision: Votes, boostingHeight: number): Promise<void>;
    setStatus(status: ProposalStatus): Promise<void>;
    private _removeSenderDelegatedVoteFromProposal;
    private _addSenderDelegatedVoteFromProposal;
    private _calculateVoteScore;
    private _numberToDecisionString;
    private _registerQueue;
    private _saveQueue;
    private _getNextAvailableProposalId;
    private _increaseNextAvailableProposalId;
    private _getStakingTokenId;
    private _isProposalExists;
    private _isProposalAuthor;
    title: ProposalStoreData['title'];
    summary: ProposalStoreData['summary'];
    deposited: ProposalStoreData['deposited'];
    author: ProposalStoreData['author'];
    turnout: ProposalStoreData['turnout'];
    parameters: ProposalStoreData['parameters'];
    voteSummary: ProposalStoreData['voteSummary'];
    status: ProposalStoreData['status'];
    actions: ProposalStoreData['actions'];
    attributes: ProposalStoreData['attributes'];
    private readonly nextAvailableIdStore;
    private readonly governableConfigRegistry;
    private readonly proposalQueueStore;
    private readonly delegatedVoteStore;
    private readonly castedVoteStore;
    private readonly boostedAccountStore;
    private readonly voteScoreStore;
    private readonly proposalVoterStore;
}
