@0xmonaco/core 0.8.7-develop.34bd452 → 0.8.7-develop.a107b34

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 (50) hide show
  1. package/README.md +3 -12
  2. package/dist/api/applications/api.d.ts +61 -8
  3. package/dist/api/applications/api.js +71 -7
  4. package/dist/api/auth/api.d.ts +7 -26
  5. package/dist/api/auth/api.js +6 -42
  6. package/dist/api/base.d.ts +35 -0
  7. package/dist/api/base.js +60 -0
  8. package/dist/api/delegated-agents/api.d.ts +2 -1
  9. package/dist/api/delegated-agents/api.js +4 -0
  10. package/dist/api/faucet/api.d.ts +25 -0
  11. package/dist/api/faucet/api.js +29 -0
  12. package/dist/api/faucet/index.d.ts +1 -0
  13. package/dist/api/faucet/index.js +1 -0
  14. package/dist/api/index.d.ts +4 -0
  15. package/dist/api/index.js +4 -0
  16. package/dist/api/margin-accounts/api.d.ts +9 -5
  17. package/dist/api/margin-accounts/api.js +57 -20
  18. package/dist/api/market/api.d.ts +5 -2
  19. package/dist/api/market/api.js +19 -3
  20. package/dist/api/perp/routes.d.ts +78 -6
  21. package/dist/api/perp/routes.js +36 -6
  22. package/dist/api/positions/api.d.ts +2 -1
  23. package/dist/api/positions/api.js +13 -1
  24. package/dist/api/profile/api.d.ts +18 -1
  25. package/dist/api/profile/api.js +41 -1
  26. package/dist/api/sub-accounts/api.d.ts +62 -0
  27. package/dist/api/sub-accounts/api.js +80 -0
  28. package/dist/api/sub-accounts/index.d.ts +1 -0
  29. package/dist/api/sub-accounts/index.js +1 -0
  30. package/dist/api/trades/api.d.ts +12 -1
  31. package/dist/api/trades/api.js +13 -1
  32. package/dist/api/trading/api.d.ts +5 -2
  33. package/dist/api/trading/api.js +7 -24
  34. package/dist/api/vault/api.d.ts +70 -26
  35. package/dist/api/vault/api.js +124 -39
  36. package/dist/api/vault/index.d.ts +1 -1
  37. package/dist/api/vault/index.js +1 -1
  38. package/dist/api/whitelist/api.d.ts +27 -0
  39. package/dist/api/whitelist/api.js +32 -0
  40. package/dist/api/whitelist/index.d.ts +1 -0
  41. package/dist/api/whitelist/index.js +1 -0
  42. package/dist/api/withdrawals/api.d.ts +17 -0
  43. package/dist/api/withdrawals/api.js +30 -0
  44. package/dist/api/withdrawals/index.d.ts +1 -0
  45. package/dist/api/withdrawals/index.js +1 -0
  46. package/dist/coverage.d.ts +92 -0
  47. package/dist/coverage.js +92 -0
  48. package/dist/sdk.d.ts +32 -1
  49. package/dist/sdk.js +88 -0
  50. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- import { CreateMarginAccountSchema, GetAvailableCollateralSchema, GetMarginAccountMovementsSchema, GetMarginAccountSummarySchema, ListMarginAccountsSchema, SimulateAutoMarginOrderRiskSchema, SimulateOrderRiskSchema, TransferCollateralSchema, TransferCollateralToAutoMarginAccountSchema, validate, } from "@0xmonaco/types";
1
+ import { GetAvailableCollateralSchema, GetMarginAccountMovementsSchema, GetMarginAccountSummarySchema, GetParentMarginAccountMovementsSchema, GetParentMarginAccountSummarySchema, ListMarginAccountsSchema, SimulateOrderRiskSchema, SimulateParentMarginOrderRiskSchema, SimulateRiskBucketOrderRiskSchema, TransferCollateralFromParentMarginAccountSchema, TransferCollateralSchema, TransferCollateralToParentMarginAccountSchema, TransferCollateralToRiskBucketSchema, validate, } from "@0xmonaco/types";
2
2
  import { BaseAPI } from "../base";
3
3
  import { perpRoutes } from "../perp";
4
4
  export class MarginAccountsAPIImpl extends BaseAPI {
@@ -15,19 +15,13 @@ export class MarginAccountsAPIImpl extends BaseAPI {
15
15
  }
16
16
  : undefined));
17
17
  }
18
- async createMarginAccount(request) {
19
- validate(CreateMarginAccountSchema, request);
20
- return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.create(), {
21
- method: "POST",
22
- body: JSON.stringify({
23
- label: request?.label,
24
- collateral_asset: request?.collateralAsset,
25
- }),
26
- });
18
+ async getMarginAccountSummary(marginAccountId, params) {
19
+ validate(GetMarginAccountSummarySchema, { marginAccountId, ...params });
20
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.summary(marginAccountId, { trading_pair_id: params?.tradingPairId }));
27
21
  }
28
- async getMarginAccountSummary(marginAccountId) {
29
- validate(GetMarginAccountSummarySchema, { marginAccountId });
30
- return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.summary(marginAccountId));
22
+ async getParentMarginAccountSummary(params) {
23
+ validate(GetParentMarginAccountSummarySchema, params);
24
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.parentSummary({ trading_pair_id: params?.tradingPairId }));
31
25
  }
32
26
  async getAvailableCollateral(params) {
33
27
  validate(GetAvailableCollateralSchema, params);
@@ -40,12 +34,24 @@ export class MarginAccountsAPIImpl extends BaseAPI {
40
34
  body: JSON.stringify({
41
35
  asset: request.asset,
42
36
  amount: request.amount,
37
+ trading_pair_id: request.tradingPairId,
38
+ strategy_key: request.strategyKey,
43
39
  }),
44
40
  });
45
41
  }
46
- async transferCollateralToAutoMarginAccount(request) {
47
- validate(TransferCollateralToAutoMarginAccountSchema, { request });
48
- return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.transferInAuto(), {
42
+ async transferCollateralToParentMarginAccount(request) {
43
+ validate(TransferCollateralToParentMarginAccountSchema, { request });
44
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.transferInParent(), {
45
+ method: "POST",
46
+ body: JSON.stringify({
47
+ asset: request.asset,
48
+ amount: request.amount,
49
+ }),
50
+ });
51
+ }
52
+ async transferCollateralToRiskBucket(request) {
53
+ validate(TransferCollateralToRiskBucketSchema, { request });
54
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.transferInRiskBucket(), {
49
55
  method: "POST",
50
56
  body: JSON.stringify({
51
57
  asset: request.asset,
@@ -58,6 +64,18 @@ export class MarginAccountsAPIImpl extends BaseAPI {
58
64
  async transferCollateralFromMarginAccount(marginAccountId, request) {
59
65
  validate(TransferCollateralSchema, { marginAccountId, request });
60
66
  return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.transferOut(marginAccountId), {
67
+ method: "POST",
68
+ body: JSON.stringify({
69
+ asset: request.asset,
70
+ amount: request.amount,
71
+ trading_pair_id: request.tradingPairId,
72
+ strategy_key: request.strategyKey,
73
+ }),
74
+ });
75
+ }
76
+ async transferCollateralFromParentMarginAccount(request) {
77
+ validate(TransferCollateralFromParentMarginAccountSchema, { request });
78
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.transferOutParent(), {
61
79
  method: "POST",
62
80
  body: JSON.stringify({
63
81
  asset: request.asset,
@@ -69,13 +87,16 @@ export class MarginAccountsAPIImpl extends BaseAPI {
69
87
  validate(GetMarginAccountMovementsSchema, { marginAccountId, ...params });
70
88
  return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.movements(marginAccountId, params));
71
89
  }
90
+ async getParentMarginAccountMovements(params) {
91
+ validate(GetParentMarginAccountMovementsSchema, params);
92
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.parentMovements(params));
93
+ }
72
94
  async simulateOrderRisk(marginAccountId, request) {
73
95
  validate(SimulateOrderRiskSchema, { marginAccountId, request });
74
96
  return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.simulateOrderRisk(marginAccountId), {
75
97
  method: "POST",
76
98
  body: JSON.stringify({
77
99
  trading_pair_id: request.tradingPairId,
78
- strategy_key: request.strategyKey,
79
100
  side: request.side,
80
101
  position_side: request.positionSide,
81
102
  order_type: request.orderType,
@@ -86,9 +107,25 @@ export class MarginAccountsAPIImpl extends BaseAPI {
86
107
  }),
87
108
  });
88
109
  }
89
- async simulateAutoMarginOrderRisk(request) {
90
- validate(SimulateAutoMarginOrderRiskSchema, { request });
91
- return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.simulateOrderRiskAuto(), {
110
+ async simulateParentMarginOrderRisk(request) {
111
+ validate(SimulateParentMarginOrderRiskSchema, { request });
112
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.simulateParentMarginOrderRisk(), {
113
+ method: "POST",
114
+ body: JSON.stringify({
115
+ trading_pair_id: request.tradingPairId,
116
+ side: request.side,
117
+ position_side: request.positionSide,
118
+ order_type: request.orderType,
119
+ price: request.price,
120
+ quantity: request.quantity,
121
+ leverage: request.leverage,
122
+ reduce_only: request.reduceOnly,
123
+ }),
124
+ });
125
+ }
126
+ async simulateRiskBucketOrderRisk(request) {
127
+ validate(SimulateRiskBucketOrderRiskSchema, { request });
128
+ return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.simulateRiskBucketOrderRisk(), {
92
129
  method: "POST",
93
130
  body: JSON.stringify({
94
131
  trading_pair_id: request.tradingPairId,
@@ -1,4 +1,4 @@
1
- import type { Candlestick, FundingState, GetCandlesticksParams, GetTradingPairsParams, GetTradingPairsResponse, IndexPrice, Interval, ListFundingHistoryParams, ListFundingHistoryResponse, MarketAPI, MarketMetadata, MarkPrice, OpenInterest, PerpMarketConfig, PerpMarketSummary, TradingPair } from "@0xmonaco/types";
1
+ import type { Candlestick, FundingState, GetCandlesticksParams, GetScreenerParams, GetScreenerResponse, GetTradingPairsParams, GetTradingPairsResponse, IndexPrice, Interval, ListFundingHistoryParams, ListFundingHistoryResponse, MarketAPI, MarketMetadata, MarketStats, MarkPrice, OpenInterest, PerpMarketConfig, PerpMarketSummary, TradingMode, TradingPair } from "@0xmonaco/types";
2
2
  import { BaseAPI } from "../base";
3
3
  /**
4
4
  * Market API Implementation
@@ -7,7 +7,8 @@ import { BaseAPI } from "../base";
7
7
  */
8
8
  export declare class MarketAPIImpl extends BaseAPI implements MarketAPI {
9
9
  getPaginatedTradingPairs(params?: GetTradingPairsParams): Promise<GetTradingPairsResponse>;
10
- getTradingPairBySymbol(symbol: string): Promise<TradingPair | undefined>;
10
+ getTradingPair(tradingPairId: string): Promise<TradingPair>;
11
+ getTradingPairBySymbol(symbol: string, marketType?: TradingMode): Promise<TradingPair | undefined>;
11
12
  getCandlesticks(tradingPairId: string, interval: Interval, params?: GetCandlesticksParams): Promise<Candlestick[]>;
12
13
  getMarketMetadata(tradingPairId: string): Promise<MarketMetadata>;
13
14
  getPerpMarketConfig(tradingPairId: string): Promise<PerpMarketConfig>;
@@ -17,4 +18,6 @@ export declare class MarketAPIImpl extends BaseAPI implements MarketAPI {
17
18
  getFundingState(tradingPairId: string): Promise<FundingState>;
18
19
  listFundingHistory(tradingPairId: string, params?: ListFundingHistoryParams): Promise<ListFundingHistoryResponse>;
19
20
  getOpenInterest(tradingPairId: string): Promise<OpenInterest>;
21
+ getScreener(params?: GetScreenerParams): Promise<GetScreenerResponse>;
22
+ getMarketStats(): Promise<MarketStats>;
20
23
  }
@@ -27,13 +27,23 @@ export class MarketAPIImpl extends BaseAPI {
27
27
  if (params?.is_active !== undefined) {
28
28
  searchParams.append("is_active", params.is_active.toString());
29
29
  }
30
+ if (params?.category) {
31
+ searchParams.append("category", params.category);
32
+ }
30
33
  const queryString = searchParams.toString();
31
34
  const url = queryString ? `/api/v1/market/pairs?${queryString}` : "/api/v1/market/pairs";
32
35
  return await this.makePublicRequest(url);
33
36
  }
34
- async getTradingPairBySymbol(symbol) {
35
- // Backend endpoint expects UUID, not symbol, so we fetch all pairs and filter
36
- const response = await this.getPaginatedTradingPairs({ page_size: 100 });
37
+ async getTradingPair(tradingPairId) {
38
+ validate(GetMarketMetadataSchema, { tradingPairId });
39
+ const response = await this.makePublicRequest(perpRoutes.market.getTradingPair(tradingPairId));
40
+ return response.trading_pair;
41
+ }
42
+ async getTradingPairBySymbol(symbol, marketType) {
43
+ // Backend endpoint expects UUID, not symbol, so we fetch all pairs and filter.
44
+ // An optional market_type narrows the listing so a symbol present in both
45
+ // SPOT and MARGIN resolves unambiguously instead of returning the first match.
46
+ const response = await this.getPaginatedTradingPairs({ page_size: 100, market_type: marketType });
37
47
  return response.trading_pairs.find((pair) => pair.symbol === symbol);
38
48
  }
39
49
  async getCandlesticks(tradingPairId, interval, params) {
@@ -94,4 +104,10 @@ export class MarketAPIImpl extends BaseAPI {
94
104
  validate(GetMarketMetadataSchema, { tradingPairId });
95
105
  return await this.makePublicRequest(perpRoutes.market.getOpenInterest(tradingPairId));
96
106
  }
107
+ async getScreener(params) {
108
+ return await this.makePublicRequest(perpRoutes.market.getScreener(params));
109
+ }
110
+ async getMarketStats() {
111
+ return await this.makePublicRequest(perpRoutes.market.getMarketStats());
112
+ }
97
113
  }
@@ -17,7 +17,6 @@ export declare const perpRoutes: {
17
17
  readonly batchCancelAllByPair: (tradingPairId: string) => string;
18
18
  readonly batchCreate: () => string;
19
19
  readonly batchReplace: () => string;
20
- readonly createConditional: () => string;
21
20
  readonly listConditional: (params?: {
22
21
  margin_account_id?: string;
23
22
  trading_pair_id?: string;
@@ -29,9 +28,14 @@ export declare const perpRoutes: {
29
28
  };
30
29
  readonly delegatedAgents: {
31
30
  readonly list: () => string;
31
+ readonly owners: () => string;
32
32
  readonly byId: (delegatedAgentId: string) => string;
33
33
  readonly sessions: () => string;
34
34
  };
35
+ readonly withdrawals: {
36
+ readonly initiate: () => string;
37
+ readonly byIndex: (withdrawalIndex: number) => string;
38
+ };
35
39
  readonly market: {
36
40
  readonly listTradingPairs: (params?: {
37
41
  page?: number;
@@ -60,6 +64,14 @@ export declare const perpRoutes: {
60
64
  page_size?: number;
61
65
  }) => string;
62
66
  readonly getOpenInterest: (tradingPairId: string) => string;
67
+ readonly getScreener: (params?: {
68
+ page?: number;
69
+ page_size?: number;
70
+ market_type?: string;
71
+ is_active?: boolean;
72
+ category?: string;
73
+ }) => string;
74
+ readonly getMarketStats: () => string;
63
75
  };
64
76
  readonly orderbook: {
65
77
  readonly get: (tradingPairId: string, params?: {
@@ -74,6 +86,7 @@ export declare const perpRoutes: {
74
86
  skip?: number;
75
87
  limit?: number;
76
88
  }) => string;
89
+ readonly byId: (tradeId: string) => string;
77
90
  readonly user: (params?: {
78
91
  margin_account_id?: string;
79
92
  trading_pair_id?: string;
@@ -81,6 +94,53 @@ export declare const perpRoutes: {
81
94
  page_size?: number;
82
95
  }) => string;
83
96
  };
97
+ readonly applications: {
98
+ readonly orders: (params?: {
99
+ page?: number;
100
+ page_size?: number;
101
+ status?: string;
102
+ user_id?: string;
103
+ trading_pair_id?: string;
104
+ side?: string;
105
+ order_type?: string;
106
+ }) => string;
107
+ readonly users: (params?: {
108
+ page?: number;
109
+ page_size?: number;
110
+ is_active?: boolean;
111
+ account_type?: string;
112
+ address?: string;
113
+ }) => string;
114
+ readonly movements: (params?: {
115
+ page?: number;
116
+ page_size?: number;
117
+ user_id?: string;
118
+ transaction_type?: string;
119
+ entry_type?: string;
120
+ asset_id?: string;
121
+ }) => string;
122
+ readonly balances: (params?: {
123
+ page?: number;
124
+ page_size?: number;
125
+ user_id?: string;
126
+ asset_id?: string;
127
+ }) => string;
128
+ readonly stats: (params?: {
129
+ since?: string;
130
+ }) => string;
131
+ };
132
+ readonly subAccounts: {
133
+ readonly list: () => string;
134
+ readonly createLimit: () => string;
135
+ readonly getLimits: (subAccountId: string) => string;
136
+ readonly limit: (subAccountId: string, assetId: string) => string;
137
+ };
138
+ readonly faucet: {
139
+ readonly mint: () => string;
140
+ };
141
+ readonly whitelist: {
142
+ readonly submit: () => string;
143
+ };
84
144
  readonly positions: {
85
145
  readonly list: (params?: {
86
146
  margin_account_id?: string;
@@ -91,6 +151,7 @@ export declare const perpRoutes: {
91
151
  }) => string;
92
152
  readonly get: (positionId: string) => string;
93
153
  readonly close: (positionId: string) => string;
154
+ readonly batchCloseAll: () => string;
94
155
  readonly risk: (positionId: string) => string;
95
156
  readonly addMargin: (positionId: string) => string;
96
157
  readonly reduceMargin: (positionId: string) => string;
@@ -110,21 +171,33 @@ export declare const perpRoutes: {
110
171
  state?: string;
111
172
  trading_pair_id?: string;
112
173
  }) => string;
113
- readonly create: () => string;
114
- readonly summary: (marginAccountId: string) => string;
174
+ readonly parentSummary: (params?: {
175
+ trading_pair_id?: string;
176
+ }) => string;
177
+ readonly summary: (marginAccountId: string, params?: {
178
+ trading_pair_id?: string;
179
+ }) => string;
115
180
  readonly availableCollateral: (params?: {
116
181
  asset?: string;
117
182
  }) => string;
118
183
  readonly transferIn: (marginAccountId: string) => string;
119
- readonly transferInAuto: () => string;
184
+ readonly transferInParent: () => string;
185
+ readonly transferInRiskBucket: () => string;
120
186
  readonly transferOut: (marginAccountId: string) => string;
187
+ readonly transferOutParent: () => string;
121
188
  readonly movements: (marginAccountId: string, params?: {
122
189
  movement_type?: string;
123
190
  page?: number;
124
191
  page_size?: number;
125
192
  }) => string;
193
+ readonly parentMovements: (params?: {
194
+ movement_type?: string;
195
+ page?: number;
196
+ page_size?: number;
197
+ }) => string;
198
+ readonly simulateParentMarginOrderRisk: () => string;
126
199
  readonly simulateOrderRisk: (marginAccountId: string) => string;
127
- readonly simulateOrderRiskAuto: () => string;
200
+ readonly simulateRiskBucketOrderRisk: () => string;
128
201
  };
129
202
  readonly streams: {
130
203
  readonly orderbook: () => string;
@@ -134,7 +207,6 @@ export declare const perpRoutes: {
134
207
  readonly privateTrades: () => string;
135
208
  readonly orders: () => string;
136
209
  readonly positions: () => string;
137
- readonly marginAccount: () => string;
138
210
  readonly funding: () => string;
139
211
  readonly liquidationAlerts: () => string;
140
212
  };
@@ -26,15 +26,19 @@ export const perpRoutes = {
26
26
  batchCancelAllByPair: (tradingPairId) => `${API_V1}/orders/batch-cancel-all/${encodeSegment(tradingPairId)}`,
27
27
  batchCreate: () => `${API_V1}/orders/batch-create`,
28
28
  batchReplace: () => `${API_V1}/orders/batch-replace`,
29
- createConditional: () => `${API_V1}/orders/conditional`,
30
29
  listConditional: (params) => withQuery(`${API_V1}/orders/conditional`, params),
31
30
  cancelConditional: (conditionalOrderId) => `${API_V1}/orders/conditional/${encodeSegment(conditionalOrderId)}`,
32
31
  },
33
32
  delegatedAgents: {
34
33
  list: () => `${API_V1}/delegated-agents`,
34
+ owners: () => `${API_V1}/delegated-agents/owners`,
35
35
  byId: (delegatedAgentId) => `${API_V1}/delegated-agents/${encodeSegment(delegatedAgentId)}`,
36
36
  sessions: () => `${API_V1}/delegated-agents/sessions`,
37
37
  },
38
+ withdrawals: {
39
+ initiate: () => `${API_V1}/withdrawals`,
40
+ byIndex: (withdrawalIndex) => `${API_V1}/withdrawals/${encodeSegment(String(withdrawalIndex))}`,
41
+ },
38
42
  market: {
39
43
  listTradingPairs: (params) => withQuery(`${API_V1}/market/pairs`, params),
40
44
  getTradingPair: (tradingPairId) => `${API_V1}/market/pairs/${encodeSegment(tradingPairId)}`,
@@ -47,18 +51,41 @@ export const perpRoutes = {
47
51
  getFundingState: (tradingPairId) => `${API_V1}/market/pairs/${encodeSegment(tradingPairId)}/funding`,
48
52
  listFundingHistory: (tradingPairId, params) => withQuery(`${API_V1}/market/pairs/${encodeSegment(tradingPairId)}/funding/history`, params),
49
53
  getOpenInterest: (tradingPairId) => `${API_V1}/market/pairs/${encodeSegment(tradingPairId)}/open-interest`,
54
+ getScreener: (params) => withQuery(`${API_V1}/market/screener`, params),
55
+ getMarketStats: () => `${API_V1}/market/stats`,
50
56
  },
51
57
  orderbook: {
52
58
  get: (tradingPairId, params) => withQuery(`${API_V1}/orderbook/${encodeSegment(tradingPairId)}`, params),
53
59
  },
54
60
  trades: {
55
61
  publicByPair: (tradingPairId, params) => withQuery(`${API_V1}/trades/${encodeSegment(tradingPairId)}`, params),
62
+ byId: (tradeId) => `${API_V1}/trades/by-id/${encodeSegment(tradeId)}`,
56
63
  user: (params) => withQuery(`${API_V1}/accounts/trades`, params),
57
64
  },
65
+ applications: {
66
+ orders: (params) => withQuery(`${API_V1}/applications/orders`, params),
67
+ users: (params) => withQuery(`${API_V1}/applications/users`, params),
68
+ movements: (params) => withQuery(`${API_V1}/applications/movements`, params),
69
+ balances: (params) => withQuery(`${API_V1}/applications/balances`, params),
70
+ stats: (params) => withQuery(`${API_V1}/applications/stats`, params),
71
+ },
72
+ subAccounts: {
73
+ list: () => `${API_V1}/accounts/sub-accounts`,
74
+ createLimit: () => `${API_V1}/accounts/sub-accounts/limits`,
75
+ getLimits: (subAccountId) => `${API_V1}/accounts/sub-accounts/${encodeSegment(subAccountId)}/limits`,
76
+ limit: (subAccountId, assetId) => `${API_V1}/accounts/sub-accounts/${encodeSegment(subAccountId)}/limits/${encodeSegment(assetId)}`,
77
+ },
78
+ faucet: {
79
+ mint: () => `${API_V1}/faucet/mint`,
80
+ },
81
+ whitelist: {
82
+ submit: () => `${API_V1}/whitelist`,
83
+ },
58
84
  positions: {
59
85
  list: (params) => withQuery(`${API_V1}/positions`, params),
60
86
  get: (positionId) => `${API_V1}/positions/${encodeSegment(positionId)}`,
61
87
  close: (positionId) => `${API_V1}/positions/${encodeSegment(positionId)}/close`,
88
+ batchCloseAll: () => `${API_V1}/positions/batch-close-all`,
62
89
  risk: (positionId) => `${API_V1}/positions/${encodeSegment(positionId)}/risk`,
63
90
  addMargin: (positionId) => `${API_V1}/positions/${encodeSegment(positionId)}/margin/add`,
64
91
  reduceMargin: (positionId) => `${API_V1}/positions/${encodeSegment(positionId)}/margin/reduce`,
@@ -67,15 +94,19 @@ export const perpRoutes = {
67
94
  },
68
95
  marginAccounts: {
69
96
  list: (params) => withQuery(`${API_V1}/margin/accounts`, params),
70
- create: () => `${API_V1}/margin/accounts`,
71
- summary: (marginAccountId) => `${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}`,
97
+ parentSummary: (params) => withQuery(`${API_V1}/margin/parent-margin-account`, params),
98
+ summary: (marginAccountId, params) => withQuery(`${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}`, params),
72
99
  availableCollateral: (params) => withQuery(`${API_V1}/margin/collateral/available`, params),
73
100
  transferIn: (marginAccountId) => `${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}/collateral/transfer-in`,
74
- transferInAuto: () => `${API_V1}/margin/collateral/transfer-in`,
101
+ transferInParent: () => `${API_V1}/margin/parent-margin-account/collateral/transfer-in`,
102
+ transferInRiskBucket: () => `${API_V1}/margin/risk-buckets/collateral/transfer-in`,
75
103
  transferOut: (marginAccountId) => `${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}/collateral/transfer-out`,
104
+ transferOutParent: () => `${API_V1}/margin/parent-margin-account/collateral/transfer-out`,
76
105
  movements: (marginAccountId, params) => withQuery(`${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}/movements`, params),
106
+ parentMovements: (params) => withQuery(`${API_V1}/margin/parent-margin-account/movements`, params),
107
+ simulateParentMarginOrderRisk: () => `${API_V1}/margin/parent-margin-account/simulate-order-risk`,
77
108
  simulateOrderRisk: (marginAccountId) => `${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}/simulate-order-risk`,
78
- simulateOrderRiskAuto: () => `${API_V1}/margin/simulate-order-risk`,
109
+ simulateRiskBucketOrderRisk: () => `${API_V1}/margin/risk-buckets/simulate-order-risk`,
79
110
  },
80
111
  streams: {
81
112
  orderbook: () => `${API_V1}/streaming/orderbook`,
@@ -85,7 +116,6 @@ export const perpRoutes = {
85
116
  privateTrades: () => `${API_V1}/streaming/private-trades`,
86
117
  orders: () => `${API_V1}/streaming/orders`,
87
118
  positions: () => `${API_V1}/streaming/positions`,
88
- marginAccount: () => `${API_V1}/streaming/margin-account`,
89
119
  funding: () => `${API_V1}/streaming/funding`,
90
120
  liquidationAlerts: () => `${API_V1}/streaming/liquidation-alerts`,
91
121
  },
@@ -1,9 +1,10 @@
1
- import type { AddPositionMarginRequest, AttachPositionTpSlRequest, AttachPositionTpSlResponse, ClosePositionRequest, ClosePositionResponse, GetPositionResponse, ListPositionHistoryParams, ListPositionHistoryResponse, ListPositionsParams, ListPositionsResponse, PositionMarginResponse, PositionRisk, PositionsAPI, ReducePositionMarginRequest } from "@0xmonaco/types";
1
+ import type { AddPositionMarginRequest, AttachPositionTpSlRequest, AttachPositionTpSlResponse, BatchCloseAllRequest, BatchCloseAllResponse, ClosePositionRequest, ClosePositionResponse, GetPositionResponse, ListPositionHistoryParams, ListPositionHistoryResponse, ListPositionsParams, ListPositionsResponse, PositionMarginResponse, PositionRisk, PositionsAPI, ReducePositionMarginRequest } from "@0xmonaco/types";
2
2
  import { BaseAPI } from "../base";
3
3
  export declare class PositionsAPIImpl extends BaseAPI implements PositionsAPI {
4
4
  listPositions(params?: ListPositionsParams): Promise<ListPositionsResponse>;
5
5
  getPosition(positionId: string): Promise<GetPositionResponse>;
6
6
  closePosition(positionId: string, request: ClosePositionRequest): Promise<ClosePositionResponse>;
7
+ batchCloseAllPositions(request?: BatchCloseAllRequest): Promise<BatchCloseAllResponse>;
7
8
  getPositionRisk(positionId: string): Promise<PositionRisk>;
8
9
  addPositionMargin(positionId: string, request: AddPositionMarginRequest): Promise<PositionMarginResponse>;
9
10
  reducePositionMargin(positionId: string, request: ReducePositionMarginRequest): Promise<PositionMarginResponse>;
@@ -1,4 +1,4 @@
1
- import { AddPositionMarginSchema, AttachPositionTpSlSchema, ClosePositionSchema, GetPositionRiskSchema, GetPositionSchema, ListPositionHistorySchema, ListPositionsSchema, ReducePositionMarginSchema, validate, } from "@0xmonaco/types";
1
+ import { AddPositionMarginSchema, AttachPositionTpSlSchema, BatchCloseAllSchema, ClosePositionSchema, GetPositionRiskSchema, GetPositionSchema, ListPositionHistorySchema, ListPositionsSchema, ReducePositionMarginSchema, validate, } from "@0xmonaco/types";
2
2
  import { BaseAPI } from "../base";
3
3
  import { perpRoutes } from "../perp";
4
4
  export class PositionsAPIImpl extends BaseAPI {
@@ -24,6 +24,18 @@ export class PositionsAPIImpl extends BaseAPI {
24
24
  }),
25
25
  });
26
26
  }
27
+ async batchCloseAllPositions(request) {
28
+ if (request) {
29
+ validate(BatchCloseAllSchema, request);
30
+ }
31
+ return await this.makeAuthenticatedRequest(perpRoutes.positions.batchCloseAll(), {
32
+ method: "POST",
33
+ body: JSON.stringify({
34
+ trading_pair_id: request?.tradingPairId,
35
+ slippage_tolerance_bps: request?.slippageToleranceBps,
36
+ }),
37
+ });
38
+ }
27
39
  async getPositionRisk(positionId) {
28
40
  validate(GetPositionRiskSchema, { positionId });
29
41
  return await this.makeAuthenticatedRequest(perpRoutes.positions.risk(positionId));
@@ -17,7 +17,7 @@
17
17
  * console.log(`User: ${profile.username} (${profile.address})`);
18
18
  * ```
19
19
  */
20
- import type { AccountBalance, GetPaginatedUserMovementsResponse, GetUserBalancesParams, GetUserBalancesResponse, GetUserMovementsParams, GetUserTradesParams, GetUserTradesResponse, PortfolioChartResponse, PortfolioMetric, PortfolioPeriod, PortfolioStats, ProfileAPI, UserProfile } from "@0xmonaco/types";
20
+ import type { AccountBalance, GetPaginatedUserMovementsResponse, GetUserBalancesParams, GetUserBalancesResponse, GetUserMovementsParams, GetUserTradesParams, GetUserTradesResponse, ListFundingPaymentsParams, ListFundingPaymentsResponse, PortfolioChartResponse, PortfolioMetric, PortfolioPeriod, PortfolioStats, ProfileAPI, UserProfile } from "@0xmonaco/types";
21
21
  import { BaseAPI } from "../base";
22
22
  export declare class ProfileAPIImpl extends BaseAPI implements ProfileAPI {
23
23
  /**
@@ -188,4 +188,21 @@ export declare class ProfileAPIImpl extends BaseAPI implements ProfileAPI {
188
188
  * ```
189
189
  */
190
190
  getUserTrades(params?: GetUserTradesParams): Promise<GetUserTradesResponse>;
191
+ /**
192
+ * List the current user's funding payment history with pagination and filters.
193
+ *
194
+ * Fetches funding payments from the /api/v1/accounts/funding-payments endpoint.
195
+ * Requires a valid access token to be set.
196
+ *
197
+ * @param params - Optional query parameters for pagination and filtering
198
+ * @returns Promise resolving to paginated funding payments response
199
+ * @throws {APIError} When the request fails or user is not authenticated
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const funding = await profileAPI.listFundingPayments({ trading_pair_id: "550e8400-e29b-41d4-a716-446655440000" });
204
+ * console.log(`Total funding payments: ${funding.total}`);
205
+ * ```
206
+ */
207
+ listFundingPayments(params?: ListFundingPaymentsParams): Promise<ListFundingPaymentsResponse>;
191
208
  }
@@ -17,7 +17,7 @@
17
17
  * console.log(`User: ${profile.username} (${profile.address})`);
18
18
  * ```
19
19
  */
20
- import { GetUserMovementsSchema, GetUserTradesSchema, validate } from "@0xmonaco/types";
20
+ import { GetUserMovementsSchema, GetUserTradesSchema, ListFundingPaymentsSchema, validate } from "@0xmonaco/types";
21
21
  import { APIError } from "../../errors";
22
22
  import { BaseAPI } from "../base";
23
23
  export class ProfileAPIImpl extends BaseAPI {
@@ -256,4 +256,44 @@ export class ProfileAPIImpl extends BaseAPI {
256
256
  const url = queryString ? `/api/v1/accounts/trades?${queryString}` : "/api/v1/accounts/trades";
257
257
  return await this.makeAuthenticatedRequest(url);
258
258
  }
259
+ /**
260
+ * List the current user's funding payment history with pagination and filters.
261
+ *
262
+ * Fetches funding payments from the /api/v1/accounts/funding-payments endpoint.
263
+ * Requires a valid access token to be set.
264
+ *
265
+ * @param params - Optional query parameters for pagination and filtering
266
+ * @returns Promise resolving to paginated funding payments response
267
+ * @throws {APIError} When the request fails or user is not authenticated
268
+ *
269
+ * @example
270
+ * ```typescript
271
+ * const funding = await profileAPI.listFundingPayments({ trading_pair_id: "550e8400-e29b-41d4-a716-446655440000" });
272
+ * console.log(`Total funding payments: ${funding.total}`);
273
+ * ```
274
+ */
275
+ async listFundingPayments(params) {
276
+ if (params) {
277
+ validate(ListFundingPaymentsSchema, params);
278
+ }
279
+ const searchParams = new URLSearchParams();
280
+ if (params?.page !== undefined) {
281
+ searchParams.append("page", params.page.toString());
282
+ }
283
+ if (params?.page_size !== undefined) {
284
+ searchParams.append("page_size", params.page_size.toString());
285
+ }
286
+ if (params?.trading_pair_id !== undefined) {
287
+ searchParams.append("trading_pair_id", params.trading_pair_id);
288
+ }
289
+ if (params?.position_id !== undefined) {
290
+ searchParams.append("position_id", params.position_id);
291
+ }
292
+ if (params?.margin_account_id !== undefined) {
293
+ searchParams.append("margin_account_id", params.margin_account_id);
294
+ }
295
+ const queryString = searchParams.toString();
296
+ const url = queryString ? `/api/v1/accounts/funding-payments?${queryString}` : "/api/v1/accounts/funding-payments";
297
+ return await this.makeAuthenticatedRequest(url);
298
+ }
259
299
  }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Sub-Accounts API Implementation
3
+ *
4
+ * Manage a master account's sub-accounts and their per-asset spending limits.
5
+ * All methods are session-authenticated. The limit mutations (`createLimit`,
6
+ * `updateLimit`, `deleteLimit`) additionally require the master account to hold
7
+ * the `ManageSubAccounts` permission — enforced server-side, so a non-master or
8
+ * unpermissioned caller receives a 403.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const { sub_accounts } = await sdk.subAccounts.list();
13
+ * await sdk.subAccounts.createLimit({ sub_account_id, asset_id, max_amount: "1000.00" });
14
+ * ```
15
+ */
16
+ import type { CreateSubAccountLimitRequest, CreateSubAccountLimitResponse, GetSubAccountLimitsResponse, ListSubAccountsResponse, SubAccountsAPI, UpdateSubAccountLimitBody, UpdateSubAccountLimitResponse } from "@0xmonaco/types";
17
+ import { BaseAPI } from "../base";
18
+ export declare class SubAccountsAPIImpl extends BaseAPI implements SubAccountsAPI {
19
+ /**
20
+ * Lists the authenticated master account's sub-accounts with balances.
21
+ *
22
+ * @returns Promise resolving to the sub-accounts and total count
23
+ */
24
+ list(): Promise<ListSubAccountsResponse>;
25
+ /**
26
+ * Creates a per-asset spending limit on a sub-account.
27
+ *
28
+ * Requires the `ManageSubAccounts` permission (enforced server-side).
29
+ *
30
+ * @param body - Sub-account, asset, max amount, and optional daily limit
31
+ * @returns Promise resolving to the created limit
32
+ */
33
+ createLimit(body: CreateSubAccountLimitRequest): Promise<CreateSubAccountLimitResponse>;
34
+ /**
35
+ * Gets the limits configured for a sub-account.
36
+ *
37
+ * @param subAccountId - Sub-account UUID
38
+ * @returns Promise resolving to the sub-account's limits
39
+ */
40
+ getLimits(subAccountId: string): Promise<GetSubAccountLimitsResponse>;
41
+ /**
42
+ * Updates a sub-account's per-asset limit (partial update).
43
+ *
44
+ * Requires the `ManageSubAccounts` permission (enforced server-side).
45
+ *
46
+ * @param subAccountId - Sub-account UUID
47
+ * @param assetId - Asset UUID
48
+ * @param body - Fields to update
49
+ * @returns Promise resolving to the updated limit
50
+ */
51
+ updateLimit(subAccountId: string, assetId: string, body: UpdateSubAccountLimitBody): Promise<UpdateSubAccountLimitResponse>;
52
+ /**
53
+ * Deletes a sub-account's per-asset limit.
54
+ *
55
+ * Requires the `ManageSubAccounts` permission (enforced server-side).
56
+ *
57
+ * @param subAccountId - Sub-account UUID
58
+ * @param assetId - Asset UUID
59
+ * @returns Promise resolving when the limit is deleted
60
+ */
61
+ deleteLimit(subAccountId: string, assetId: string): Promise<void>;
62
+ }