import { Address, Hash, SchemePermissions, SchemeWrapper } from "../commonTypes";
import { ArcTransactionDataResult, ArcTransactionProposalResult, ContractWrapperBase, EventFetcherFactory, StandardSchemeParams } from "../contractWrapperBase";
import { ContractWrapperFactory } from "../contractWrapperFactory";
import { ProposalDeletedEventResult, ProposalExecutedEventResult } from "./commonEventInterfaces";
export declare class UpgradeSchemeWrapper extends ContractWrapperBase implements SchemeWrapper {
    name: string;
    friendlyName: string;
    factory: ContractWrapperFactory<UpgradeSchemeWrapper>;
    /**
     * Events
     */
    NewUpgradeProposal: EventFetcherFactory<NewUpgradeProposalEventResult>;
    ChangeUpgradeSchemeProposal: EventFetcherFactory<ChangeUpgradeSchemeProposalEventResult>;
    ProposalExecuted: EventFetcherFactory<ProposalExecutedEventResult>;
    ProposalDeleted: EventFetcherFactory<ProposalDeletedEventResult>;
    /*******************************************
     * proposeController
     */
    proposeController(options?: ProposeControllerParams): Promise<ArcTransactionProposalResult>;
    /********************************************
     * proposeUpgradingScheme
     */
    proposeUpgradingScheme(options?: ProposeUpgradingSchemeParams): Promise<ArcTransactionProposalResult>;
    setParameters(params: StandardSchemeParams): Promise<ArcTransactionDataResult<Hash>>;
    getDefaultPermissions(): SchemePermissions;
    getSchemePermissions(avatarAddress: Address): Promise<SchemePermissions>;
    getSchemeParameters(avatarAddress: Address): Promise<StandardSchemeParams>;
    getParameters(paramsHash: Hash): Promise<StandardSchemeParams>;
}
export declare const UpgradeSchemeFactory: ContractWrapperFactory<UpgradeSchemeWrapper>;
export interface NewUpgradeProposalEventResult {
    /**
     * indexed
     */
    _avatar: Address;
    /**
     * indexed
     */
    _intVoteInterface: Address;
    _newController: Address;
    /**
     * indexed
     */
    _proposalId: Hash;
}
export interface ChangeUpgradeSchemeProposalEventResult {
    /**
     * indexed
     */
    _avatar: Address;
    /**
     * indexed
     */
    _intVoteInterface: Address;
    _params: Hash;
    /**
     * indexed
     */
    _proposalId: Hash;
    _newUpgradeScheme: Address;
}
export interface ProposeUpgradingSchemeParams {
    /**
     * avatar address
     */
    avatar: Address;
    /**
     *  upgrading scheme address
     */
    scheme: string;
    /**
     * hash of the parameters of the upgrading scheme. These must be already registered with the new scheme.
     */
    schemeParametersHash: string;
}
export interface ProposeControllerParams {
    /**
     * avatar address
     */
    avatar: Address;
    /**
     *  controller address
     */
    controller: string;
}
