@0xmonaco/core 0.8.8 → 0.8.11
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.
- package/README.md +3 -12
- package/dist/api/applications/api.d.ts +61 -8
- package/dist/api/applications/api.js +71 -7
- package/dist/api/auth/api.d.ts +7 -26
- package/dist/api/auth/api.js +6 -42
- package/dist/api/base.d.ts +35 -0
- package/dist/api/base.js +60 -0
- package/dist/api/delegated-agents/api.d.ts +2 -1
- package/dist/api/delegated-agents/api.js +4 -0
- package/dist/api/faucet/api.d.ts +25 -0
- package/dist/api/faucet/api.js +29 -0
- package/dist/api/faucet/index.d.ts +1 -0
- package/dist/api/faucet/index.js +1 -0
- package/dist/api/index.d.ts +4 -0
- package/dist/api/index.js +4 -0
- package/dist/api/margin-accounts/api.d.ts +3 -4
- package/dist/api/margin-accounts/api.js +8 -15
- package/dist/api/market/api.d.ts +4 -1
- package/dist/api/market/api.js +14 -0
- package/dist/api/perp/routes.d.ts +64 -4
- package/dist/api/perp/routes.js +28 -4
- package/dist/api/profile/api.d.ts +18 -1
- package/dist/api/profile/api.js +41 -1
- package/dist/api/sub-accounts/api.d.ts +62 -0
- package/dist/api/sub-accounts/api.js +80 -0
- package/dist/api/sub-accounts/index.d.ts +1 -0
- package/dist/api/sub-accounts/index.js +1 -0
- package/dist/api/trades/api.d.ts +12 -1
- package/dist/api/trades/api.js +13 -1
- package/dist/api/trading/api.d.ts +5 -2
- package/dist/api/trading/api.js +7 -24
- package/dist/api/vault/api.d.ts +26 -2
- package/dist/api/vault/api.js +33 -4
- package/dist/api/vault/index.d.ts +1 -1
- package/dist/api/vault/index.js +1 -1
- package/dist/api/whitelist/api.d.ts +27 -0
- package/dist/api/whitelist/api.js +32 -0
- package/dist/api/whitelist/index.d.ts +1 -0
- package/dist/api/whitelist/index.js +1 -0
- package/dist/api/withdrawals/api.d.ts +15 -0
- package/dist/api/withdrawals/api.js +27 -0
- package/dist/api/withdrawals/index.d.ts +1 -0
- package/dist/api/withdrawals/index.js +1 -0
- package/dist/coverage.d.ts +86 -0
- package/dist/coverage.js +86 -0
- package/dist/sdk.d.ts +32 -1
- package/dist/sdk.js +88 -0
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GetAvailableCollateralSchema, GetMarginAccountMovementsSchema, GetMarginAccountSummarySchema, ListMarginAccountsSchema, SimulateAutoMarginOrderRiskSchema, SimulateOrderRiskSchema, TransferCollateralSchema, TransferCollateralToAutoMarginAccountSchema, 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,9 @@ export class MarginAccountsAPIImpl extends BaseAPI {
|
|
|
15
15
|
}
|
|
16
16
|
: undefined));
|
|
17
17
|
}
|
|
18
|
-
async
|
|
19
|
-
validate(
|
|
20
|
-
return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.
|
|
21
|
-
method: "POST",
|
|
22
|
-
body: JSON.stringify({
|
|
23
|
-
label: request?.label,
|
|
24
|
-
collateral_asset: request?.collateralAsset,
|
|
25
|
-
}),
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
async getMarginAccountSummary(marginAccountId) {
|
|
29
|
-
validate(GetMarginAccountSummarySchema, { marginAccountId });
|
|
30
|
-
return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.summary(marginAccountId));
|
|
18
|
+
async getMarginAccountSummary(marginAccountId, params) {
|
|
19
|
+
validate(GetMarginAccountSummarySchema, { marginAccountId, ...params });
|
|
20
|
+
return await this.makeAuthenticatedRequest(perpRoutes.marginAccounts.summary(marginAccountId, { trading_pair_id: params?.tradingPairId }));
|
|
31
21
|
}
|
|
32
22
|
async getAvailableCollateral(params) {
|
|
33
23
|
validate(GetAvailableCollateralSchema, params);
|
|
@@ -40,6 +30,8 @@ export class MarginAccountsAPIImpl extends BaseAPI {
|
|
|
40
30
|
body: JSON.stringify({
|
|
41
31
|
asset: request.asset,
|
|
42
32
|
amount: request.amount,
|
|
33
|
+
trading_pair_id: request.tradingPairId,
|
|
34
|
+
strategy_key: request.strategyKey,
|
|
43
35
|
}),
|
|
44
36
|
});
|
|
45
37
|
}
|
|
@@ -62,6 +54,8 @@ export class MarginAccountsAPIImpl extends BaseAPI {
|
|
|
62
54
|
body: JSON.stringify({
|
|
63
55
|
asset: request.asset,
|
|
64
56
|
amount: request.amount,
|
|
57
|
+
trading_pair_id: request.tradingPairId,
|
|
58
|
+
strategy_key: request.strategyKey,
|
|
65
59
|
}),
|
|
66
60
|
});
|
|
67
61
|
}
|
|
@@ -75,7 +69,6 @@ export class MarginAccountsAPIImpl extends BaseAPI {
|
|
|
75
69
|
method: "POST",
|
|
76
70
|
body: JSON.stringify({
|
|
77
71
|
trading_pair_id: request.tradingPairId,
|
|
78
|
-
strategy_key: request.strategyKey,
|
|
79
72
|
side: request.side,
|
|
80
73
|
position_side: request.positionSide,
|
|
81
74
|
order_type: request.orderType,
|
package/dist/api/market/api.d.ts
CHANGED
|
@@ -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, TradingPair } from "@0xmonaco/types";
|
|
2
2
|
import { BaseAPI } from "../base";
|
|
3
3
|
/**
|
|
4
4
|
* Market API Implementation
|
|
@@ -7,6 +7,7 @@ import { BaseAPI } from "../base";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class MarketAPIImpl extends BaseAPI implements MarketAPI {
|
|
9
9
|
getPaginatedTradingPairs(params?: GetTradingPairsParams): Promise<GetTradingPairsResponse>;
|
|
10
|
+
getTradingPair(tradingPairId: string): Promise<TradingPair>;
|
|
10
11
|
getTradingPairBySymbol(symbol: string): Promise<TradingPair | undefined>;
|
|
11
12
|
getCandlesticks(tradingPairId: string, interval: Interval, params?: GetCandlesticksParams): Promise<Candlestick[]>;
|
|
12
13
|
getMarketMetadata(tradingPairId: string): Promise<MarketMetadata>;
|
|
@@ -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
|
}
|
package/dist/api/market/api.js
CHANGED
|
@@ -27,10 +27,18 @@ 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
|
}
|
|
37
|
+
async getTradingPair(tradingPairId) {
|
|
38
|
+
validate(GetMarketMetadataSchema, { tradingPairId });
|
|
39
|
+
const response = await this.makePublicRequest(perpRoutes.market.getTradingPair(tradingPairId));
|
|
40
|
+
return response.trading_pair;
|
|
41
|
+
}
|
|
34
42
|
async getTradingPairBySymbol(symbol) {
|
|
35
43
|
// Backend endpoint expects UUID, not symbol, so we fetch all pairs and filter
|
|
36
44
|
const response = await this.getPaginatedTradingPairs({ page_size: 100 });
|
|
@@ -94,4 +102,10 @@ export class MarketAPIImpl extends BaseAPI {
|
|
|
94
102
|
validate(GetMarketMetadataSchema, { tradingPairId });
|
|
95
103
|
return await this.makePublicRequest(perpRoutes.market.getOpenInterest(tradingPairId));
|
|
96
104
|
}
|
|
105
|
+
async getScreener(params) {
|
|
106
|
+
return await this.makePublicRequest(perpRoutes.market.getScreener(params));
|
|
107
|
+
}
|
|
108
|
+
async getMarketStats() {
|
|
109
|
+
return await this.makePublicRequest(perpRoutes.market.getMarketStats());
|
|
110
|
+
}
|
|
97
111
|
}
|
|
@@ -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;
|
|
@@ -110,8 +170,9 @@ export declare const perpRoutes: {
|
|
|
110
170
|
state?: string;
|
|
111
171
|
trading_pair_id?: string;
|
|
112
172
|
}) => string;
|
|
113
|
-
readonly
|
|
114
|
-
|
|
173
|
+
readonly summary: (marginAccountId: string, params?: {
|
|
174
|
+
trading_pair_id?: string;
|
|
175
|
+
}) => string;
|
|
115
176
|
readonly availableCollateral: (params?: {
|
|
116
177
|
asset?: string;
|
|
117
178
|
}) => string;
|
|
@@ -134,7 +195,6 @@ export declare const perpRoutes: {
|
|
|
134
195
|
readonly privateTrades: () => string;
|
|
135
196
|
readonly orders: () => string;
|
|
136
197
|
readonly positions: () => string;
|
|
137
|
-
readonly marginAccount: () => string;
|
|
138
198
|
readonly funding: () => string;
|
|
139
199
|
readonly liquidationAlerts: () => string;
|
|
140
200
|
};
|
package/dist/api/perp/routes.js
CHANGED
|
@@ -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,14 +51,36 @@ 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)}`,
|
|
@@ -67,8 +93,7 @@ export const perpRoutes = {
|
|
|
67
93
|
},
|
|
68
94
|
marginAccounts: {
|
|
69
95
|
list: (params) => withQuery(`${API_V1}/margin/accounts`, params),
|
|
70
|
-
|
|
71
|
-
summary: (marginAccountId) => `${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}`,
|
|
96
|
+
summary: (marginAccountId, params) => withQuery(`${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}`, params),
|
|
72
97
|
availableCollateral: (params) => withQuery(`${API_V1}/margin/collateral/available`, params),
|
|
73
98
|
transferIn: (marginAccountId) => `${API_V1}/margin/accounts/${encodeSegment(marginAccountId)}/collateral/transfer-in`,
|
|
74
99
|
transferInAuto: () => `${API_V1}/margin/collateral/transfer-in`,
|
|
@@ -85,7 +110,6 @@ export const perpRoutes = {
|
|
|
85
110
|
privateTrades: () => `${API_V1}/streaming/private-trades`,
|
|
86
111
|
orders: () => `${API_V1}/streaming/orders`,
|
|
87
112
|
positions: () => `${API_V1}/streaming/positions`,
|
|
88
|
-
marginAccount: () => `${API_V1}/streaming/margin-account`,
|
|
89
113
|
funding: () => `${API_V1}/streaming/funding`,
|
|
90
114
|
liquidationAlerts: () => `${API_V1}/streaming/liquidation-alerts`,
|
|
91
115
|
},
|
|
@@ -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
|
}
|
package/dist/api/profile/api.js
CHANGED
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { BaseAPI } from "../base";
|
|
17
|
+
import { perpRoutes } from "../perp/routes";
|
|
18
|
+
export class SubAccountsAPIImpl extends BaseAPI {
|
|
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
|
+
async list() {
|
|
25
|
+
return await this.makeAuthenticatedRequest(perpRoutes.subAccounts.list());
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Creates a per-asset spending limit on a sub-account.
|
|
29
|
+
*
|
|
30
|
+
* Requires the `ManageSubAccounts` permission (enforced server-side).
|
|
31
|
+
*
|
|
32
|
+
* @param body - Sub-account, asset, max amount, and optional daily limit
|
|
33
|
+
* @returns Promise resolving to the created limit
|
|
34
|
+
*/
|
|
35
|
+
async createLimit(body) {
|
|
36
|
+
return await this.makeAuthenticatedRequest(perpRoutes.subAccounts.createLimit(), {
|
|
37
|
+
method: "POST",
|
|
38
|
+
body: JSON.stringify(body),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets the limits configured for a sub-account.
|
|
43
|
+
*
|
|
44
|
+
* @param subAccountId - Sub-account UUID
|
|
45
|
+
* @returns Promise resolving to the sub-account's limits
|
|
46
|
+
*/
|
|
47
|
+
async getLimits(subAccountId) {
|
|
48
|
+
return await this.makeAuthenticatedRequest(perpRoutes.subAccounts.getLimits(subAccountId));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Updates a sub-account's per-asset limit (partial update).
|
|
52
|
+
*
|
|
53
|
+
* Requires the `ManageSubAccounts` permission (enforced server-side).
|
|
54
|
+
*
|
|
55
|
+
* @param subAccountId - Sub-account UUID
|
|
56
|
+
* @param assetId - Asset UUID
|
|
57
|
+
* @param body - Fields to update
|
|
58
|
+
* @returns Promise resolving to the updated limit
|
|
59
|
+
*/
|
|
60
|
+
async updateLimit(subAccountId, assetId, body) {
|
|
61
|
+
return await this.makeAuthenticatedRequest(perpRoutes.subAccounts.limit(subAccountId, assetId), {
|
|
62
|
+
method: "PUT",
|
|
63
|
+
body: JSON.stringify(body),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Deletes a sub-account's per-asset limit.
|
|
68
|
+
*
|
|
69
|
+
* Requires the `ManageSubAccounts` permission (enforced server-side).
|
|
70
|
+
*
|
|
71
|
+
* @param subAccountId - Sub-account UUID
|
|
72
|
+
* @param assetId - Asset UUID
|
|
73
|
+
* @returns Promise resolving when the limit is deleted
|
|
74
|
+
*/
|
|
75
|
+
async deleteLimit(subAccountId, assetId) {
|
|
76
|
+
await this.makeAuthenticatedRequest(perpRoutes.subAccounts.limit(subAccountId, assetId), {
|
|
77
|
+
method: "DELETE",
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SubAccountsAPIImpl } from "./api";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SubAccountsAPIImpl } from "./api";
|
package/dist/api/trades/api.d.ts
CHANGED
|
@@ -11,8 +11,11 @@ interface RawTradeEvent {
|
|
|
11
11
|
trade_id: string;
|
|
12
12
|
price: string;
|
|
13
13
|
quantity: string;
|
|
14
|
+
/** Raw (integer) quantity; present on single-trade lookups, ignored when mapping */
|
|
15
|
+
quantity_raw?: string;
|
|
14
16
|
maker_side: string;
|
|
15
|
-
|
|
17
|
+
/** Absent when the trade has no recorded execution time */
|
|
18
|
+
executed_at?: string;
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
21
|
/**
|
|
@@ -40,5 +43,13 @@ export declare class TradesAPIImpl extends BaseAPI {
|
|
|
40
43
|
* @returns Array of TradeEvent records sorted by executed_at descending (newest first)
|
|
41
44
|
*/
|
|
42
45
|
getTrades(tradingPairId: string, options?: GetTradesOptions): Promise<TradeEvent[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Get a single trade by its UUID.
|
|
48
|
+
*
|
|
49
|
+
* @param tradeId - The trade UUID
|
|
50
|
+
* @returns The matching TradeEvent
|
|
51
|
+
* @throws {APIError} If the trade is not found
|
|
52
|
+
*/
|
|
53
|
+
getTradeById(tradeId: string): Promise<TradeEvent>;
|
|
43
54
|
}
|
|
44
55
|
export {};
|
package/dist/api/trades/api.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseAPI } from "../base";
|
|
2
|
+
import { perpRoutes } from "../perp";
|
|
2
3
|
/**
|
|
3
4
|
* Convert a raw trade event (snake_case) to a TradeEvent (camelCase)
|
|
4
5
|
*/
|
|
@@ -12,7 +13,7 @@ export function parseRawTradeEvent(raw) {
|
|
|
12
13
|
price: raw.data.price,
|
|
13
14
|
quantity: raw.data.quantity,
|
|
14
15
|
makerSide: raw.data.maker_side.toUpperCase(),
|
|
15
|
-
executedAt: raw.data.executed_at,
|
|
16
|
+
executedAt: raw.data.executed_at ?? "",
|
|
16
17
|
},
|
|
17
18
|
};
|
|
18
19
|
}
|
|
@@ -39,4 +40,15 @@ export class TradesAPIImpl extends BaseAPI {
|
|
|
39
40
|
const response = await this.makePublicRequest(`/api/v1/trades/${encodeURIComponent(tradingPairId)}?${params.toString()}`);
|
|
40
41
|
return response.trades.map(parseRawTradeEvent);
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Get a single trade by its UUID.
|
|
45
|
+
*
|
|
46
|
+
* @param tradeId - The trade UUID
|
|
47
|
+
* @returns The matching TradeEvent
|
|
48
|
+
* @throws {APIError} If the trade is not found
|
|
49
|
+
*/
|
|
50
|
+
async getTradeById(tradeId) {
|
|
51
|
+
const response = await this.makePublicRequest(perpRoutes.trades.byId(tradeId));
|
|
52
|
+
return parseRawTradeEvent(response);
|
|
53
|
+
}
|
|
42
54
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* );
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
import type { BatchCancelOrdersResponse, BatchCreateOrderParams, BatchCreateOrdersResponse, BatchReplaceOrderParams, BatchReplaceOrdersResponse, CancelConditionalOrderResponse, CancelOrderResponse,
|
|
24
|
+
import type { BatchCancelOrdersResponse, BatchCreateOrderParams, BatchCreateOrdersResponse, BatchReplaceOrderParams, BatchReplaceOrdersResponse, CancelConditionalOrderResponse, CancelOrderResponse, CreateOrderResponse, GetOrderResponse, GetPaginatedOrdersParams, GetPaginatedOrdersResponse, ListConditionalOrdersParams, ListConditionalOrdersResponse, OrderSide, ParentTpSlLegParams, PositionSide, ReplaceOrderResponse, TimeInForce, TradingAPI, TradingMode } from "@0xmonaco/types";
|
|
25
25
|
import { BaseAPI } from "../base";
|
|
26
26
|
export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
|
|
27
27
|
/**
|
|
@@ -80,6 +80,8 @@ export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
|
|
|
80
80
|
expirationDate?: string;
|
|
81
81
|
timeInForce?: TimeInForce;
|
|
82
82
|
marginAccountId?: string;
|
|
83
|
+
marginBucketId?: string;
|
|
84
|
+
marginBucketCollateral?: string;
|
|
83
85
|
strategyKey?: string;
|
|
84
86
|
positionSide?: PositionSide;
|
|
85
87
|
leverage?: string;
|
|
@@ -132,6 +134,8 @@ export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
|
|
|
132
134
|
tradingMode?: TradingMode;
|
|
133
135
|
slippageTolerance?: number;
|
|
134
136
|
marginAccountId?: string;
|
|
137
|
+
marginBucketId?: string;
|
|
138
|
+
marginBucketCollateral?: string;
|
|
135
139
|
strategyKey?: string;
|
|
136
140
|
positionSide?: PositionSide;
|
|
137
141
|
leverage?: string;
|
|
@@ -156,7 +160,6 @@ export declare class TradingAPIImpl extends BaseAPI implements TradingAPI {
|
|
|
156
160
|
* ```
|
|
157
161
|
*/
|
|
158
162
|
cancelOrder(orderId: string): Promise<CancelOrderResponse>;
|
|
159
|
-
createConditionalOrder(params: CreateConditionalOrderParams): Promise<CreateConditionalOrderResponse>;
|
|
160
163
|
cancelConditionalOrder(conditionalOrderId: string): Promise<CancelConditionalOrderResponse>;
|
|
161
164
|
listConditionalOrders(params?: ListConditionalOrdersParams): Promise<ListConditionalOrdersResponse>;
|
|
162
165
|
/**
|