import { Coin, CoinAmino } from "../../base/v1beta1/coin";
import { BinaryReader, BinaryWriter } from "../../../binary";
import { DeepPartial } from "../../../helpers";
/**
 * Params defines the parameters for the bank module.
 * @name Params
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Params
 */
export interface Params {
    /**
     * Deprecated: Use of SendEnabled in params is deprecated.
     * For genesis, use the newly added send_enabled field in the genesis object.
     * Storage, lookup, and manipulation of this information is now in the keeper.
     *
     * As of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.
     * @deprecated
     */
    sendEnabled: SendEnabled[];
    defaultSendEnabled: boolean;
}
export interface ParamsProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.Params";
    value: Uint8Array;
}
/**
 * Params defines the parameters for the bank module.
 * @name ParamsAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Params
 */
export interface ParamsAmino {
    /**
     * Deprecated: Use of SendEnabled in params is deprecated.
     * For genesis, use the newly added send_enabled field in the genesis object.
     * Storage, lookup, and manipulation of this information is now in the keeper.
     *
     * As of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.
     * @deprecated
     */
    send_enabled: SendEnabledAmino[];
    default_send_enabled: boolean;
}
export interface ParamsAminoMsg {
    type: "cosmos-sdk/x/bank/Params";
    value: ParamsAmino;
}
/**
 * SendEnabled maps coin denom to a send_enabled status (whether a denom is
 * sendable).
 * @name SendEnabled
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.SendEnabled
 */
export interface SendEnabled {
    denom: string;
    enabled: boolean;
}
export interface SendEnabledProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.SendEnabled";
    value: Uint8Array;
}
/**
 * SendEnabled maps coin denom to a send_enabled status (whether a denom is
 * sendable).
 * @name SendEnabledAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.SendEnabled
 */
export interface SendEnabledAmino {
    denom: string;
    enabled: boolean;
}
export interface SendEnabledAminoMsg {
    type: "cosmos-sdk/SendEnabled";
    value: SendEnabledAmino;
}
/**
 * Input models transaction input.
 * @name Input
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Input
 */
export interface Input {
    address: string;
    coins: Coin[];
}
export interface InputProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.Input";
    value: Uint8Array;
}
/**
 * Input models transaction input.
 * @name InputAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Input
 */
export interface InputAmino {
    address: string;
    coins: CoinAmino[];
}
export interface InputAminoMsg {
    type: "cosmos-sdk/Input";
    value: InputAmino;
}
/**
 * Output models transaction outputs.
 * @name Output
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Output
 */
export interface Output {
    address: string;
    coins: Coin[];
}
export interface OutputProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.Output";
    value: Uint8Array;
}
/**
 * Output models transaction outputs.
 * @name OutputAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Output
 */
export interface OutputAmino {
    address: string;
    coins: CoinAmino[];
}
export interface OutputAminoMsg {
    type: "cosmos-sdk/Output";
    value: OutputAmino;
}
/**
 * Supply represents a struct that passively keeps track of the total supply
 * amounts in the network.
 * This message is deprecated now that supply is indexed by denom.
 * @name Supply
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Supply
 * @deprecated
 */
export interface Supply {
    $typeUrl?: "/cosmos.bank.v1beta1.Supply";
    total: Coin[];
}
export interface SupplyProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.Supply";
    value: Uint8Array;
}
/**
 * Supply represents a struct that passively keeps track of the total supply
 * amounts in the network.
 * This message is deprecated now that supply is indexed by denom.
 * @name SupplyAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Supply
 * @deprecated
 */
export interface SupplyAmino {
    total: CoinAmino[];
}
export interface SupplyAminoMsg {
    type: "cosmos-sdk/Supply";
    value: SupplyAmino;
}
/**
 * DenomUnit represents a struct that describes a given
 * denomination unit of the basic token.
 * @name DenomUnit
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.DenomUnit
 */
export interface DenomUnit {
    /**
     * denom represents the string name of the given denom unit (e.g uatom).
     */
    denom: string;
    /**
     * exponent represents power of 10 exponent that one must
     * raise the base_denom to in order to equal the given DenomUnit's denom
     * 1 denom = 10^exponent base_denom
     * (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with
     * exponent = 6, thus: 1 atom = 10^6 uatom).
     */
    exponent: number;
    /**
     * aliases is a list of string aliases for the given denom
     */
    aliases: string[];
}
export interface DenomUnitProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.DenomUnit";
    value: Uint8Array;
}
/**
 * DenomUnit represents a struct that describes a given
 * denomination unit of the basic token.
 * @name DenomUnitAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.DenomUnit
 */
export interface DenomUnitAmino {
    /**
     * denom represents the string name of the given denom unit (e.g uatom).
     */
    denom: string;
    /**
     * exponent represents power of 10 exponent that one must
     * raise the base_denom to in order to equal the given DenomUnit's denom
     * 1 denom = 10^exponent base_denom
     * (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with
     * exponent = 6, thus: 1 atom = 10^6 uatom).
     */
    exponent: number;
    /**
     * aliases is a list of string aliases for the given denom
     */
    aliases: string[];
}
export interface DenomUnitAminoMsg {
    type: "cosmos-sdk/DenomUnit";
    value: DenomUnitAmino;
}
/**
 * Metadata represents a struct that describes
 * a basic token.
 * @name Metadata
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Metadata
 */
export interface Metadata {
    description: string;
    /**
     * denom_units represents the list of DenomUnit's for a given coin
     */
    denomUnits: DenomUnit[];
    /**
     * base represents the base denom (should be the DenomUnit with exponent = 0).
     */
    base: string;
    /**
     * display indicates the suggested denom that should be
     * displayed in clients.
     */
    display: string;
    /**
     * name defines the name of the token (eg: Cosmos Atom)
     */
    name: string;
    /**
     * symbol is the token symbol usually shown on exchanges (eg: ATOM). This can
     * be the same as the display.
     */
    symbol: string;
    /**
     * URI to a document (on or off-chain) that contains additional information. Optional.
     */
    uri: string;
    /**
     * URIHash is a sha256 hash of a document pointed by URI. It's used to verify that
     * the document didn't change. Optional.
     */
    uriHash: string;
}
export interface MetadataProtoMsg {
    typeUrl: "/cosmos.bank.v1beta1.Metadata";
    value: Uint8Array;
}
/**
 * Metadata represents a struct that describes
 * a basic token.
 * @name MetadataAmino
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Metadata
 */
export interface MetadataAmino {
    description: string;
    /**
     * denom_units represents the list of DenomUnit's for a given coin
     */
    denom_units: DenomUnitAmino[];
    /**
     * base represents the base denom (should be the DenomUnit with exponent = 0).
     */
    base: string;
    /**
     * display indicates the suggested denom that should be
     * displayed in clients.
     */
    display: string;
    /**
     * name defines the name of the token (eg: Cosmos Atom)
     */
    name: string;
    /**
     * symbol is the token symbol usually shown on exchanges (eg: ATOM). This can
     * be the same as the display.
     */
    symbol: string;
    /**
     * URI to a document (on or off-chain) that contains additional information. Optional.
     */
    uri: string;
    /**
     * URIHash is a sha256 hash of a document pointed by URI. It's used to verify that
     * the document didn't change. Optional.
     */
    uri_hash: string;
}
export interface MetadataAminoMsg {
    type: "cosmos-sdk/Metadata";
    value: MetadataAmino;
}
/**
 * Params defines the parameters for the bank module.
 * @name Params
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Params
 */
export declare const Params: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Params;
    isAmino(o: any): o is ParamsAmino;
    encode(message: Params, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Params;
    fromPartial(object: DeepPartial<Params>): Params;
    fromAmino(object: ParamsAmino): Params;
    toAmino(message: Params): ParamsAmino;
    fromAminoMsg(object: ParamsAminoMsg): Params;
    toAminoMsg(message: Params): ParamsAminoMsg;
    fromProtoMsg(message: ParamsProtoMsg): Params;
    toProto(message: Params): Uint8Array;
    toProtoMsg(message: Params): ParamsProtoMsg;
    registerTypeUrl(): void;
};
/**
 * SendEnabled maps coin denom to a send_enabled status (whether a denom is
 * sendable).
 * @name SendEnabled
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.SendEnabled
 */
export declare const SendEnabled: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is SendEnabled;
    isAmino(o: any): o is SendEnabledAmino;
    encode(message: SendEnabled, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): SendEnabled;
    fromPartial(object: DeepPartial<SendEnabled>): SendEnabled;
    fromAmino(object: SendEnabledAmino): SendEnabled;
    toAmino(message: SendEnabled): SendEnabledAmino;
    fromAminoMsg(object: SendEnabledAminoMsg): SendEnabled;
    toAminoMsg(message: SendEnabled): SendEnabledAminoMsg;
    fromProtoMsg(message: SendEnabledProtoMsg): SendEnabled;
    toProto(message: SendEnabled): Uint8Array;
    toProtoMsg(message: SendEnabled): SendEnabledProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Input models transaction input.
 * @name Input
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Input
 */
export declare const Input: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Input;
    isAmino(o: any): o is InputAmino;
    encode(message: Input, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Input;
    fromPartial(object: DeepPartial<Input>): Input;
    fromAmino(object: InputAmino): Input;
    toAmino(message: Input): InputAmino;
    fromAminoMsg(object: InputAminoMsg): Input;
    toAminoMsg(message: Input): InputAminoMsg;
    fromProtoMsg(message: InputProtoMsg): Input;
    toProto(message: Input): Uint8Array;
    toProtoMsg(message: Input): InputProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Output models transaction outputs.
 * @name Output
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Output
 */
export declare const Output: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Output;
    isAmino(o: any): o is OutputAmino;
    encode(message: Output, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Output;
    fromPartial(object: DeepPartial<Output>): Output;
    fromAmino(object: OutputAmino): Output;
    toAmino(message: Output): OutputAmino;
    fromAminoMsg(object: OutputAminoMsg): Output;
    toAminoMsg(message: Output): OutputAminoMsg;
    fromProtoMsg(message: OutputProtoMsg): Output;
    toProto(message: Output): Uint8Array;
    toProtoMsg(message: Output): OutputProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Supply represents a struct that passively keeps track of the total supply
 * amounts in the network.
 * This message is deprecated now that supply is indexed by denom.
 * @name Supply
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Supply
 * @deprecated
 */
export declare const Supply: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Supply;
    isAmino(o: any): o is SupplyAmino;
    encode(message: Supply, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Supply;
    fromPartial(object: DeepPartial<Supply>): Supply;
    fromAmino(object: SupplyAmino): Supply;
    toAmino(message: Supply): SupplyAmino;
    fromAminoMsg(object: SupplyAminoMsg): Supply;
    toAminoMsg(message: Supply): SupplyAminoMsg;
    fromProtoMsg(message: SupplyProtoMsg): Supply;
    toProto(message: Supply): Uint8Array;
    toProtoMsg(message: Supply): SupplyProtoMsg;
    registerTypeUrl(): void;
};
/**
 * DenomUnit represents a struct that describes a given
 * denomination unit of the basic token.
 * @name DenomUnit
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.DenomUnit
 */
export declare const DenomUnit: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is DenomUnit;
    isAmino(o: any): o is DenomUnitAmino;
    encode(message: DenomUnit, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): DenomUnit;
    fromPartial(object: DeepPartial<DenomUnit>): DenomUnit;
    fromAmino(object: DenomUnitAmino): DenomUnit;
    toAmino(message: DenomUnit): DenomUnitAmino;
    fromAminoMsg(object: DenomUnitAminoMsg): DenomUnit;
    toAminoMsg(message: DenomUnit): DenomUnitAminoMsg;
    fromProtoMsg(message: DenomUnitProtoMsg): DenomUnit;
    toProto(message: DenomUnit): Uint8Array;
    toProtoMsg(message: DenomUnit): DenomUnitProtoMsg;
    registerTypeUrl(): void;
};
/**
 * Metadata represents a struct that describes
 * a basic token.
 * @name Metadata
 * @package cosmos.bank.v1beta1
 * @see proto type: cosmos.bank.v1beta1.Metadata
 */
export declare const Metadata: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is Metadata;
    isAmino(o: any): o is MetadataAmino;
    encode(message: Metadata, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Metadata;
    fromPartial(object: DeepPartial<Metadata>): Metadata;
    fromAmino(object: MetadataAmino): Metadata;
    toAmino(message: Metadata): MetadataAmino;
    fromAminoMsg(object: MetadataAminoMsg): Metadata;
    toAminoMsg(message: Metadata): MetadataAminoMsg;
    fromProtoMsg(message: MetadataProtoMsg): Metadata;
    toProto(message: Metadata): Uint8Array;
    toProtoMsg(message: Metadata): MetadataProtoMsg;
    registerTypeUrl(): void;
};
