zklighter-perps 1.0.329 → 1.0.331

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.
@@ -60,6 +60,7 @@ models/BinaryOptionMarketStats.ts
60
60
  models/Block.ts
61
61
  models/Blocks.ts
62
62
  models/BoEventPnL.ts
63
+ models/BoFeeTier.ts
63
64
  models/BoOutcomePnL.ts
64
65
  models/Bridge.ts
65
66
  models/BridgeSupportedNetwork.ts
@@ -86,6 +87,7 @@ models/ExchangeMetric.ts
86
87
  models/ExchangeStats.ts
87
88
  models/ExecuteStat.ts
88
89
  models/ExportData.ts
90
+ models/FeeTiers.ts
89
91
  models/Funding.ts
90
92
  models/FundingRate.ts
91
93
  models/FundingRates.ts
@@ -196,6 +198,7 @@ models/ReqGetEvents.ts
196
198
  models/ReqGetExchangeMetrics.ts
197
199
  models/ReqGetExecuteStats.ts
198
200
  models/ReqGetFastWithdrawInfo.ts
201
+ models/ReqGetFeeTiers.ts
199
202
  models/ReqGetFundings.ts
200
203
  models/ReqGetGeckoOrderbook.ts
201
204
  models/ReqGetGuild.ts
@@ -308,6 +311,7 @@ models/SlippageResult.ts
308
311
  models/SpotAvgEntryPrice.ts
309
312
  models/SpotMarketStats.ts
310
313
  models/SpotOrderBookDetail.ts
314
+ models/StakingFeeTier.ts
311
315
  models/Status.ts
312
316
  models/StockBalanceSheet.ts
313
317
  models/StockCashFlowStatement.ts
@@ -352,6 +356,7 @@ models/UpDownCandle.ts
352
356
  models/UpDownPrice.ts
353
357
  models/UpcomingEarning.ts
354
358
  models/UpcomingEarnings.ts
359
+ models/UserFeeTier.ts
355
360
  models/UserReferrals.ts
356
361
  models/ValidatorInfo.ts
357
362
  models/WithdrawHistory.ts
@@ -22,6 +22,7 @@ import type {
22
22
  AccountPnLV2,
23
23
  AirdropAllocations,
24
24
  DetailedAccounts,
25
+ FeeTiers,
25
26
  IsWhitelisted,
26
27
  L1Metadata,
27
28
  Leaderboard,
@@ -62,6 +63,8 @@ import {
62
63
  AirdropAllocationsToJSON,
63
64
  DetailedAccountsFromJSON,
64
65
  DetailedAccountsToJSON,
66
+ FeeTiersFromJSON,
67
+ FeeTiersToJSON,
65
68
  IsWhitelistedFromJSON,
66
69
  IsWhitelistedToJSON,
67
70
  L1MetadataFromJSON,
@@ -164,21 +167,15 @@ export interface ChangeAccountTierRequest {
164
167
  auth?: string;
165
168
  }
166
169
 
167
- export interface EquityHistoryPnlRequest {
168
- by: EquityHistoryPnlByEnum;
169
- value: string;
170
- resolution: EquityHistoryPnlResolutionEnum;
171
- start_timestamp: number;
172
- end_timestamp: number;
173
- count_back: number;
174
- ignore_transfers?: boolean;
175
- }
176
-
177
170
  export interface FaucetRequest {
178
171
  l1_address: string;
179
172
  do_l1_transfer: boolean;
180
173
  }
181
174
 
175
+ export interface FeeTiersRequest {
176
+ filter?: FeeTiersFilterEnum;
177
+ }
178
+
182
179
  export interface GetMakerOnlyApiKeysRequest {
183
180
  account_index: number;
184
181
  authorization?: string;
@@ -416,7 +413,7 @@ export class AccountApi extends runtime.BaseAPI {
416
413
  }
417
414
 
418
415
  /**
419
- * Get account limits
416
+ * Get account limits. bo_fee_rate is the account-wide BO multiplier: staking multiplier times BO volume multiplier (0.8 * 0.9 = 0.72, a 28% discount). Apply it to the market maker/taker fees, then scale by 1 - trade_price / settlement_cap. If no staking discount tiers are configured, legacy BO tier selection remains.
420
417
  * accountLimits
421
418
  */
422
419
  async accountLimitsRaw(requestParameters: AccountLimitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountLimits>> {
@@ -454,7 +451,7 @@ export class AccountApi extends runtime.BaseAPI {
454
451
  }
455
452
 
456
453
  /**
457
- * Get account limits
454
+ * Get account limits. bo_fee_rate is the account-wide BO multiplier: staking multiplier times BO volume multiplier (0.8 * 0.9 = 0.72, a 28% discount). Apply it to the market maker/taker fees, then scale by 1 - trade_price / settlement_cap. If no staking discount tiers are configured, legacy BO tier selection remains.
458
455
  * accountLimits
459
456
  */
460
457
  async accountLimits(requestParameters: AccountLimitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountLimits> {
@@ -815,150 +812,84 @@ export class AccountApi extends runtime.BaseAPI {
815
812
  }
816
813
 
817
814
  /**
818
- * Shadow account PnL chart computed from equity_history
819
- * equity_history_pnl
815
+ * Request funds from faucet
816
+ * faucet
820
817
  */
821
- async equityHistoryPnlRaw(requestParameters: EquityHistoryPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountPnL>> {
822
- if (requestParameters['by'] == null) {
823
- throw new runtime.RequiredError(
824
- 'by',
825
- 'Required parameter "by" was null or undefined when calling equityHistoryPnl().'
826
- );
827
- }
828
-
829
- if (requestParameters['value'] == null) {
830
- throw new runtime.RequiredError(
831
- 'value',
832
- 'Required parameter "value" was null or undefined when calling equityHistoryPnl().'
833
- );
834
- }
835
-
836
- if (requestParameters['resolution'] == null) {
837
- throw new runtime.RequiredError(
838
- 'resolution',
839
- 'Required parameter "resolution" was null or undefined when calling equityHistoryPnl().'
840
- );
841
- }
842
-
843
- if (requestParameters['start_timestamp'] == null) {
844
- throw new runtime.RequiredError(
845
- 'start_timestamp',
846
- 'Required parameter "start_timestamp" was null or undefined when calling equityHistoryPnl().'
847
- );
848
- }
849
-
850
- if (requestParameters['end_timestamp'] == null) {
818
+ async faucetRaw(requestParameters: FaucetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ResultCode>> {
819
+ if (requestParameters['l1_address'] == null) {
851
820
  throw new runtime.RequiredError(
852
- 'end_timestamp',
853
- 'Required parameter "end_timestamp" was null or undefined when calling equityHistoryPnl().'
821
+ 'l1_address',
822
+ 'Required parameter "l1_address" was null or undefined when calling faucet().'
854
823
  );
855
824
  }
856
825
 
857
- if (requestParameters['count_back'] == null) {
826
+ if (requestParameters['do_l1_transfer'] == null) {
858
827
  throw new runtime.RequiredError(
859
- 'count_back',
860
- 'Required parameter "count_back" was null or undefined when calling equityHistoryPnl().'
828
+ 'do_l1_transfer',
829
+ 'Required parameter "do_l1_transfer" was null or undefined when calling faucet().'
861
830
  );
862
831
  }
863
832
 
864
833
  const queryParameters: any = {};
865
834
 
866
- if (requestParameters['by'] != null) {
867
- queryParameters['by'] = requestParameters['by'];
868
- }
869
-
870
- if (requestParameters['value'] != null) {
871
- queryParameters['value'] = requestParameters['value'];
872
- }
873
-
874
- if (requestParameters['resolution'] != null) {
875
- queryParameters['resolution'] = requestParameters['resolution'];
876
- }
877
-
878
- if (requestParameters['start_timestamp'] != null) {
879
- queryParameters['start_timestamp'] = requestParameters['start_timestamp'];
880
- }
881
-
882
- if (requestParameters['end_timestamp'] != null) {
883
- queryParameters['end_timestamp'] = requestParameters['end_timestamp'];
884
- }
885
-
886
- if (requestParameters['count_back'] != null) {
887
- queryParameters['count_back'] = requestParameters['count_back'];
835
+ if (requestParameters['l1_address'] != null) {
836
+ queryParameters['l1_address'] = requestParameters['l1_address'];
888
837
  }
889
838
 
890
- if (requestParameters['ignore_transfers'] != null) {
891
- queryParameters['ignore_transfers'] = requestParameters['ignore_transfers'];
839
+ if (requestParameters['do_l1_transfer'] != null) {
840
+ queryParameters['do_l1_transfer'] = requestParameters['do_l1_transfer'];
892
841
  }
893
842
 
894
843
  const headerParameters: runtime.HTTPHeaders = {};
895
844
 
896
845
  const response = await this.request({
897
- path: `/api/v1/equity_history/pnl`,
846
+ path: `/api/v1/faucet`,
898
847
  method: 'GET',
899
848
  headers: headerParameters,
900
849
  query: queryParameters,
901
850
  }, initOverrides);
902
851
 
903
- return new runtime.JSONApiResponse(response, (jsonValue) => AccountPnLFromJSON(jsonValue));
852
+ return new runtime.JSONApiResponse(response, (jsonValue) => ResultCodeFromJSON(jsonValue));
904
853
  }
905
854
 
906
855
  /**
907
- * Shadow account PnL chart computed from equity_history
908
- * equity_history_pnl
856
+ * Request funds from faucet
857
+ * faucet
909
858
  */
910
- async equityHistoryPnl(requestParameters: EquityHistoryPnlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountPnL> {
911
- const response = await this.equityHistoryPnlRaw(requestParameters, initOverrides);
859
+ async faucet(requestParameters: FaucetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ResultCode> {
860
+ const response = await this.faucetRaw(requestParameters, initOverrides);
912
861
  return await response.value();
913
862
  }
914
863
 
915
864
  /**
916
- * Request funds from faucet
917
- * faucet
865
+ * Get fee tiers. filter=perps|spot returns the regular user tiers (both market types share them). filter=bo returns BO volume tiers and LIT staking discount tiers; filter=all returns everything. An account\'s BO multiplier is the BO tier fee_rate times the staking fee_rate, applied to each BO market\'s maker/taker fee (see /api/v1/events) and then scaled by 1 - trade_price / settlement_cap.
866
+ * feeTiers
918
867
  */
919
- async faucetRaw(requestParameters: FaucetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ResultCode>> {
920
- if (requestParameters['l1_address'] == null) {
921
- throw new runtime.RequiredError(
922
- 'l1_address',
923
- 'Required parameter "l1_address" was null or undefined when calling faucet().'
924
- );
925
- }
926
-
927
- if (requestParameters['do_l1_transfer'] == null) {
928
- throw new runtime.RequiredError(
929
- 'do_l1_transfer',
930
- 'Required parameter "do_l1_transfer" was null or undefined when calling faucet().'
931
- );
932
- }
933
-
868
+ async feeTiersRaw(requestParameters: FeeTiersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FeeTiers>> {
934
869
  const queryParameters: any = {};
935
870
 
936
- if (requestParameters['l1_address'] != null) {
937
- queryParameters['l1_address'] = requestParameters['l1_address'];
938
- }
939
-
940
- if (requestParameters['do_l1_transfer'] != null) {
941
- queryParameters['do_l1_transfer'] = requestParameters['do_l1_transfer'];
871
+ if (requestParameters['filter'] != null) {
872
+ queryParameters['filter'] = requestParameters['filter'];
942
873
  }
943
874
 
944
875
  const headerParameters: runtime.HTTPHeaders = {};
945
876
 
946
877
  const response = await this.request({
947
- path: `/api/v1/faucet`,
878
+ path: `/api/v1/feeTiers`,
948
879
  method: 'GET',
949
880
  headers: headerParameters,
950
881
  query: queryParameters,
951
882
  }, initOverrides);
952
883
 
953
- return new runtime.JSONApiResponse(response, (jsonValue) => ResultCodeFromJSON(jsonValue));
884
+ return new runtime.JSONApiResponse(response, (jsonValue) => FeeTiersFromJSON(jsonValue));
954
885
  }
955
886
 
956
887
  /**
957
- * Request funds from faucet
958
- * faucet
888
+ * Get fee tiers. filter=perps|spot returns the regular user tiers (both market types share them). filter=bo returns BO volume tiers and LIT staking discount tiers; filter=all returns everything. An account\'s BO multiplier is the BO tier fee_rate times the staking fee_rate, applied to each BO market\'s maker/taker fee (see /api/v1/events) and then scaled by 1 - trade_price / settlement_cap.
889
+ * feeTiers
959
890
  */
960
- async faucet(requestParameters: FaucetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ResultCode> {
961
- const response = await this.faucetRaw(requestParameters, initOverrides);
891
+ async feeTiers(requestParameters: FeeTiersRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FeeTiers> {
892
+ const response = await this.feeTiersRaw(requestParameters, initOverrides);
962
893
  return await response.value();
963
894
  }
964
895
 
@@ -2489,22 +2420,13 @@ export type AccountMetadataByEnum = typeof AccountMetadataByEnum[keyof typeof Ac
2489
2420
  /**
2490
2421
  * @export
2491
2422
  */
2492
- export const EquityHistoryPnlByEnum = {
2493
- Index: 'index'
2494
- } as const;
2495
- export type EquityHistoryPnlByEnum = typeof EquityHistoryPnlByEnum[keyof typeof EquityHistoryPnlByEnum];
2496
- /**
2497
- * @export
2498
- */
2499
- export const EquityHistoryPnlResolutionEnum = {
2500
- _1m: '1m',
2501
- _5m: '5m',
2502
- _15m: '15m',
2503
- _1h: '1h',
2504
- _4h: '4h',
2505
- _1d: '1d'
2423
+ export const FeeTiersFilterEnum = {
2424
+ All: 'all',
2425
+ Bo: 'bo',
2426
+ Perps: 'perps',
2427
+ Spot: 'spot'
2506
2428
  } as const;
2507
- export type EquityHistoryPnlResolutionEnum = typeof EquityHistoryPnlResolutionEnum[keyof typeof EquityHistoryPnlResolutionEnum];
2429
+ export type FeeTiersFilterEnum = typeof FeeTiersFilterEnum[keyof typeof FeeTiersFilterEnum];
2508
2430
  /**
2509
2431
  * @export
2510
2432
  */
@@ -61,6 +61,18 @@ export interface AccountLimits {
61
61
  * @memberof AccountLimits
62
62
  */
63
63
  user_tier_name: string;
64
+ /**
65
+ *
66
+ * @type {string}
67
+ * @memberof AccountLimits
68
+ */
69
+ bo_user_tier_name: string;
70
+ /**
71
+ * Product of the staking and BO volume multipliers; 0.72 means a 28% discount.
72
+ * @type {number}
73
+ * @memberof AccountLimits
74
+ */
75
+ bo_fee_rate: number;
64
76
  /**
65
77
  *
66
78
  * @type {number}
@@ -103,6 +115,8 @@ export function instanceOfAccountLimits(value: object): value is AccountLimits {
103
115
  if (!('user_tier' in value) || value['user_tier'] === undefined) return false;
104
116
  if (!('can_create_public_pool' in value) || value['can_create_public_pool'] === undefined) return false;
105
117
  if (!('user_tier_name' in value) || value['user_tier_name'] === undefined) return false;
118
+ if (!('bo_user_tier_name' in value) || value['bo_user_tier_name'] === undefined) return false;
119
+ if (!('bo_fee_rate' in value) || value['bo_fee_rate'] === undefined) return false;
106
120
  if (!('current_maker_fee_tick' in value) || value['current_maker_fee_tick'] === undefined) return false;
107
121
  if (!('current_taker_fee_tick' in value) || value['current_taker_fee_tick'] === undefined) return false;
108
122
  if (!('leased_lit' in value) || value['leased_lit'] === undefined) return false;
@@ -127,6 +141,8 @@ export function AccountLimitsFromJSONTyped(json: any, ignoreDiscriminator: boole
127
141
  'user_tier': json['user_tier'],
128
142
  'can_create_public_pool': json['can_create_public_pool'],
129
143
  'user_tier_name': json['user_tier_name'],
144
+ 'bo_user_tier_name': json['bo_user_tier_name'],
145
+ 'bo_fee_rate': json['bo_fee_rate'],
130
146
  'current_maker_fee_tick': json['current_maker_fee_tick'],
131
147
  'current_taker_fee_tick': json['current_taker_fee_tick'],
132
148
  'leased_lit': json['leased_lit'],
@@ -148,6 +164,8 @@ export function AccountLimitsToJSON(value?: AccountLimits | null): any {
148
164
  'user_tier': value['user_tier'],
149
165
  'can_create_public_pool': value['can_create_public_pool'],
150
166
  'user_tier_name': value['user_tier_name'],
167
+ 'bo_user_tier_name': value['bo_user_tier_name'],
168
+ 'bo_fee_rate': value['bo_fee_rate'],
151
169
  'current_maker_fee_tick': value['current_maker_fee_tick'],
152
170
  'current_taker_fee_tick': value['current_taker_fee_tick'],
153
171
  'leased_lit': value['leased_lit'],
@@ -0,0 +1,79 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ *
5
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
6
+ *
7
+ * The version of the OpenAPI document:
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface BoFeeTier
20
+ */
21
+ export interface BoFeeTier {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof BoFeeTier
26
+ */
27
+ name: string;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @memberof BoFeeTier
32
+ */
33
+ required_volume: number;
34
+ /**
35
+ *
36
+ * @type {number}
37
+ * @memberof BoFeeTier
38
+ */
39
+ fee_rate: number;
40
+ }
41
+
42
+ /**
43
+ * Check if a given object implements the BoFeeTier interface.
44
+ */
45
+ export function instanceOfBoFeeTier(value: object): value is BoFeeTier {
46
+ if (!('name' in value) || value['name'] === undefined) return false;
47
+ if (!('required_volume' in value) || value['required_volume'] === undefined) return false;
48
+ if (!('fee_rate' in value) || value['fee_rate'] === undefined) return false;
49
+ return true;
50
+ }
51
+
52
+ export function BoFeeTierFromJSON(json: any): BoFeeTier {
53
+ return BoFeeTierFromJSONTyped(json, false);
54
+ }
55
+
56
+ export function BoFeeTierFromJSONTyped(json: any, ignoreDiscriminator: boolean): BoFeeTier {
57
+ if (json == null) {
58
+ return json;
59
+ }
60
+ return {
61
+
62
+ 'name': json['name'],
63
+ 'required_volume': json['required_volume'],
64
+ 'fee_rate': json['fee_rate'],
65
+ };
66
+ }
67
+
68
+ export function BoFeeTierToJSON(value?: BoFeeTier | null): any {
69
+ if (value == null) {
70
+ return value;
71
+ }
72
+ return {
73
+
74
+ 'name': value['name'],
75
+ 'required_volume': value['required_volume'],
76
+ 'fee_rate': value['fee_rate'],
77
+ };
78
+ }
79
+
@@ -0,0 +1,98 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ *
5
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
6
+ *
7
+ * The version of the OpenAPI document:
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ import type { BoFeeTier } from './BoFeeTier';
17
+ import {
18
+ BoFeeTierFromJSON,
19
+ BoFeeTierFromJSONTyped,
20
+ BoFeeTierToJSON,
21
+ } from './BoFeeTier';
22
+ import type { StakingFeeTier } from './StakingFeeTier';
23
+ import {
24
+ StakingFeeTierFromJSON,
25
+ StakingFeeTierFromJSONTyped,
26
+ StakingFeeTierToJSON,
27
+ } from './StakingFeeTier';
28
+ import type { UserFeeTier } from './UserFeeTier';
29
+ import {
30
+ UserFeeTierFromJSON,
31
+ UserFeeTierFromJSONTyped,
32
+ UserFeeTierToJSON,
33
+ } from './UserFeeTier';
34
+
35
+ /**
36
+ *
37
+ * @export
38
+ * @interface FeeTiers
39
+ */
40
+ export interface FeeTiers {
41
+ /**
42
+ *
43
+ * @type {Array<UserFeeTier>}
44
+ * @memberof FeeTiers
45
+ */
46
+ user_tiers: Array<UserFeeTier>;
47
+ /**
48
+ *
49
+ * @type {Array<BoFeeTier>}
50
+ * @memberof FeeTiers
51
+ */
52
+ bo_tiers: Array<BoFeeTier>;
53
+ /**
54
+ *
55
+ * @type {Array<StakingFeeTier>}
56
+ * @memberof FeeTiers
57
+ */
58
+ staking_tiers: Array<StakingFeeTier>;
59
+ }
60
+
61
+ /**
62
+ * Check if a given object implements the FeeTiers interface.
63
+ */
64
+ export function instanceOfFeeTiers(value: object): value is FeeTiers {
65
+ if (!('user_tiers' in value) || value['user_tiers'] === undefined) return false;
66
+ if (!('bo_tiers' in value) || value['bo_tiers'] === undefined) return false;
67
+ if (!('staking_tiers' in value) || value['staking_tiers'] === undefined) return false;
68
+ return true;
69
+ }
70
+
71
+ export function FeeTiersFromJSON(json: any): FeeTiers {
72
+ return FeeTiersFromJSONTyped(json, false);
73
+ }
74
+
75
+ export function FeeTiersFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeeTiers {
76
+ if (json == null) {
77
+ return json;
78
+ }
79
+ return {
80
+
81
+ 'user_tiers': ((json['user_tiers'] as Array<any>).map(UserFeeTierFromJSON)),
82
+ 'bo_tiers': ((json['bo_tiers'] as Array<any>).map(BoFeeTierFromJSON)),
83
+ 'staking_tiers': ((json['staking_tiers'] as Array<any>).map(StakingFeeTierFromJSON)),
84
+ };
85
+ }
86
+
87
+ export function FeeTiersToJSON(value?: FeeTiers | null): any {
88
+ if (value == null) {
89
+ return value;
90
+ }
91
+ return {
92
+
93
+ 'user_tiers': ((value['user_tiers'] as Array<any>).map(UserFeeTierToJSON)),
94
+ 'bo_tiers': ((value['bo_tiers'] as Array<any>).map(BoFeeTierToJSON)),
95
+ 'staking_tiers': ((value['staking_tiers'] as Array<any>).map(StakingFeeTierToJSON)),
96
+ };
97
+ }
98
+
@@ -0,0 +1,73 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ *
5
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
6
+ *
7
+ * The version of the OpenAPI document:
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface ReqGetFeeTiers
20
+ */
21
+ export interface ReqGetFeeTiers {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof ReqGetFeeTiers
26
+ */
27
+ filter?: ReqGetFeeTiersFilterEnum;
28
+ }
29
+
30
+
31
+ /**
32
+ * @export
33
+ */
34
+ export const ReqGetFeeTiersFilterEnum = {
35
+ All: 'all',
36
+ Bo: 'bo',
37
+ Perps: 'perps',
38
+ Spot: 'spot'
39
+ } as const;
40
+ export type ReqGetFeeTiersFilterEnum = typeof ReqGetFeeTiersFilterEnum[keyof typeof ReqGetFeeTiersFilterEnum];
41
+
42
+
43
+ /**
44
+ * Check if a given object implements the ReqGetFeeTiers interface.
45
+ */
46
+ export function instanceOfReqGetFeeTiers(value: object): value is ReqGetFeeTiers {
47
+ return true;
48
+ }
49
+
50
+ export function ReqGetFeeTiersFromJSON(json: any): ReqGetFeeTiers {
51
+ return ReqGetFeeTiersFromJSONTyped(json, false);
52
+ }
53
+
54
+ export function ReqGetFeeTiersFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReqGetFeeTiers {
55
+ if (json == null) {
56
+ return json;
57
+ }
58
+ return {
59
+
60
+ 'filter': json['filter'] == null ? undefined : json['filter'],
61
+ };
62
+ }
63
+
64
+ export function ReqGetFeeTiersToJSON(value?: ReqGetFeeTiers | null): any {
65
+ if (value == null) {
66
+ return value;
67
+ }
68
+ return {
69
+
70
+ 'filter': value['filter'],
71
+ };
72
+ }
73
+
@@ -0,0 +1,79 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ *
5
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
6
+ *
7
+ * The version of the OpenAPI document:
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface StakingFeeTier
20
+ */
21
+ export interface StakingFeeTier {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof StakingFeeTier
26
+ */
27
+ name: string;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @memberof StakingFeeTier
32
+ */
33
+ required_lit_stakes: number;
34
+ /**
35
+ *
36
+ * @type {number}
37
+ * @memberof StakingFeeTier
38
+ */
39
+ fee_rate: number;
40
+ }
41
+
42
+ /**
43
+ * Check if a given object implements the StakingFeeTier interface.
44
+ */
45
+ export function instanceOfStakingFeeTier(value: object): value is StakingFeeTier {
46
+ if (!('name' in value) || value['name'] === undefined) return false;
47
+ if (!('required_lit_stakes' in value) || value['required_lit_stakes'] === undefined) return false;
48
+ if (!('fee_rate' in value) || value['fee_rate'] === undefined) return false;
49
+ return true;
50
+ }
51
+
52
+ export function StakingFeeTierFromJSON(json: any): StakingFeeTier {
53
+ return StakingFeeTierFromJSONTyped(json, false);
54
+ }
55
+
56
+ export function StakingFeeTierFromJSONTyped(json: any, ignoreDiscriminator: boolean): StakingFeeTier {
57
+ if (json == null) {
58
+ return json;
59
+ }
60
+ return {
61
+
62
+ 'name': json['name'],
63
+ 'required_lit_stakes': json['required_lit_stakes'],
64
+ 'fee_rate': json['fee_rate'],
65
+ };
66
+ }
67
+
68
+ export function StakingFeeTierToJSON(value?: StakingFeeTier | null): any {
69
+ if (value == null) {
70
+ return value;
71
+ }
72
+ return {
73
+
74
+ 'name': value['name'],
75
+ 'required_lit_stakes': value['required_lit_stakes'],
76
+ 'fee_rate': value['fee_rate'],
77
+ };
78
+ }
79
+
@@ -0,0 +1,106 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ *
5
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
6
+ *
7
+ * The version of the OpenAPI document:
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface UserFeeTier
20
+ */
21
+ export interface UserFeeTier {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof UserFeeTier
26
+ */
27
+ name: string;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @memberof UserFeeTier
32
+ */
33
+ level: number;
34
+ /**
35
+ *
36
+ * @type {number}
37
+ * @memberof UserFeeTier
38
+ */
39
+ maker_fee_ticks: number;
40
+ /**
41
+ *
42
+ * @type {number}
43
+ * @memberof UserFeeTier
44
+ */
45
+ taker_fee_ticks: number;
46
+ /**
47
+ *
48
+ * @type {number}
49
+ * @memberof UserFeeTier
50
+ */
51
+ required_lit_stakes: number;
52
+ /**
53
+ *
54
+ * @type {number}
55
+ * @memberof UserFeeTier
56
+ */
57
+ required_volume: number;
58
+ }
59
+
60
+ /**
61
+ * Check if a given object implements the UserFeeTier interface.
62
+ */
63
+ export function instanceOfUserFeeTier(value: object): value is UserFeeTier {
64
+ if (!('name' in value) || value['name'] === undefined) return false;
65
+ if (!('level' in value) || value['level'] === undefined) return false;
66
+ if (!('maker_fee_ticks' in value) || value['maker_fee_ticks'] === undefined) return false;
67
+ if (!('taker_fee_ticks' in value) || value['taker_fee_ticks'] === undefined) return false;
68
+ if (!('required_lit_stakes' in value) || value['required_lit_stakes'] === undefined) return false;
69
+ if (!('required_volume' in value) || value['required_volume'] === undefined) return false;
70
+ return true;
71
+ }
72
+
73
+ export function UserFeeTierFromJSON(json: any): UserFeeTier {
74
+ return UserFeeTierFromJSONTyped(json, false);
75
+ }
76
+
77
+ export function UserFeeTierFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserFeeTier {
78
+ if (json == null) {
79
+ return json;
80
+ }
81
+ return {
82
+
83
+ 'name': json['name'],
84
+ 'level': json['level'],
85
+ 'maker_fee_ticks': json['maker_fee_ticks'],
86
+ 'taker_fee_ticks': json['taker_fee_ticks'],
87
+ 'required_lit_stakes': json['required_lit_stakes'],
88
+ 'required_volume': json['required_volume'],
89
+ };
90
+ }
91
+
92
+ export function UserFeeTierToJSON(value?: UserFeeTier | null): any {
93
+ if (value == null) {
94
+ return value;
95
+ }
96
+ return {
97
+
98
+ 'name': value['name'],
99
+ 'level': value['level'],
100
+ 'maker_fee_ticks': value['maker_fee_ticks'],
101
+ 'taker_fee_ticks': value['taker_fee_ticks'],
102
+ 'required_lit_stakes': value['required_lit_stakes'],
103
+ 'required_volume': value['required_volume'],
104
+ };
105
+ }
106
+
package/models/index.ts CHANGED
@@ -32,6 +32,7 @@ export * from './BinaryOptionMarketStats';
32
32
  export * from './Block';
33
33
  export * from './Blocks';
34
34
  export * from './BoEventPnL';
35
+ export * from './BoFeeTier';
35
36
  export * from './BoOutcomePnL';
36
37
  export * from './Bridge';
37
38
  export * from './BridgeSupportedNetwork';
@@ -58,6 +59,7 @@ export * from './ExchangeMetric';
58
59
  export * from './ExchangeStats';
59
60
  export * from './ExecuteStat';
60
61
  export * from './ExportData';
62
+ export * from './FeeTiers';
61
63
  export * from './Funding';
62
64
  export * from './FundingRate';
63
65
  export * from './FundingRates';
@@ -168,6 +170,7 @@ export * from './ReqGetEvents';
168
170
  export * from './ReqGetExchangeMetrics';
169
171
  export * from './ReqGetExecuteStats';
170
172
  export * from './ReqGetFastWithdrawInfo';
173
+ export * from './ReqGetFeeTiers';
171
174
  export * from './ReqGetFundings';
172
175
  export * from './ReqGetGeckoOrderbook';
173
176
  export * from './ReqGetGuild';
@@ -280,6 +283,7 @@ export * from './SlippageResult';
280
283
  export * from './SpotAvgEntryPrice';
281
284
  export * from './SpotMarketStats';
282
285
  export * from './SpotOrderBookDetail';
286
+ export * from './StakingFeeTier';
283
287
  export * from './Status';
284
288
  export * from './StockBalanceSheet';
285
289
  export * from './StockCashFlowStatement';
@@ -324,6 +328,7 @@ export * from './UpDownCandle';
324
328
  export * from './UpDownPrice';
325
329
  export * from './UpcomingEarning';
326
330
  export * from './UpcomingEarnings';
331
+ export * from './UserFeeTier';
327
332
  export * from './UserReferrals';
328
333
  export * from './ValidatorInfo';
329
334
  export * from './WithdrawHistory';
package/openapi.json CHANGED
@@ -316,7 +316,7 @@
316
316
  "consumes": [
317
317
  "multipart/form-data"
318
318
  ],
319
- "description": "Get account limits"
319
+ "description": "Get account limits. bo_fee_rate is the account-wide BO multiplier: staking multiplier times BO volume multiplier (0.8 * 0.9 = 0.72, a 28% discount). Apply it to the market maker/taker fees, then scale by 1 - trade_price / settlement_cap. If no staking discount tiers are configured, legacy BO tier selection remains."
320
320
  }
321
321
  },
322
322
  "/api/v1/accountMetadata": {
@@ -1544,97 +1544,6 @@
1544
1544
  "description": "Get deposit supporting networks"
1545
1545
  }
1546
1546
  },
1547
- "/api/v1/equity_history/pnl": {
1548
- "get": {
1549
- "summary": "equity_history_pnl",
1550
- "operationId": "equity_history_pnl",
1551
- "responses": {
1552
- "200": {
1553
- "description": "A successful response.",
1554
- "schema": {
1555
- "$ref": "#/definitions/AccountPnL"
1556
- }
1557
- },
1558
- "400": {
1559
- "description": "Bad request",
1560
- "schema": {
1561
- "$ref": "#/definitions/ResultCode"
1562
- }
1563
- }
1564
- },
1565
- "parameters": [
1566
- {
1567
- "name": "by",
1568
- "in": "query",
1569
- "required": true,
1570
- "type": "string",
1571
- "enum": [
1572
- "index"
1573
- ]
1574
- },
1575
- {
1576
- "name": "value",
1577
- "in": "query",
1578
- "required": true,
1579
- "type": "string"
1580
- },
1581
- {
1582
- "name": "resolution",
1583
- "in": "query",
1584
- "required": true,
1585
- "type": "string",
1586
- "enum": [
1587
- "1m",
1588
- "5m",
1589
- "15m",
1590
- "1h",
1591
- "4h",
1592
- "1d"
1593
- ]
1594
- },
1595
- {
1596
- "name": "start_timestamp",
1597
- "in": "query",
1598
- "required": true,
1599
- "type": "integer",
1600
- "format": "int64",
1601
- "minimum": 0,
1602
- "maximum": 5000000000000
1603
- },
1604
- {
1605
- "name": "end_timestamp",
1606
- "in": "query",
1607
- "required": true,
1608
- "type": "integer",
1609
- "format": "int64",
1610
- "minimum": 0,
1611
- "maximum": 5000000000000
1612
- },
1613
- {
1614
- "name": "count_back",
1615
- "in": "query",
1616
- "required": true,
1617
- "type": "integer",
1618
- "format": "int64"
1619
- },
1620
- {
1621
- "name": "ignore_transfers",
1622
- "in": "query",
1623
- "required": false,
1624
- "type": "boolean",
1625
- "format": "boolean",
1626
- "default": "false"
1627
- }
1628
- ],
1629
- "tags": [
1630
- "account"
1631
- ],
1632
- "consumes": [
1633
- "multipart/form-data"
1634
- ],
1635
- "description": "Shadow account PnL chart computed from equity_history"
1636
- }
1637
- },
1638
1547
  "/api/v1/event/create": {
1639
1548
  "post": {
1640
1549
  "summary": "event_create",
@@ -2392,6 +2301,48 @@
2392
2301
  "description": "Request funds from faucet"
2393
2302
  }
2394
2303
  },
2304
+ "/api/v1/feeTiers": {
2305
+ "get": {
2306
+ "summary": "feeTiers",
2307
+ "operationId": "feeTiers",
2308
+ "responses": {
2309
+ "200": {
2310
+ "description": "A successful response.",
2311
+ "schema": {
2312
+ "$ref": "#/definitions/FeeTiers"
2313
+ }
2314
+ },
2315
+ "400": {
2316
+ "description": "Bad request",
2317
+ "schema": {
2318
+ "$ref": "#/definitions/ResultCode"
2319
+ }
2320
+ }
2321
+ },
2322
+ "parameters": [
2323
+ {
2324
+ "name": "filter",
2325
+ "in": "query",
2326
+ "required": false,
2327
+ "type": "string",
2328
+ "enum": [
2329
+ "all",
2330
+ "bo",
2331
+ "perps",
2332
+ "spot"
2333
+ ],
2334
+ "default": "all"
2335
+ }
2336
+ ],
2337
+ "tags": [
2338
+ "account"
2339
+ ],
2340
+ "consumes": [
2341
+ "multipart/form-data"
2342
+ ],
2343
+ "description": "Get fee tiers. filter=perps|spot returns the regular user tiers (both market types share them). filter=bo returns BO volume tiers and LIT staking discount tiers; filter=all returns everything. An account's BO multiplier is the BO tier fee_rate times the staking fee_rate, applied to each BO market's maker/taker fee (see /api/v1/events) and then scaled by 1 - trade_price / settlement_cap."
2344
+ }
2345
+ },
2395
2346
  "/api/v1/funding-rates": {
2396
2347
  "get": {
2397
2348
  "summary": "funding-rates",
@@ -7597,6 +7548,16 @@
7597
7548
  "type": "string",
7598
7549
  "example": "standard"
7599
7550
  },
7551
+ "bo_user_tier_name": {
7552
+ "type": "string",
7553
+ "example": "bo_standard"
7554
+ },
7555
+ "bo_fee_rate": {
7556
+ "type": "number",
7557
+ "format": "double",
7558
+ "example": "0.72",
7559
+ "description": " Product of the staking and BO volume multipliers; 0.72 means a 28% discount."
7560
+ },
7600
7561
  "current_maker_fee_tick": {
7601
7562
  "type": "integer",
7602
7563
  "format": "int32",
@@ -7626,6 +7587,8 @@
7626
7587
  "user_tier",
7627
7588
  "can_create_public_pool",
7628
7589
  "user_tier_name",
7590
+ "bo_user_tier_name",
7591
+ "bo_fee_rate",
7629
7592
  "current_maker_fee_tick",
7630
7593
  "current_taker_fee_tick",
7631
7594
  "leased_lit",
@@ -8862,6 +8825,31 @@
8862
8825
  "outcomes"
8863
8826
  ]
8864
8827
  },
8828
+ "BoFeeTier": {
8829
+ "type": "object",
8830
+ "properties": {
8831
+ "name": {
8832
+ "type": "string",
8833
+ "example": "level1"
8834
+ },
8835
+ "required_volume": {
8836
+ "type": "integer",
8837
+ "format": "int64",
8838
+ "example": "5000000"
8839
+ },
8840
+ "fee_rate": {
8841
+ "type": "number",
8842
+ "format": "double",
8843
+ "example": "0.9"
8844
+ }
8845
+ },
8846
+ "title": "BoFeeTier",
8847
+ "required": [
8848
+ "name",
8849
+ "required_volume",
8850
+ "fee_rate"
8851
+ ]
8852
+ },
8865
8853
  "BoOutcomePnL": {
8866
8854
  "type": "object",
8867
8855
  "properties": {
@@ -10395,6 +10383,35 @@
10395
10383
  "data_url"
10396
10384
  ]
10397
10385
  },
10386
+ "FeeTiers": {
10387
+ "type": "object",
10388
+ "properties": {
10389
+ "user_tiers": {
10390
+ "type": "array",
10391
+ "items": {
10392
+ "$ref": "#/definitions/UserFeeTier"
10393
+ }
10394
+ },
10395
+ "bo_tiers": {
10396
+ "type": "array",
10397
+ "items": {
10398
+ "$ref": "#/definitions/BoFeeTier"
10399
+ }
10400
+ },
10401
+ "staking_tiers": {
10402
+ "type": "array",
10403
+ "items": {
10404
+ "$ref": "#/definitions/StakingFeeTier"
10405
+ }
10406
+ }
10407
+ },
10408
+ "title": "FeeTiers",
10409
+ "required": [
10410
+ "user_tiers",
10411
+ "bo_tiers",
10412
+ "staking_tiers"
10413
+ ]
10414
+ },
10398
10415
  "Funding": {
10399
10416
  "type": "object",
10400
10417
  "properties": {
@@ -15832,6 +15849,22 @@
15832
15849
  "account_index"
15833
15850
  ]
15834
15851
  },
15852
+ "ReqGetFeeTiers": {
15853
+ "type": "object",
15854
+ "properties": {
15855
+ "filter": {
15856
+ "type": "string",
15857
+ "enum": [
15858
+ "all",
15859
+ "bo",
15860
+ "perps",
15861
+ "spot"
15862
+ ],
15863
+ "default": "all"
15864
+ }
15865
+ },
15866
+ "title": "ReqGetFeeTiers"
15867
+ },
15835
15868
  "ReqGetFundings": {
15836
15869
  "type": "object",
15837
15870
  "properties": {
@@ -20046,6 +20079,31 @@
20046
20079
  "daily_chart"
20047
20080
  ]
20048
20081
  },
20082
+ "StakingFeeTier": {
20083
+ "type": "object",
20084
+ "properties": {
20085
+ "name": {
20086
+ "type": "string",
20087
+ "example": "level1"
20088
+ },
20089
+ "required_lit_stakes": {
20090
+ "type": "integer",
20091
+ "format": "int64",
20092
+ "example": "10"
20093
+ },
20094
+ "fee_rate": {
20095
+ "type": "number",
20096
+ "format": "double",
20097
+ "example": "0.95"
20098
+ }
20099
+ },
20100
+ "title": "StakingFeeTier",
20101
+ "required": [
20102
+ "name",
20103
+ "required_lit_stakes",
20104
+ "fee_rate"
20105
+ ]
20106
+ },
20049
20107
  "Status": {
20050
20108
  "type": "object",
20051
20109
  "properties": {
@@ -21961,6 +22019,49 @@
21961
22019
  "upcoming_earnings"
21962
22020
  ]
21963
22021
  },
22022
+ "UserFeeTier": {
22023
+ "type": "object",
22024
+ "properties": {
22025
+ "name": {
22026
+ "type": "string",
22027
+ "example": "premium_1"
22028
+ },
22029
+ "level": {
22030
+ "type": "integer",
22031
+ "format": "int32",
22032
+ "example": "2"
22033
+ },
22034
+ "maker_fee_ticks": {
22035
+ "type": "integer",
22036
+ "format": "int32",
22037
+ "example": "0"
22038
+ },
22039
+ "taker_fee_ticks": {
22040
+ "type": "integer",
22041
+ "format": "int32",
22042
+ "example": "0"
22043
+ },
22044
+ "required_lit_stakes": {
22045
+ "type": "integer",
22046
+ "format": "int64",
22047
+ "example": "1000"
22048
+ },
22049
+ "required_volume": {
22050
+ "type": "integer",
22051
+ "format": "int64",
22052
+ "example": "0"
22053
+ }
22054
+ },
22055
+ "title": "UserFeeTier",
22056
+ "required": [
22057
+ "name",
22058
+ "level",
22059
+ "maker_fee_ticks",
22060
+ "taker_fee_ticks",
22061
+ "required_lit_stakes",
22062
+ "required_volume"
22063
+ ]
22064
+ },
21964
22065
  "UserReferrals": {
21965
22066
  "type": "object",
21966
22067
  "properties": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zklighter-perps",
3
- "version": "1.0.329",
3
+ "version": "1.0.331",
4
4
  "description": "Lighter Perps SDK",
5
5
  "main": "index.ts",
6
6
  "directories": {