import { ContractLifecyclePeriod, ProposalState, ProposalType, VotingRule } from "../constants.js";
interface Proposal<T = ContractLifecycleProposal | ModifyChainConfigurationProposal | SubchainProposal> {
    proposalType: ProposalType;
    proposalContent: T;
}
interface ContractLifecycleProposal {
    proposalId: string;
    proposalState: ProposalState;
    nonce: number;
    contractAddress: string;
    isRevole: number;
    period: ContractLifecyclePeriod;
    createAt: number;
    modifiedAt: number;
    dbNumber: number;
}
interface ModifyChainConfigurationProposal {
    proposalId: string;
    proposalState: ProposalState;
    nonce: number;
    modifyType: number;
    period: number;
    isDictatorship: boolean;
    noEmptyAnchor: boolean;
    deployRule: VotingRule;
    latcSaint: string[];
    consensus: string;
}
interface SubchainProposal {
    proposalId?: string;
    proposalState?: ProposalState;
    chainConfig?: {
        newChain?: {
            chainId?: number;
            name?: string;
            period?: number;
            tokenless?: boolean;
            noEmptyAnchor?: boolean;
            emptyAnchorPeriodMul?: number;
            isContractVote?: boolean;
            isDictatorship?: boolean;
            deployRule?: VotingRule;
            contractPermission?: boolean;
        };
        consensus?: string;
        timestamp?: number;
        parentHash?: string;
        joinProposalId?: string;
    };
}
export type { Proposal, ContractLifecycleProposal, ModifyChainConfigurationProposal, SubchainProposal };
//# sourceMappingURL=proposal.d.ts.map