@0xmonaco/core 0.8.14 → 0.8.16

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.
@@ -40,8 +40,8 @@ export class ProfileAPIImpl extends BaseAPI {
40
40
  * console.log(`User ID: ${profile.id}`);
41
41
  * console.log(`Address: ${profile.address}`);
42
42
  * console.log(`Username: ${profile.username}`);
43
- * console.log(`Account type: ${profile.account_type}`);
44
- * console.log(`Can withdraw: ${profile.can_withdraw}`);
43
+ * console.log(`Account type: ${profile.accountType}`);
44
+ * console.log(`Can withdraw: ${profile.canWithdraw}`);
45
45
  * ```
46
46
  */
47
47
  async getProfile() {
@@ -56,27 +56,27 @@ export class ProfileAPIImpl extends BaseAPI {
56
56
  * @param params - Optional query parameters for pagination and filtering
57
57
  * @param params.page - Page number (starts from 1, default: 1)
58
58
  * @param params.limit - Number of items per page (default: 20, max: 100)
59
- * @param params.entry_type - Filter by entry type (CREDIT, DEBIT, LOCK, UNLOCK, FEE)
60
- * @param params.transaction_type - Filter by transaction type (DEPOSIT, WITHDRAWAL, TRADE, FEE, FUNDING, LIQUIDATION, INTEREST, REWARD)
61
- * @param params.asset_id - Filter by asset ID (UUID)
59
+ * @param params.entryType - Filter by entry type (CREDIT, DEBIT, LOCK, UNLOCK, FEE)
60
+ * @param params.transactionType - Filter by transaction type (DEPOSIT, WITHDRAWAL, TRADE, FEE, FUNDING, LIQUIDATION, INTEREST, REWARD)
61
+ * @param params.assetId - Filter by asset ID (UUID)
62
62
  * @returns Promise resolving to paginated movements response
63
63
  * @throws {APIError} When the request fails or user is not authenticated
64
64
  *
65
65
  * @example
66
66
  * ```typescript
67
- * // Get first page with default page_size (20)
67
+ * // Get first page with default pageSize (20)
68
68
  * const movements = await profileAPI.getPaginatedUserMovements();
69
69
  * console.log(`Total movements: ${movements.total}`);
70
70
  *
71
- * // Get second page with custom page_size
72
- * const page2 = await profileAPI.getPaginatedUserMovements({ page: 2, page_size: 50 });
73
- * console.log(`Page ${page2.page} of ${page2.total_pages}`);
71
+ * // Get second page with custom pageSize
72
+ * const page2 = await profileAPI.getPaginatedUserMovements({ page: 2, pageSize: 50 });
73
+ * console.log(`Page ${page2.page} of ${page2.totalPages}`);
74
74
  *
75
75
  * // Filter by entry type and transaction type
76
- * const deposits = await profileAPI.getPaginatedUserMovements({ entry_type: "CREDIT", transaction_type: "DEPOSIT" });
76
+ * const deposits = await profileAPI.getPaginatedUserMovements({ entryType: "CREDIT", transactionType: "DEPOSIT" });
77
77
  *
78
78
  * // Filter by asset
79
- * const usdcMovements = await profileAPI.getPaginatedUserMovements({ asset_id: "550e8400-e29b-41d4-a716-446655440000" });
79
+ * const usdcMovements = await profileAPI.getPaginatedUserMovements({ assetId: "550e8400-e29b-41d4-a716-446655440000" });
80
80
  * ```
81
81
  */
82
82
  async getPaginatedUserMovements(params) {
@@ -87,17 +87,17 @@ export class ProfileAPIImpl extends BaseAPI {
87
87
  if (params?.page !== undefined) {
88
88
  searchParams.append("page", params.page.toString());
89
89
  }
90
- if (params?.page_size !== undefined) {
91
- searchParams.append("page_size", params.page_size.toString());
90
+ if (params?.pageSize !== undefined) {
91
+ searchParams.append("pageSize", params.pageSize.toString());
92
92
  }
93
- if (params?.entry_type !== undefined) {
94
- searchParams.append("entry_type", params.entry_type);
93
+ if (params?.entryType !== undefined) {
94
+ searchParams.append("entryType", params.entryType);
95
95
  }
96
- if (params?.transaction_type !== undefined) {
97
- searchParams.append("transaction_type", params.transaction_type);
96
+ if (params?.transactionType !== undefined) {
97
+ searchParams.append("transactionType", params.transactionType);
98
98
  }
99
- if (params?.asset_id !== undefined) {
100
- searchParams.append("asset_id", params.asset_id);
99
+ if (params?.assetId !== undefined) {
100
+ searchParams.append("assetId", params.assetId);
101
101
  }
102
102
  const queryString = searchParams.toString();
103
103
  const url = queryString ? `/api/v1/accounts/movements?${queryString}` : "/api/v1/accounts/movements";
@@ -111,7 +111,7 @@ export class ProfileAPIImpl extends BaseAPI {
111
111
  *
112
112
  * @param params - Optional query parameters for pagination
113
113
  * @param params.page - Page number (starts from 1, default: 1)
114
- * @param params.page_size - Number of items per page (default: 20, max: 100)
114
+ * @param params.pageSize - Number of items per page (default: 20, max: 100)
115
115
  * @returns Promise resolving to paginated balances response
116
116
  * @throws {APIError} When the request fails or user is not authenticated
117
117
  *
@@ -121,11 +121,11 @@ export class ProfileAPIImpl extends BaseAPI {
121
121
  * const balances = await profileAPI.getUserBalances();
122
122
  * console.log(`Total balances: ${balances.total}`);
123
123
  * balances.balances.forEach(balance => {
124
- * console.log(`${balance.symbol}: ${balance.available_balance}`);
124
+ * console.log(`${balance.symbol}: ${balance.availableBalance}`);
125
125
  * });
126
126
  *
127
127
  * // Get page 2 with 50 items per page
128
- * const nextBalances = await profileAPI.getUserBalances({ page: 2, page_size: 50 });
128
+ * const nextBalances = await profileAPI.getUserBalances({ page: 2, pageSize: 50 });
129
129
  * console.log(`Returned ${nextBalances.balances.length} balances`);
130
130
  * ```
131
131
  */
@@ -134,8 +134,8 @@ export class ProfileAPIImpl extends BaseAPI {
134
134
  if (params?.page !== undefined) {
135
135
  searchParams.append("page", params.page.toString());
136
136
  }
137
- if (params?.page_size !== undefined) {
138
- searchParams.append("page_size", params.page_size.toString());
137
+ if (params?.pageSize !== undefined) {
138
+ searchParams.append("pageSize", params.pageSize.toString());
139
139
  }
140
140
  const queryString = searchParams.toString();
141
141
  const url = queryString ? `/api/v1/accounts/balances?${queryString}` : "/api/v1/accounts/balances";
@@ -144,7 +144,7 @@ export class ProfileAPIImpl extends BaseAPI {
144
144
  /**
145
145
  * Get the current user's balance for a specific asset.
146
146
  *
147
- * Fetches the user's balance for a specific asset from the /api/v1/accounts/balances/{asset_id} endpoint.
147
+ * Fetches the user's balance for a specific asset from the /api/v1/accounts/balances/{assetId} endpoint.
148
148
  * Requires a valid access token to be set. If no balance exists for a valid asset, returns zero balances.
149
149
  *
150
150
  * @param assetId - The asset identifier (UUID)
@@ -155,15 +155,15 @@ export class ProfileAPIImpl extends BaseAPI {
155
155
  * ```typescript
156
156
  * // Get balance for a specific asset
157
157
  * const balance = await profileAPI.getUserBalanceByAssetId('123e4567-e89b-12d3-a456-426614174000');
158
- * console.log(`${balance.symbol}: ${balance.available_balance}`);
159
- * console.log(`Locked: ${balance.locked_balance}`);
160
- * console.log(`Total: ${balance.total_balance}`);
158
+ * console.log(`${balance.symbol}: ${balance.availableBalance}`);
159
+ * console.log(`Locked: ${balance.lockedBalance}`);
160
+ * console.log(`Total: ${balance.totalBalance}`);
161
161
  * ```
162
162
  */
163
163
  async getUserBalanceByAssetId(assetId) {
164
164
  if (!assetId || assetId.trim() === "") {
165
165
  throw new APIError("assetId is required and cannot be empty", {
166
- endpoint: "/api/v1/accounts/balances/{asset_id}",
166
+ endpoint: "/api/v1/accounts/balances/{assetId}",
167
167
  });
168
168
  }
169
169
  const url = `/api/v1/accounts/balances/${assetId}`;
@@ -184,7 +184,7 @@ export class ProfileAPIImpl extends BaseAPI {
184
184
  * const stats = await profileAPI.getPortfolioStats("30d");
185
185
  * console.log(`PnL: ${stats.pnl}`);
186
186
  * console.log(`Volume: ${stats.volume}`);
187
- * console.log(`Total equity: ${stats.total_equity}`);
187
+ * console.log(`Total equity: ${stats.totalEquity}`);
188
188
  * ```
189
189
  */
190
190
  async getPortfolioStats(period) {
@@ -222,8 +222,8 @@ export class ProfileAPIImpl extends BaseAPI {
222
222
  *
223
223
  * @param params - Optional query parameters for pagination and filtering
224
224
  * @param params.page - Page number (starts from 1, default: 1)
225
- * @param params.page_size - Number of items per page (default: 20, max: 100)
226
- * @param params.trading_pair_id - Filter by trading pair ID (UUID)
225
+ * @param params.pageSize - Number of items per page (default: 20, max: 100)
226
+ * @param params.tradingPairId - Filter by trading pair ID (UUID)
227
227
  * @returns Promise resolving to paginated trades response
228
228
  * @throws {ValidationError} When the provided params fail client-side validation
229
229
  * @throws {APIError} When the request fails or user is not authenticated
@@ -235,7 +235,7 @@ export class ProfileAPIImpl extends BaseAPI {
235
235
  * console.log(`Total trades: ${trades.total}`);
236
236
  *
237
237
  * // Filter by trading pair
238
- * const pairTrades = await profileAPI.getUserTrades({ trading_pair_id: "550e8400-e29b-41d4-a716-446655440000" });
238
+ * const pairTrades = await profileAPI.getUserTrades({ tradingPairId: "550e8400-e29b-41d4-a716-446655440000" });
239
239
  * ```
240
240
  */
241
241
  async getUserTrades(params) {
@@ -246,11 +246,11 @@ export class ProfileAPIImpl extends BaseAPI {
246
246
  if (params?.page !== undefined) {
247
247
  searchParams.append("page", params.page.toString());
248
248
  }
249
- if (params?.page_size !== undefined) {
250
- searchParams.append("page_size", params.page_size.toString());
249
+ if (params?.pageSize !== undefined) {
250
+ searchParams.append("pageSize", params.pageSize.toString());
251
251
  }
252
- if (params?.trading_pair_id !== undefined) {
253
- searchParams.append("trading_pair_id", params.trading_pair_id);
252
+ if (params?.tradingPairId !== undefined) {
253
+ searchParams.append("tradingPairId", params.tradingPairId);
254
254
  }
255
255
  const queryString = searchParams.toString();
256
256
  const url = queryString ? `/api/v1/accounts/trades?${queryString}` : "/api/v1/accounts/trades";
@@ -268,7 +268,7 @@ export class ProfileAPIImpl extends BaseAPI {
268
268
  *
269
269
  * @example
270
270
  * ```typescript
271
- * const funding = await profileAPI.listFundingPayments({ trading_pair_id: "550e8400-e29b-41d4-a716-446655440000" });
271
+ * const funding = await profileAPI.listFundingPayments({ tradingPairId: "550e8400-e29b-41d4-a716-446655440000" });
272
272
  * console.log(`Total funding payments: ${funding.total}`);
273
273
  * ```
274
274
  */
@@ -280,17 +280,17 @@ export class ProfileAPIImpl extends BaseAPI {
280
280
  if (params?.page !== undefined) {
281
281
  searchParams.append("page", params.page.toString());
282
282
  }
283
- if (params?.page_size !== undefined) {
284
- searchParams.append("page_size", params.page_size.toString());
283
+ if (params?.pageSize !== undefined) {
284
+ searchParams.append("pageSize", params.pageSize.toString());
285
285
  }
286
- if (params?.trading_pair_id !== undefined) {
287
- searchParams.append("trading_pair_id", params.trading_pair_id);
286
+ if (params?.tradingPairId !== undefined) {
287
+ searchParams.append("tradingPairId", params.tradingPairId);
288
288
  }
289
- if (params?.position_id !== undefined) {
290
- searchParams.append("position_id", params.position_id);
289
+ if (params?.positionId !== undefined) {
290
+ searchParams.append("positionId", params.positionId);
291
291
  }
292
- if (params?.margin_account_id !== undefined) {
293
- searchParams.append("margin_account_id", params.margin_account_id);
292
+ if (params?.marginAccountId !== undefined) {
293
+ searchParams.append("marginAccountId", params.marginAccountId);
294
294
  }
295
295
  const queryString = searchParams.toString();
296
296
  const url = queryString ? `/api/v1/accounts/funding-payments?${queryString}` : "/api/v1/accounts/funding-payments";
@@ -9,8 +9,8 @@
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * const { sub_accounts } = await sdk.subAccounts.list();
13
- * await sdk.subAccounts.createLimit({ sub_account_id, asset_id, max_amount: "1000.00" });
12
+ * const { subAccounts } = await sdk.subAccounts.list();
13
+ * await sdk.subAccounts.createLimit({ subAccountId, assetId, maxAmount: "1000.00" });
14
14
  * ```
15
15
  */
16
16
  import type { CreateSubAccountLimitRequest, CreateSubAccountLimitResponse, GetSubAccountLimitsResponse, ListSubAccountsResponse, SubAccountsAPI, UpdateSubAccountLimitBody, UpdateSubAccountLimitResponse } from "@0xmonaco/types";
@@ -9,8 +9,8 @@
9
9
  *
10
10
  * @example
11
11
  * ```typescript
12
- * const { sub_accounts } = await sdk.subAccounts.list();
13
- * await sdk.subAccounts.createLimit({ sub_account_id, asset_id, max_amount: "1000.00" });
12
+ * const { subAccounts } = await sdk.subAccounts.list();
13
+ * await sdk.subAccounts.createLimit({ subAccountId, assetId, maxAmount: "1000.00" });
14
14
  * ```
15
15
  */
16
16
  import { BaseAPI } from "../base";
@@ -1,25 +1,25 @@
1
1
  import type { TradeEvent } from "@0xmonaco/types";
2
2
  import { BaseAPI } from "../base";
3
3
  /**
4
- * Raw trade event from the API (snake_case) - matches websocket structure
4
+ * Raw trade event from the API (camelCase wire shape).
5
5
  */
6
6
  interface RawTradeEvent {
7
- event_type: string;
8
- trading_pair_id: string;
9
- trading_mode: string;
7
+ eventType: string;
8
+ tradingPairId: string;
9
+ tradingMode: string;
10
10
  data: {
11
- trade_id: string;
11
+ tradeId: string;
12
12
  price: string;
13
13
  quantity: string;
14
14
  /** Raw (integer) quantity; present on single-trade lookups, ignored when mapping */
15
- quantity_raw?: string;
16
- maker_side: string;
15
+ quantityRaw?: string;
16
+ makerSide: string;
17
17
  /** Absent when the trade has no recorded execution time */
18
- executed_at?: string;
18
+ executedAt?: string;
19
19
  };
20
20
  }
21
21
  /**
22
- * Convert a raw trade event (snake_case) to a TradeEvent (camelCase)
22
+ * Convert a raw wire trade event to an ergonomic TradeEvent.
23
23
  */
24
24
  export declare function parseRawTradeEvent(raw: RawTradeEvent): TradeEvent;
25
25
  /**
@@ -29,7 +29,7 @@ export interface GetTradesOptions {
29
29
  /** Page number (starts from 1, default: 1) */
30
30
  page?: number;
31
31
  /** Maximum number of records to return (default: 25, max: 100) */
32
- page_size?: number;
32
+ pageSize?: number;
33
33
  }
34
34
  /**
35
35
  * Trades API for fetching historical trade data
@@ -40,7 +40,7 @@ export declare class TradesAPIImpl extends BaseAPI {
40
40
  *
41
41
  * @param tradingPairId - The trading pair UUID
42
42
  * @param options - Pagination options
43
- * @returns Array of TradeEvent records sorted by executed_at descending (newest first)
43
+ * @returns Array of TradeEvent records sorted by executedAt descending (newest first)
44
44
  */
45
45
  getTrades(tradingPairId: string, options?: GetTradesOptions): Promise<TradeEvent[]>;
46
46
  /**
@@ -1,19 +1,19 @@
1
1
  import { BaseAPI } from "../base";
2
2
  import { perpRoutes } from "../perp";
3
3
  /**
4
- * Convert a raw trade event (snake_case) to a TradeEvent (camelCase)
4
+ * Convert a raw wire trade event to an ergonomic TradeEvent.
5
5
  */
6
6
  export function parseRawTradeEvent(raw) {
7
7
  return {
8
8
  eventType: "trade",
9
- tradingPairId: raw.trading_pair_id,
10
- tradingMode: raw.trading_mode.toUpperCase(),
9
+ tradingPairId: raw.tradingPairId,
10
+ tradingMode: raw.tradingMode.toUpperCase(),
11
11
  data: {
12
- tradeId: raw.data.trade_id,
12
+ tradeId: raw.data.tradeId,
13
13
  price: raw.data.price,
14
14
  quantity: raw.data.quantity,
15
- makerSide: raw.data.maker_side.toUpperCase(),
16
- executedAt: raw.data.executed_at ?? "",
15
+ makerSide: raw.data.makerSide.toUpperCase(),
16
+ executedAt: raw.data.executedAt ?? "",
17
17
  },
18
18
  };
19
19
  }
@@ -26,17 +26,17 @@ export class TradesAPIImpl extends BaseAPI {
26
26
  *
27
27
  * @param tradingPairId - The trading pair UUID
28
28
  * @param options - Pagination options
29
- * @returns Array of TradeEvent records sorted by executed_at descending (newest first)
29
+ * @returns Array of TradeEvent records sorted by executedAt descending (newest first)
30
30
  */
31
31
  async getTrades(tradingPairId, options = {}) {
32
32
  const { page = 1 } = options;
33
- // Ensure page_size is a positive number between 1 and 100, defaulting to 25
34
- const page_size = options.page_size != null && options.page_size > 0 ? Math.min(options.page_size, 100) : 25;
33
+ // Ensure pageSize is a positive number between 1 and 100, defaulting to 25
34
+ const pageSize = options.pageSize != null && options.pageSize > 0 ? Math.min(options.pageSize, 100) : 25;
35
35
  const params = new URLSearchParams();
36
36
  if (page > 1) {
37
37
  params.set("page", String(page));
38
38
  }
39
- params.set("page_size", String(page_size));
39
+ params.set("pageSize", String(pageSize));
40
40
  const response = await this.makePublicRequest(`/api/v1/trades/${encodeURIComponent(tradingPairId)}?${params.toString()}`);
41
41
  return response.trades.map(parseRawTradeEvent);
42
42
  }
@@ -262,9 +262,9 @@ export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
262
262
  *
263
263
  * @param params - Query parameters for filtering orders
264
264
  * @param params.status - Filter by order status (e.g., "SUBMITTED", "FILLED") (optional)
265
- * @param params.trading_pair_id - Filter by trading pair UUID (optional)
265
+ * @param params.tradingPairId - Filter by trading pair UUID (optional)
266
266
  * @param params.page - Page number for pagination (defaults to 1, must be > 0)
267
- * @param params.page_size - Number of orders per page (defaults to 10, max 100, must be > 0)
267
+ * @param params.pageSize - Number of orders per page (defaults to 10, max 100, must be > 0)
268
268
  * @returns Promise resolving to GetPaginatedOrdersResponse with orders and pagination info
269
269
  * @throws {APIError} When API communication fails
270
270
  *
@@ -273,13 +273,13 @@ export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
273
273
  * // Get submitted orders for a specific trading pair with custom pagination
274
274
  * const orders = await tradingAPI.getPaginatedOrders({
275
275
  * status: "SUBMITTED",
276
- * trading_pair_id: "456e7890-e12b-12d3-a456-426614174000",
276
+ * tradingPairId: "456e7890-e12b-12d3-a456-426614174000",
277
277
  * page: 1,
278
- * page_size: 20
278
+ * pageSize: 20
279
279
  * });
280
280
  * console.log(`Found ${orders.total} orders, showing page ${orders.page}`);
281
281
  *
282
- * // Get all orders with default pagination (page=1, page_size=10)
282
+ * // Get all orders with default pagination (page=1, pageSize=10)
283
283
  * const allOrders = await tradingAPI.getPaginatedOrders();
284
284
  * ```
285
285
  */
@@ -299,7 +299,7 @@ export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
299
299
  * // Get order details by ID
300
300
  * const orderDetails = await tradingAPI.getOrder("order_123");
301
301
  * console.log(`Order status: ${orderDetails.order.status}`);
302
- * console.log(`Remaining quantity: ${orderDetails.order.remaining_quantity}`);
302
+ * console.log(`Remaining quantity: ${orderDetails.order.remainingQuantity}`);
303
303
  * ```
304
304
  */
305
305
  getOrder(orderId: string): Promise<GetOrderResponse>;
@@ -28,12 +28,12 @@ function parentTpSlLegToRequest(leg) {
28
28
  if (!leg)
29
29
  return undefined;
30
30
  return {
31
- trigger_price: leg.triggerPrice,
32
- order_type: leg.orderType,
33
- limit_price: leg.limitPrice,
34
- time_in_force: leg.timeInForce,
35
- slippage_tolerance_bps: leg.slippageToleranceBps,
36
- expires_at: leg.expiresAt,
31
+ triggerPrice: leg.triggerPrice,
32
+ orderType: leg.orderType,
33
+ limitPrice: leg.limitPrice,
34
+ timeInForce: leg.timeInForce,
35
+ slippageToleranceBps: leg.slippageToleranceBps,
36
+ expiresAt: leg.expiresAt,
37
37
  };
38
38
  }
39
39
  export class TradingAPIImpl extends BaseAPI {
@@ -97,24 +97,24 @@ export class TradingAPIImpl extends BaseAPI {
97
97
  options,
98
98
  });
99
99
  const requestBody = {
100
- trading_pair_id: tradingPairId,
101
- order_type: "LIMIT",
100
+ tradingPairId: tradingPairId,
101
+ orderType: "LIMIT",
102
102
  side,
103
103
  price,
104
104
  quantity,
105
- trading_mode: options?.tradingMode || "SPOT",
106
- use_master_balance: options?.useMasterBalance,
107
- expiration_date: options?.expirationDate,
108
- time_in_force: options?.timeInForce,
109
- margin_account_id: options?.marginAccountId,
110
- risk_bucket_id: options?.riskBucketId,
111
- risk_bucket_collateral: options?.riskBucketCollateral,
112
- strategy_key: options?.strategyKey,
113
- position_side: options?.positionSide,
105
+ tradingMode: options?.tradingMode || "SPOT",
106
+ useMasterBalance: options?.useMasterBalance,
107
+ expirationDate: options?.expirationDate,
108
+ timeInForce: options?.timeInForce,
109
+ marginAccountId: options?.marginAccountId,
110
+ riskBucketId: options?.riskBucketId,
111
+ riskBucketCollateral: options?.riskBucketCollateral,
112
+ strategyKey: options?.strategyKey,
113
+ positionSide: options?.positionSide,
114
114
  leverage: options?.leverage,
115
- reduce_only: options?.reduceOnly,
116
- take_profit: parentTpSlLegToRequest(options?.takeProfit),
117
- stop_loss: parentTpSlLegToRequest(options?.stopLoss),
115
+ reduceOnly: options?.reduceOnly,
116
+ takeProfit: parentTpSlLegToRequest(options?.takeProfit),
117
+ stopLoss: parentTpSlLegToRequest(options?.stopLoss),
118
118
  };
119
119
  return await this.makeAuthenticatedRequest(perpRoutes.orders.create(), {
120
120
  method: "POST",
@@ -171,22 +171,22 @@ export class TradingAPIImpl extends BaseAPI {
171
171
  options,
172
172
  });
173
173
  const requestBody = {
174
- trading_pair_id: tradingPairId,
175
- order_type: "MARKET",
174
+ tradingPairId: tradingPairId,
175
+ orderType: "MARKET",
176
176
  side,
177
- slippage_tolerance_bps: options?.slippageTolerance !== undefined ? Math.round(options.slippageTolerance * 10000) : undefined,
177
+ slippageToleranceBps: options?.slippageTolerance !== undefined ? Math.round(options.slippageTolerance * 10000) : undefined,
178
178
  price: null, // Market orders don't need price
179
179
  quantity,
180
- trading_mode: options?.tradingMode || "SPOT",
181
- margin_account_id: options?.marginAccountId,
182
- risk_bucket_id: options?.riskBucketId,
183
- risk_bucket_collateral: options?.riskBucketCollateral,
184
- strategy_key: options?.strategyKey,
185
- position_side: options?.positionSide,
180
+ tradingMode: options?.tradingMode || "SPOT",
181
+ marginAccountId: options?.marginAccountId,
182
+ riskBucketId: options?.riskBucketId,
183
+ riskBucketCollateral: options?.riskBucketCollateral,
184
+ strategyKey: options?.strategyKey,
185
+ positionSide: options?.positionSide,
186
186
  leverage: options?.leverage,
187
- reduce_only: options?.reduceOnly,
188
- take_profit: parentTpSlLegToRequest(options?.takeProfit),
189
- stop_loss: parentTpSlLegToRequest(options?.stopLoss),
187
+ reduceOnly: options?.reduceOnly,
188
+ takeProfit: parentTpSlLegToRequest(options?.takeProfit),
189
+ stopLoss: parentTpSlLegToRequest(options?.stopLoss),
190
190
  };
191
191
  return await this.makeAuthenticatedRequest(perpRoutes.orders.create(), {
192
192
  method: "POST",
@@ -213,7 +213,7 @@ export class TradingAPIImpl extends BaseAPI {
213
213
  // Validate inputs before making API call
214
214
  validate(CancelOrderSchema, { orderId });
215
215
  const requestBody = {
216
- order_id: orderId,
216
+ orderId: orderId,
217
217
  };
218
218
  return await this.makeAuthenticatedRequest(perpRoutes.orders.cancel(), {
219
219
  method: "POST",
@@ -230,12 +230,12 @@ export class TradingAPIImpl extends BaseAPI {
230
230
  if (params) {
231
231
  validate(ListConditionalOrdersSchema, params);
232
232
  }
233
- const { page = 1, page_size = 20, margin_account_id, trading_pair_id, state } = params || {};
233
+ const { page = 1, pageSize = 20, marginAccountId, tradingPairId, state } = params || {};
234
234
  return await this.makeAuthenticatedRequest(perpRoutes.orders.listConditional({
235
235
  page,
236
- page_size: Math.min(Math.max(page_size, 1), 100),
237
- margin_account_id,
238
- trading_pair_id,
236
+ pageSize: Math.min(Math.max(pageSize, 1), 100),
237
+ marginAccountId,
238
+ tradingPairId,
239
239
  state,
240
240
  }), { method: "GET" });
241
241
  }
@@ -257,7 +257,7 @@ export class TradingAPIImpl extends BaseAPI {
257
257
  }
258
258
  return this.makeAuthenticatedRequest(perpRoutes.orders.batchCancel(), {
259
259
  method: "POST",
260
- body: JSON.stringify({ order_ids: orderIds }),
260
+ body: JSON.stringify({ orderIds: orderIds }),
261
261
  });
262
262
  }
263
263
  /**
@@ -286,7 +286,7 @@ export class TradingAPIImpl extends BaseAPI {
286
286
  // Validate inputs before making API call
287
287
  validate(ReplaceOrderSchema, { orderId, newOrder });
288
288
  const requestBody = {
289
- use_master_balance: newOrder.useMasterBalance ?? false,
289
+ useMasterBalance: newOrder.useMasterBalance ?? false,
290
290
  };
291
291
  if (newOrder.price !== undefined) {
292
292
  requestBody.price = newOrder.price;
@@ -333,23 +333,23 @@ export class TradingAPIImpl extends BaseAPI {
333
333
  validate(BatchCreateOrdersSchema, { orders });
334
334
  const requestBody = {
335
335
  orders: orders.map((order) => ({
336
- trading_pair_id: order.tradingPairId,
337
- order_type: order.orderType,
336
+ tradingPairId: order.tradingPairId,
337
+ orderType: order.orderType,
338
338
  side: order.side,
339
339
  price: order.price,
340
340
  quantity: order.quantity,
341
- trading_mode: order.tradingMode || "SPOT",
342
- slippage_tolerance_bps: order.slippageTolerance !== undefined ? Math.round(order.slippageTolerance * 10000) : undefined,
343
- use_master_balance: order.useMasterBalance,
344
- expiration_date: order.expirationDate,
345
- time_in_force: order.timeInForce,
346
- margin_account_id: order.marginAccountId,
347
- risk_bucket_id: order.riskBucketId,
348
- risk_bucket_collateral: order.riskBucketCollateral,
349
- strategy_key: order.strategyKey,
350
- position_side: order.positionSide,
341
+ tradingMode: order.tradingMode || "SPOT",
342
+ slippageToleranceBps: order.slippageTolerance !== undefined ? Math.round(order.slippageTolerance * 10000) : undefined,
343
+ useMasterBalance: order.useMasterBalance,
344
+ expirationDate: order.expirationDate,
345
+ timeInForce: order.timeInForce,
346
+ marginAccountId: order.marginAccountId,
347
+ riskBucketId: order.riskBucketId,
348
+ riskBucketCollateral: order.riskBucketCollateral,
349
+ strategyKey: order.strategyKey,
350
+ positionSide: order.positionSide,
351
351
  leverage: order.leverage,
352
- reduce_only: order.reduceOnly,
352
+ reduceOnly: order.reduceOnly,
353
353
  })),
354
354
  };
355
355
  return this.makeAuthenticatedRequest(perpRoutes.orders.batchCreate(), {
@@ -386,10 +386,10 @@ export class TradingAPIImpl extends BaseAPI {
386
386
  validate(BatchReplaceOrdersSchema, { orders });
387
387
  const requestBody = {
388
388
  orders: orders.map((order) => ({
389
- order_id: order.orderId,
389
+ orderId: order.orderId,
390
390
  price: order.price,
391
391
  quantity: order.quantity,
392
- use_master_balance: order.useMasterBalance,
392
+ useMasterBalance: order.useMasterBalance,
393
393
  })),
394
394
  };
395
395
  return this.makeAuthenticatedRequest(perpRoutes.orders.batchReplace(), {
@@ -405,9 +405,9 @@ export class TradingAPIImpl extends BaseAPI {
405
405
  *
406
406
  * @param params - Query parameters for filtering orders
407
407
  * @param params.status - Filter by order status (e.g., "SUBMITTED", "FILLED") (optional)
408
- * @param params.trading_pair_id - Filter by trading pair UUID (optional)
408
+ * @param params.tradingPairId - Filter by trading pair UUID (optional)
409
409
  * @param params.page - Page number for pagination (defaults to 1, must be > 0)
410
- * @param params.page_size - Number of orders per page (defaults to 10, max 100, must be > 0)
410
+ * @param params.pageSize - Number of orders per page (defaults to 10, max 100, must be > 0)
411
411
  * @returns Promise resolving to GetPaginatedOrdersResponse with orders and pagination info
412
412
  * @throws {APIError} When API communication fails
413
413
  *
@@ -416,13 +416,13 @@ export class TradingAPIImpl extends BaseAPI {
416
416
  * // Get submitted orders for a specific trading pair with custom pagination
417
417
  * const orders = await tradingAPI.getPaginatedOrders({
418
418
  * status: "SUBMITTED",
419
- * trading_pair_id: "456e7890-e12b-12d3-a456-426614174000",
419
+ * tradingPairId: "456e7890-e12b-12d3-a456-426614174000",
420
420
  * page: 1,
421
- * page_size: 20
421
+ * pageSize: 20
422
422
  * });
423
423
  * console.log(`Found ${orders.total} orders, showing page ${orders.page}`);
424
424
  *
425
- * // Get all orders with default pagination (page=1, page_size=10)
425
+ * // Get all orders with default pagination (page=1, pageSize=10)
426
426
  * const allOrders = await tradingAPI.getPaginatedOrders();
427
427
  * ```
428
428
  */
@@ -432,25 +432,25 @@ export class TradingAPIImpl extends BaseAPI {
432
432
  validate(GetPaginatedOrdersSchema, params);
433
433
  }
434
434
  // Set pagination defaults with destructuring and validation
435
- const { page = 1, page_size = 10, status, trading_pair_id, trading_mode, margin_account_id } = params || {};
435
+ const { page = 1, pageSize: requestedPageSize = 10, status, tradingPairId, tradingMode, marginAccountId } = params || {};
436
436
  const validPage = page > 0 ? page : 1;
437
- const validPageSize = page_size > 0 ? page_size : 10;
437
+ const validPageSize = requestedPageSize > 0 ? requestedPageSize : 10;
438
438
  const pageSize = Math.min(validPageSize, 100);
439
439
  const searchParams = new URLSearchParams();
440
440
  // Always include pagination parameters for consistent API behavior
441
441
  searchParams.append("page", validPage.toString());
442
- searchParams.append("page_size", pageSize.toString());
442
+ searchParams.append("pageSize", pageSize.toString());
443
443
  if (status) {
444
444
  searchParams.append("status", status);
445
445
  }
446
- if (trading_pair_id) {
447
- searchParams.append("trading_pair_id", trading_pair_id);
446
+ if (tradingPairId) {
447
+ searchParams.append("tradingPairId", tradingPairId);
448
448
  }
449
- if (trading_mode) {
450
- searchParams.append("trading_mode", trading_mode);
449
+ if (tradingMode) {
450
+ searchParams.append("tradingMode", tradingMode);
451
451
  }
452
- if (margin_account_id) {
453
- searchParams.append("margin_account_id", margin_account_id);
452
+ if (marginAccountId) {
453
+ searchParams.append("marginAccountId", marginAccountId);
454
454
  }
455
455
  const endpoint = `/api/v1/orders?${searchParams.toString()}`;
456
456
  return await this.makeAuthenticatedRequest(endpoint, {
@@ -472,7 +472,7 @@ export class TradingAPIImpl extends BaseAPI {
472
472
  * // Get order details by ID
473
473
  * const orderDetails = await tradingAPI.getOrder("order_123");
474
474
  * console.log(`Order status: ${orderDetails.order.status}`);
475
- * console.log(`Remaining quantity: ${orderDetails.order.remaining_quantity}`);
475
+ * console.log(`Remaining quantity: ${orderDetails.order.remainingQuantity}`);
476
476
  * ```
477
477
  */
478
478
  async getOrder(orderId) {