@decibeltrade/sdk 0.2.2 → 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.d.ts +1 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +22 -26
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +37 -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.d.ts +4 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +46 -49
- 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,36 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AccountOverviewWsMessageSchema = exports.AccountOverviewSchema = exports.VolumeWindow = void 0;
|
|
7
|
-
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
-
exports.VolumeWindow = {
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const VolumeWindow = {
|
|
9
3
|
SevenDays: "7d",
|
|
10
4
|
FourteenDays: "14d",
|
|
11
5
|
ThirtyDays: "30d",
|
|
12
6
|
NinetyDays: "90d",
|
|
13
7
|
};
|
|
14
|
-
|
|
15
|
-
perp_equity_balance:
|
|
16
|
-
unrealized_pnl:
|
|
17
|
-
unrealized_funding_cost:
|
|
18
|
-
cross_margin_ratio:
|
|
19
|
-
maintenance_margin:
|
|
20
|
-
cross_account_leverage_ratio:
|
|
21
|
-
volume:
|
|
22
|
-
all_time_return:
|
|
23
|
-
pnl_90d:
|
|
24
|
-
sharpe_ratio:
|
|
25
|
-
max_drawdown:
|
|
26
|
-
weekly_win_rate_12w:
|
|
27
|
-
average_cash_position:
|
|
28
|
-
average_leverage:
|
|
29
|
-
cross_account_position:
|
|
30
|
-
total_margin:
|
|
31
|
-
usdc_cross_withdrawable_balance:
|
|
32
|
-
usdc_isolated_withdrawable_balance:
|
|
8
|
+
export const AccountOverviewSchema = z.object({
|
|
9
|
+
perp_equity_balance: z.number(),
|
|
10
|
+
unrealized_pnl: z.number(),
|
|
11
|
+
unrealized_funding_cost: z.number(),
|
|
12
|
+
cross_margin_ratio: z.number(),
|
|
13
|
+
maintenance_margin: z.number(),
|
|
14
|
+
cross_account_leverage_ratio: z.number().nullable(),
|
|
15
|
+
volume: z.number().nullable(),
|
|
16
|
+
all_time_return: z.number().nullable(),
|
|
17
|
+
pnl_90d: z.number().nullable(),
|
|
18
|
+
sharpe_ratio: z.number().nullable(),
|
|
19
|
+
max_drawdown: z.number().nullable(),
|
|
20
|
+
weekly_win_rate_12w: z.number().nullable(),
|
|
21
|
+
average_cash_position: z.number().nullable(),
|
|
22
|
+
average_leverage: z.number().nullable(),
|
|
23
|
+
cross_account_position: z.number(),
|
|
24
|
+
total_margin: z.number(),
|
|
25
|
+
usdc_cross_withdrawable_balance: z.number(),
|
|
26
|
+
usdc_isolated_withdrawable_balance: z.number(),
|
|
33
27
|
});
|
|
34
|
-
|
|
35
|
-
account_overview:
|
|
28
|
+
export const AccountOverviewWsMessageSchema = z.object({
|
|
29
|
+
account_overview: AccountOverviewSchema.omit({ volume: true }),
|
|
36
30
|
});
|
package/dist/read/base-reader.js
CHANGED
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.BaseReader = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
class BaseReader {
|
|
1
|
+
import { getRequest as baseGetRequest, patchRequest as basePatchRequest, postRequest as basePostRequest, } from "../utils";
|
|
2
|
+
export class BaseReader {
|
|
6
3
|
deps;
|
|
7
4
|
constructor(deps) {
|
|
8
5
|
this.deps = deps;
|
|
9
6
|
}
|
|
10
7
|
async getRequest(args) {
|
|
11
|
-
return (
|
|
8
|
+
return baseGetRequest({
|
|
12
9
|
...args,
|
|
13
10
|
apiKey: this.deps.apiKey,
|
|
14
11
|
});
|
|
15
12
|
}
|
|
16
13
|
async postRequest(args) {
|
|
17
|
-
return (
|
|
14
|
+
return basePostRequest({
|
|
18
15
|
...args,
|
|
19
16
|
apiKey: this.deps.apiKey,
|
|
20
17
|
});
|
|
21
18
|
}
|
|
22
19
|
async patchRequest(args) {
|
|
23
|
-
return (
|
|
20
|
+
return basePatchRequest({
|
|
24
21
|
...args,
|
|
25
22
|
apiKey: this.deps.apiKey,
|
|
26
23
|
});
|
|
27
24
|
}
|
|
28
25
|
}
|
|
29
|
-
exports.BaseReader = BaseReader;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const base_reader_1 = require("../base-reader");
|
|
6
|
-
const candlesticks_types_1 = require("./candlesticks.types");
|
|
7
|
-
class CandlesticksReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { getMarketAddr } from "../../utils";
|
|
2
|
+
import { BaseReader } from "../base-reader";
|
|
3
|
+
import { CandlesticksSchema, CandlestickWsMessageSchema, } from "./candlesticks.types";
|
|
4
|
+
export class CandlesticksReader extends BaseReader {
|
|
8
5
|
/**
|
|
9
6
|
* Get the candlestick data points for a given market during a given time period
|
|
10
7
|
* @param marketName The name of the market to get candlestick data for
|
|
@@ -14,9 +11,9 @@ class CandlesticksReader extends base_reader_1.BaseReader {
|
|
|
14
11
|
* @returns The candlestick data points for the given market during the given time period
|
|
15
12
|
*/
|
|
16
13
|
async getByName({ marketName, interval, startTime, endTime, fetchOptions, }) {
|
|
17
|
-
const marketAddr =
|
|
14
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
18
15
|
const response = await this.getRequest({
|
|
19
|
-
schema:
|
|
16
|
+
schema: CandlesticksSchema,
|
|
20
17
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/candlesticks`,
|
|
21
18
|
queryParams: {
|
|
22
19
|
market: marketAddr.toString(),
|
|
@@ -36,9 +33,8 @@ class CandlesticksReader extends base_reader_1.BaseReader {
|
|
|
36
33
|
* @returns A function to unsubscribe from the candlestick updates
|
|
37
34
|
*/
|
|
38
35
|
subscribeByName(marketName, interval, onData) {
|
|
39
|
-
const marketAddr =
|
|
36
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
40
37
|
const topic = `market_candlestick:${marketAddr}:${interval}`;
|
|
41
|
-
return this.deps.ws.subscribe(topic,
|
|
38
|
+
return this.deps.ws.subscribe(topic, CandlestickWsMessageSchema, onData);
|
|
42
39
|
}
|
|
43
40
|
}
|
|
44
|
-
exports.CandlesticksReader = CandlesticksReader;
|
|
@@ -1,36 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CandlestickWsMessageSchema = exports.CandlesticksSchema = exports.CandlestickSchema = exports.CandlestickInterval = void 0;
|
|
7
|
-
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
-
exports.CandlestickInterval = {
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const CandlestickInterval = {
|
|
9
3
|
OneMinute: "1m",
|
|
10
4
|
FifteenMinutes: "15m",
|
|
11
5
|
OneHour: "1h",
|
|
12
6
|
FourHours: "4h",
|
|
13
7
|
OneDay: "1d",
|
|
14
8
|
};
|
|
15
|
-
|
|
9
|
+
export const CandlestickSchema = z.object({
|
|
16
10
|
/** time end */
|
|
17
|
-
T:
|
|
11
|
+
T: z.number(),
|
|
18
12
|
/** close */
|
|
19
|
-
c:
|
|
13
|
+
c: z.number(),
|
|
20
14
|
/** high */
|
|
21
|
-
h:
|
|
15
|
+
h: z.number(),
|
|
22
16
|
/** internal */
|
|
23
|
-
i:
|
|
17
|
+
i: z.string(),
|
|
24
18
|
/** low */
|
|
25
|
-
l:
|
|
19
|
+
l: z.number(),
|
|
26
20
|
/** open */
|
|
27
|
-
o:
|
|
21
|
+
o: z.number(),
|
|
28
22
|
/** time start */
|
|
29
|
-
t:
|
|
23
|
+
t: z.number(),
|
|
30
24
|
/** volume */
|
|
31
|
-
v:
|
|
25
|
+
v: z.number(),
|
|
32
26
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
candle:
|
|
27
|
+
export const CandlesticksSchema = z.array(CandlestickSchema);
|
|
28
|
+
export const CandlestickWsMessageSchema = z.object({
|
|
29
|
+
candle: CandlestickSchema,
|
|
36
30
|
});
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const base_reader_1 = require("../base-reader");
|
|
5
|
-
const delegations_types_1 = require("./delegations.types");
|
|
6
|
-
class DelegationsReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { DelegationsSchema } from "./delegations.types";
|
|
3
|
+
export class DelegationsReader extends BaseReader {
|
|
7
4
|
/**
|
|
8
5
|
* Get all active delegations for a subaccount
|
|
9
6
|
* @param args The arguments containing the subaccount address
|
|
@@ -11,7 +8,7 @@ class DelegationsReader extends base_reader_1.BaseReader {
|
|
|
11
8
|
*/
|
|
12
9
|
async getAll({ subAddr, fetchOptions }) {
|
|
13
10
|
const response = await this.getRequest({
|
|
14
|
-
schema:
|
|
11
|
+
schema: DelegationsSchema,
|
|
15
12
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/delegations`,
|
|
16
13
|
queryParams: new URLSearchParams({
|
|
17
14
|
subaccount: subAddr,
|
|
@@ -21,4 +18,3 @@ class DelegationsReader extends base_reader_1.BaseReader {
|
|
|
21
18
|
return response.data;
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
|
-
exports.DelegationsReader = DelegationsReader;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.DelegationsSchema = exports.DelegationSchema = void 0;
|
|
7
|
-
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
-
exports.DelegationSchema = v4_1.default.object({
|
|
9
|
-
delegated_account: v4_1.default.string(),
|
|
10
|
-
permission_type: v4_1.default.string(),
|
|
11
|
-
expiration_time_s: v4_1.default.number().nullable(),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const DelegationSchema = z.object({
|
|
3
|
+
delegated_account: z.string(),
|
|
4
|
+
permission_type: z.string(),
|
|
5
|
+
expiration_time_s: z.number().nullable(),
|
|
12
6
|
});
|
|
13
|
-
|
|
7
|
+
export const DelegationsSchema = z.array(DelegationSchema);
|
package/dist/read/index.js
CHANGED
|
@@ -1,45 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const market_trades_reader_1 = require("./market-trades/market-trades.reader");
|
|
27
|
-
const markets_reader_1 = require("./markets/markets.reader");
|
|
28
|
-
const portfolio_chart_reader_1 = require("./portfolio-chart/portfolio-chart.reader");
|
|
29
|
-
const types_1 = require("./types");
|
|
30
|
-
const user_active_twaps_reader_1 = require("./user-active-twaps/user-active-twaps.reader");
|
|
31
|
-
const user_bulk_orders_reader_1 = require("./user-bulk-orders/user-bulk-orders.reader");
|
|
32
|
-
const user_funding_history_reader_1 = require("./user-funding-history/user-funding-history.reader");
|
|
33
|
-
const user_notifications_reader_1 = require("./user-notifications/user-notifications.reader");
|
|
34
|
-
const user_open_orders_reader_1 = require("./user-open-orders/user-open-orders.reader");
|
|
35
|
-
const user_order_history_reader_1 = require("./user-order-history/user-order-history.reader");
|
|
36
|
-
const user_positions_reader_1 = require("./user-positions/user-positions.reader");
|
|
37
|
-
const user_subaccounts_reader_1 = require("./user-subaccounts/user-subaccounts.reader");
|
|
38
|
-
const user_trade_history_reader_1 = require("./user-trade-history/user-trade-history.reader");
|
|
39
|
-
const vaults_reader_1 = require("./vaults/vaults.reader");
|
|
40
|
-
const ws_subscription_1 = require("./ws-subscription");
|
|
41
|
-
__exportStar(require("./types"), exports);
|
|
42
|
-
class DecibelReadDex {
|
|
1
|
+
import { Aptos, AptosConfig, createObjectAddress } from "@aptos-labs/ts-sdk";
|
|
2
|
+
import { AccountOverviewReader } from "./account-overview/account-overview.reader";
|
|
3
|
+
import { CandlesticksReader } from "./candlesticks/candlesticks.reader";
|
|
4
|
+
import { DelegationsReader } from "./delegations/delegations.reader";
|
|
5
|
+
import { LeaderboardReader } from "./leaderboard/leaderboard.reader";
|
|
6
|
+
import { MarketContextsReader } from "./market-contexts/market-contexts.reader";
|
|
7
|
+
import { MarketDepthReader } from "./market-depth/market-depth.reader";
|
|
8
|
+
import { MarketPricesReader } from "./market-prices/market-prices.reader";
|
|
9
|
+
import { MarketTradesReader } from "./market-trades/market-trades.reader";
|
|
10
|
+
import { MarketsReader } from "./markets/markets.reader";
|
|
11
|
+
import { PortfolioChartReader } from "./portfolio-chart/portfolio-chart.reader";
|
|
12
|
+
import { CrossedPosition } from "./types";
|
|
13
|
+
import { UserActiveTwapsReader } from "./user-active-twaps/user-active-twaps.reader";
|
|
14
|
+
import { UserBulkOrdersReader } from "./user-bulk-orders/user-bulk-orders.reader";
|
|
15
|
+
import { UserFundingHistoryReader } from "./user-funding-history/user-funding-history.reader";
|
|
16
|
+
import { UserNotificationsReader } from "./user-notifications/user-notifications.reader";
|
|
17
|
+
import { UserOpenOrdersReader } from "./user-open-orders/user-open-orders.reader";
|
|
18
|
+
import { UserOrderHistoryReader } from "./user-order-history/user-order-history.reader";
|
|
19
|
+
import { UserPositionsReader } from "./user-positions/user-positions.reader";
|
|
20
|
+
import { UserSubaccountsReader } from "./user-subaccounts/user-subaccounts.reader";
|
|
21
|
+
import { UserTradeHistoryReader } from "./user-trade-history/user-trade-history.reader";
|
|
22
|
+
import { VaultsReader } from "./vaults/vaults.reader";
|
|
23
|
+
import { DecibelWsSubscription } from "./ws-subscription";
|
|
24
|
+
export * from "./types";
|
|
25
|
+
export class DecibelReadDex {
|
|
43
26
|
config;
|
|
44
27
|
cache;
|
|
45
28
|
deps;
|
|
@@ -65,38 +48,38 @@ class DecibelReadDex {
|
|
|
65
48
|
userNotifications;
|
|
66
49
|
constructor(config, opts) {
|
|
67
50
|
this.config = config;
|
|
68
|
-
const aptosConfig = new
|
|
51
|
+
const aptosConfig = new AptosConfig({
|
|
69
52
|
network: config.network,
|
|
70
53
|
fullnode: config.fullnodeUrl,
|
|
71
54
|
clientConfig: { API_KEY: opts?.nodeApiKey },
|
|
72
55
|
});
|
|
73
56
|
this.deps = {
|
|
74
|
-
aptos: new
|
|
75
|
-
ws: new
|
|
57
|
+
aptos: new Aptos(aptosConfig),
|
|
58
|
+
ws: new DecibelWsSubscription(config, opts?.onWsError),
|
|
76
59
|
config: this.config,
|
|
77
60
|
apiKey: opts?.nodeApiKey,
|
|
78
61
|
};
|
|
79
62
|
this.cache = {};
|
|
80
|
-
this.accountOverview = new
|
|
81
|
-
this.markets = new
|
|
82
|
-
this.marketContexts = new
|
|
83
|
-
this.marketDepth = new
|
|
84
|
-
this.marketPrices = new
|
|
85
|
-
this.marketTrades = new
|
|
86
|
-
this.userPositions = new
|
|
87
|
-
this.userOrderHistory = new
|
|
88
|
-
this.userSubaccounts = new
|
|
89
|
-
this.userOpenOrders = new
|
|
90
|
-
this.userBulkOrders = new
|
|
91
|
-
this.userFundingHistory = new
|
|
92
|
-
this.userTradeHistory = new
|
|
93
|
-
this.userActiveTwaps = new
|
|
94
|
-
this.candlesticks = new
|
|
95
|
-
this.portfolioChart = new
|
|
96
|
-
this.leaderboard = new
|
|
97
|
-
this.vaults = new
|
|
98
|
-
this.delegations = new
|
|
99
|
-
this.userNotifications = new
|
|
63
|
+
this.accountOverview = new AccountOverviewReader(this.deps);
|
|
64
|
+
this.markets = new MarketsReader(this.deps);
|
|
65
|
+
this.marketContexts = new MarketContextsReader(this.deps);
|
|
66
|
+
this.marketDepth = new MarketDepthReader(this.deps);
|
|
67
|
+
this.marketPrices = new MarketPricesReader(this.deps);
|
|
68
|
+
this.marketTrades = new MarketTradesReader(this.deps);
|
|
69
|
+
this.userPositions = new UserPositionsReader(this.deps);
|
|
70
|
+
this.userOrderHistory = new UserOrderHistoryReader(this.deps);
|
|
71
|
+
this.userSubaccounts = new UserSubaccountsReader(this.deps);
|
|
72
|
+
this.userOpenOrders = new UserOpenOrdersReader(this.deps);
|
|
73
|
+
this.userBulkOrders = new UserBulkOrdersReader(this.deps);
|
|
74
|
+
this.userFundingHistory = new UserFundingHistoryReader(this.deps);
|
|
75
|
+
this.userTradeHistory = new UserTradeHistoryReader(this.deps);
|
|
76
|
+
this.userActiveTwaps = new UserActiveTwapsReader(this.deps);
|
|
77
|
+
this.candlesticks = new CandlesticksReader(this.deps);
|
|
78
|
+
this.portfolioChart = new PortfolioChartReader(this.deps);
|
|
79
|
+
this.leaderboard = new LeaderboardReader(this.deps);
|
|
80
|
+
this.vaults = new VaultsReader(this.deps);
|
|
81
|
+
this.delegations = new DelegationsReader(this.deps);
|
|
82
|
+
this.userNotifications = new UserNotificationsReader(this.deps);
|
|
100
83
|
}
|
|
101
84
|
async globalPerpEngineState() {
|
|
102
85
|
try {
|
|
@@ -242,7 +225,7 @@ class DecibelReadDex {
|
|
|
242
225
|
*/
|
|
243
226
|
async getCrossedPosition(addr) {
|
|
244
227
|
const seed = new TextEncoder().encode("perp_position");
|
|
245
|
-
const crossedPositionAddr =
|
|
228
|
+
const crossedPositionAddr = createObjectAddress(addr, seed);
|
|
246
229
|
try {
|
|
247
230
|
// TODO: Fix lint error
|
|
248
231
|
// eslint-disable-next-line custom/no-get-account-resource
|
|
@@ -250,11 +233,10 @@ class DecibelReadDex {
|
|
|
250
233
|
accountAddress: crossedPositionAddr,
|
|
251
234
|
resourceType: `${this.config.deployment.package}::perp_positions::CrossedPosition`,
|
|
252
235
|
});
|
|
253
|
-
return
|
|
236
|
+
return CrossedPosition.parse(crossedPosition);
|
|
254
237
|
}
|
|
255
238
|
catch {
|
|
256
239
|
return null;
|
|
257
240
|
}
|
|
258
241
|
}
|
|
259
242
|
}
|
|
260
|
-
exports.DecibelReadDex = DecibelReadDex;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const base_reader_1 = require("../base-reader");
|
|
6
|
-
const leaderboard_types_1 = require("./leaderboard.types");
|
|
7
|
-
class LeaderboardReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { constructKnownQueryParams } from "../../utils";
|
|
2
|
+
import { BaseReader } from "../base-reader";
|
|
3
|
+
import { LeaderboardSchema } from "./leaderboard.types";
|
|
4
|
+
export class LeaderboardReader extends BaseReader {
|
|
8
5
|
/**
|
|
9
6
|
* Get the leaderboard
|
|
10
7
|
* @param queryParams The query parameters for the leaderboard
|
|
@@ -12,12 +9,11 @@ class LeaderboardReader extends base_reader_1.BaseReader {
|
|
|
12
9
|
*/
|
|
13
10
|
async getLeaderboard({ fetchOptions, ...args }) {
|
|
14
11
|
const response = await this.getRequest({
|
|
15
|
-
schema:
|
|
12
|
+
schema: LeaderboardSchema,
|
|
16
13
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/leaderboard`,
|
|
17
|
-
queryParams:
|
|
14
|
+
queryParams: constructKnownQueryParams(args),
|
|
18
15
|
options: fetchOptions,
|
|
19
16
|
});
|
|
20
17
|
return response.data;
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.LeaderboardReader = LeaderboardReader;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
realized_pnl: v4_1.z.number(),
|
|
11
|
-
roi: v4_1.z.number(),
|
|
12
|
-
volume: v4_1.z.number(),
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
import { PaginatedResponseSchema } from "../types";
|
|
3
|
+
export const LeaderboardItemSchema = z.object({
|
|
4
|
+
rank: z.number(),
|
|
5
|
+
account: z.string(),
|
|
6
|
+
account_value: z.number(),
|
|
7
|
+
realized_pnl: z.number(),
|
|
8
|
+
roi: z.number(),
|
|
9
|
+
volume: z.number(),
|
|
13
10
|
});
|
|
14
|
-
|
|
11
|
+
export const LeaderboardSchema = PaginatedResponseSchema(LeaderboardItemSchema);
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const base_reader_1 = require("../base-reader");
|
|
5
|
-
const market_contexts_types_1 = require("./market-contexts.types");
|
|
6
|
-
class MarketContextsReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { MarketContextsSchema } from "./market-contexts.types";
|
|
3
|
+
export class MarketContextsReader extends BaseReader {
|
|
7
4
|
/**
|
|
8
5
|
* Get the asset context for a given market
|
|
9
6
|
*
|
|
@@ -16,7 +13,7 @@ class MarketContextsReader extends base_reader_1.BaseReader {
|
|
|
16
13
|
// ? getMarketAddr(marketName, this.config.deployment.perpEngineGlobal)
|
|
17
14
|
// : undefined;
|
|
18
15
|
const response = await this.getRequest({
|
|
19
|
-
schema:
|
|
16
|
+
schema: MarketContextsSchema,
|
|
20
17
|
// TODO: Update this when the API is /market_contexts
|
|
21
18
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/asset_contexts`,
|
|
22
19
|
// queryParams: marketAddr ? { market: marketAddr.toString() } : undefined,
|
|
@@ -25,4 +22,3 @@ class MarketContextsReader extends base_reader_1.BaseReader {
|
|
|
25
22
|
return response.data;
|
|
26
23
|
}
|
|
27
24
|
}
|
|
28
|
-
exports.MarketContextsReader = MarketContextsReader;
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
open_interest: v4_1.default.number(),
|
|
12
|
-
mark_price: v4_1.default.number(),
|
|
13
|
-
mid_price: v4_1.default.number(),
|
|
14
|
-
oracle_price: v4_1.default.number(),
|
|
15
|
-
previous_day_price: v4_1.default.number(),
|
|
16
|
-
price_change_pct_24h: v4_1.default.number(),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const MarketContextSchema = z.object({
|
|
3
|
+
market: z.string(),
|
|
4
|
+
volume_24h: z.number(),
|
|
5
|
+
open_interest: z.number(),
|
|
6
|
+
mark_price: z.number(),
|
|
7
|
+
mid_price: z.number(),
|
|
8
|
+
oracle_price: z.number(),
|
|
9
|
+
previous_day_price: z.number(),
|
|
10
|
+
price_change_pct_24h: z.number(),
|
|
17
11
|
});
|
|
18
|
-
|
|
12
|
+
export const MarketContextsSchema = z.array(MarketContextSchema);
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const base_reader_1 = require("../base-reader");
|
|
6
|
-
const market_depth_types_1 = require("./market-depth.types");
|
|
7
|
-
class MarketDepthReader extends base_reader_1.BaseReader {
|
|
1
|
+
import { getMarketAddr } from "../../utils";
|
|
2
|
+
import { BaseReader } from "../base-reader";
|
|
3
|
+
import { MarketDepthSchema, } from "./market-depth.types";
|
|
4
|
+
export class MarketDepthReader extends BaseReader {
|
|
8
5
|
/**
|
|
9
6
|
* Get the market depth data for a given market
|
|
10
7
|
* @param marketName The name of the market to get market depth for
|
|
11
8
|
* @returns The market depth data for the given market
|
|
12
9
|
*/
|
|
13
10
|
async getByName({ marketName, limit, fetchOptions }) {
|
|
14
|
-
const marketAddr =
|
|
11
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
15
12
|
const queryParams = new URLSearchParams({ market: marketAddr.toString() });
|
|
16
13
|
if (limit !== undefined) {
|
|
17
14
|
queryParams.set("limit", limit.toString());
|
|
18
15
|
}
|
|
19
16
|
const response = await this.getRequest({
|
|
20
|
-
schema:
|
|
17
|
+
schema: MarketDepthSchema,
|
|
21
18
|
url: `${this.deps.config.tradingHttpUrl}/api/v1/depth`,
|
|
22
19
|
queryParams,
|
|
23
20
|
options: fetchOptions,
|
|
@@ -31,12 +28,12 @@ class MarketDepthReader extends base_reader_1.BaseReader {
|
|
|
31
28
|
* @returns A function to unsubscribe from the market depth updates
|
|
32
29
|
*/
|
|
33
30
|
subscribeByName(marketName, aggregationSize, onData) {
|
|
34
|
-
const marketAddr =
|
|
31
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
35
32
|
const topic = `depth:${marketAddr}:${aggregationSize}`;
|
|
36
|
-
return this.deps.ws.subscribe(topic,
|
|
33
|
+
return this.deps.ws.subscribe(topic, MarketDepthSchema, onData);
|
|
37
34
|
}
|
|
38
35
|
resetSubscriptionByName(marketName, aggregationSize = 1) {
|
|
39
|
-
const marketAddr =
|
|
36
|
+
const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
40
37
|
const topic = `depth:${marketAddr}:${aggregationSize}`;
|
|
41
38
|
this.deps.ws.reset(topic);
|
|
42
39
|
}
|
|
@@ -44,4 +41,3 @@ class MarketDepthReader extends base_reader_1.BaseReader {
|
|
|
44
41
|
return [1, 2, 5, 10];
|
|
45
42
|
}
|
|
46
43
|
}
|
|
47
|
-
exports.MarketDepthReader = MarketDepthReader;
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MarketDepthSchema = exports.MarketOrderSchema = void 0;
|
|
7
|
-
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
-
exports.MarketOrderSchema = v4_1.default.object({
|
|
9
|
-
price: v4_1.default.number(),
|
|
10
|
-
size: v4_1.default.number(),
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export const MarketOrderSchema = z.object({
|
|
3
|
+
price: z.number(),
|
|
4
|
+
size: z.number(),
|
|
11
5
|
});
|
|
12
|
-
|
|
13
|
-
market:
|
|
14
|
-
bids:
|
|
15
|
-
asks:
|
|
6
|
+
export const MarketDepthSchema = z.object({
|
|
7
|
+
market: z.string(),
|
|
8
|
+
bids: z.array(MarketOrderSchema),
|
|
9
|
+
asks: z.array(MarketOrderSchema),
|
|
16
10
|
});
|