zklighter-perps 1.0.330 → 1.0.332

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,
@@ -169,6 +172,10 @@ export interface FaucetRequest {
169
172
  do_l1_transfer: boolean;
170
173
  }
171
174
 
175
+ export interface FeeTiersRequest {
176
+ filter?: FeeTiersFilterEnum;
177
+ }
178
+
172
179
  export interface GetMakerOnlyApiKeysRequest {
173
180
  account_index: number;
174
181
  authorization?: string;
@@ -406,7 +413,7 @@ export class AccountApi extends runtime.BaseAPI {
406
413
  }
407
414
 
408
415
  /**
409
- * 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.
410
417
  * accountLimits
411
418
  */
412
419
  async accountLimitsRaw(requestParameters: AccountLimitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountLimits>> {
@@ -444,7 +451,7 @@ export class AccountApi extends runtime.BaseAPI {
444
451
  }
445
452
 
446
453
  /**
447
- * 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.
448
455
  * accountLimits
449
456
  */
450
457
  async accountLimits(requestParameters: AccountLimitsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountLimits> {
@@ -854,6 +861,38 @@ export class AccountApi extends runtime.BaseAPI {
854
861
  return await response.value();
855
862
  }
856
863
 
864
+ /**
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
867
+ */
868
+ async feeTiersRaw(requestParameters: FeeTiersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FeeTiers>> {
869
+ const queryParameters: any = {};
870
+
871
+ if (requestParameters['filter'] != null) {
872
+ queryParameters['filter'] = requestParameters['filter'];
873
+ }
874
+
875
+ const headerParameters: runtime.HTTPHeaders = {};
876
+
877
+ const response = await this.request({
878
+ path: `/api/v1/feeTiers`,
879
+ method: 'GET',
880
+ headers: headerParameters,
881
+ query: queryParameters,
882
+ }, initOverrides);
883
+
884
+ return new runtime.JSONApiResponse(response, (jsonValue) => FeeTiersFromJSON(jsonValue));
885
+ }
886
+
887
+ /**
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
890
+ */
891
+ async feeTiers(requestParameters: FeeTiersRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FeeTiers> {
892
+ const response = await this.feeTiersRaw(requestParameters, initOverrides);
893
+ return await response.value();
894
+ }
895
+
857
896
  /**
858
897
  * Get maker-only API key indexes
859
898
  * getMakerOnlyApiKeys
@@ -2378,6 +2417,16 @@ export const AccountMetadataByEnum = {
2378
2417
  L1Address: 'l1_address'
2379
2418
  } as const;
2380
2419
  export type AccountMetadataByEnum = typeof AccountMetadataByEnum[keyof typeof AccountMetadataByEnum];
2420
+ /**
2421
+ * @export
2422
+ */
2423
+ export const FeeTiersFilterEnum = {
2424
+ All: 'all',
2425
+ Bo: 'bo',
2426
+ Perps: 'perps',
2427
+ Spot: 'spot'
2428
+ } as const;
2429
+ export type FeeTiersFilterEnum = typeof FeeTiersFilterEnum[keyof typeof FeeTiersFilterEnum];
2381
2430
  /**
2382
2431
  * @export
2383
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
+
@@ -32,6 +32,12 @@ export interface PriceOracleMarket {
32
32
  * @memberof PriceOracleMarket
33
33
  */
34
34
  symbol: string;
35
+ /**
36
+ *
37
+ * @type {boolean}
38
+ * @memberof PriceOracleMarket
39
+ */
40
+ pre_market: boolean;
35
41
  /**
36
42
  *
37
43
  * @type {PriceOraclePrice}
@@ -51,6 +57,7 @@ export interface PriceOracleMarket {
51
57
  */
52
58
  export function instanceOfPriceOracleMarket(value: object): value is PriceOracleMarket {
53
59
  if (!('symbol' in value) || value['symbol'] === undefined) return false;
60
+ if (!('pre_market' in value) || value['pre_market'] === undefined) return false;
54
61
  if (!('index' in value) || value['index'] === undefined) return false;
55
62
  if (!('mark' in value) || value['mark'] === undefined) return false;
56
63
  return true;
@@ -67,6 +74,7 @@ export function PriceOracleMarketFromJSONTyped(json: any, ignoreDiscriminator: b
67
74
  return {
68
75
 
69
76
  'symbol': json['symbol'],
77
+ 'pre_market': json['pre_market'],
70
78
  'index': PriceOraclePriceFromJSON(json['index']),
71
79
  'mark': PriceOraclePriceFromJSON(json['mark']),
72
80
  };
@@ -79,6 +87,7 @@ export function PriceOracleMarketToJSON(value?: PriceOracleMarket | null): any {
79
87
  return {
80
88
 
81
89
  'symbol': value['symbol'],
90
+ 'pre_market': value['pre_market'],
82
91
  'index': PriceOraclePriceToJSON(value['index']),
83
92
  'mark': PriceOraclePriceToJSON(value['mark']),
84
93
  };
@@ -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": {
@@ -2301,6 +2301,48 @@
2301
2301
  "description": "Request funds from faucet"
2302
2302
  }
2303
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
+ },
2304
2346
  "/api/v1/funding-rates": {
2305
2347
  "get": {
2306
2348
  "summary": "funding-rates",
@@ -7506,6 +7548,16 @@
7506
7548
  "type": "string",
7507
7549
  "example": "standard"
7508
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
+ },
7509
7561
  "current_maker_fee_tick": {
7510
7562
  "type": "integer",
7511
7563
  "format": "int32",
@@ -7535,6 +7587,8 @@
7535
7587
  "user_tier",
7536
7588
  "can_create_public_pool",
7537
7589
  "user_tier_name",
7590
+ "bo_user_tier_name",
7591
+ "bo_fee_rate",
7538
7592
  "current_maker_fee_tick",
7539
7593
  "current_taker_fee_tick",
7540
7594
  "leased_lit",
@@ -8771,6 +8825,31 @@
8771
8825
  "outcomes"
8772
8826
  ]
8773
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
+ },
8774
8853
  "BoOutcomePnL": {
8775
8854
  "type": "object",
8776
8855
  "properties": {
@@ -10304,6 +10383,35 @@
10304
10383
  "data_url"
10305
10384
  ]
10306
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
+ },
10307
10415
  "Funding": {
10308
10416
  "type": "object",
10309
10417
  "properties": {
@@ -13715,6 +13823,10 @@
13715
13823
  "symbol": {
13716
13824
  "type": "string"
13717
13825
  },
13826
+ "pre_market": {
13827
+ "type": "boolean",
13828
+ "format": "boolean"
13829
+ },
13718
13830
  "index": {
13719
13831
  "$ref": "#/definitions/PriceOraclePrice"
13720
13832
  },
@@ -13725,6 +13837,7 @@
13725
13837
  "title": "PriceOracleMarket",
13726
13838
  "required": [
13727
13839
  "symbol",
13840
+ "pre_market",
13728
13841
  "index",
13729
13842
  "mark"
13730
13843
  ]
@@ -15741,6 +15854,22 @@
15741
15854
  "account_index"
15742
15855
  ]
15743
15856
  },
15857
+ "ReqGetFeeTiers": {
15858
+ "type": "object",
15859
+ "properties": {
15860
+ "filter": {
15861
+ "type": "string",
15862
+ "enum": [
15863
+ "all",
15864
+ "bo",
15865
+ "perps",
15866
+ "spot"
15867
+ ],
15868
+ "default": "all"
15869
+ }
15870
+ },
15871
+ "title": "ReqGetFeeTiers"
15872
+ },
15744
15873
  "ReqGetFundings": {
15745
15874
  "type": "object",
15746
15875
  "properties": {
@@ -19955,6 +20084,31 @@
19955
20084
  "daily_chart"
19956
20085
  ]
19957
20086
  },
20087
+ "StakingFeeTier": {
20088
+ "type": "object",
20089
+ "properties": {
20090
+ "name": {
20091
+ "type": "string",
20092
+ "example": "level1"
20093
+ },
20094
+ "required_lit_stakes": {
20095
+ "type": "integer",
20096
+ "format": "int64",
20097
+ "example": "10"
20098
+ },
20099
+ "fee_rate": {
20100
+ "type": "number",
20101
+ "format": "double",
20102
+ "example": "0.95"
20103
+ }
20104
+ },
20105
+ "title": "StakingFeeTier",
20106
+ "required": [
20107
+ "name",
20108
+ "required_lit_stakes",
20109
+ "fee_rate"
20110
+ ]
20111
+ },
19958
20112
  "Status": {
19959
20113
  "type": "object",
19960
20114
  "properties": {
@@ -21870,6 +22024,49 @@
21870
22024
  "upcoming_earnings"
21871
22025
  ]
21872
22026
  },
22027
+ "UserFeeTier": {
22028
+ "type": "object",
22029
+ "properties": {
22030
+ "name": {
22031
+ "type": "string",
22032
+ "example": "premium_1"
22033
+ },
22034
+ "level": {
22035
+ "type": "integer",
22036
+ "format": "int32",
22037
+ "example": "2"
22038
+ },
22039
+ "maker_fee_ticks": {
22040
+ "type": "integer",
22041
+ "format": "int32",
22042
+ "example": "0"
22043
+ },
22044
+ "taker_fee_ticks": {
22045
+ "type": "integer",
22046
+ "format": "int32",
22047
+ "example": "0"
22048
+ },
22049
+ "required_lit_stakes": {
22050
+ "type": "integer",
22051
+ "format": "int64",
22052
+ "example": "1000"
22053
+ },
22054
+ "required_volume": {
22055
+ "type": "integer",
22056
+ "format": "int64",
22057
+ "example": "0"
22058
+ }
22059
+ },
22060
+ "title": "UserFeeTier",
22061
+ "required": [
22062
+ "name",
22063
+ "level",
22064
+ "maker_fee_ticks",
22065
+ "taker_fee_ticks",
22066
+ "required_lit_stakes",
22067
+ "required_volume"
22068
+ ]
22069
+ },
21873
22070
  "UserReferrals": {
21874
22071
  "type": "object",
21875
22072
  "properties": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zklighter-perps",
3
- "version": "1.0.330",
3
+ "version": "1.0.332",
4
4
  "description": "Lighter Perps SDK",
5
5
  "main": "index.ts",
6
6
  "directories": {