import { Address, Hash } from "./commonTypes";
import { ArcTransactionDataResult, StandardSchemeParams } from "./iContractWrapperBase";
import { SchemeWrapperBase } from "./schemeWrapperBase";
import { TxEventContext } from "./transactionService";
/**
 * Abstract base class for all Arc universal scheme contract wrapper classes.  A universal scheme
 * is defined as an Arc scheme (see `SchemeWrapperBase`) that follows the pattern of registering
 * operating parameters with the DAO's controller, thus enabling the contract to be reused across DAOs.
 */
export declare abstract class USchemeWrapperBase extends SchemeWrapperBase {
    /**
     * Given a hash, returns the associated parameters as an object.
     * @param paramsHash
     */
    abstract getParameters(paramsHash: Hash): Promise<any>;
    abstract getParametersHash(params: any): Promise<Hash>;
    abstract setParameters(params: any): Promise<ArcTransactionDataResult<Hash>>;
    abstract getSchemeParameters(avatarAddress: Address): Promise<any>;
    /**
     * Given an avatar address, returns the schemes parameters hash
     * @param avatarAddress
     */
    getSchemeParametersHash(avatarAddress: Address): Promise<Hash>;
    /**
     * Given a hash, returns the associated parameters as an array, ordered by the order
     * in which the parameters appear in the contract's Parameters struct.
     * @param paramsHash
     */
    getParametersArray(paramsHash: Hash): Promise<Array<any>>;
    protected _setParameters(functionName: string, txEventContext: TxEventContext, ...params: Array<any>): Promise<ArcTransactionDataResult<Hash>>;
    protected _getSchemeParameters(avatarAddress: Address): Promise<any>;
    protected _getParametersHash(...params: Array<any>): Promise<Hash>;
    protected validateStandardSchemeParams(params: StandardSchemeParams): void;
}
