Skip to content

Commit 4c359cf

Browse files
Add market fee discount to protocol (backport #3130) (#3179)
Co-authored-by: David Li <h396lidavid@gmail.com>
1 parent d6fa308 commit 4c359cf

40 files changed

+4277
-362
lines changed

indexer/packages/v4-protos/src/codegen/dydxprotocol/bundle.ts

Lines changed: 228 additions & 226 deletions
Large diffs are not rendered by default.
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import { Timestamp } from "../../google/protobuf/timestamp";
2+
import * as _m0 from "protobufjs/minimal";
3+
import { toTimestamp, fromTimestamp, DeepPartial } from "../../helpers";
4+
/**
5+
* PerMarketFeeDiscountParams defines a fee discount period for a specific CLOB
6+
* pair
7+
*/
8+
9+
export interface PerMarketFeeDiscountParams {
10+
/** The CLOB Pair ID this fee holiday applies to */
11+
clobPairId: number;
12+
/** Start time */
13+
14+
startTime?: Date;
15+
/** End time */
16+
17+
endTime?: Date;
18+
/**
19+
* Percentage of normal fee to charge during the period (in parts per
20+
* million) 0 = completely free (100% discount) 500000 = charge 50% of normal
21+
* fee (50% discount) 1000000 = charge 100% of normal fee (no discount)
22+
*/
23+
24+
chargePpm: number;
25+
}
26+
/**
27+
* PerMarketFeeDiscountParams defines a fee discount period for a specific CLOB
28+
* pair
29+
*/
30+
31+
export interface PerMarketFeeDiscountParamsSDKType {
32+
/** The CLOB Pair ID this fee holiday applies to */
33+
clob_pair_id: number;
34+
/** Start time */
35+
36+
start_time?: Date;
37+
/** End time */
38+
39+
end_time?: Date;
40+
/**
41+
* Percentage of normal fee to charge during the period (in parts per
42+
* million) 0 = completely free (100% discount) 500000 = charge 50% of normal
43+
* fee (50% discount) 1000000 = charge 100% of normal fee (no discount)
44+
*/
45+
46+
charge_ppm: number;
47+
}
48+
49+
function createBasePerMarketFeeDiscountParams(): PerMarketFeeDiscountParams {
50+
return {
51+
clobPairId: 0,
52+
startTime: undefined,
53+
endTime: undefined,
54+
chargePpm: 0
55+
};
56+
}
57+
58+
export const PerMarketFeeDiscountParams = {
59+
encode(message: PerMarketFeeDiscountParams, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
60+
if (message.clobPairId !== 0) {
61+
writer.uint32(8).uint32(message.clobPairId);
62+
}
63+
64+
if (message.startTime !== undefined) {
65+
Timestamp.encode(toTimestamp(message.startTime), writer.uint32(18).fork()).ldelim();
66+
}
67+
68+
if (message.endTime !== undefined) {
69+
Timestamp.encode(toTimestamp(message.endTime), writer.uint32(26).fork()).ldelim();
70+
}
71+
72+
if (message.chargePpm !== 0) {
73+
writer.uint32(32).uint32(message.chargePpm);
74+
}
75+
76+
return writer;
77+
},
78+
79+
decode(input: _m0.Reader | Uint8Array, length?: number): PerMarketFeeDiscountParams {
80+
const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
81+
let end = length === undefined ? reader.len : reader.pos + length;
82+
const message = createBasePerMarketFeeDiscountParams();
83+
84+
while (reader.pos < end) {
85+
const tag = reader.uint32();
86+
87+
switch (tag >>> 3) {
88+
case 1:
89+
message.clobPairId = reader.uint32();
90+
break;
91+
92+
case 2:
93+
message.startTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
94+
break;
95+
96+
case 3:
97+
message.endTime = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
98+
break;
99+
100+
case 4:
101+
message.chargePpm = reader.uint32();
102+
break;
103+
104+
default:
105+
reader.skipType(tag & 7);
106+
break;
107+
}
108+
}
109+
110+
return message;
111+
},
112+
113+
fromPartial(object: DeepPartial<PerMarketFeeDiscountParams>): PerMarketFeeDiscountParams {
114+
const message = createBasePerMarketFeeDiscountParams();
115+
message.clobPairId = object.clobPairId ?? 0;
116+
message.startTime = object.startTime ?? undefined;
117+
message.endTime = object.endTime ?? undefined;
118+
message.chargePpm = object.chargePpm ?? 0;
119+
return message;
120+
}
121+
122+
};

indexer/packages/v4-protos/src/codegen/dydxprotocol/feetiers/query.lcd.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { LCDClient } from "@osmonauts/lcd";
2-
import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponseSDKType, QueryUserFeeTierRequest, QueryUserFeeTierResponseSDKType } from "./query";
2+
import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponseSDKType, QueryUserFeeTierRequest, QueryUserFeeTierResponseSDKType, QueryPerMarketFeeDiscountParamsRequest, QueryPerMarketFeeDiscountParamsResponseSDKType, QueryAllMarketFeeDiscountParamsRequest, QueryAllMarketFeeDiscountParamsResponseSDKType } from "./query";
33
export class LCDQueryClient {
44
req: LCDClient;
55

@@ -11,6 +11,8 @@ export class LCDQueryClient {
1111
this.req = requestClient;
1212
this.perpetualFeeParams = this.perpetualFeeParams.bind(this);
1313
this.userFeeTier = this.userFeeTier.bind(this);
14+
this.perMarketFeeDiscountParams = this.perMarketFeeDiscountParams.bind(this);
15+
this.allMarketFeeDiscountParams = this.allMarketFeeDiscountParams.bind(this);
1416
}
1517
/* Queries the PerpetualFeeParams. */
1618

@@ -34,5 +36,20 @@ export class LCDQueryClient {
3436
const endpoint = `dydxprotocol/v4/feetiers/user_fee_tier`;
3537
return await this.req.get<QueryUserFeeTierResponseSDKType>(endpoint, options);
3638
}
39+
/* PerMarketFeeDiscountParams queries fee discount parameters for a
40+
specific market/CLOB pair. */
41+
42+
43+
async perMarketFeeDiscountParams(params: QueryPerMarketFeeDiscountParamsRequest): Promise<QueryPerMarketFeeDiscountParamsResponseSDKType> {
44+
const endpoint = `dydxprotocol/v4/feetiers/market_fee_discount_params/${params.clobPairId}`;
45+
return await this.req.get<QueryPerMarketFeeDiscountParamsResponseSDKType>(endpoint);
46+
}
47+
/* AllMarketFeeDiscountParams queries all per-market fee discount parameters. */
48+
49+
50+
async allMarketFeeDiscountParams(_params: QueryAllMarketFeeDiscountParamsRequest = {}): Promise<QueryAllMarketFeeDiscountParamsResponseSDKType> {
51+
const endpoint = `dydxprotocol/v4/feetiers/market_fee_discount_params`;
52+
return await this.req.get<QueryAllMarketFeeDiscountParamsResponseSDKType>(endpoint);
53+
}
3754

3855
}

indexer/packages/v4-protos/src/codegen/dydxprotocol/feetiers/query.rpc.Query.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Rpc } from "../../helpers";
22
import * as _m0 from "protobufjs/minimal";
33
import { QueryClient, createProtobufRpcClient } from "@cosmjs/stargate";
4-
import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponse, QueryUserFeeTierRequest, QueryUserFeeTierResponse } from "./query";
4+
import { QueryPerpetualFeeParamsRequest, QueryPerpetualFeeParamsResponse, QueryUserFeeTierRequest, QueryUserFeeTierResponse, QueryPerMarketFeeDiscountParamsRequest, QueryPerMarketFeeDiscountParamsResponse, QueryAllMarketFeeDiscountParamsRequest, QueryAllMarketFeeDiscountParamsResponse } from "./query";
55
/** Query defines the gRPC querier service. */
66

77
export interface Query {
@@ -10,6 +10,15 @@ export interface Query {
1010
/** Queries a user's fee tier */
1111

1212
userFeeTier(request: QueryUserFeeTierRequest): Promise<QueryUserFeeTierResponse>;
13+
/**
14+
* PerMarketFeeDiscountParams queries fee discount parameters for a
15+
* specific market/CLOB pair.
16+
*/
17+
18+
perMarketFeeDiscountParams(request: QueryPerMarketFeeDiscountParamsRequest): Promise<QueryPerMarketFeeDiscountParamsResponse>;
19+
/** AllMarketFeeDiscountParams queries all per-market fee discount parameters. */
20+
21+
allMarketFeeDiscountParams(request?: QueryAllMarketFeeDiscountParamsRequest): Promise<QueryAllMarketFeeDiscountParamsResponse>;
1322
}
1423
export class QueryClientImpl implements Query {
1524
private readonly rpc: Rpc;
@@ -18,6 +27,8 @@ export class QueryClientImpl implements Query {
1827
this.rpc = rpc;
1928
this.perpetualFeeParams = this.perpetualFeeParams.bind(this);
2029
this.userFeeTier = this.userFeeTier.bind(this);
30+
this.perMarketFeeDiscountParams = this.perMarketFeeDiscountParams.bind(this);
31+
this.allMarketFeeDiscountParams = this.allMarketFeeDiscountParams.bind(this);
2132
}
2233

2334
perpetualFeeParams(request: QueryPerpetualFeeParamsRequest = {}): Promise<QueryPerpetualFeeParamsResponse> {
@@ -32,6 +43,18 @@ export class QueryClientImpl implements Query {
3243
return promise.then(data => QueryUserFeeTierResponse.decode(new _m0.Reader(data)));
3344
}
3445

46+
perMarketFeeDiscountParams(request: QueryPerMarketFeeDiscountParamsRequest): Promise<QueryPerMarketFeeDiscountParamsResponse> {
47+
const data = QueryPerMarketFeeDiscountParamsRequest.encode(request).finish();
48+
const promise = this.rpc.request("dydxprotocol.feetiers.Query", "PerMarketFeeDiscountParams", data);
49+
return promise.then(data => QueryPerMarketFeeDiscountParamsResponse.decode(new _m0.Reader(data)));
50+
}
51+
52+
allMarketFeeDiscountParams(request: QueryAllMarketFeeDiscountParamsRequest = {}): Promise<QueryAllMarketFeeDiscountParamsResponse> {
53+
const data = QueryAllMarketFeeDiscountParamsRequest.encode(request).finish();
54+
const promise = this.rpc.request("dydxprotocol.feetiers.Query", "AllMarketFeeDiscountParams", data);
55+
return promise.then(data => QueryAllMarketFeeDiscountParamsResponse.decode(new _m0.Reader(data)));
56+
}
57+
3558
}
3659
export const createRpcQueryExtension = (base: QueryClient) => {
3760
const rpc = createProtobufRpcClient(base);
@@ -43,6 +66,14 @@ export const createRpcQueryExtension = (base: QueryClient) => {
4366

4467
userFeeTier(request: QueryUserFeeTierRequest): Promise<QueryUserFeeTierResponse> {
4568
return queryService.userFeeTier(request);
69+
},
70+
71+
perMarketFeeDiscountParams(request: QueryPerMarketFeeDiscountParamsRequest): Promise<QueryPerMarketFeeDiscountParamsResponse> {
72+
return queryService.perMarketFeeDiscountParams(request);
73+
},
74+
75+
allMarketFeeDiscountParams(request?: QueryAllMarketFeeDiscountParamsRequest): Promise<QueryAllMarketFeeDiscountParamsResponse> {
76+
return queryService.allMarketFeeDiscountParams(request);
4677
}
4778

4879
};

0 commit comments

Comments
 (0)