bybit-api 3.6.1 → 3.7.1-beta.0

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.
Files changed (93) hide show
  1. package/lib/contract-client.d.ts +17 -3
  2. package/lib/contract-client.js +17 -3
  3. package/lib/contract-client.js.map +1 -1
  4. package/lib/rest-client-v5.d.ts +259 -10
  5. package/lib/rest-client-v5.js +196 -7
  6. package/lib/rest-client-v5.js.map +1 -1
  7. package/lib/types/request/contract.d.ts +21 -11
  8. package/lib/types/request/index.d.ts +1 -0
  9. package/lib/types/request/index.js +1 -0
  10. package/lib/types/request/index.js.map +1 -1
  11. package/lib/types/request/v5-account.d.ts +5 -0
  12. package/lib/types/request/v5-market.d.ts +10 -2
  13. package/lib/types/request/v5-position.d.ts +13 -2
  14. package/lib/types/request/v5-pre-upgrade.d.ts +34 -0
  15. package/lib/types/request/v5-pre-upgrade.js +3 -0
  16. package/lib/types/request/v5-pre-upgrade.js.map +1 -0
  17. package/lib/types/request/v5-trade.d.ts +24 -1
  18. package/lib/types/response/contract.d.ts +22 -12
  19. package/lib/types/response/v5-account.d.ts +1 -0
  20. package/lib/types/response/v5-market.d.ts +6 -0
  21. package/lib/types/response/v5-position.d.ts +26 -0
  22. package/lib/types/response/v5-trade.d.ts +7 -0
  23. package/lib/types/v5-shared.d.ts +4 -1
  24. package/lib/util/websocket-util.d.ts +2 -1
  25. package/lib/util/websocket-util.js +2 -2
  26. package/lib/util/websocket-util.js.map +1 -1
  27. package/lib/websocket-client.js +1 -1
  28. package/lib/websocket-client.js.map +1 -1
  29. package/package.json +13 -1
  30. package/src/account-asset-client-v3.ts +310 -0
  31. package/src/account-asset-client.ts +149 -0
  32. package/src/constants/enum.ts +105 -0
  33. package/src/contract-client.ts +360 -0
  34. package/src/copy-trading-client.ts +159 -0
  35. package/src/index.ts +18 -0
  36. package/src/inverse-client.ts +337 -0
  37. package/src/inverse-futures-client.ts +403 -0
  38. package/src/linear-client.ts +387 -0
  39. package/src/rest-client-v5.ts +1638 -0
  40. package/src/spot-client-v3.ts +303 -0
  41. package/src/spot-client.ts +180 -0
  42. package/src/types/index.ts +5 -0
  43. package/src/types/request/account-asset.ts +258 -0
  44. package/src/types/request/contract.ts +139 -0
  45. package/src/types/request/copy-trading.ts +53 -0
  46. package/src/types/request/index.ts +18 -0
  47. package/src/types/request/inverse.ts +135 -0
  48. package/src/types/request/linear.ts +201 -0
  49. package/src/types/request/spot.ts +89 -0
  50. package/src/types/request/unified-margin.ts +247 -0
  51. package/src/types/request/usdc-options.ts +134 -0
  52. package/src/types/request/usdc-perp.ts +100 -0
  53. package/src/types/request/usdc-shared.ts +39 -0
  54. package/src/types/request/v5-account.ts +40 -0
  55. package/src/types/request/v5-asset.ts +133 -0
  56. package/src/types/request/v5-market.ts +127 -0
  57. package/src/types/request/v5-position.ts +107 -0
  58. package/src/types/request/v5-pre-upgrade.ts +37 -0
  59. package/src/types/request/v5-spot-leverage-token.ts +23 -0
  60. package/src/types/request/v5-trade.ts +133 -0
  61. package/src/types/request/v5-user.ts +21 -0
  62. package/src/types/response/account-asset.ts +236 -0
  63. package/src/types/response/contract.ts +74 -0
  64. package/src/types/response/index.ts +13 -0
  65. package/src/types/response/shared.ts +19 -0
  66. package/src/types/response/spot.ts +17 -0
  67. package/src/types/response/unified-margin.ts +71 -0
  68. package/src/types/response/usdt-perp.ts +58 -0
  69. package/src/types/response/v5-account.ts +122 -0
  70. package/src/types/response/v5-asset.ts +170 -0
  71. package/src/types/response/v5-market.ts +271 -0
  72. package/src/types/response/v5-position.ts +118 -0
  73. package/src/types/response/v5-spot-leverage-token.ts +70 -0
  74. package/src/types/response/v5-trade.ts +103 -0
  75. package/src/types/response/v5-user.ts +58 -0
  76. package/src/types/shared.ts +175 -0
  77. package/src/types/v5-shared.ts +213 -0
  78. package/src/types/websockets.ts +115 -0
  79. package/src/types/ws-events/failed-topic-subscription-confirmation.ts +6 -0
  80. package/src/types/ws-events/succeeded-topic-subscription-confirmation.ts +6 -0
  81. package/src/types/ws-events/topic-subscription-confirmation.ts +7 -0
  82. package/src/unified-margin-client.ts +400 -0
  83. package/src/usdc-option-client.ts +333 -0
  84. package/src/usdc-perpetual-client.ts +312 -0
  85. package/src/util/BaseRestClient.ts +502 -0
  86. package/src/util/WsStore.ts +160 -0
  87. package/src/util/browser-support.ts +29 -0
  88. package/src/util/index.ts +5 -0
  89. package/src/util/logger.ts +26 -0
  90. package/src/util/node-support.ts +9 -0
  91. package/src/util/requestUtils.ts +171 -0
  92. package/src/util/websocket-util.ts +550 -0
  93. package/src/websocket-client.ts +1262 -0
@@ -0,0 +1,310 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import {
3
+ APIKeyInfoV3,
4
+ APIResponseV3WithTime,
5
+ APIResponseWithTime,
6
+ AccountCoinBalanceResponseV3,
7
+ AccountCoinBalancesRequestV3,
8
+ AccountCoinBalancesResponseV3,
9
+ AssetInfoRequestV3,
10
+ AssetInfoResponseV3,
11
+ CoinInfoQueryResponseV3,
12
+ CreateSubAPIKeyRequestV3,
13
+ CreateSubAPIKeyResponseV3,
14
+ CreateSubMemberRequestV3,
15
+ CreateSubMemberResponseV3,
16
+ DepositAddressResponseV3,
17
+ DepositRecordQueryRequestV3,
18
+ DepositRecordQueryResponseV3,
19
+ InternalTransferRequestV3,
20
+ ModifyAPIKeyRequestV3,
21
+ QueryDepositAddressRequestV3,
22
+ QueryInternalTransferSResponseV3,
23
+ QueryInternalTransfersRequestV3,
24
+ QuerySubAccountDepositAddressRequestV3,
25
+ SingleAccountCoinBalanceRequestV3,
26
+ SubAccountTransferRequestV3,
27
+ SubAccountTransferResponseV3,
28
+ SubDepositRecordQueryRequestV3,
29
+ SubMemberResponseV3,
30
+ SupportedDepositListRequestV3,
31
+ SupportedDepositListResponseV3,
32
+ TransferCoinListRequestV3,
33
+ UniversalTransferCreateResponse,
34
+ UniversalTransferListRequestV3,
35
+ UniversalTransferListResponseV3,
36
+ UniversalTransferRequestV3,
37
+ WithdrawCreateRequestV3,
38
+ WithdrawRecordQueryRequestV3,
39
+ WithdrawRecordsQueryResponseV3,
40
+ } from './types';
41
+ import { REST_CLIENT_TYPE_ENUM } from './util';
42
+ import BaseRestClient from './util/BaseRestClient';
43
+
44
+ /**
45
+ * REST API client for Account Asset V3 APIs
46
+ */
47
+ export class AccountAssetClientV3 extends BaseRestClient {
48
+ getClientType() {
49
+ return REST_CLIENT_TYPE_ENUM.v3;
50
+ }
51
+
52
+ async fetchServerTime(): Promise<number> {
53
+ const res = await this.getServerTime();
54
+ return Number(res.time);
55
+ }
56
+
57
+ getServerTime(): Promise<
58
+ APIResponseV3WithTime<{ timeSecond: string; timeNano: string }>
59
+ > {
60
+ return this.get('/v3/public/time');
61
+ }
62
+
63
+ /**
64
+ *
65
+ * Transfer Data Endpoints
66
+ *
67
+ */
68
+
69
+ createInternalTransfer(
70
+ params: InternalTransferRequestV3
71
+ ): Promise<APIResponseWithTime<{ transferId: string }>> {
72
+ return this.postPrivate(
73
+ '/asset/v3/private/transfer/inter-transfer',
74
+ params
75
+ );
76
+ }
77
+
78
+ getInternalTransfers(
79
+ params: QueryInternalTransfersRequestV3
80
+ ): Promise<APIResponseWithTime<QueryInternalTransferSResponseV3>> {
81
+ return this.getPrivate(
82
+ '/asset/v3/private/transfer/inter-transfer/list/query',
83
+ params
84
+ );
85
+ }
86
+
87
+ createSubAccountTransfer(params: {
88
+ transferId: string;
89
+ coin: string;
90
+ amount: string;
91
+ subMemberId: number;
92
+ type: 'IN' | 'OUT';
93
+ }): Promise<APIResponseWithTime<{ transferId: string }>> {
94
+ return this.postPrivate(
95
+ '/asset/v3/private/transfer/sub-member-transfer',
96
+ params
97
+ );
98
+ }
99
+
100
+ getSubAccountTransfers(
101
+ params?: SubAccountTransferRequestV3
102
+ ): Promise<APIResponseWithTime<SubAccountTransferResponseV3>> {
103
+ return this.getPrivate(
104
+ '/asset/v3/private/transfer/sub-member-transfer/list/query',
105
+ params
106
+ );
107
+ }
108
+
109
+ getSubAccounts(): Promise<
110
+ APIResponseWithTime<{
111
+ subMemberIds: string[];
112
+ transferableSubMemberIds: string[];
113
+ }>
114
+ > {
115
+ return this.getPrivate('/asset/v3/private/transfer/sub-member/list/query');
116
+ }
117
+
118
+ enableUniversalTransfer(params?: {
119
+ subMemberIds?: string;
120
+ }): Promise<APIResponseWithTime<any>> {
121
+ return this.postPrivate(
122
+ '/asset/v3/private/transfer/transfer-sub-member-save',
123
+ params
124
+ );
125
+ }
126
+
127
+ createUniversalTransfer(
128
+ params: UniversalTransferRequestV3
129
+ ): Promise<APIResponseWithTime<UniversalTransferCreateResponse>> {
130
+ return this.postPrivate(
131
+ '/asset/v3/private/transfer/universal-transfer',
132
+ params
133
+ );
134
+ }
135
+
136
+ getUniversalTransfers(
137
+ params: UniversalTransferListRequestV3
138
+ ): Promise<APIResponseWithTime<UniversalTransferListResponseV3>> {
139
+ return this.getPrivate(
140
+ '/asset/v3/private/transfer/universal-transfer/list/query',
141
+ params
142
+ );
143
+ }
144
+
145
+ getTransferableCoinList(
146
+ params: TransferCoinListRequestV3
147
+ ): Promise<APIResponseWithTime<{ list: string[] }>> {
148
+ return this.getPrivate(
149
+ '/asset/v3/private/transfer/transfer-coin/list/query',
150
+ params
151
+ );
152
+ }
153
+
154
+ getAccountCoinBalance(
155
+ params: SingleAccountCoinBalanceRequestV3
156
+ ): Promise<APIResponseWithTime<AccountCoinBalanceResponseV3>> {
157
+ return this.getPrivate(
158
+ '/asset/v3/private/transfer/account-coin/balance/query',
159
+ params
160
+ );
161
+ }
162
+
163
+ getAccountCoinBalances(
164
+ params: AccountCoinBalancesRequestV3
165
+ ): Promise<APIResponseWithTime<AccountCoinBalancesResponseV3>> {
166
+ return this.getPrivate(
167
+ '/asset/v3/private/transfer/account-coins/balance/query',
168
+ params
169
+ );
170
+ }
171
+
172
+ getAssetInfo(
173
+ params?: AssetInfoRequestV3
174
+ ): Promise<APIResponseWithTime<AssetInfoResponseV3>> {
175
+ return this.getPrivate(
176
+ '/asset/v3/private/transfer/asset-info/query',
177
+ params
178
+ );
179
+ }
180
+
181
+ /**
182
+ *
183
+ * Wallet & Deposit Endpoints
184
+ *
185
+ */
186
+
187
+ /** Get Deposit Spec */
188
+ getSupportedDepositList(
189
+ params?: SupportedDepositListRequestV3
190
+ ): Promise<APIResponseWithTime<SupportedDepositListResponseV3>> {
191
+ return this.get(
192
+ '/asset/v3/public/deposit/allowed-deposit-list/query',
193
+ params
194
+ );
195
+ }
196
+
197
+ getDepositRecords(
198
+ params?: DepositRecordQueryRequestV3
199
+ ): Promise<APIResponseWithTime<DepositRecordQueryResponseV3>> {
200
+ return this.getPrivate('/asset/v3/private/deposit/record/query', params);
201
+ }
202
+
203
+ getSubDepositRecords(
204
+ params: SubDepositRecordQueryRequestV3
205
+ ): Promise<APIResponseWithTime<DepositRecordQueryResponseV3>> {
206
+ return this.getPrivate(
207
+ '/asset/v3/private/deposit/sub-member-record/query',
208
+ params
209
+ );
210
+ }
211
+
212
+ getWithdrawRecords(
213
+ params?: WithdrawRecordQueryRequestV3
214
+ ): Promise<APIResponseWithTime<WithdrawRecordsQueryResponseV3>> {
215
+ return this.getPrivate('/asset/v3/private/withdraw/record/query', params);
216
+ }
217
+
218
+ getCoinInformation(
219
+ coin?: string
220
+ ): Promise<APIResponseWithTime<CoinInfoQueryResponseV3>> {
221
+ return this.getPrivate('/asset/v3/private/coin-info/query', { coin });
222
+ }
223
+
224
+ submitWithdrawal(
225
+ params: WithdrawCreateRequestV3
226
+ ): Promise<APIResponseWithTime<{ id: string }>> {
227
+ return this.postPrivate('/asset/v3/private/withdraw/create', params);
228
+ }
229
+
230
+ cancelWithdrawal(
231
+ withdrawalId: number
232
+ ): Promise<APIResponseWithTime<{ status: 1 | 0 }>> {
233
+ return this.postPrivate('/asset/v3/private/withdraw/create', {
234
+ withdrawalId,
235
+ });
236
+ }
237
+
238
+ getMasterAccountDepositAddress(
239
+ params?: QueryDepositAddressRequestV3
240
+ ): Promise<APIResponseWithTime<DepositAddressResponseV3>> {
241
+ return this.getPrivate('/asset/v3/private/deposit/address/query', params);
242
+ }
243
+
244
+ getSubAccountDepositAddress(
245
+ params: QuerySubAccountDepositAddressRequestV3
246
+ ): Promise<APIResponseWithTime<DepositAddressResponseV3>> {
247
+ return this.getPrivate(
248
+ '/asset/v3/private/deposit/sub-member-address/query',
249
+ params
250
+ );
251
+ }
252
+
253
+ createSubMember(
254
+ params: CreateSubMemberRequestV3
255
+ ): Promise<APIResponseWithTime<CreateSubMemberResponseV3>> {
256
+ return this.postPrivate('/user/v3/private/create-sub-member', params);
257
+ }
258
+
259
+ createSubAPIKey(
260
+ params: CreateSubAPIKeyRequestV3
261
+ ): Promise<APIResponseWithTime<CreateSubAPIKeyResponseV3>> {
262
+ return this.postPrivate('/user/v3/private/create-sub-api', params);
263
+ }
264
+
265
+ /**
266
+ * Get Sub UID List
267
+ */
268
+ getSubMembers(): Promise<APIResponseWithTime<SubMemberResponseV3>> {
269
+ return this.getPrivate('/user/v3/private/query-sub-members');
270
+ }
271
+
272
+ /**
273
+ * Froze Sub UID
274
+ */
275
+ freezeSubMember(
276
+ subuid: number,
277
+ frozenStatus: 0 | 1
278
+ ): Promise<APIResponseWithTime<{}>> {
279
+ return this.postPrivate('/user/v3/private/frozen-sub-member', {
280
+ subuid,
281
+ frozen: frozenStatus,
282
+ });
283
+ }
284
+
285
+ getAPIKeyInformation(): Promise<APIResponseWithTime<APIKeyInfoV3>> {
286
+ return this.getPrivate('/user/v3/private/query-api');
287
+ }
288
+
289
+ modifyMasterAPIKey(
290
+ params: ModifyAPIKeyRequestV3
291
+ ): Promise<APIResponseWithTime<APIKeyInfoV3>> {
292
+ return this.postPrivate('/user/v3/private/update-api', params);
293
+ }
294
+
295
+ modifySubAPIKey(
296
+ params: ModifyAPIKeyRequestV3
297
+ ): Promise<APIResponseWithTime<APIKeyInfoV3>> {
298
+ return this.postPrivate('/user/v3/private/update-sub-api', params);
299
+ }
300
+
301
+ /** WARNING: BE CAREFUL! The API key used to call this interface will be invalid immediately. */
302
+ deleteMasterAPIKey(): Promise<APIResponseWithTime<{}>> {
303
+ return this.postPrivate('/user/v3/private/delete-api');
304
+ }
305
+
306
+ /** WARNING: BE CAREFUL! The API key used to call this interface will be invalid immediately. */
307
+ deleteSubAPIKey(): Promise<APIResponseWithTime<{}>> {
308
+ return this.postPrivate('/user/v3/private/delete-sub-api');
309
+ }
310
+ }
@@ -0,0 +1,149 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import {
3
+ APIResponseWithTime,
4
+ AccountAssetInformationRequest,
5
+ DepositRecordsRequest,
6
+ EnableUniversalTransferRequest,
7
+ InternalTransferRequest,
8
+ SubAccountTransferRequest,
9
+ SupportedDepositListRequest,
10
+ TransferQueryRequest,
11
+ UniversalTransferRequest,
12
+ WithdrawalRecordsRequest,
13
+ WithdrawalRequest,
14
+ } from './types';
15
+ import { REST_CLIENT_TYPE_ENUM } from './util';
16
+ import BaseRestClient from './util/BaseRestClient';
17
+
18
+ /**
19
+ * REST API client for Account Asset APIs
20
+ */
21
+ export class AccountAssetClient extends BaseRestClient {
22
+ getClientType() {
23
+ return REST_CLIENT_TYPE_ENUM.accountAsset;
24
+ }
25
+
26
+ async fetchServerTime(): Promise<number> {
27
+ const res = await this.getServerTime();
28
+ return Number(res.time_now);
29
+ }
30
+
31
+ /**
32
+ *
33
+ * Transfer Data Endpoints
34
+ *
35
+ */
36
+
37
+ createInternalTransfer(
38
+ params: InternalTransferRequest
39
+ ): Promise<APIResponseWithTime<any>> {
40
+ return this.postPrivate('/asset/v1/private/transfer', params);
41
+ }
42
+
43
+ createSubAccountTransfer(
44
+ params: SubAccountTransferRequest
45
+ ): Promise<APIResponseWithTime<any>> {
46
+ return this.postPrivate('/asset/v1/private/sub-member/transfer', params);
47
+ }
48
+
49
+ getInternalTransfers(
50
+ params?: TransferQueryRequest
51
+ ): Promise<APIResponseWithTime<any>> {
52
+ return this.getPrivate('/asset/v1/private/transfer/list', params);
53
+ }
54
+
55
+ getSubAccountTransfers(
56
+ params?: TransferQueryRequest
57
+ ): Promise<APIResponseWithTime<any>> {
58
+ return this.getPrivate(
59
+ '/asset/v1/private/sub-member/transfer/list',
60
+ params
61
+ );
62
+ }
63
+
64
+ getSubAccounts(): Promise<APIResponseWithTime<any>> {
65
+ return this.getPrivate('/asset/v1/private/sub-member/member-ids');
66
+ }
67
+
68
+ enableUniversalTransfer(
69
+ params?: EnableUniversalTransferRequest
70
+ ): Promise<APIResponseWithTime<any>> {
71
+ return this.postPrivate('/asset/v1/private/transferable-subs/save', params);
72
+ }
73
+
74
+ createUniversalTransfer(
75
+ params: UniversalTransferRequest
76
+ ): Promise<APIResponseWithTime<any>> {
77
+ return this.postPrivate('/asset/v1/private/universal/transfer', params);
78
+ }
79
+
80
+ getUniversalTransfers(
81
+ params?: TransferQueryRequest
82
+ ): Promise<APIResponseWithTime<any>> {
83
+ return this.getPrivate('/asset/v1/private/universal/transfer/list', params);
84
+ }
85
+
86
+ /**
87
+ *
88
+ * Wallet & Deposit Endpoints
89
+ *
90
+ */
91
+
92
+ getSupportedDepositList(
93
+ params?: SupportedDepositListRequest
94
+ ): Promise<APIResponseWithTime<any>> {
95
+ return this.get('/asset/v1/public/deposit/allowed-deposit-list', params);
96
+ }
97
+
98
+ getDepositRecords(
99
+ params?: DepositRecordsRequest
100
+ ): Promise<APIResponseWithTime<any>> {
101
+ return this.getPrivate('/asset/v1/private/deposit/record/query', params);
102
+ }
103
+
104
+ getWithdrawRecords(
105
+ params?: WithdrawalRecordsRequest
106
+ ): Promise<APIResponseWithTime<any>> {
107
+ return this.getPrivate('/asset/v1/private/withdraw/record/query', params);
108
+ }
109
+
110
+ getCoinInformation(coin?: string): Promise<APIResponseWithTime<any>> {
111
+ return this.getPrivate('/asset/v1/private/coin-info/query', { coin });
112
+ }
113
+
114
+ getAssetInformation(
115
+ params?: AccountAssetInformationRequest
116
+ ): Promise<APIResponseWithTime<any>> {
117
+ return this.getPrivate('/asset/v1/private/asset-info/query', params);
118
+ }
119
+
120
+ submitWithdrawal(
121
+ params: WithdrawalRequest
122
+ ): Promise<APIResponseWithTime<any>> {
123
+ return this.postPrivate('/asset/v1/private/withdraw', params);
124
+ }
125
+
126
+ cancelWithdrawal(withdrawalId: number): Promise<APIResponseWithTime<any>> {
127
+ return this.postPrivate('/asset/v1/private/withdraw/cancel', {
128
+ id: withdrawalId,
129
+ });
130
+ }
131
+
132
+ getDepositAddress(coin: string): Promise<APIResponseWithTime<any>> {
133
+ return this.getPrivate('/asset/v1/private/deposit/address', { coin });
134
+ }
135
+
136
+ /**
137
+ *
138
+ * API Data Endpoints
139
+ *
140
+ */
141
+
142
+ getServerTime(): Promise<APIResponseWithTime> {
143
+ return this.get('/v2/public/time');
144
+ }
145
+
146
+ getApiAnnouncements(): Promise<APIResponseWithTime<any[]>> {
147
+ return this.get('/v2/public/announcement');
148
+ }
149
+ }
@@ -0,0 +1,105 @@
1
+ export const linearPositionModeEnum = {
2
+ OneWayMode: 'MergedSingle',
3
+ HedgeMode: 'BothSide',
4
+ } as const;
5
+
6
+ export const positionTpSlModeEnum = {
7
+ /** Full take profit/stop loss mode (a single TP order and a single SL order can be placed, covering the entire position) */
8
+ Full: 'Full',
9
+ /** Partial take profit/stop loss mode (multiple TP and SL orders can be placed, covering portions of the position) */
10
+ Partial: 'Partial',
11
+ } as const;
12
+
13
+ export const API_ERROR_CODE = {
14
+ BALANCE_INSUFFICIENT_SPOT: -1131,
15
+ ORDER_NOT_FOUND_OR_TOO_LATE_SPOT: -2013,
16
+ SUCCESS: 0,
17
+ /** This could mean bad request, incorrect value types or even incorrect/missing values */
18
+ PARAMS_MISSING_OR_WRONG: 10001,
19
+ INVALID_API_KEY_OR_PERMISSIONS: 10003,
20
+ SIGNATURE_NOT_VALID: 10004,
21
+ INCORRECT_API_KEY_PERMISSIONS: 10005,
22
+ DB_ERROR_WRONG_CURSOR: 10016,
23
+ INCORRECT_PRIVATE_OPERATIONS: 3303001,
24
+ /** Account not unified margin, update required */
25
+ ACCOUNT_NOT_UNIFIED: 10020,
26
+ UNKNOWN_ERROR: 12000,
27
+ BALANCE_INSUFFICIENT_SPOT_V3: 12131,
28
+ ORDER_NOT_FOUND_SPOT_V3: 12213,
29
+ ORDER_NOT_FOUND_LEVERAGED_TOKEN: 12407,
30
+ EXCEEDED_UPPER_LIMIT_LEVERAGED_TOKEN: 12409,
31
+ QUERY_ACCOUNT_INFO_ERROR: 12602,
32
+ CROSS_MARGIN_USER_NOT_FOUND: 12607,
33
+ CROSS_MARGIN_REPAYMENT_NOT_REQUIRED: 12616,
34
+ ORDER_NOT_FOUND_OR_TOO_LATE: 20001,
35
+ POSITION_STATUS_NOT_NORMAL: 30013,
36
+ CANNOT_SET_TRADING_STOP_FOR_ZERO_POS: 30024,
37
+ /** Seen when placing an order */
38
+ INSUFFICIENT_BALANCE_FOR_ORDER_COST: 30031,
39
+ POSITION_IDX_NOT_MATCH_POSITION_MODE: 30041,
40
+ /** Seen if a conditional order is too large */
41
+ INSUFFICIENT_BALANCE: 30042,
42
+ /** E.g. trying to change position margin while on cross */
43
+ POSITION_IS_CROSS_MARGIN: 30056,
44
+ POSITION_MODE_NOT_MODIFIED: 30083,
45
+ ISOLATED_NOT_MODIFIED: 30084,
46
+ RISK_LIMIT_NOT_EXISTS: 30090,
47
+ SUB_USER_ALREADY_EXISTS: 31005,
48
+ LEVERAGE_NOT_MODIFIED: 34036,
49
+ SAME_SLTP_MODE: 37002,
50
+ COPY_TRADE_NOT_OPEN_ORDER: 39426,
51
+ V5_ORDER_NOT_FOUND: 110001,
52
+ V5_INSUFFICIENT_BALANCE: 110007,
53
+ V5_API_KEY_PERMISSION_DENIED: 10005,
54
+ V5_CROSS_ISOLATED_MARGIN_NOT_CHANGED: 110026,
55
+ V5_LEVERAGE_NOT_CHANGED: 110043,
56
+ V5_MARGIN_MODE_NOT_CHANGED: 110073,
57
+ V5_TPSL_NOT_CHANGED: 10001,
58
+ V5_RISK_ID_NOT_CHANGED: 10001,
59
+ V5_AUTO_ADD_MARGIN_NOT_CHANGED: 10001,
60
+ V5_TPSL_ERROR_NO_POSITION: 10001,
61
+ V5_RISK_ID_NOT_MODIFIED: 110075,
62
+ QTY_EXCEEDS_MAX_LIMIT: 130006,
63
+ ORDER_NOT_FOUND_OR_TOO_LATE_LINEAR: 130010,
64
+ ORDER_COST_NOT_AVAILABLE: 130021,
65
+ CANNOT_SET_LINEAR_TRADING_STOP_FOR_ZERO_POS: 130024,
66
+ ISOLATED_NOT_MODIFIED_LINEAR: 130056,
67
+ POSITION_SIZE_IS_ZERO: 130057,
68
+ AUTO_ADD_MARGIN_NOT_MODIFIED: 130060,
69
+ INSUFFICIENT_BALANCE_FOR_ORDER_COST_LINEAR: 130080,
70
+ SAME_SLTP_MODE_LINEAR: 130150,
71
+ NOT_SUPPORTED_FOR_SUBACCOUNTS: 131003,
72
+ TRANSFER_ID_EXISTS: 131214,
73
+ RISK_ID_NOT_MODIFIED: 134026,
74
+ CONTRACT_ORDER_NOT_EXISTS: 140001,
75
+ CONTRACT_INSUFFICIENT_BALANCE: 140007,
76
+ CONTRACT_POSITION_MODE_NOT_MODIFIED: 140025,
77
+ CONTRACT_MARGIN_MODE_NOT_MODIFIED: 140026,
78
+ CONTRACT_RISK_LIMIT_INFO_NOT_EXISTS: 140031,
79
+ CONTRACT_SET_LEVERAGE_NOT_MODIFIED: 140043,
80
+ SUB_USER_NOT_FOUND: 141009,
81
+ SPOT_LEVERAGE_TOKEN_INSUFFICIENT_BALANCE: 175006,
82
+ SPOT_LEVERAGE_TOKEN_ORDER_NOT_FOUND: 175007,
83
+ SPOT_LEVERAGE_QUIZ_REQUIRED: 175010,
84
+ SPOT_MARGIN_NOT_ENABLED: 176008,
85
+ SPOT_MARGIN_QUESTIONNAIRE_NOT_SUBMIT: 176037,
86
+ /** E.g. USDC Options trading, trying to access a symbol that is no longer active */
87
+ CONTRACT_NAME_NOT_EXIST: 3100111,
88
+ ORDER_NOT_EXIST: 3100136,
89
+ NO_ACTIVE_ORDER: 3100205,
90
+ /** E.g. USDC Options trading when the account hasn't been opened for USDC Options yet */
91
+ ACCOUNT_NOT_EXIST: 3200200,
92
+ SET_MARGIN_MODE_FAILED_USDC: 3400045,
93
+ INCORRECT_MMP_PARAMETERS: 3500712,
94
+ INSTITION_MMP_PROFILE_NOT_FOUND: 3500713,
95
+ } as const;
96
+
97
+ /**
98
+ * Position idx, used to identify positions in different position modes.
99
+ * Required if you are under One-Way Mode:
100
+ */
101
+ export enum LinearPositionIdx {
102
+ OneWayMode = 0,
103
+ BuySide = 1,
104
+ SellSide = 2,
105
+ }