import { Gauge, GaugeAmino, GaugeSDKType } from "./gauge";
import { BinaryReader, BinaryWriter } from "../../binary";
/** SplittingPolicy determines the way we want to split incentives in groupGauges */
export declare enum SplittingPolicy {
ByVolume = 0,
UNRECOGNIZED = -1
}
export declare const SplittingPolicySDKType: typeof SplittingPolicy;
export declare const SplittingPolicyAmino: typeof SplittingPolicy;
export declare function splittingPolicyFromJSON(object: any): SplittingPolicy;
export declare function splittingPolicyToJSON(object: SplittingPolicy): string;
/**
* Note that while both InternalGaugeInfo and InternalGaugeRecord could
* technically be replaced by DistrInfo and DistrRecord from the pool-incentives
* module, we create separate types here to keep our abstractions clean and
* readable (pool-incentives distribution abstractions are used in a very
* specific way that does not directly relate to gauge logic). This also helps
* us sidestep a refactor to avoid an import cycle.
*/
export interface InternalGaugeInfo {
totalWeight: string;
gaugeRecords: InternalGaugeRecord[];
}
export interface InternalGaugeInfoProtoMsg {
typeUrl: "/osmosis.incentives.InternalGaugeInfo";
value: Uint8Array;
}
/**
* Note that while both InternalGaugeInfo and InternalGaugeRecord could
* technically be replaced by DistrInfo and DistrRecord from the pool-incentives
* module, we create separate types here to keep our abstractions clean and
* readable (pool-incentives distribution abstractions are used in a very
* specific way that does not directly relate to gauge logic). This also helps
* us sidestep a refactor to avoid an import cycle.
*/
export interface InternalGaugeInfoAmino {
total_weight?: string;
gauge_records?: InternalGaugeRecordAmino[];
}
export interface InternalGaugeInfoAminoMsg {
type: "osmosis/incentives/internal-gauge-info";
value: InternalGaugeInfoAmino;
}
/**
* Note that while both InternalGaugeInfo and InternalGaugeRecord could
* technically be replaced by DistrInfo and DistrRecord from the pool-incentives
* module, we create separate types here to keep our abstractions clean and
* readable (pool-incentives distribution abstractions are used in a very
* specific way that does not directly relate to gauge logic). This also helps
* us sidestep a refactor to avoid an import cycle.
*/
export interface InternalGaugeInfoSDKType {
total_weight: string;
gauge_records: InternalGaugeRecordSDKType[];
}
export interface InternalGaugeRecord {
gaugeId: bigint;
/**
* CurrentWeight is the current weight of this gauge being distributed to for
* this epoch. For instance, for volume splitting policy, this stores the
* volume generated in the last epoch of the linked pool.
*/
currentWeight: string;
/**
* CumulativeWeight serves as a snapshot of the accumulator being tracked
* based on splitting policy. For instance, for volume splitting policy, this
* stores the cumulative volume for the linked pool at time of last update.
*/
cumulativeWeight: string;
}
export interface InternalGaugeRecordProtoMsg {
typeUrl: "/osmosis.incentives.InternalGaugeRecord";
value: Uint8Array;
}
export interface InternalGaugeRecordAmino {
gauge_id?: string;
/**
* CurrentWeight is the current weight of this gauge being distributed to for
* this epoch. For instance, for volume splitting policy, this stores the
* volume generated in the last epoch of the linked pool.
*/
current_weight?: string;
/**
* CumulativeWeight serves as a snapshot of the accumulator being tracked
* based on splitting policy. For instance, for volume splitting policy, this
* stores the cumulative volume for the linked pool at time of last update.
*/
cumulative_weight?: string;
}
export interface InternalGaugeRecordAminoMsg {
type: "osmosis/incentives/internal-gauge-record";
value: InternalGaugeRecordAmino;
}
export interface InternalGaugeRecordSDKType {
gauge_id: bigint;
current_weight: string;
cumulative_weight: string;
}
/**
* Group is an object that stores a 1:1 mapped gauge ID, a list of pool gauge
* info, and a splitting policy. These are grouped into a single abstraction to
* allow for distribution of group incentives to internal gauges according to
* the specified splitting policy.
*/
export interface Group {
groupGaugeId: bigint;
internalGaugeInfo: InternalGaugeInfo;
splittingPolicy: SplittingPolicy;
}
export interface GroupProtoMsg {
typeUrl: "/osmosis.incentives.Group";
value: Uint8Array;
}
/**
* Group is an object that stores a 1:1 mapped gauge ID, a list of pool gauge
* info, and a splitting policy. These are grouped into a single abstraction to
* allow for distribution of group incentives to internal gauges according to
* the specified splitting policy.
*/
export interface GroupAmino {
group_gauge_id?: string;
internal_gauge_info?: InternalGaugeInfoAmino;
splitting_policy?: SplittingPolicy;
}
export interface GroupAminoMsg {
type: "osmosis/incentives/group";
value: GroupAmino;
}
/**
* Group is an object that stores a 1:1 mapped gauge ID, a list of pool gauge
* info, and a splitting policy. These are grouped into a single abstraction to
* allow for distribution of group incentives to internal gauges according to
* the specified splitting policy.
*/
export interface GroupSDKType {
group_gauge_id: bigint;
internal_gauge_info: InternalGaugeInfoSDKType;
splitting_policy: SplittingPolicy;
}
/**
* CreateGroup is called via governance to create a new group.
* It takes an array of pool IDs to split the incentives across.
*/
export interface CreateGroup {
/**
* CreateGroup is called via governance to create a new group.
* It takes an array of pool IDs to split the incentives across.
*/
poolIds: bigint[];
}
export interface CreateGroupProtoMsg {
typeUrl: "/osmosis.incentives.CreateGroup";
value: Uint8Array;
}
/**
* CreateGroup is called via governance to create a new group.
* It takes an array of pool IDs to split the incentives across.
*/
export interface CreateGroupAmino {
/**
* CreateGroup is called via governance to create a new group.
* It takes an array of pool IDs to split the incentives across.
*/
pool_ids?: string[];
}
export interface CreateGroupAminoMsg {
type: "osmosis/incentives/create-group";
value: CreateGroupAmino;
}
/**
* CreateGroup is called via governance to create a new group.
* It takes an array of pool IDs to split the incentives across.
*/
export interface CreateGroupSDKType {
pool_ids: bigint[];
}
/**
* GroupsWithGauge is a helper struct that stores a group and its
* associated gauge.
*/
export interface GroupsWithGauge {
group: Group;
gauge: Gauge;
}
export interface GroupsWithGaugeProtoMsg {
typeUrl: "/osmosis.incentives.GroupsWithGauge";
value: Uint8Array;
}
/**
* GroupsWithGauge is a helper struct that stores a group and its
* associated gauge.
*/
export interface GroupsWithGaugeAmino {
group?: GroupAmino;
gauge?: GaugeAmino;
}
export interface GroupsWithGaugeAminoMsg {
type: "osmosis/incentives/groups-with-gauge";
value: GroupsWithGaugeAmino;
}
/**
* GroupsWithGauge is a helper struct that stores a group and its
* associated gauge.
*/
export interface GroupsWithGaugeSDKType {
group: GroupSDKType;
gauge: GaugeSDKType;
}
export declare const InternalGaugeInfo: {
typeUrl: string;
aminoType: string;
is(o: any): o is InternalGaugeInfo;
isSDK(o: any): o is InternalGaugeInfoSDKType;
isAmino(o: any): o is InternalGaugeInfoAmino;
encode(message: InternalGaugeInfo, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): InternalGaugeInfo;
fromPartial(object: Partial<InternalGaugeInfo>): InternalGaugeInfo;
fromAmino(object: InternalGaugeInfoAmino): InternalGaugeInfo;
toAmino(message: InternalGaugeInfo): InternalGaugeInfoAmino;
fromAminoMsg(object: InternalGaugeInfoAminoMsg): InternalGaugeInfo;
toAminoMsg(message: InternalGaugeInfo): InternalGaugeInfoAminoMsg;
fromProtoMsg(message: InternalGaugeInfoProtoMsg): InternalGaugeInfo;
toProto(message: InternalGaugeInfo): Uint8Array;
toProtoMsg(message: InternalGaugeInfo): InternalGaugeInfoProtoMsg;
};
export declare const InternalGaugeRecord: {
typeUrl: string;
aminoType: string;
is(o: any): o is InternalGaugeRecord;
isSDK(o: any): o is InternalGaugeRecordSDKType;
isAmino(o: any): o is InternalGaugeRecordAmino;
encode(message: InternalGaugeRecord, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): InternalGaugeRecord;
fromPartial(object: Partial<InternalGaugeRecord>): InternalGaugeRecord;
fromAmino(object: InternalGaugeRecordAmino): InternalGaugeRecord;
toAmino(message: InternalGaugeRecord): InternalGaugeRecordAmino;
fromAminoMsg(object: InternalGaugeRecordAminoMsg): InternalGaugeRecord;
toAminoMsg(message: InternalGaugeRecord): InternalGaugeRecordAminoMsg;
fromProtoMsg(message: InternalGaugeRecordProtoMsg): InternalGaugeRecord;
toProto(message: InternalGaugeRecord): Uint8Array;
toProtoMsg(message: InternalGaugeRecord): InternalGaugeRecordProtoMsg;
};
export declare const Group: {
typeUrl: string;
aminoType: string;
is(o: any): o is Group;
isSDK(o: any): o is GroupSDKType;
isAmino(o: any): o is GroupAmino;
encode(message: Group, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): Group;
fromPartial(object: Partial<Group>): Group;
fromAmino(object: GroupAmino): Group;
toAmino(message: Group): GroupAmino;
fromAminoMsg(object: GroupAminoMsg): Group;
toAminoMsg(message: Group): GroupAminoMsg;
fromProtoMsg(message: GroupProtoMsg): Group;
toProto(message: Group): Uint8Array;
toProtoMsg(message: Group): GroupProtoMsg;
};
export declare const CreateGroup: {
typeUrl: string;
aminoType: string;
is(o: any): o is CreateGroup;
isSDK(o: any): o is CreateGroupSDKType;
isAmino(o: any): o is CreateGroupAmino;
encode(message: CreateGroup, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): CreateGroup;
fromPartial(object: Partial<CreateGroup>): CreateGroup;
fromAmino(object: CreateGroupAmino): CreateGroup;
toAmino(message: CreateGroup): CreateGroupAmino;
fromAminoMsg(object: CreateGroupAminoMsg): CreateGroup;
toAminoMsg(message: CreateGroup): CreateGroupAminoMsg;
fromProtoMsg(message: CreateGroupProtoMsg): CreateGroup;
toProto(message: CreateGroup): Uint8Array;
toProtoMsg(message: CreateGroup): CreateGroupProtoMsg;
};
export declare const GroupsWithGauge: {
typeUrl: string;
aminoType: string;
is(o: any): o is GroupsWithGauge;
isSDK(o: any): o is GroupsWithGaugeSDKType;
isAmino(o: any): o is GroupsWithGaugeAmino;
encode(message: GroupsWithGauge, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): GroupsWithGauge;
fromPartial(object: Partial<GroupsWithGauge>): GroupsWithGauge;
fromAmino(object: GroupsWithGaugeAmino): GroupsWithGauge;
toAmino(message: GroupsWithGauge): GroupsWithGaugeAmino;
fromAminoMsg(object: GroupsWithGaugeAminoMsg): GroupsWithGauge;
toAminoMsg(message: GroupsWithGauge): GroupsWithGaugeAminoMsg;
fromProtoMsg(message: GroupsWithGaugeProtoMsg): GroupsWithGauge;
toProto(message: GroupsWithGauge): Uint8Array;
toProtoMsg(message: GroupsWithGauge): GroupsWithGaugeProtoMsg;
};