@decibeltrade/sdk 0.2.3 → 0.2.4
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/dist/abi/generate-abis.js +9 -44
- package/dist/abi/types.js +1 -2
- package/dist/admin.js +10 -14
- package/dist/base.js +20 -27
- package/dist/constants.js +36 -43
- package/dist/fee-pay.js +1 -4
- package/dist/gas/gas-price-manager.js +3 -7
- package/dist/index.js +10 -26
- package/dist/order-event.types.js +1 -2
- package/dist/order-status.js +16 -23
- package/dist/read/account-overview/account-overview.reader.js +5 -9
- package/dist/read/account-overview/account-overview.types.d.ts +7 -7
- package/dist/read/account-overview/account-overview.types.js +23 -29
- package/dist/read/base-reader.js +5 -9
- package/dist/read/candlesticks/candlesticks.reader.js +8 -12
- package/dist/read/candlesticks/candlesticks.types.js +14 -20
- package/dist/read/delegations/delegations.reader.js +4 -8
- package/dist/read/delegations/delegations.types.js +6 -12
- package/dist/read/index.js +50 -68
- package/dist/read/leaderboard/leaderboard.reader.js +6 -10
- package/dist/read/leaderboard/leaderboard.types.js +10 -13
- package/dist/read/market-contexts/market-contexts.reader.js +4 -8
- package/dist/read/market-contexts/market-contexts.types.js +11 -17
- package/dist/read/market-depth/market-depth.reader.js +9 -13
- package/dist/read/market-depth/market-depth.types.js +8 -14
- package/dist/read/market-prices/market-prices.reader.js +11 -15
- package/dist/read/market-prices/market-prices.types.js +22 -25
- package/dist/read/market-trades/market-trades.reader.js +8 -12
- package/dist/read/market-trades/market-trades.types.js +18 -21
- package/dist/read/markets/markets.reader.js +7 -11
- package/dist/read/markets/markets.types.js +32 -35
- package/dist/read/pagination.types.js +4 -11
- package/dist/read/portfolio-chart/portfolio-chart.reader.js +4 -8
- package/dist/read/portfolio-chart/portfolio-chart.types.js +5 -11
- package/dist/read/types.js +58 -75
- package/dist/read/user-active-twaps/user-active-twaps.reader.js +5 -9
- package/dist/read/user-active-twaps/user-active-twaps.types.js +18 -24
- package/dist/read/user-bulk-orders/user-bulk-orders.reader.js +5 -9
- package/dist/read/user-bulk-orders/user-bulk-orders.types.js +16 -22
- package/dist/read/user-funding-history/user-funding-history.reader.js +5 -9
- package/dist/read/user-funding-history/user-funding-history.types.js +13 -19
- package/dist/read/user-notifications/user-notifications.reader.js +4 -8
- package/dist/read/user-notifications/user-notifications.types.js +19 -25
- package/dist/read/user-open-orders/user-open-orders.reader.js +5 -9
- package/dist/read/user-open-orders/user-open-orders.types.js +27 -33
- package/dist/read/user-order-history/user-order-history.reader.js +5 -9
- package/dist/read/user-order-history/user-order-history.types.js +32 -38
- package/dist/read/user-positions/user-positions.reader.js +5 -9
- package/dist/read/user-positions/user-positions.types.d.ts +13 -13
- package/dist/read/user-positions/user-positions.types.js +21 -27
- package/dist/read/user-subaccounts/user-subaccounts.reader.js +4 -8
- package/dist/read/user-subaccounts/user-subaccounts.types.js +8 -14
- package/dist/read/user-trade-history/user-trade-history.reader.js +5 -9
- package/dist/read/user-trade-history/user-trade-history.types.js +18 -24
- package/dist/read/vaults/vaults.reader.js +6 -10
- package/dist/read/vaults/vaults.types.js +53 -59
- package/dist/read/ws-subscription.d.ts +1 -1
- package/dist/read/ws-subscription.js +12 -19
- package/dist/subaccount-types.js +4 -10
- package/dist/transaction-builder.js +11 -16
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils.js +34 -50
- package/dist/write.d.ts +2 -2
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +22 -26
- package/package.json +1 -1
- package/src/read/ws-subscription.ts +2 -2
- package/src/write.ts +3 -3
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
is_funding_positive: v4_1.z.boolean(),
|
|
12
|
-
open_interest: v4_1.z.number(),
|
|
13
|
-
transaction_unix_ms: v4_1.z.number(),
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export const PricesSchema = z.object({
|
|
3
|
+
market: z.string(),
|
|
4
|
+
mark_px: z.number(),
|
|
5
|
+
mid_px: z.number(),
|
|
6
|
+
oracle_px: z.number(),
|
|
7
|
+
funding_rate_bps: z.number(),
|
|
8
|
+
is_funding_positive: z.boolean(),
|
|
9
|
+
open_interest: z.number(),
|
|
10
|
+
transaction_unix_ms: z.number(),
|
|
14
11
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
market:
|
|
18
|
-
mark_px:
|
|
19
|
-
mid_px:
|
|
20
|
-
oracle_px:
|
|
21
|
-
funding_rate_bps:
|
|
22
|
-
is_funding_positive:
|
|
23
|
-
open_interest:
|
|
24
|
-
transaction_unix_ms:
|
|
12
|
+
export const MarketPricesSchema = z.array(PricesSchema);
|
|
13
|
+
export const MarketPriceSchema = z.object({
|
|
14
|
+
market: z.string(),
|
|
15
|
+
mark_px: z.number(),
|
|
16
|
+
mid_px: z.number(),
|
|
17
|
+
oracle_px: z.number(),
|
|
18
|
+
funding_rate_bps: z.number(),
|
|
19
|
+
is_funding_positive: z.boolean(),
|
|
20
|
+
open_interest: z.number(),
|
|
21
|
+
transaction_unix_ms: z.number(),
|
|
25
22
|
});
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
export const MarketPriceWsMessageSchema = z.object({ price: MarketPriceSchema });
|
|
24
|
+
export const AllMarketPricesWsMessageSchema = z.object({ prices: MarketPricesSchema });
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const base_reader_1 = require("../base-reader");
|
|
6
|
-
const market_trades_types_1 = require("./market-trades.types");
|
|
7
|
-
class MarketTradesReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { getMarketAddr } from "../../utils";
|
|
2
|
+
import { BaseReader } from "../base-reader";
|
|
3
|
+
import { MarketTradesHistorySchema, MarketTradeWsMessageSchema, } from "./market-trades.types";
|
|
4
|
+
export class MarketTradesReader extends BaseReader {
|
|
8
5
|
/**
|
|
9
6
|
* Get the latest market trades for a given market
|
|
10
7
|
* @param marketName The name of the market to get market trades for
|
|
@@ -12,13 +9,13 @@ class MarketTradesReader extends base_reader_1.BaseReader {
|
|
|
12
9
|
* @returns The market trades for the given market
|
|
13
10
|
*/
|
|
14
11
|
async getByName({ marketName, limit, fetchOptions }) {
|
|
15
|
-
const marketAddr =
|
|
12
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
16
13
|
const queryParams = new URLSearchParams({ market: marketAddr.toString() });
|
|
17
14
|
if (limit !== undefined) {
|
|
18
15
|
queryParams.set("limit", limit.toString());
|
|
19
16
|
}
|
|
20
17
|
const response = await this.getRequest({
|
|
21
|
-
schema:
|
|
18
|
+
schema: MarketTradesHistorySchema,
|
|
22
19
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/trades`,
|
|
23
20
|
queryParams,
|
|
24
21
|
options: fetchOptions,
|
|
@@ -32,9 +29,8 @@ class MarketTradesReader extends base_reader_1.BaseReader {
|
|
|
32
29
|
* @returns A function to unsubscribe from the market trades updates
|
|
33
30
|
*/
|
|
34
31
|
subscribeByName(marketName, onData) {
|
|
35
|
-
const marketAddr =
|
|
32
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
36
33
|
const topic = `trades:${marketAddr}`;
|
|
37
|
-
return this.deps.ws.subscribe(topic,
|
|
34
|
+
return this.deps.ws.subscribe(topic, MarketTradeWsMessageSchema, onData);
|
|
38
35
|
}
|
|
39
36
|
}
|
|
40
|
-
exports.MarketTradesReader = MarketTradesReader;
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
fee_amount: v4_1.z.number(),
|
|
17
|
-
transaction_unix_ms: v4_1.z.number(),
|
|
18
|
-
transaction_version: v4_1.z.number(),
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export const MarketTradeSchema = z.object({
|
|
3
|
+
account: z.string(),
|
|
4
|
+
market: z.string(),
|
|
5
|
+
action: z.string(),
|
|
6
|
+
size: z.number(),
|
|
7
|
+
price: z.number(),
|
|
8
|
+
is_profit: z.boolean(),
|
|
9
|
+
realized_pnl_amount: z.number(),
|
|
10
|
+
is_funding_positive: z.boolean(),
|
|
11
|
+
realized_funding_amount: z.number(),
|
|
12
|
+
is_rebate: z.boolean(),
|
|
13
|
+
fee_amount: z.number(),
|
|
14
|
+
transaction_unix_ms: z.number(),
|
|
15
|
+
transaction_version: z.number(),
|
|
19
16
|
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
trades:
|
|
17
|
+
export const MarketTradesHistorySchema = z.array(MarketTradeSchema);
|
|
18
|
+
export const MarketTradeWsMessageSchema = z.object({
|
|
19
|
+
trades: z.array(MarketTradeSchema),
|
|
23
20
|
});
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const base_reader_1 = require("../base-reader");
|
|
6
|
-
const markets_types_1 = require("./markets.types");
|
|
7
|
-
class MarketsReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { getMarketAddr } from "../../utils";
|
|
2
|
+
import { BaseReader } from "../base-reader";
|
|
3
|
+
import { PerpMarketConfigSchema, PerpMarketsSchema } from "./markets.types";
|
|
4
|
+
export class MarketsReader extends BaseReader {
|
|
8
5
|
/**
|
|
9
6
|
* Get all of the available markets
|
|
10
7
|
* @returns The list of available markets
|
|
11
8
|
*/
|
|
12
9
|
async getAll({ fetchOptions } = {}) {
|
|
13
10
|
const response = await this.getRequest({
|
|
14
|
-
schema:
|
|
11
|
+
schema: PerpMarketsSchema,
|
|
15
12
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/markets`,
|
|
16
13
|
options: fetchOptions,
|
|
17
14
|
});
|
|
@@ -32,7 +29,7 @@ class MarketsReader extends base_reader_1.BaseReader {
|
|
|
32
29
|
* @returns The market config for the given name
|
|
33
30
|
*/
|
|
34
31
|
async getByName(marketName) {
|
|
35
|
-
const marketAddr =
|
|
32
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
36
33
|
try {
|
|
37
34
|
// TODO: Fix lint error
|
|
38
35
|
// eslint-disable-next-line custom/no-get-account-resource
|
|
@@ -41,7 +38,7 @@ class MarketsReader extends base_reader_1.BaseReader {
|
|
|
41
38
|
resourceType: `${this.deps.config.deployment.package}::perp_market_config::PerpMarketConfig`,
|
|
42
39
|
});
|
|
43
40
|
// TODO: Handle different __variant__ values
|
|
44
|
-
return
|
|
41
|
+
return PerpMarketConfigSchema.parse(market);
|
|
45
42
|
}
|
|
46
43
|
catch (e) {
|
|
47
44
|
console.error(e);
|
|
@@ -78,4 +75,3 @@ class MarketsReader extends base_reader_1.BaseReader {
|
|
|
78
75
|
return name[0];
|
|
79
76
|
}
|
|
80
77
|
}
|
|
81
|
-
exports.MarketsReader = MarketsReader;
|
|
@@ -1,46 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
v4_1.z.object({
|
|
9
|
-
__variant__: v4_1.z.literal("AllowlistOnly"),
|
|
10
|
-
allowlist: v4_1.z.array(v4_1.z.string()),
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export const MarketModeConfigSchema = z.discriminatedUnion("__variant__", [
|
|
3
|
+
z.object({ __variant__: z.literal("Open") }),
|
|
4
|
+
z.object({ __variant__: z.literal("ReduceOnly") }),
|
|
5
|
+
z.object({
|
|
6
|
+
__variant__: z.literal("AllowlistOnly"),
|
|
7
|
+
allowlist: z.array(z.string()),
|
|
11
8
|
}),
|
|
12
|
-
|
|
9
|
+
z.object({ __variant__: z.literal("Halt") }),
|
|
13
10
|
]);
|
|
14
|
-
|
|
15
|
-
__variant__:
|
|
16
|
-
name:
|
|
17
|
-
sz_precision:
|
|
18
|
-
decimals:
|
|
19
|
-
multiplier:
|
|
11
|
+
export const PerpMarketConfigSchema = z.object({
|
|
12
|
+
__variant__: z.literal("V1"),
|
|
13
|
+
name: z.string(),
|
|
14
|
+
sz_precision: z.object({
|
|
15
|
+
decimals: z.number(),
|
|
16
|
+
multiplier: z.string(),
|
|
20
17
|
}),
|
|
21
|
-
min_size:
|
|
22
|
-
lot_size:
|
|
23
|
-
ticker_size:
|
|
24
|
-
max_leverage:
|
|
25
|
-
mode:
|
|
18
|
+
min_size: z.string(),
|
|
19
|
+
lot_size: z.string(),
|
|
20
|
+
ticker_size: z.string(),
|
|
21
|
+
max_leverage: z.number(),
|
|
22
|
+
mode: MarketModeConfigSchema,
|
|
26
23
|
});
|
|
27
|
-
|
|
24
|
+
export const MarketModeSchema = z.enum([
|
|
28
25
|
"Open",
|
|
29
26
|
"ReduceOnly",
|
|
30
27
|
"AllowlistOnly",
|
|
31
28
|
"Halt",
|
|
32
29
|
"Delisting",
|
|
33
30
|
]);
|
|
34
|
-
|
|
35
|
-
market_addr:
|
|
36
|
-
market_name:
|
|
37
|
-
sz_decimals:
|
|
38
|
-
px_decimals:
|
|
39
|
-
max_leverage:
|
|
40
|
-
tick_size:
|
|
41
|
-
min_size:
|
|
42
|
-
lot_size:
|
|
43
|
-
max_open_interest:
|
|
44
|
-
mode:
|
|
31
|
+
export const PerpMarketSchema = z.object({
|
|
32
|
+
market_addr: z.string(),
|
|
33
|
+
market_name: z.string(),
|
|
34
|
+
sz_decimals: z.number(),
|
|
35
|
+
px_decimals: z.number(),
|
|
36
|
+
max_leverage: z.number(),
|
|
37
|
+
tick_size: z.number(),
|
|
38
|
+
min_size: z.number(),
|
|
39
|
+
lot_size: z.number(),
|
|
40
|
+
max_open_interest: z.number(),
|
|
41
|
+
mode: MarketModeSchema,
|
|
45
42
|
});
|
|
46
|
-
|
|
43
|
+
export const PerpMarketsSchema = z.array(PerpMarketSchema);
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PaginatedResponseSchema = void 0;
|
|
7
|
-
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
-
const PaginatedResponseSchema = (itemSchema) => v4_1.default.object({
|
|
9
|
-
items: v4_1.default.array(itemSchema),
|
|
10
|
-
total_count: v4_1.default.number(),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const PaginatedResponseSchema = (itemSchema) => z.object({
|
|
3
|
+
items: z.array(itemSchema),
|
|
4
|
+
total_count: z.number(),
|
|
11
5
|
});
|
|
12
|
-
exports.PaginatedResponseSchema = PaginatedResponseSchema;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const base_reader_1 = require("../base-reader");
|
|
5
|
-
const portfolio_chart_types_1 = require("./portfolio-chart.types");
|
|
6
|
-
class PortfolioChartReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { PortfolioChartSchema } from "./portfolio-chart.types";
|
|
3
|
+
export class PortfolioChartReader extends BaseReader {
|
|
7
4
|
/**
|
|
8
5
|
* Get the portfolio chart for a given user
|
|
9
6
|
* @param subAddr The subaccount address to get the account overview for
|
|
@@ -11,7 +8,7 @@ class PortfolioChartReader extends base_reader_1.BaseReader {
|
|
|
11
8
|
*/
|
|
12
9
|
async getByAddr({ subAddr, range, type, fetchOptions }) {
|
|
13
10
|
const response = await this.getRequest({
|
|
14
|
-
schema:
|
|
11
|
+
schema: PortfolioChartSchema,
|
|
15
12
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/portfolio_chart`,
|
|
16
13
|
queryParams: { user: subAddr, range, data_type: type },
|
|
17
14
|
options: fetchOptions,
|
|
@@ -19,4 +16,3 @@ class PortfolioChartReader extends base_reader_1.BaseReader {
|
|
|
19
16
|
return response.data;
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
|
-
exports.PortfolioChartReader = PortfolioChartReader;
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PortfolioChartSchema = exports.PortfolioChartPnlItemSchema = void 0;
|
|
7
|
-
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
-
exports.PortfolioChartPnlItemSchema = v4_1.default.object({
|
|
9
|
-
timestamp: v4_1.default.number(),
|
|
10
|
-
data_points: v4_1.default.number(),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const PortfolioChartPnlItemSchema = z.object({
|
|
3
|
+
timestamp: z.number(),
|
|
4
|
+
data_points: z.number(),
|
|
11
5
|
});
|
|
12
|
-
|
|
6
|
+
export const PortfolioChartSchema = z.array(PortfolioChartPnlItemSchema);
|
package/dist/read/types.js
CHANGED
|
@@ -1,87 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.GlobalAccountsState = exports.GlobalAccountsStateV1 = exports.CollateralBalanceSheet = exports.LiquidationConfigV1 = exports.CrossedPosition = exports.PerpPosition = void 0;
|
|
18
|
-
const v4_1 = require("zod/v4");
|
|
1
|
+
import { z } from "zod/v4";
|
|
19
2
|
// Export all types from readers
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
size:
|
|
43
|
-
sz_decimals:
|
|
44
|
-
entry_px:
|
|
45
|
-
max_leverage:
|
|
46
|
-
is_long:
|
|
47
|
-
token_type:
|
|
3
|
+
export * from "./account-overview/account-overview.types";
|
|
4
|
+
export * from "./candlesticks/candlesticks.types";
|
|
5
|
+
export * from "./delegations/delegations.types";
|
|
6
|
+
export * from "./leaderboard/leaderboard.types";
|
|
7
|
+
export * from "./market-contexts/market-contexts.types";
|
|
8
|
+
export * from "./market-depth/market-depth.types";
|
|
9
|
+
export * from "./market-prices/market-prices.types";
|
|
10
|
+
export * from "./market-trades/market-trades.types";
|
|
11
|
+
export * from "./markets/markets.types";
|
|
12
|
+
export * from "./pagination.types";
|
|
13
|
+
export * from "./portfolio-chart/portfolio-chart.types";
|
|
14
|
+
export * from "./user-active-twaps/user-active-twaps.types";
|
|
15
|
+
export * from "./user-bulk-orders/user-bulk-orders.types";
|
|
16
|
+
export * from "./user-funding-history/user-funding-history.types";
|
|
17
|
+
export * from "./user-notifications/user-notifications.types";
|
|
18
|
+
export * from "./user-open-orders/user-open-orders.types";
|
|
19
|
+
export * from "./user-order-history/user-order-history.types";
|
|
20
|
+
export * from "./user-positions/user-positions.types";
|
|
21
|
+
export * from "./user-subaccounts/user-subaccounts.types";
|
|
22
|
+
export * from "./user-trade-history/user-trade-history.types";
|
|
23
|
+
export * from "./vaults/vaults.types";
|
|
24
|
+
export const PerpPosition = z.object({
|
|
25
|
+
size: z.number(),
|
|
26
|
+
sz_decimals: z.number(),
|
|
27
|
+
entry_px: z.number(),
|
|
28
|
+
max_leverage: z.number(),
|
|
29
|
+
is_long: z.boolean(),
|
|
30
|
+
token_type: z.string(),
|
|
48
31
|
});
|
|
49
|
-
|
|
50
|
-
positions:
|
|
32
|
+
export const CrossedPosition = z.object({
|
|
33
|
+
positions: z.array(PerpPosition),
|
|
51
34
|
});
|
|
52
|
-
|
|
53
|
-
__variant__:
|
|
54
|
-
backstop_liquidator:
|
|
55
|
-
backstop_margin_maintenance_divisor:
|
|
56
|
-
backstop_margin_maintenance_multiplier:
|
|
57
|
-
maintenance_margin_leverage_divisor:
|
|
58
|
-
maintenance_margin_leverage_multiplier:
|
|
35
|
+
export const LiquidationConfigV1 = z.object({
|
|
36
|
+
__variant__: z.literal("V1"),
|
|
37
|
+
backstop_liquidator: z.string(),
|
|
38
|
+
backstop_margin_maintenance_divisor: z.string(),
|
|
39
|
+
backstop_margin_maintenance_multiplier: z.string(),
|
|
40
|
+
maintenance_margin_leverage_divisor: z.string(),
|
|
41
|
+
maintenance_margin_leverage_multiplier: z.string(),
|
|
59
42
|
});
|
|
60
|
-
|
|
61
|
-
asset_type:
|
|
62
|
-
inner:
|
|
43
|
+
export const CollateralBalanceSheet = z.object({
|
|
44
|
+
asset_type: z.object({
|
|
45
|
+
inner: z.string(),
|
|
63
46
|
}),
|
|
64
|
-
asset_precision:
|
|
65
|
-
decimals:
|
|
66
|
-
multiplier:
|
|
47
|
+
asset_precision: z.object({
|
|
48
|
+
decimals: z.number(),
|
|
49
|
+
multiplier: z.string(),
|
|
67
50
|
}),
|
|
68
|
-
balance_precision:
|
|
69
|
-
decimals:
|
|
70
|
-
multiplier:
|
|
51
|
+
balance_precision: z.object({
|
|
52
|
+
decimals: z.number(),
|
|
53
|
+
multiplier: z.string(),
|
|
71
54
|
}),
|
|
72
|
-
balance_table:
|
|
73
|
-
handle:
|
|
55
|
+
balance_table: z.object({
|
|
56
|
+
handle: z.string(),
|
|
74
57
|
}),
|
|
75
|
-
store:
|
|
76
|
-
inner:
|
|
58
|
+
store: z.object({
|
|
59
|
+
inner: z.string(),
|
|
77
60
|
}),
|
|
78
|
-
store_extend_ref:
|
|
79
|
-
self:
|
|
61
|
+
store_extend_ref: z.object({
|
|
62
|
+
self: z.string(),
|
|
80
63
|
}),
|
|
81
64
|
});
|
|
82
|
-
|
|
83
|
-
__variant__:
|
|
84
|
-
collateral:
|
|
85
|
-
liquidation_config:
|
|
65
|
+
export const GlobalAccountsStateV1 = z.object({
|
|
66
|
+
__variant__: z.string(),
|
|
67
|
+
collateral: CollateralBalanceSheet,
|
|
68
|
+
liquidation_config: LiquidationConfigV1,
|
|
86
69
|
});
|
|
87
|
-
|
|
70
|
+
export const GlobalAccountsState = GlobalAccountsStateV1;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const base_reader_1 = require("../base-reader");
|
|
5
|
-
const user_active_twaps_types_1 = require("./user-active-twaps.types");
|
|
6
|
-
class UserActiveTwapsReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { UserActiveTwapsSchema, UserActiveTwapsWsMessageSchema, } from "./user-active-twaps.types";
|
|
3
|
+
export class UserActiveTwapsReader extends BaseReader {
|
|
7
4
|
/**
|
|
8
5
|
* Get the active twaps for a given user
|
|
9
6
|
* @param subAddr The subaccount address of the user to get active twaps for
|
|
@@ -11,7 +8,7 @@ class UserActiveTwapsReader extends base_reader_1.BaseReader {
|
|
|
11
8
|
*/
|
|
12
9
|
async getByAddr({ subAddr, fetchOptions }) {
|
|
13
10
|
const response = await this.getRequest({
|
|
14
|
-
schema:
|
|
11
|
+
schema: UserActiveTwapsSchema,
|
|
15
12
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/active_twaps`,
|
|
16
13
|
queryParams: { user: subAddr },
|
|
17
14
|
options: fetchOptions,
|
|
@@ -26,7 +23,6 @@ class UserActiveTwapsReader extends base_reader_1.BaseReader {
|
|
|
26
23
|
*/
|
|
27
24
|
subscribeByAddr(subAddr, onData) {
|
|
28
25
|
const topic = `user_active_twaps:${subAddr}`;
|
|
29
|
-
return this.deps.ws.subscribe(topic,
|
|
26
|
+
return this.deps.ws.subscribe(topic, UserActiveTwapsWsMessageSchema, onData);
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
|
-
exports.UserActiveTwapsReader = UserActiveTwapsReader;
|
|
@@ -1,26 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
duration_s: v4_1.default.number(),
|
|
17
|
-
orig_size: v4_1.default.number(),
|
|
18
|
-
remaining_size: v4_1.default.number(),
|
|
19
|
-
status: v4_1.default.string(),
|
|
20
|
-
transaction_unix_ms: v4_1.default.number(),
|
|
21
|
-
transaction_version: v4_1.default.number(),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const UserActiveTwapSchema = z.object({
|
|
3
|
+
market: z.string(),
|
|
4
|
+
is_buy: z.boolean(),
|
|
5
|
+
order_id: z.string(),
|
|
6
|
+
client_order_id: z.string().nullable().optional(),
|
|
7
|
+
is_reduce_only: z.boolean(),
|
|
8
|
+
start_unix_ms: z.number(),
|
|
9
|
+
frequency_s: z.number(),
|
|
10
|
+
duration_s: z.number(),
|
|
11
|
+
orig_size: z.number(),
|
|
12
|
+
remaining_size: z.number(),
|
|
13
|
+
status: z.string(),
|
|
14
|
+
transaction_unix_ms: z.number(),
|
|
15
|
+
transaction_version: z.number(),
|
|
22
16
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
twaps:
|
|
17
|
+
export const UserActiveTwapsSchema = z.array(UserActiveTwapSchema);
|
|
18
|
+
export const UserActiveTwapsWsMessageSchema = z.object({
|
|
19
|
+
twaps: z.array(UserActiveTwapSchema),
|
|
26
20
|
});
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const base_reader_1 = require("../base-reader");
|
|
5
|
-
const user_bulk_orders_types_1 = require("./user-bulk-orders.types");
|
|
6
|
-
class UserBulkOrdersReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { UserBulkOrdersSchema, UserBulkOrdersWsMessageSchema, } from "./user-bulk-orders.types";
|
|
3
|
+
export class UserBulkOrdersReader extends BaseReader {
|
|
7
4
|
/**
|
|
8
5
|
* Get the bulk orders for a given user
|
|
9
6
|
* @param subAddr The subaccount address of the user to get bulk orders for
|
|
@@ -12,7 +9,7 @@ class UserBulkOrdersReader extends base_reader_1.BaseReader {
|
|
|
12
9
|
*/
|
|
13
10
|
async getByAddr({ subAddr, market, fetchOptions }) {
|
|
14
11
|
const response = await this.getRequest({
|
|
15
|
-
schema:
|
|
12
|
+
schema: UserBulkOrdersSchema,
|
|
16
13
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/bulk_orders`,
|
|
17
14
|
queryParams: { user: subAddr, market: market || "all" },
|
|
18
15
|
options: fetchOptions,
|
|
@@ -27,7 +24,6 @@ class UserBulkOrdersReader extends base_reader_1.BaseReader {
|
|
|
27
24
|
*/
|
|
28
25
|
subscribeByAddr(subAddr, onData) {
|
|
29
26
|
const topic = `bulk_orders:${subAddr}`;
|
|
30
|
-
return this.deps.ws.subscribe(topic,
|
|
27
|
+
return this.deps.ws.subscribe(topic, UserBulkOrdersWsMessageSchema, onData);
|
|
31
28
|
}
|
|
32
29
|
}
|
|
33
|
-
exports.UserBulkOrdersReader = UserBulkOrdersReader;
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
ask_prices: v4_1.default.array(v4_1.default.number()),
|
|
15
|
-
ask_sizes: v4_1.default.array(v4_1.default.number()),
|
|
16
|
-
cancelled_bid_prices: v4_1.default.array(v4_1.default.number()),
|
|
17
|
-
cancelled_bid_sizes: v4_1.default.array(v4_1.default.number()),
|
|
18
|
-
cancelled_ask_prices: v4_1.default.array(v4_1.default.number()),
|
|
19
|
-
cancelled_ask_sizes: v4_1.default.array(v4_1.default.number()),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const UserBulkOrderSchema = z.object({
|
|
3
|
+
market: z.string(),
|
|
4
|
+
sequence_number: z.number(),
|
|
5
|
+
previous_seq_num: z.number(),
|
|
6
|
+
bid_prices: z.array(z.number()),
|
|
7
|
+
bid_sizes: z.array(z.number()),
|
|
8
|
+
ask_prices: z.array(z.number()),
|
|
9
|
+
ask_sizes: z.array(z.number()),
|
|
10
|
+
cancelled_bid_prices: z.array(z.number()),
|
|
11
|
+
cancelled_bid_sizes: z.array(z.number()),
|
|
12
|
+
cancelled_ask_prices: z.array(z.number()),
|
|
13
|
+
cancelled_ask_sizes: z.array(z.number()),
|
|
20
14
|
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
bulk_orders:
|
|
15
|
+
export const UserBulkOrdersSchema = z.array(UserBulkOrderSchema);
|
|
16
|
+
export const UserBulkOrdersWsMessageSchema = z.object({
|
|
17
|
+
bulk_orders: z.array(UserBulkOrderSchema),
|
|
24
18
|
});
|