import { QueryCondition, QueryConditionAmino, QueryConditionSDKType } from '../lockup/lock';
import { Coin, CoinAmino, CoinSDKType } from '../../cosmos/base/v1beta1/coin';
import { BinaryReader, BinaryWriter } from '../../../binary';
/** MsgCreateGauge creates a gague to distribute rewards to users */
export interface MsgCreateGauge {
    /**
     * is_perpetual shows if it's a perpetual or non-perpetual gauge
     * Non-perpetual gauges distribute their tokens equally per epoch while the
     * gauge is in the active period. Perpetual gauges distribute all their tokens
     * at a single time and only distribute their tokens again once the gauge is
     * refilled
     */
    isPerpetual: boolean;
    /** owner is the address of gauge creator */
    owner: string;
    /**
     * distribute_to show which lock the gauge should distribute to by time
     * duration or by timestamp
     */
    distributeTo: QueryCondition;
    /** coins are coin(s) to be distributed by the gauge */
    coins: Coin[];
    /** start_time is the distribution start time */
    startTime: Date;
    /**
     * num_epochs_paid_over is the number of epochs distribution will be completed
     * over
     */
    numEpochsPaidOver: bigint;
    /**
     * pool_id is the ID of the pool that the gauge is meant to be associated
     * with. if pool_id is set, then the "QueryCondition.LockQueryType" must be
     * "NoLock" with all other fields of the "QueryCondition.LockQueryType" struct
     * unset, including "QueryCondition.Denom". However, note that, internally,
     * the empty string in "QueryCondition.Denom" ends up being overwritten with
     * incentivestypes.NoLockExternalGaugeDenom(<pool-id>) so that the gauges
     * associated with a pool can be queried by this prefix if needed.
     */
    poolId: bigint;
}
export interface MsgCreateGaugeProtoMsg {
    typeUrl: '/osmosis.incentives.MsgCreateGauge';
    value: Uint8Array;
}
/** MsgCreateGauge creates a gague to distribute rewards to users */
export interface MsgCreateGaugeAmino {
    /**
     * is_perpetual shows if it's a perpetual or non-perpetual gauge
     * Non-perpetual gauges distribute their tokens equally per epoch while the
     * gauge is in the active period. Perpetual gauges distribute all their tokens
     * at a single time and only distribute their tokens again once the gauge is
     * refilled
     */
    is_perpetual?: boolean;
    /** owner is the address of gauge creator */
    owner?: string;
    /**
     * distribute_to show which lock the gauge should distribute to by time
     * duration or by timestamp
     */
    distribute_to?: QueryConditionAmino;
    /** coins are coin(s) to be distributed by the gauge */
    coins?: CoinAmino[];
    /** start_time is the distribution start time */
    start_time?: string;
    /**
     * num_epochs_paid_over is the number of epochs distribution will be completed
     * over
     */
    num_epochs_paid_over?: string;
    /**
     * pool_id is the ID of the pool that the gauge is meant to be associated
     * with. if pool_id is set, then the "QueryCondition.LockQueryType" must be
     * "NoLock" with all other fields of the "QueryCondition.LockQueryType" struct
     * unset, including "QueryCondition.Denom". However, note that, internally,
     * the empty string in "QueryCondition.Denom" ends up being overwritten with
     * incentivestypes.NoLockExternalGaugeDenom(<pool-id>) so that the gauges
     * associated with a pool can be queried by this prefix if needed.
     */
    pool_id?: string;
}
export interface MsgCreateGaugeAminoMsg {
    type: 'osmosis/incentives/create-gauge';
    value: MsgCreateGaugeAmino;
}
/** MsgCreateGauge creates a gague to distribute rewards to users */
export interface MsgCreateGaugeSDKType {
    is_perpetual: boolean;
    owner: string;
    distribute_to: QueryConditionSDKType;
    coins: CoinSDKType[];
    start_time: Date;
    num_epochs_paid_over: bigint;
    pool_id: bigint;
}
export interface MsgCreateGaugeResponse {
}
export interface MsgCreateGaugeResponseProtoMsg {
    typeUrl: '/osmosis.incentives.MsgCreateGaugeResponse';
    value: Uint8Array;
}
export interface MsgCreateGaugeResponseAmino {
}
export interface MsgCreateGaugeResponseAminoMsg {
    type: 'osmosis/incentives/create-gauge-response';
    value: MsgCreateGaugeResponseAmino;
}
export interface MsgCreateGaugeResponseSDKType {
}
/** MsgAddToGauge adds coins to a previously created gauge */
export interface MsgAddToGauge {
    /** owner is the gauge owner's address */
    owner: string;
    /** gauge_id is the ID of gauge that rewards are getting added to */
    gaugeId: bigint;
    /** rewards are the coin(s) to add to gauge */
    rewards: Coin[];
}
export interface MsgAddToGaugeProtoMsg {
    typeUrl: '/osmosis.incentives.MsgAddToGauge';
    value: Uint8Array;
}
/** MsgAddToGauge adds coins to a previously created gauge */
export interface MsgAddToGaugeAmino {
    /** owner is the gauge owner's address */
    owner?: string;
    /** gauge_id is the ID of gauge that rewards are getting added to */
    gauge_id?: string;
    /** rewards are the coin(s) to add to gauge */
    rewards?: CoinAmino[];
}
export interface MsgAddToGaugeAminoMsg {
    type: 'osmosis/incentives/add-to-gauge';
    value: MsgAddToGaugeAmino;
}
/** MsgAddToGauge adds coins to a previously created gauge */
export interface MsgAddToGaugeSDKType {
    owner: string;
    gauge_id: bigint;
    rewards: CoinSDKType[];
}
export interface MsgAddToGaugeResponse {
}
export interface MsgAddToGaugeResponseProtoMsg {
    typeUrl: '/osmosis.incentives.MsgAddToGaugeResponse';
    value: Uint8Array;
}
export interface MsgAddToGaugeResponseAmino {
}
export interface MsgAddToGaugeResponseAminoMsg {
    type: 'osmosis/incentives/add-to-gauge-response';
    value: MsgAddToGaugeResponseAmino;
}
export interface MsgAddToGaugeResponseSDKType {
}
/** MsgCreateGroup creates a group to distribute rewards to a group of pools */
export interface MsgCreateGroup {
    /** coins are the provided coins that the group will distribute */
    coins: Coin[];
    /**
     * num_epochs_paid_over is the number of epochs distribution will be completed
     * in. 0 means it's perpetual
     */
    numEpochsPaidOver: bigint;
    /** owner is the group owner's address */
    owner: string;
    /** pool_ids are the IDs of pools that the group is comprised of */
    poolIds: bigint[];
}
export interface MsgCreateGroupProtoMsg {
    typeUrl: '/osmosis.incentives.MsgCreateGroup';
    value: Uint8Array;
}
/** MsgCreateGroup creates a group to distribute rewards to a group of pools */
export interface MsgCreateGroupAmino {
    /** coins are the provided coins that the group will distribute */
    coins?: CoinAmino[];
    /**
     * num_epochs_paid_over is the number of epochs distribution will be completed
     * in. 0 means it's perpetual
     */
    num_epochs_paid_over?: string;
    /** owner is the group owner's address */
    owner?: string;
    /** pool_ids are the IDs of pools that the group is comprised of */
    pool_ids?: string[];
}
export interface MsgCreateGroupAminoMsg {
    type: 'osmosis/incentives/create-group';
    value: MsgCreateGroupAmino;
}
/** MsgCreateGroup creates a group to distribute rewards to a group of pools */
export interface MsgCreateGroupSDKType {
    coins: CoinSDKType[];
    num_epochs_paid_over: bigint;
    owner: string;
    pool_ids: bigint[];
}
export interface MsgCreateGroupResponse {
    /** group_id is the ID of the group that is created from this msg */
    groupId: bigint;
}
export interface MsgCreateGroupResponseProtoMsg {
    typeUrl: '/osmosis.incentives.MsgCreateGroupResponse';
    value: Uint8Array;
}
export interface MsgCreateGroupResponseAmino {
    /** group_id is the ID of the group that is created from this msg */
    group_id?: string;
}
export interface MsgCreateGroupResponseAminoMsg {
    type: 'osmosis/incentives/create-group-response';
    value: MsgCreateGroupResponseAmino;
}
export interface MsgCreateGroupResponseSDKType {
    group_id: bigint;
}
export declare const MsgCreateGauge: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is MsgCreateGauge;
    isSDK(o: any): o is MsgCreateGaugeSDKType;
    isAmino(o: any): o is MsgCreateGaugeAmino;
    encode(message: MsgCreateGauge, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateGauge;
    fromPartial(object: Partial<MsgCreateGauge>): MsgCreateGauge;
    fromAmino(object: MsgCreateGaugeAmino): MsgCreateGauge;
    toAmino(message: MsgCreateGauge): MsgCreateGaugeAmino;
    fromAminoMsg(object: MsgCreateGaugeAminoMsg): MsgCreateGauge;
    toAminoMsg(message: MsgCreateGauge): MsgCreateGaugeAminoMsg;
    fromProtoMsg(message: MsgCreateGaugeProtoMsg): MsgCreateGauge;
    toProto(message: MsgCreateGauge): Uint8Array;
    toProtoMsg(message: MsgCreateGauge): MsgCreateGaugeProtoMsg;
};
export declare const MsgCreateGaugeResponse: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is MsgCreateGaugeResponse;
    isSDK(o: any): o is MsgCreateGaugeResponseSDKType;
    isAmino(o: any): o is MsgCreateGaugeResponseAmino;
    encode(_: MsgCreateGaugeResponse, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateGaugeResponse;
    fromPartial(_: Partial<MsgCreateGaugeResponse>): MsgCreateGaugeResponse;
    fromAmino(_: MsgCreateGaugeResponseAmino): MsgCreateGaugeResponse;
    toAmino(_: MsgCreateGaugeResponse): MsgCreateGaugeResponseAmino;
    fromAminoMsg(object: MsgCreateGaugeResponseAminoMsg): MsgCreateGaugeResponse;
    toAminoMsg(message: MsgCreateGaugeResponse): MsgCreateGaugeResponseAminoMsg;
    fromProtoMsg(message: MsgCreateGaugeResponseProtoMsg): MsgCreateGaugeResponse;
    toProto(message: MsgCreateGaugeResponse): Uint8Array;
    toProtoMsg(message: MsgCreateGaugeResponse): MsgCreateGaugeResponseProtoMsg;
};
export declare const MsgAddToGauge: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is MsgAddToGauge;
    isSDK(o: any): o is MsgAddToGaugeSDKType;
    isAmino(o: any): o is MsgAddToGaugeAmino;
    encode(message: MsgAddToGauge, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MsgAddToGauge;
    fromPartial(object: Partial<MsgAddToGauge>): MsgAddToGauge;
    fromAmino(object: MsgAddToGaugeAmino): MsgAddToGauge;
    toAmino(message: MsgAddToGauge): MsgAddToGaugeAmino;
    fromAminoMsg(object: MsgAddToGaugeAminoMsg): MsgAddToGauge;
    toAminoMsg(message: MsgAddToGauge): MsgAddToGaugeAminoMsg;
    fromProtoMsg(message: MsgAddToGaugeProtoMsg): MsgAddToGauge;
    toProto(message: MsgAddToGauge): Uint8Array;
    toProtoMsg(message: MsgAddToGauge): MsgAddToGaugeProtoMsg;
};
export declare const MsgAddToGaugeResponse: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is MsgAddToGaugeResponse;
    isSDK(o: any): o is MsgAddToGaugeResponseSDKType;
    isAmino(o: any): o is MsgAddToGaugeResponseAmino;
    encode(_: MsgAddToGaugeResponse, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MsgAddToGaugeResponse;
    fromPartial(_: Partial<MsgAddToGaugeResponse>): MsgAddToGaugeResponse;
    fromAmino(_: MsgAddToGaugeResponseAmino): MsgAddToGaugeResponse;
    toAmino(_: MsgAddToGaugeResponse): MsgAddToGaugeResponseAmino;
    fromAminoMsg(object: MsgAddToGaugeResponseAminoMsg): MsgAddToGaugeResponse;
    toAminoMsg(message: MsgAddToGaugeResponse): MsgAddToGaugeResponseAminoMsg;
    fromProtoMsg(message: MsgAddToGaugeResponseProtoMsg): MsgAddToGaugeResponse;
    toProto(message: MsgAddToGaugeResponse): Uint8Array;
    toProtoMsg(message: MsgAddToGaugeResponse): MsgAddToGaugeResponseProtoMsg;
};
export declare const MsgCreateGroup: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is MsgCreateGroup;
    isSDK(o: any): o is MsgCreateGroupSDKType;
    isAmino(o: any): o is MsgCreateGroupAmino;
    encode(message: MsgCreateGroup, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateGroup;
    fromPartial(object: Partial<MsgCreateGroup>): MsgCreateGroup;
    fromAmino(object: MsgCreateGroupAmino): MsgCreateGroup;
    toAmino(message: MsgCreateGroup): MsgCreateGroupAmino;
    fromAminoMsg(object: MsgCreateGroupAminoMsg): MsgCreateGroup;
    toAminoMsg(message: MsgCreateGroup): MsgCreateGroupAminoMsg;
    fromProtoMsg(message: MsgCreateGroupProtoMsg): MsgCreateGroup;
    toProto(message: MsgCreateGroup): Uint8Array;
    toProtoMsg(message: MsgCreateGroup): MsgCreateGroupProtoMsg;
};
export declare const MsgCreateGroupResponse: {
    typeUrl: string;
    aminoType: string;
    is(o: any): o is MsgCreateGroupResponse;
    isSDK(o: any): o is MsgCreateGroupResponseSDKType;
    isAmino(o: any): o is MsgCreateGroupResponseAmino;
    encode(message: MsgCreateGroupResponse, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateGroupResponse;
    fromPartial(object: Partial<MsgCreateGroupResponse>): MsgCreateGroupResponse;
    fromAmino(object: MsgCreateGroupResponseAmino): MsgCreateGroupResponse;
    toAmino(message: MsgCreateGroupResponse): MsgCreateGroupResponseAmino;
    fromAminoMsg(object: MsgCreateGroupResponseAminoMsg): MsgCreateGroupResponse;
    toAminoMsg(message: MsgCreateGroupResponse): MsgCreateGroupResponseAminoMsg;
    fromProtoMsg(message: MsgCreateGroupResponseProtoMsg): MsgCreateGroupResponse;
    toProto(message: MsgCreateGroupResponse): Uint8Array;
    toProtoMsg(message: MsgCreateGroupResponse): MsgCreateGroupResponseProtoMsg;
};
