import type { ContractTransaction } from 'ethers';
import { Classification, Parameter, QNonPayableTx, RawParameter } from '../../../types';
import { ConstitutionVoting } from '../../../ethers-contracts/ConstitutionVoting';
import { ProposalWithBaseInfo, SignerOrProvider } from '../../../types';
import { SystemVotingVetoableInstance } from '../../SystemVotingVetoableInstance';
import { VotingWeightProxyInstance } from '../VotingWeightProxyInstance';
export interface ConstitutionProposal extends ProposalWithBaseInfo {
    parametersSize: string;
    classification: Classification;
    newConstitutionHash: string;
    currentConstitutionHash: string;
}
/**
 * Constitution voting instance to interact with Constitution voting contract.
 * See [onchain documentation](@system-contracts-repo/@network/ConstitutionVoting/) for more details.
 * An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.constitutionVoting}
 */
export declare class ConstitutionVotingInstance extends SystemVotingVetoableInstance<ConstitutionVoting, ConstitutionProposal> {
    static readonly registryKey = "governance.constitution.parametersVoting";
    static readonly abi = "ConstitutionVoting.json";
    /**
     * VotingWeightProxy instance. Used by local methods.
     */
    votingWeightProxy: VotingWeightProxyInstance;
    private helper;
    constructor(signerOrProvider: SignerOrProvider, address: string);
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#hasrootvetoed)
     */
    hasRootVetoed(proposalId: number | string, address: string): Promise<boolean>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#hasuservoted)
     */
    hasUserVoted(proposalId: string | number, address: string): Promise<boolean>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#proposalcounter)
     */
    proposalCount(): Promise<string>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#createproposal)
     */
    createProposal(remark: string, classification: Classification, newConstitutionHash: string, parameters: Parameter[], txOptions?: QNonPayableTx): Promise<ContractTransaction>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#proposals)
     */
    getProposal(proposalId: string | number): Promise<ConstitutionProposal>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#getparametersarr)
     */
    getParametersArr(proposalId: string | number): Promise<RawParameter[]>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#getconstitutionhash)
     */
    getConstitutionHash(proposalId: string | number): Promise<string>;
    /**
     * Retrieve proposal parameters.
     * @param proposalId chosen proposal id
     * @returns Proposal parameters
     */
    getProposedParameters(proposalId: string | number): Promise<Parameter[]>;
    /**
     * [External documentation](@system-contracts-repo/@network/ConstitutionVoting/#constitutionhash)
     */
    constitutionHash(): Promise<string>;
}
