import { Member, MemberAmino, MemberSDKType, CurrentGroup, CurrentGroupAmino, CurrentGroupSDKType } from "./bandtss";
import { Duration, DurationAmino, DurationSDKType } from "../../../google/protobuf/duration";
import { Coin, CoinAmino, CoinSDKType } from "../../../cosmos/base/v1beta1/coin";
import { BinaryReader, BinaryWriter } from "../../../binary";
/** GenesisState defines the bandtss module's genesis state. */
export interface GenesisState {
    /** params defines all the parameters of the module. */
    params: Params;
    /** members is an array containing members information. */
    members: Member[];
    /** current_group is the current group information. */
    currentGroup: CurrentGroup;
}
export interface GenesisStateProtoMsg {
    typeUrl: "/band.bandtss.v1beta1.GenesisState";
    value: Uint8Array;
}
/** GenesisState defines the bandtss module's genesis state. */
export interface GenesisStateAmino {
    /** params defines all the parameters of the module. */
    params?: ParamsAmino;
    /** members is an array containing members information. */
    members?: MemberAmino[];
    /** current_group is the current group information. */
    current_group?: CurrentGroupAmino;
}
export interface GenesisStateAminoMsg {
    type: "/band.bandtss.v1beta1.GenesisState";
    value: GenesisStateAmino;
}
/** GenesisState defines the bandtss module's genesis state. */
export interface GenesisStateSDKType {
    params: ParamsSDKType;
    members: MemberSDKType[];
    current_group: CurrentGroupSDKType;
}
/** Params defines the set of module parameters. */
export interface Params {
    /**
     * reward_percentage is the percentage of block rewards allocated to active tss members.
     * The reward proportion is calculated after being allocated to oracle rewards.
     */
    rewardPercentage: bigint;
    /** inactive_penalty_duration is the duration where a member cannot activate back after being set to inactive. */
    inactivePenaltyDuration: Duration;
    /** min_transition_duration is the minimum duration that the transition process waits before execution. */
    minTransitionDuration: Duration;
    /** max_transition_duration is the maximum duration that the transition process waits before execution. */
    maxTransitionDuration: Duration;
    /** fee_per_signer is the tokens that will be paid per signer. */
    feePerSigner: Coin[];
}
export interface ParamsProtoMsg {
    typeUrl: "/band.bandtss.v1beta1.Params";
    value: Uint8Array;
}
/** Params defines the set of module parameters. */
export interface ParamsAmino {
    /**
     * reward_percentage is the percentage of block rewards allocated to active tss members.
     * The reward proportion is calculated after being allocated to oracle rewards.
     */
    reward_percentage?: string;
    /** inactive_penalty_duration is the duration where a member cannot activate back after being set to inactive. */
    inactive_penalty_duration?: DurationAmino;
    /** min_transition_duration is the minimum duration that the transition process waits before execution. */
    min_transition_duration?: DurationAmino;
    /** max_transition_duration is the maximum duration that the transition process waits before execution. */
    max_transition_duration?: DurationAmino;
    /** fee_per_signer is the tokens that will be paid per signer. */
    fee_per_signer?: CoinAmino[];
}
export interface ParamsAminoMsg {
    type: "/band.bandtss.v1beta1.Params";
    value: ParamsAmino;
}
/** Params defines the set of module parameters. */
export interface ParamsSDKType {
    reward_percentage: bigint;
    inactive_penalty_duration: DurationSDKType;
    min_transition_duration: DurationSDKType;
    max_transition_duration: DurationSDKType;
    fee_per_signer: CoinSDKType[];
}
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;
};
