import { BinaryReader, BinaryWriter } from "../../../../binary";
import { DeepPartial } from "../../../../helpers";
/**
 * Module is the config object for the auth module.
 * @name Module
 * @package cosmos.auth.module.v1
 * @see proto type: cosmos.auth.module.v1.Module
 */
export interface Module {
    /**
     * bech32_prefix is the bech32 account prefix for the app.
     */
    bech32Prefix: string;
    /**
     * module_account_permissions are module account permissions.
     */
    moduleAccountPermissions: ModuleAccountPermission[];
    /**
     * authority defines the custom module authority. If not set, defaults to the governance module.
     */
    authority: string;
    /**
     * enable_unordered_transactions determines whether unordered transactions should be supported or not.
     * When true, unordered transactions will be validated and processed.
     * When false, unordered transactions will be rejected.
     */
    enableUnorderedTransactions: boolean;
}
export interface ModuleProtoMsg {
    typeUrl: "/cosmos.auth.module.v1.Module";
    value: Uint8Array;
}
/**
 * Module is the config object for the auth module.
 * @name ModuleAmino
 * @package cosmos.auth.module.v1
 * @see proto type: cosmos.auth.module.v1.Module
 */
export interface ModuleAmino {
    /**
     * bech32_prefix is the bech32 account prefix for the app.
     */
    bech32_prefix: string;
    /**
     * module_account_permissions are module account permissions.
     */
    module_account_permissions: ModuleAccountPermissionAmino[];
    /**
     * authority defines the custom module authority. If not set, defaults to the governance module.
     */
    authority: string;
    /**
     * enable_unordered_transactions determines whether unordered transactions should be supported or not.
     * When true, unordered transactions will be validated and processed.
     * When false, unordered transactions will be rejected.
     */
    enable_unordered_transactions: boolean;
}
export interface ModuleAminoMsg {
    type: "cosmos-sdk/Module";
    value: ModuleAmino;
}
/**
 * ModuleAccountPermission represents permissions for a module account.
 * @name ModuleAccountPermission
 * @package cosmos.auth.module.v1
 * @see proto type: cosmos.auth.module.v1.ModuleAccountPermission
 */
export interface ModuleAccountPermission {
    /**
     * account is the name of the module.
     */
    account: string;
    /**
     * permissions are the permissions this module has. Currently recognized
     * values are minter, burner and staking.
     */
    permissions: string[];
}
export interface ModuleAccountPermissionProtoMsg {
    typeUrl: "/cosmos.auth.module.v1.ModuleAccountPermission";
    value: Uint8Array;
}
/**
 * ModuleAccountPermission represents permissions for a module account.
 * @name ModuleAccountPermissionAmino
 * @package cosmos.auth.module.v1
 * @see proto type: cosmos.auth.module.v1.ModuleAccountPermission
 */
export interface ModuleAccountPermissionAmino {
    /**
     * account is the name of the module.
     */
    account: string;
    /**
     * permissions are the permissions this module has. Currently recognized
     * values are minter, burner and staking.
     */
    permissions: string[];
}
export interface ModuleAccountPermissionAminoMsg {
    type: "cosmos-sdk/ModuleAccountPermission";
    value: ModuleAccountPermissionAmino;
}
/**
 * Module is the config object for the auth module.
 * @name Module
 * @package cosmos.auth.module.v1
 * @see proto type: cosmos.auth.module.v1.Module
 */
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;
    registerTypeUrl(): void;
};
/**
 * ModuleAccountPermission represents permissions for a module account.
 * @name ModuleAccountPermission
 * @package cosmos.auth.module.v1
 * @see proto type: cosmos.auth.module.v1.ModuleAccountPermission
 */
export declare const ModuleAccountPermission: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is ModuleAccountPermission;
    isAmino(o: any): o is ModuleAccountPermissionAmino;
    encode(message: ModuleAccountPermission, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): ModuleAccountPermission;
    fromPartial(object: DeepPartial<ModuleAccountPermission>): ModuleAccountPermission;
    fromAmino(object: ModuleAccountPermissionAmino): ModuleAccountPermission;
    toAmino(message: ModuleAccountPermission): ModuleAccountPermissionAmino;
    fromAminoMsg(object: ModuleAccountPermissionAminoMsg): ModuleAccountPermission;
    toAminoMsg(message: ModuleAccountPermission): ModuleAccountPermissionAminoMsg;
    fromProtoMsg(message: ModuleAccountPermissionProtoMsg): ModuleAccountPermission;
    toProto(message: ModuleAccountPermission): Uint8Array;
    toProtoMsg(message: ModuleAccountPermission): ModuleAccountPermissionProtoMsg;
    registerTypeUrl(): void;
};
