@zoguxprotocol/proto 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,17 @@ export interface PerpetualFeeParams {
11
11
  export interface PerpetualFeeParamsSDKType {
12
12
  tiers: PerpetualFeeTierSDKType[];
13
13
  }
14
+ /** SpotFeeParams defines the parameters for spot fees. */
15
+
16
+ export interface SpotFeeParams {
17
+ /** Sorted fee tiers (lowest requirements first). */
18
+ tiers: SpotFeeTier[];
19
+ }
20
+ /** SpotFeeParams defines the parameters for spot fees. */
21
+
22
+ export interface SpotFeeParamsSDKType {
23
+ tiers: SpotFeeTierSDKType[];
24
+ }
14
25
  /** A fee tier for perpetuals */
15
26
 
16
27
  export interface PerpetualFeeTier {
@@ -42,6 +53,37 @@ export interface PerpetualFeeTierSDKType {
42
53
  maker_fee_ppm: number;
43
54
  taker_fee_ppm: number;
44
55
  }
56
+ /** A fee tier for spot trading. */
57
+
58
+ export interface SpotFeeTier {
59
+ /** Human-readable name of the tier, e.g. "Gold". */
60
+ name: string;
61
+ /** The trader's absolute volume requirement in quote quantums. */
62
+
63
+ absoluteVolumeRequirement: Long;
64
+ /** The total volume share requirement. */
65
+
66
+ totalVolumeShareRequirementPpm: number;
67
+ /** The maker volume share requirement. */
68
+
69
+ makerVolumeShareRequirementPpm: number;
70
+ /** The maker fee once this tier is reached. */
71
+
72
+ makerFeePpm: number;
73
+ /** The taker fee once this tier is reached. */
74
+
75
+ takerFeePpm: number;
76
+ }
77
+ /** A fee tier for spot trading. */
78
+
79
+ export interface SpotFeeTierSDKType {
80
+ name: string;
81
+ absolute_volume_requirement: Long;
82
+ total_volume_share_requirement_ppm: number;
83
+ maker_volume_share_requirement_ppm: number;
84
+ maker_fee_ppm: number;
85
+ taker_fee_ppm: number;
86
+ }
45
87
 
46
88
  function createBasePerpetualFeeParams(): PerpetualFeeParams {
47
89
  return {
@@ -88,6 +130,51 @@ export const PerpetualFeeParams = {
88
130
 
89
131
  };
90
132
 
133
+ function createBaseSpotFeeParams(): SpotFeeParams {
134
+ return {
135
+ tiers: []
136
+ };
137
+ }
138
+
139
+ export const SpotFeeParams = {
140
+ encode(message: SpotFeeParams, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
141
+ for (const v of message.tiers) {
142
+ SpotFeeTier.encode(v!, writer.uint32(10).fork()).ldelim();
143
+ }
144
+
145
+ return writer;
146
+ },
147
+
148
+ decode(input: _m0.Reader | Uint8Array, length?: number): SpotFeeParams {
149
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
150
+ let end = length === undefined ? reader.len : reader.pos + length;
151
+ const message = createBaseSpotFeeParams();
152
+
153
+ while (reader.pos < end) {
154
+ const tag = reader.uint32();
155
+
156
+ switch (tag >>> 3) {
157
+ case 1:
158
+ message.tiers.push(SpotFeeTier.decode(reader, reader.uint32()));
159
+ break;
160
+
161
+ default:
162
+ reader.skipType(tag & 7);
163
+ break;
164
+ }
165
+ }
166
+
167
+ return message;
168
+ },
169
+
170
+ fromPartial(object: DeepPartial<SpotFeeParams>): SpotFeeParams {
171
+ const message = createBaseSpotFeeParams();
172
+ message.tiers = object.tiers?.map(e => SpotFeeTier.fromPartial(e)) || [];
173
+ return message;
174
+ }
175
+
176
+ };
177
+
91
178
  function createBasePerpetualFeeTier(): PerpetualFeeTier {
92
179
  return {
93
180
  name: "",
@@ -181,4 +268,99 @@ export const PerpetualFeeTier = {
181
268
  return message;
182
269
  }
183
270
 
271
+ };
272
+
273
+ function createBaseSpotFeeTier(): SpotFeeTier {
274
+ return {
275
+ name: "",
276
+ absoluteVolumeRequirement: Long.UZERO,
277
+ totalVolumeShareRequirementPpm: 0,
278
+ makerVolumeShareRequirementPpm: 0,
279
+ makerFeePpm: 0,
280
+ takerFeePpm: 0
281
+ };
282
+ }
283
+
284
+ export const SpotFeeTier = {
285
+ encode(message: SpotFeeTier, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
286
+ if (message.name !== "") {
287
+ writer.uint32(10).string(message.name);
288
+ }
289
+
290
+ if (!message.absoluteVolumeRequirement.isZero()) {
291
+ writer.uint32(16).uint64(message.absoluteVolumeRequirement);
292
+ }
293
+
294
+ if (message.totalVolumeShareRequirementPpm !== 0) {
295
+ writer.uint32(24).uint32(message.totalVolumeShareRequirementPpm);
296
+ }
297
+
298
+ if (message.makerVolumeShareRequirementPpm !== 0) {
299
+ writer.uint32(32).uint32(message.makerVolumeShareRequirementPpm);
300
+ }
301
+
302
+ if (message.makerFeePpm !== 0) {
303
+ writer.uint32(40).sint32(message.makerFeePpm);
304
+ }
305
+
306
+ if (message.takerFeePpm !== 0) {
307
+ writer.uint32(48).sint32(message.takerFeePpm);
308
+ }
309
+
310
+ return writer;
311
+ },
312
+
313
+ decode(input: _m0.Reader | Uint8Array, length?: number): SpotFeeTier {
314
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
315
+ let end = length === undefined ? reader.len : reader.pos + length;
316
+ const message = createBaseSpotFeeTier();
317
+
318
+ while (reader.pos < end) {
319
+ const tag = reader.uint32();
320
+
321
+ switch (tag >>> 3) {
322
+ case 1:
323
+ message.name = reader.string();
324
+ break;
325
+
326
+ case 2:
327
+ message.absoluteVolumeRequirement = (reader.uint64() as Long);
328
+ break;
329
+
330
+ case 3:
331
+ message.totalVolumeShareRequirementPpm = reader.uint32();
332
+ break;
333
+
334
+ case 4:
335
+ message.makerVolumeShareRequirementPpm = reader.uint32();
336
+ break;
337
+
338
+ case 5:
339
+ message.makerFeePpm = reader.sint32();
340
+ break;
341
+
342
+ case 6:
343
+ message.takerFeePpm = reader.sint32();
344
+ break;
345
+
346
+ default:
347
+ reader.skipType(tag & 7);
348
+ break;
349
+ }
350
+ }
351
+
352
+ return message;
353
+ },
354
+
355
+ fromPartial(object: DeepPartial<SpotFeeTier>): SpotFeeTier {
356
+ const message = createBaseSpotFeeTier();
357
+ message.name = object.name ?? "";
358
+ message.absoluteVolumeRequirement = object.absoluteVolumeRequirement !== undefined && object.absoluteVolumeRequirement !== null ? Long.fromValue(object.absoluteVolumeRequirement) : Long.UZERO;
359
+ message.totalVolumeShareRequirementPpm = object.totalVolumeShareRequirementPpm ?? 0;
360
+ message.makerVolumeShareRequirementPpm = object.makerVolumeShareRequirementPpm ?? 0;
361
+ message.makerFeePpm = object.makerFeePpm ?? 0;
362
+ message.takerFeePpm = object.takerFeePpm ?? 0;
363
+ return message;
364
+ }
365
+
184
366
  };
@@ -1,5 +1,5 @@
1
1
  import { LCDClient } from "@osmonauts/lcd";
2
- import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponseSDKType, QueryUserFeeTierRequest, QueryUserFeeTierResponseSDKType, QueryPerMarketFeeDiscountParamsRequest, QueryPerMarketFeeDiscountParamsResponseSDKType, QueryAllMarketFeeDiscountParamsRequest, QueryAllMarketFeeDiscountParamsResponseSDKType, QueryStakingTiersRequest, QueryStakingTiersResponseSDKType, QueryUserStakingTierRequest, QueryUserStakingTierResponseSDKType } from "./query";
2
+ import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponseSDKType, QueryUserFeeTierRequest, QueryUserFeeTierResponseSDKType, QueryUserSpotFeeTierRequest, QueryUserSpotFeeTierResponseSDKType, QueryPerMarketFeeDiscountParamsRequest, QueryPerMarketFeeDiscountParamsResponseSDKType, QueryAllMarketFeeDiscountParamsRequest, QueryAllMarketFeeDiscountParamsResponseSDKType, QueryStakingTiersRequest, QueryStakingTiersResponseSDKType, QueryUserStakingTierRequest, QueryUserStakingTierResponseSDKType } from "./query";
3
3
  export class LCDQueryClient {
4
4
  req: LCDClient;
5
5
 
@@ -11,6 +11,7 @@ export class LCDQueryClient {
11
11
  this.req = requestClient;
12
12
  this.perpetualFeeParams = this.perpetualFeeParams.bind(this);
13
13
  this.userFeeTier = this.userFeeTier.bind(this);
14
+ this.userSpotFeeTier = this.userSpotFeeTier.bind(this);
14
15
  this.perMarketFeeDiscountParams = this.perMarketFeeDiscountParams.bind(this);
15
16
  this.allMarketFeeDiscountParams = this.allMarketFeeDiscountParams.bind(this);
16
17
  this.stakingTiers = this.stakingTiers.bind(this);
@@ -38,6 +39,21 @@ export class LCDQueryClient {
38
39
  const endpoint = `zogux/v4/feetiers/user_fee_tier`;
39
40
  return await this.req.get<QueryUserFeeTierResponseSDKType>(endpoint, options);
40
41
  }
42
+ /* Queries a user's spot fee tier */
43
+
44
+
45
+ async userSpotFeeTier(params: QueryUserSpotFeeTierRequest): Promise<QueryUserSpotFeeTierResponseSDKType> {
46
+ const options: any = {
47
+ params: {}
48
+ };
49
+
50
+ if (typeof params?.user !== "undefined") {
51
+ options.params.user = params.user;
52
+ }
53
+
54
+ const endpoint = `zogux/v4/feetiers/user_spot_fee_tier`;
55
+ return await this.req.get<QueryUserSpotFeeTierResponseSDKType>(endpoint, options);
56
+ }
41
57
  /* PerMarketFeeDiscountParams queries fee discount parameters for a
42
58
  specific market/CLOB pair. */
43
59
 
@@ -1,7 +1,7 @@
1
1
  import { Rpc } from "../../helpers";
2
2
  import * as _m0 from "protobufjs/minimal";
3
3
  import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate";
4
- import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponse, QueryUserFeeTierRequest, QueryUserFeeTierResponse, QueryPerMarketFeeDiscountParamsRequest, QueryPerMarketFeeDiscountParamsResponse, QueryAllMarketFeeDiscountParamsRequest, QueryAllMarketFeeDiscountParamsResponse, QueryStakingTiersRequest, QueryStakingTiersResponse, QueryUserStakingTierRequest, QueryUserStakingTierResponse } from "./query";
4
+ import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponse, QueryUserFeeTierRequest, QueryUserFeeTierResponse, QueryUserSpotFeeTierRequest, QueryUserSpotFeeTierResponse, QueryPerMarketFeeDiscountParamsRequest, QueryPerMarketFeeDiscountParamsResponse, QueryAllMarketFeeDiscountParamsRequest, QueryAllMarketFeeDiscountParamsResponse, QueryStakingTiersRequest, QueryStakingTiersResponse, QueryUserStakingTierRequest, QueryUserStakingTierResponse } from "./query";
5
5
  /** Query defines the gRPC querier service. */
6
6
 
7
7
  export interface Query {
@@ -10,6 +10,9 @@ export interface Query {
10
10
  /** Queries a user's fee tier */
11
11
 
12
12
  userFeeTier(request: QueryUserFeeTierRequest): Promise<QueryUserFeeTierResponse>;
13
+ /** Queries a user's spot fee tier */
14
+
15
+ userSpotFeeTier(request: QueryUserSpotFeeTierRequest): Promise<QueryUserSpotFeeTierResponse>;
13
16
  /**
14
17
  * PerMarketFeeDiscountParams queries fee discount parameters for a
15
18
  * specific market/CLOB pair.
@@ -33,6 +36,7 @@ export class QueryClientImpl implements Query {
33
36
  this.rpc = rpc;
34
37
  this.perpetualFeeParams = this.perpetualFeeParams.bind(this);
35
38
  this.userFeeTier = this.userFeeTier.bind(this);
39
+ this.userSpotFeeTier = this.userSpotFeeTier.bind(this);
36
40
  this.perMarketFeeDiscountParams = this.perMarketFeeDiscountParams.bind(this);
37
41
  this.allMarketFeeDiscountParams = this.allMarketFeeDiscountParams.bind(this);
38
42
  this.stakingTiers = this.stakingTiers.bind(this);
@@ -51,6 +55,12 @@ export class QueryClientImpl implements Query {
51
55
  return promise.then(data => QueryUserFeeTierResponse.decode(new _m0.Reader(data)));
52
56
  }
53
57
 
58
+ userSpotFeeTier(request: QueryUserSpotFeeTierRequest): Promise<QueryUserSpotFeeTierResponse> {
59
+ const data = QueryUserSpotFeeTierRequest.encode(request).finish();
60
+ const promise = this.rpc.request("zogux.feetiers.Query", "UserSpotFeeTier", data);
61
+ return promise.then(data => QueryUserSpotFeeTierResponse.decode(new _m0.Reader(data)));
62
+ }
63
+
54
64
  perMarketFeeDiscountParams(request: QueryPerMarketFeeDiscountParamsRequest): Promise<QueryPerMarketFeeDiscountParamsResponse> {
55
65
  const data = QueryPerMarketFeeDiscountParamsRequest.encode(request).finish();
56
66
  const promise = this.rpc.request("zogux.feetiers.Query", "PerMarketFeeDiscountParams", data);
@@ -88,6 +98,10 @@ export const createRpcQueryExtension = (base: QueryClient) => {
88
98
  return queryService.userFeeTier(request);
89
99
  },
90
100
 
101
+ userSpotFeeTier(request: QueryUserSpotFeeTierRequest): Promise<QueryUserSpotFeeTierResponse> {
102
+ return queryService.userSpotFeeTier(request);
103
+ },
104
+
91
105
  perMarketFeeDiscountParams(request: QueryPerMarketFeeDiscountParamsRequest): Promise<QueryPerMarketFeeDiscountParamsResponse> {
92
106
  return queryService.perMarketFeeDiscountParams(request);
93
107
  },
@@ -1,4 +1,4 @@
1
- import { PerpetualFeeParams, PerpetualFeeParamsSDKType, PerpetualFeeTier, PerpetualFeeTierSDKType } from "./params";
1
+ import { PerpetualFeeParams, PerpetualFeeParamsSDKType, PerpetualFeeTier, PerpetualFeeTierSDKType, SpotFeeTier, SpotFeeTierSDKType } from "./params";
2
2
  import { PerMarketFeeDiscountParams, PerMarketFeeDiscountParamsSDKType } from "./per_market_fee_discount";
3
3
  import { StakingTier, StakingTierSDKType } from "./staking_tier";
4
4
  import * as _m0 from "protobufjs/minimal";
@@ -47,12 +47,49 @@ export interface QueryUserFeeTierResponse {
47
47
  /** Index of the fee tier in the list queried from PerpetualFeeParams. */
48
48
  index: number;
49
49
  tier?: PerpetualFeeTier;
50
+ /**
51
+ * Source volume bucket used for this fee tier calculation.
52
+ * feetiers uses perpetual-only notional.
53
+ */
54
+
55
+ volumeSource: string;
50
56
  }
51
57
  /** QueryUserFeeTierResponse is a request type for the UserFeeTier RPC method. */
52
58
 
53
59
  export interface QueryUserFeeTierResponseSDKType {
54
60
  index: number;
55
61
  tier?: PerpetualFeeTierSDKType;
62
+ volume_source: string;
63
+ }
64
+ /** QueryUserSpotFeeTierRequest is a request type for the UserSpotFeeTier RPC method. */
65
+
66
+ export interface QueryUserSpotFeeTierRequest {
67
+ user: string;
68
+ }
69
+ /** QueryUserSpotFeeTierRequest is a request type for the UserSpotFeeTier RPC method. */
70
+
71
+ export interface QueryUserSpotFeeTierRequestSDKType {
72
+ user: string;
73
+ }
74
+ /** QueryUserSpotFeeTierResponse is a response type for the UserSpotFeeTier RPC method. */
75
+
76
+ export interface QueryUserSpotFeeTierResponse {
77
+ /** Index of the fee tier in the list queried from SpotFeeParams. */
78
+ index: number;
79
+ tier?: SpotFeeTier;
80
+ /**
81
+ * Source volume bucket used for this fee tier calculation.
82
+ * feetiers uses spot-only notional.
83
+ */
84
+
85
+ volumeSource: string;
86
+ }
87
+ /** QueryUserSpotFeeTierResponse is a response type for the UserSpotFeeTier RPC method. */
88
+
89
+ export interface QueryUserSpotFeeTierResponseSDKType {
90
+ index: number;
91
+ tier?: SpotFeeTierSDKType;
92
+ volume_source: string;
56
93
  }
57
94
  /**
58
95
  * QueryPerMarketFeeDiscountParamsRequest is the request type for the
@@ -304,7 +341,8 @@ export const QueryUserFeeTierRequest = {
304
341
  function createBaseQueryUserFeeTierResponse(): QueryUserFeeTierResponse {
305
342
  return {
306
343
  index: 0,
307
- tier: undefined
344
+ tier: undefined,
345
+ volumeSource: ""
308
346
  };
309
347
  }
310
348
 
@@ -318,6 +356,10 @@ export const QueryUserFeeTierResponse = {
318
356
  PerpetualFeeTier.encode(message.tier, writer.uint32(18).fork()).ldelim();
319
357
  }
320
358
 
359
+ if (message.volumeSource !== "") {
360
+ writer.uint32(26).string(message.volumeSource);
361
+ }
362
+
321
363
  return writer;
322
364
  },
323
365
 
@@ -338,6 +380,10 @@ export const QueryUserFeeTierResponse = {
338
380
  message.tier = PerpetualFeeTier.decode(reader, reader.uint32());
339
381
  break;
340
382
 
383
+ case 3:
384
+ message.volumeSource = reader.string();
385
+ break;
386
+
341
387
  default:
342
388
  reader.skipType(tag & 7);
343
389
  break;
@@ -351,6 +397,117 @@ export const QueryUserFeeTierResponse = {
351
397
  const message = createBaseQueryUserFeeTierResponse();
352
398
  message.index = object.index ?? 0;
353
399
  message.tier = object.tier !== undefined && object.tier !== null ? PerpetualFeeTier.fromPartial(object.tier) : undefined;
400
+ message.volumeSource = object.volumeSource ?? "";
401
+ return message;
402
+ }
403
+
404
+ };
405
+
406
+ function createBaseQueryUserSpotFeeTierRequest(): QueryUserSpotFeeTierRequest {
407
+ return {
408
+ user: ""
409
+ };
410
+ }
411
+
412
+ export const QueryUserSpotFeeTierRequest = {
413
+ encode(message: QueryUserSpotFeeTierRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
414
+ if (message.user !== "") {
415
+ writer.uint32(10).string(message.user);
416
+ }
417
+
418
+ return writer;
419
+ },
420
+
421
+ decode(input: _m0.Reader | Uint8Array, length?: number): QueryUserSpotFeeTierRequest {
422
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
423
+ let end = length === undefined ? reader.len : reader.pos + length;
424
+ const message = createBaseQueryUserSpotFeeTierRequest();
425
+
426
+ while (reader.pos < end) {
427
+ const tag = reader.uint32();
428
+
429
+ switch (tag >>> 3) {
430
+ case 1:
431
+ message.user = reader.string();
432
+ break;
433
+
434
+ default:
435
+ reader.skipType(tag & 7);
436
+ break;
437
+ }
438
+ }
439
+
440
+ return message;
441
+ },
442
+
443
+ fromPartial(object: DeepPartial<QueryUserSpotFeeTierRequest>): QueryUserSpotFeeTierRequest {
444
+ const message = createBaseQueryUserSpotFeeTierRequest();
445
+ message.user = object.user ?? "";
446
+ return message;
447
+ }
448
+
449
+ };
450
+
451
+ function createBaseQueryUserSpotFeeTierResponse(): QueryUserSpotFeeTierResponse {
452
+ return {
453
+ index: 0,
454
+ tier: undefined,
455
+ volumeSource: ""
456
+ };
457
+ }
458
+
459
+ export const QueryUserSpotFeeTierResponse = {
460
+ encode(message: QueryUserSpotFeeTierResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
461
+ if (message.index !== 0) {
462
+ writer.uint32(8).uint32(message.index);
463
+ }
464
+
465
+ if (message.tier !== undefined) {
466
+ SpotFeeTier.encode(message.tier, writer.uint32(18).fork()).ldelim();
467
+ }
468
+
469
+ if (message.volumeSource !== "") {
470
+ writer.uint32(26).string(message.volumeSource);
471
+ }
472
+
473
+ return writer;
474
+ },
475
+
476
+ decode(input: _m0.Reader | Uint8Array, length?: number): QueryUserSpotFeeTierResponse {
477
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
478
+ let end = length === undefined ? reader.len : reader.pos + length;
479
+ const message = createBaseQueryUserSpotFeeTierResponse();
480
+
481
+ while (reader.pos < end) {
482
+ const tag = reader.uint32();
483
+
484
+ switch (tag >>> 3) {
485
+ case 1:
486
+ message.index = reader.uint32();
487
+ break;
488
+
489
+ case 2:
490
+ message.tier = SpotFeeTier.decode(reader, reader.uint32());
491
+ break;
492
+
493
+ case 3:
494
+ message.volumeSource = reader.string();
495
+ break;
496
+
497
+ default:
498
+ reader.skipType(tag & 7);
499
+ break;
500
+ }
501
+ }
502
+
503
+ return message;
504
+ },
505
+
506
+ fromPartial(object: DeepPartial<QueryUserSpotFeeTierResponse>): QueryUserSpotFeeTierResponse {
507
+ const message = createBaseQueryUserSpotFeeTierResponse();
508
+ message.index = object.index ?? 0;
509
+ message.tier = object.tier !== undefined && object.tier !== null ? SpotFeeTier.fromPartial(object.tier) : undefined;
510
+ message.volumeSource = object.volumeSource ?? "";
354
511
  return message;
355
512
  }
356
513