import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/** Module is the config object for the runtime module. */
export interface Module {
    /** app_name is the name of the app. */
    appName: string;
    /**
     * pre_blockers specifies the module names of pre blockers
     * to call in the order in which they should be called. If this is left empty
     * no pre blocker will be registered.
     */
    preBlockers: string[];
    /**
     * begin_blockers specifies the module names of begin blockers
     * to call in the order in which they should be called. If this is left empty
     * no begin blocker will be registered.
     */
    beginBlockers: string[];
    /**
     * end_blockers specifies the module names of the end blockers
     * to call in the order in which they should be called. If this is left empty
     * no end blocker will be registered.
     */
    endBlockers: string[];
    /**
     * tx_validators specifies the module names for tx validators
     * If this is left empty, no tx validation will be registered.
     */
    txValidators: string[];
    /**
     * init_genesis specifies the module names of init genesis functions
     * to call in the order in which they should be called. If this is left empty
     * no init genesis function will be registered.
     */
    initGenesis: string[];
    /**
     * export_genesis specifies the order in which to export module genesis data.
     * If this is left empty, the init_genesis order will be used for export genesis
     * if it is specified.
     */
    exportGenesis: string[];
    /**
     * order_migrations defines the order in which module migrations are performed.
     * If this is left empty, it uses the default migration order (alphabetically).
     */
    orderMigrations: string[];
    /** GasConfig is the config object for gas limits. */
    gasConfig?: GasConfig;
    /**
     * override_store_keys is an optional list of overrides for the module store keys
     * to be used in keeper construction.
     */
    overrideStoreKeys: StoreKeyConfig[];
    /**
     * skip_store_keys is an optional list of store keys to skip when constructing the
     * module's keeper. This is useful when a module does not have a store key.
     * NOTE: the provided environment variable will have a fake store service.
     */
    skipStoreKeys: string[];
}
export interface ModuleProtoMsg {
    typeUrl: "/cosmos.app.runtime.v2.Module";
    value: Uint8Array;
}
/** Module is the config object for the runtime module. */
export interface ModuleAmino {
    /** app_name is the name of the app. */
    app_name: string;
    /**
     * pre_blockers specifies the module names of pre blockers
     * to call in the order in which they should be called. If this is left empty
     * no pre blocker will be registered.
     */
    pre_blockers: string[];
    /**
     * begin_blockers specifies the module names of begin blockers
     * to call in the order in which they should be called. If this is left empty
     * no begin blocker will be registered.
     */
    begin_blockers: string[];
    /**
     * end_blockers specifies the module names of the end blockers
     * to call in the order in which they should be called. If this is left empty
     * no end blocker will be registered.
     */
    end_blockers: string[];
    /**
     * tx_validators specifies the module names for tx validators
     * If this is left empty, no tx validation will be registered.
     */
    tx_validators: string[];
    /**
     * init_genesis specifies the module names of init genesis functions
     * to call in the order in which they should be called. If this is left empty
     * no init genesis function will be registered.
     */
    init_genesis: string[];
    /**
     * export_genesis specifies the order in which to export module genesis data.
     * If this is left empty, the init_genesis order will be used for export genesis
     * if it is specified.
     */
    export_genesis: string[];
    /**
     * order_migrations defines the order in which module migrations are performed.
     * If this is left empty, it uses the default migration order (alphabetically).
     */
    order_migrations: string[];
    /** GasConfig is the config object for gas limits. */
    gas_config?: GasConfigAmino;
    /**
     * override_store_keys is an optional list of overrides for the module store keys
     * to be used in keeper construction.
     */
    override_store_keys: StoreKeyConfigAmino[];
    /**
     * skip_store_keys is an optional list of store keys to skip when constructing the
     * module's keeper. This is useful when a module does not have a store key.
     * NOTE: the provided environment variable will have a fake store service.
     */
    skip_store_keys: string[];
}
export interface ModuleAminoMsg {
    type: "cosmos-sdk/Module";
    value: ModuleAmino;
}
/** GasConfig is the config object for gas limits. */
export interface GasConfig {
    /** validate_tx_gas_limit is the gas limit for validating a tx. */
    validateTxGasLimit: bigint;
    /** query_gas_limit is the gas limit for querying. */
    queryGasLimit: bigint;
    /** simulation_gas_limit is the gas limit for simulation. */
    simulationGasLimit: bigint;
}
export interface GasConfigProtoMsg {
    typeUrl: "/cosmos.app.runtime.v2.GasConfig";
    value: Uint8Array;
}
/** GasConfig is the config object for gas limits. */
export interface GasConfigAmino {
    /** validate_tx_gas_limit is the gas limit for validating a tx. */
    validate_tx_gas_limit: string;
    /** query_gas_limit is the gas limit for querying. */
    query_gas_limit: string;
    /** simulation_gas_limit is the gas limit for simulation. */
    simulation_gas_limit: string;
}
export interface GasConfigAminoMsg {
    type: "cosmos-sdk/GasConfig";
    value: GasConfigAmino;
}
/**
 * StoreKeyConfig may be supplied to override the default module store key, which
 * is the module name.
 */
export interface StoreKeyConfig {
    /** name of the module to override the store key of */
    moduleName: string;
    /** the kv store key to use instead of the module name. */
    kvStoreKey: string;
}
export interface StoreKeyConfigProtoMsg {
    typeUrl: "/cosmos.app.runtime.v2.StoreKeyConfig";
    value: Uint8Array;
}
/**
 * StoreKeyConfig may be supplied to override the default module store key, which
 * is the module name.
 */
export interface StoreKeyConfigAmino {
    /** name of the module to override the store key of */
    module_name: string;
    /** the kv store key to use instead of the module name. */
    kv_store_key: string;
}
export interface StoreKeyConfigAminoMsg {
    type: "cosmos-sdk/StoreKeyConfig";
    value: StoreKeyConfigAmino;
}
export declare const Module: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Module;
    isAmino(o: any): o is ModuleAmino;
    encode(message: Module, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Module;
    fromPartial(object: DeepPartial<Module>): Module;
    fromAmino(object: ModuleAmino): Module;
    toAmino(message: Module): ModuleAmino;
    fromAminoMsg(object: ModuleAminoMsg): Module;
    toAminoMsg(message: Module): ModuleAminoMsg;
    fromProtoMsg(message: ModuleProtoMsg): Module;
    toProto(message: Module): Uint8Array;
    toProtoMsg(message: Module): ModuleProtoMsg;
};
export declare const GasConfig: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is GasConfig;
    isAmino(o: any): o is GasConfigAmino;
    encode(message: GasConfig, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): GasConfig;
    fromPartial(object: DeepPartial<GasConfig>): GasConfig;
    fromAmino(object: GasConfigAmino): GasConfig;
    toAmino(message: GasConfig): GasConfigAmino;
    fromAminoMsg(object: GasConfigAminoMsg): GasConfig;
    toAminoMsg(message: GasConfig): GasConfigAminoMsg;
    fromProtoMsg(message: GasConfigProtoMsg): GasConfig;
    toProto(message: GasConfig): Uint8Array;
    toProtoMsg(message: GasConfig): GasConfigProtoMsg;
};
export declare const StoreKeyConfig: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is StoreKeyConfig;
    isAmino(o: any): o is StoreKeyConfigAmino;
    encode(message: StoreKeyConfig, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): StoreKeyConfig;
    fromPartial(object: DeepPartial<StoreKeyConfig>): StoreKeyConfig;
    fromAmino(object: StoreKeyConfigAmino): StoreKeyConfig;
    toAmino(message: StoreKeyConfig): StoreKeyConfigAmino;
    fromAminoMsg(object: StoreKeyConfigAminoMsg): StoreKeyConfig;
    toAminoMsg(message: StoreKeyConfig): StoreKeyConfigAminoMsg;
    fromProtoMsg(message: StoreKeyConfigProtoMsg): StoreKeyConfig;
    toProto(message: StoreKeyConfig): Uint8Array;
    toProtoMsg(message: StoreKeyConfig): StoreKeyConfigProtoMsg;
};
