import { Vault, VaultAmino, VaultSDKType, Lock, LockAmino, LockSDKType, Stake, StakeAmino, StakeSDKType } from "./types";
import { BinaryReader, BinaryWriter } from "../../../binary";
/** GenesisState represents the initial state of the blockchain. */
export interface GenesisState {
    /** params is all parameters of the module. */
    params: Params;
    /** vaults is a list of vaults in the module. */
    vaults: Vault[];
    /** locks is a list of locks in the module. */
    locks: Lock[];
    /** stakes is a list of stakes in the module. */
    stakes: Stake[];
}
export interface GenesisStateProtoMsg {
    typeUrl: "/band.restake.v1beta1.GenesisState";
    value: Uint8Array;
}
/** GenesisState represents the initial state of the blockchain. */
export interface GenesisStateAmino {
    /** params is all parameters of the module. */
    params?: ParamsAmino;
    /** vaults is a list of vaults in the module. */
    vaults?: VaultAmino[];
    /** locks is a list of locks in the module. */
    locks?: LockAmino[];
    /** stakes is a list of stakes in the module. */
    stakes?: StakeAmino[];
}
export interface GenesisStateAminoMsg {
    type: "/band.restake.v1beta1.GenesisState";
    value: GenesisStateAmino;
}
/** GenesisState represents the initial state of the blockchain. */
export interface GenesisStateSDKType {
    params: ParamsSDKType;
    vaults: VaultSDKType[];
    locks: LockSDKType[];
    stakes: StakeSDKType[];
}
/** Params is the data structure that keeps the parameters. */
export interface Params {
    /** allowed_denoms is a list of denoms that the module allows to stake to get power. */
    allowedDenoms: string[];
}
export interface ParamsProtoMsg {
    typeUrl: "/band.restake.v1beta1.Params";
    value: Uint8Array;
}
/** Params is the data structure that keeps the parameters. */
export interface ParamsAmino {
    /** allowed_denoms is a list of denoms that the module allows to stake to get power. */
    allowed_denoms?: string[];
}
export interface ParamsAminoMsg {
    type: "/band.restake.v1beta1.Params";
    value: ParamsAmino;
}
/** Params is the data structure that keeps the parameters. */
export interface ParamsSDKType {
    allowed_denoms: string[];
}
export declare const GenesisState: {
    typeUrl: string;
    encode(message: GenesisState, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): GenesisState;
    fromPartial(object: Partial<GenesisState>): GenesisState;
    fromAmino(object: GenesisStateAmino): GenesisState;
    toAmino(message: GenesisState): GenesisStateAmino;
    fromAminoMsg(object: GenesisStateAminoMsg): GenesisState;
    fromProtoMsg(message: GenesisStateProtoMsg): GenesisState;
    toProto(message: GenesisState): Uint8Array;
    toProtoMsg(message: GenesisState): GenesisStateProtoMsg;
};
export declare const Params: {
    typeUrl: string;
    encode(message: Params, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): Params;
    fromPartial(object: Partial<Params>): Params;
    fromAmino(object: ParamsAmino): Params;
    toAmino(message: Params): ParamsAmino;
    fromAminoMsg(object: ParamsAminoMsg): Params;
    fromProtoMsg(message: ParamsProtoMsg): Params;
    toProto(message: Params): Uint8Array;
    toProtoMsg(message: Params): ParamsProtoMsg;
};
