@decibeltrade/sdk 0.1.1
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/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-lint$colon$check.log +5 -0
- package/.turbo/turbo-lint.log +5 -0
- package/decibel_transactions.md +1049 -0
- package/dist/abi/abi-manager.d.ts +13 -0
- package/dist/abi/abi-manager.d.ts.map +1 -0
- package/dist/abi/abi-manager.js +21 -0
- package/dist/abi/abis.json +1322 -0
- package/dist/abi/bytecode-manager.d.ts +57 -0
- package/dist/abi/bytecode-manager.d.ts.map +1 -0
- package/dist/abi/bytecode-manager.js +62 -0
- package/dist/abi/bytecode.json +24 -0
- package/dist/abi/fetch-abis.d.ts +7 -0
- package/dist/abi/fetch-abis.d.ts.map +1 -0
- package/dist/abi/fetch-abis.js +132 -0
- package/dist/abi/fetch-bytecode.d.ts +24 -0
- package/dist/abi/fetch-bytecode.d.ts.map +1 -0
- package/dist/abi/fetch-bytecode.js +123 -0
- package/dist/abi/generate-abis.d.ts +6 -0
- package/dist/abi/generate-abis.d.ts.map +1 -0
- package/dist/abi/generate-abis.js +170 -0
- package/dist/abi/json/netna.json +1323 -0
- package/dist/abi/json/testnet.json +1315 -0
- package/dist/abi/types.d.ts +22 -0
- package/dist/abi/types.d.ts.map +1 -0
- package/dist/abi/types.js +2 -0
- package/dist/admin.d.ts +29 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +203 -0
- package/dist/base.d.ts +42 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +176 -0
- package/dist/constants.d.ts +41 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +78 -0
- package/dist/fee-pay.d.ts +11 -0
- package/dist/fee-pay.d.ts.map +1 -0
- package/dist/fee-pay.js +30 -0
- package/dist/gas/gas-price-manager.d.ts +35 -0
- package/dist/gas/gas-price-manager.d.ts.map +1 -0
- package/dist/gas/gas-price-manager.js +93 -0
- package/dist/gas-price-manager.d.ts +31 -0
- package/dist/gas-price-manager.d.ts.map +1 -0
- package/dist/gas-price-manager.js +84 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/order-event.types.d.ts +55 -0
- package/dist/order-event.types.d.ts.map +1 -0
- package/dist/order-event.types.js +3 -0
- package/dist/order-status.d.ts +43 -0
- package/dist/order-status.d.ts.map +1 -0
- package/dist/order-status.js +86 -0
- package/dist/read/account-overview/account-overview.reader.d.ts +37 -0
- package/dist/read/account-overview/account-overview.reader.d.ts.map +1 -0
- package/dist/read/account-overview/account-overview.reader.js +35 -0
- package/dist/read/account-overview/account-overview.types.d.ts +52 -0
- package/dist/read/account-overview/account-overview.types.d.ts.map +1 -0
- package/dist/read/account-overview/account-overview.types.js +36 -0
- package/dist/read/api-wallets/api-wallets.reader.d.ts +17 -0
- package/dist/read/api-wallets/api-wallets.reader.d.ts.map +1 -0
- package/dist/read/api-wallets/api-wallets.reader.js +27 -0
- package/dist/read/api-wallets/api-wallets.types.d.ts +17 -0
- package/dist/read/api-wallets/api-wallets.types.d.ts.map +1 -0
- package/dist/read/api-wallets/api-wallets.types.js +13 -0
- package/dist/read/base-reader.d.ts +22 -0
- package/dist/read/base-reader.d.ts.map +1 -0
- package/dist/read/base-reader.js +29 -0
- package/dist/read/candlesticks/candlesticks.reader.d.ts +31 -0
- package/dist/read/candlesticks/candlesticks.reader.d.ts.map +1 -0
- package/dist/read/candlesticks/candlesticks.reader.js +43 -0
- package/dist/read/candlesticks/candlesticks.types.d.ts +45 -0
- package/dist/read/candlesticks/candlesticks.types.d.ts.map +1 -0
- package/dist/read/candlesticks/candlesticks.types.js +36 -0
- package/dist/read/delegations/delegations.reader.d.ts +15 -0
- package/dist/read/delegations/delegations.reader.d.ts.map +1 -0
- package/dist/read/delegations/delegations.reader.js +23 -0
- package/dist/read/delegations/delegations.types.d.ts +17 -0
- package/dist/read/delegations/delegations.types.d.ts.map +1 -0
- package/dist/read/delegations/delegations.types.js +13 -0
- package/dist/read/index.d.ts +105 -0
- package/dist/read/index.d.ts.map +1 -0
- package/dist/read/index.js +244 -0
- package/dist/read/leaderboard/leaderboard.reader.d.ts +21 -0
- package/dist/read/leaderboard/leaderboard.reader.d.ts.map +1 -0
- package/dist/read/leaderboard/leaderboard.reader.js +22 -0
- package/dist/read/leaderboard/leaderboard.types.d.ts +27 -0
- package/dist/read/leaderboard/leaderboard.types.d.ts.map +1 -0
- package/dist/read/leaderboard/leaderboard.types.js +14 -0
- package/dist/read/market-contexts/market-contexts.reader.d.ts +22 -0
- package/dist/read/market-contexts/market-contexts.reader.d.ts.map +1 -0
- package/dist/read/market-contexts/market-contexts.reader.js +27 -0
- package/dist/read/market-contexts/market-contexts.types.d.ts +26 -0
- package/dist/read/market-contexts/market-contexts.types.d.ts.map +1 -0
- package/dist/read/market-contexts/market-contexts.types.js +19 -0
- package/dist/read/market-depth/market-depth.reader.d.ts +30 -0
- package/dist/read/market-depth/market-depth.reader.d.ts.map +1 -0
- package/dist/read/market-depth/market-depth.reader.js +46 -0
- package/dist/read/market-depth/market-depth.types.d.ts +20 -0
- package/dist/read/market-depth/market-depth.types.d.ts.map +1 -0
- package/dist/read/market-depth/market-depth.types.js +16 -0
- package/dist/read/market-prices/market-prices.reader.d.ts +44 -0
- package/dist/read/market-prices/market-prices.reader.d.ts.map +1 -0
- package/dist/read/market-prices/market-prices.reader.js +51 -0
- package/dist/read/market-prices/market-prices.types.d.ts +48 -0
- package/dist/read/market-prices/market-prices.types.d.ts.map +1 -0
- package/dist/read/market-prices/market-prices.types.js +26 -0
- package/dist/read/market-trades/market-trades.reader.d.ts +33 -0
- package/dist/read/market-trades/market-trades.reader.d.ts.map +1 -0
- package/dist/read/market-trades/market-trades.reader.js +39 -0
- package/dist/read/market-trades/market-trades.types.d.ts +52 -0
- package/dist/read/market-trades/market-trades.types.d.ts.map +1 -0
- package/dist/read/market-trades/market-trades.types.js +23 -0
- package/dist/read/markets/markets.reader.d.ts +38 -0
- package/dist/read/markets/markets.reader.d.ts.map +1 -0
- package/dist/read/markets/markets.reader.js +80 -0
- package/dist/read/markets/markets.types.d.ts +82 -0
- package/dist/read/markets/markets.types.d.ts.map +1 -0
- package/dist/read/markets/markets.types.js +46 -0
- package/dist/read/pagination.types.d.ts +14 -0
- package/dist/read/pagination.types.d.ts.map +1 -0
- package/dist/read/pagination.types.js +12 -0
- package/dist/read/portfolio-chart/portfolio-chart.reader.d.ts +14 -0
- package/dist/read/portfolio-chart/portfolio-chart.reader.d.ts.map +1 -0
- package/dist/read/portfolio-chart/portfolio-chart.reader.js +21 -0
- package/dist/read/portfolio-chart/portfolio-chart.types.d.ts +14 -0
- package/dist/read/portfolio-chart/portfolio-chart.types.d.ts.map +1 -0
- package/dist/read/portfolio-chart/portfolio-chart.types.js +12 -0
- package/dist/read/public-vaults/public-vaults.reader.d.ts +38 -0
- package/dist/read/public-vaults/public-vaults.reader.d.ts.map +1 -0
- package/dist/read/public-vaults/public-vaults.reader.js +31 -0
- package/dist/read/public-vaults/public-vaults.types.d.ts +62 -0
- package/dist/read/public-vaults/public-vaults.types.d.ts.map +1 -0
- package/dist/read/public-vaults/public-vaults.types.js +33 -0
- package/dist/read/types.d.ts +178 -0
- package/dist/read/types.d.ts.map +1 -0
- package/dist/read/types.js +87 -0
- package/dist/read/user-active-twaps/user-active-twaps.reader.d.ts +31 -0
- package/dist/read/user-active-twaps/user-active-twaps.reader.d.ts.map +1 -0
- package/dist/read/user-active-twaps/user-active-twaps.reader.js +31 -0
- package/dist/read/user-active-twaps/user-active-twaps.types.d.ts +49 -0
- package/dist/read/user-active-twaps/user-active-twaps.types.d.ts.map +1 -0
- package/dist/read/user-active-twaps/user-active-twaps.types.js +25 -0
- package/dist/read/user-bulk-orders/user-bulk-orders.reader.d.ts +31 -0
- package/dist/read/user-bulk-orders/user-bulk-orders.reader.d.ts.map +1 -0
- package/dist/read/user-bulk-orders/user-bulk-orders.reader.js +32 -0
- package/dist/read/user-bulk-orders/user-bulk-orders.types.d.ts +46 -0
- package/dist/read/user-bulk-orders/user-bulk-orders.types.d.ts.map +1 -0
- package/dist/read/user-bulk-orders/user-bulk-orders.types.js +24 -0
- package/dist/read/user-funding-history/user-funding-history.reader.d.ts +28 -0
- package/dist/read/user-funding-history/user-funding-history.reader.d.ts.map +1 -0
- package/dist/read/user-funding-history/user-funding-history.reader.js +32 -0
- package/dist/read/user-funding-history/user-funding-history.types.d.ts +37 -0
- package/dist/read/user-funding-history/user-funding-history.types.d.ts.map +1 -0
- package/dist/read/user-funding-history/user-funding-history.types.js +21 -0
- package/dist/read/user-notifications/user-notifications.reader.d.ts +13 -0
- package/dist/read/user-notifications/user-notifications.reader.d.ts.map +1 -0
- package/dist/read/user-notifications/user-notifications.reader.js +19 -0
- package/dist/read/user-notifications/user-notifications.types.d.ts +49 -0
- package/dist/read/user-notifications/user-notifications.types.d.ts.map +1 -0
- package/dist/read/user-notifications/user-notifications.types.js +18 -0
- package/dist/read/user-open-orders/user-open-orders.reader.d.ts +40 -0
- package/dist/read/user-open-orders/user-open-orders.reader.d.ts.map +1 -0
- package/dist/read/user-open-orders/user-open-orders.reader.js +31 -0
- package/dist/read/user-open-orders/user-open-orders.types.d.ts +76 -0
- package/dist/read/user-open-orders/user-open-orders.types.d.ts.map +1 -0
- package/dist/read/user-open-orders/user-open-orders.types.js +34 -0
- package/dist/read/user-order-history/user-order-history.reader.d.ts +40 -0
- package/dist/read/user-order-history/user-order-history.reader.d.ts.map +1 -0
- package/dist/read/user-order-history/user-order-history.reader.js +28 -0
- package/dist/read/user-order-history/user-order-history.types.d.ts +85 -0
- package/dist/read/user-order-history/user-order-history.types.d.ts.map +1 -0
- package/dist/read/user-order-history/user-order-history.types.js +37 -0
- package/dist/read/user-positions/user-positions.reader.d.ts +37 -0
- package/dist/read/user-positions/user-positions.reader.d.ts.map +1 -0
- package/dist/read/user-positions/user-positions.reader.js +41 -0
- package/dist/read/user-positions/user-positions.types.d.ts +2590 -0
- package/dist/read/user-positions/user-positions.types.d.ts.map +1 -0
- package/dist/read/user-positions/user-positions.types.js +31 -0
- package/dist/read/user-subaccounts/user-subaccounts.reader.d.ts +18 -0
- package/dist/read/user-subaccounts/user-subaccounts.reader.d.ts.map +1 -0
- package/dist/read/user-subaccounts/user-subaccounts.reader.js +28 -0
- package/dist/read/user-subaccounts/user-subaccounts.types.d.ts +21 -0
- package/dist/read/user-subaccounts/user-subaccounts.types.d.ts.map +1 -0
- package/dist/read/user-subaccounts/user-subaccounts.types.js +15 -0
- package/dist/read/user-trade-history/user-trade-history.reader.d.ts +33 -0
- package/dist/read/user-trade-history/user-trade-history.reader.d.ts.map +1 -0
- package/dist/read/user-trade-history/user-trade-history.reader.js +32 -0
- package/dist/read/user-trade-history/user-trade-history.types.d.ts +52 -0
- package/dist/read/user-trade-history/user-trade-history.types.d.ts.map +1 -0
- package/dist/read/user-trade-history/user-trade-history.types.js +26 -0
- package/dist/read/user-vaults/user-vaults.reader.d.ts +26 -0
- package/dist/read/user-vaults/user-vaults.reader.d.ts.map +1 -0
- package/dist/read/user-vaults/user-vaults.reader.js +32 -0
- package/dist/read/user-vaults/user-vaults.types.d.ts +39 -0
- package/dist/read/user-vaults/user-vaults.types.d.ts.map +1 -0
- package/dist/read/user-vaults/user-vaults.types.js +21 -0
- package/dist/read/vault/vault.reader.d.ts +95 -0
- package/dist/read/vault/vault.reader.d.ts.map +1 -0
- package/dist/read/vault/vault.reader.js +168 -0
- package/dist/read/vault/vault.types.d.ts +49 -0
- package/dist/read/vault/vault.types.d.ts.map +1 -0
- package/dist/read/vault/vault.types.js +45 -0
- package/dist/read/vaults/vaults.reader.d.ts +72 -0
- package/dist/read/vaults/vaults.reader.d.ts.map +1 -0
- package/dist/read/vaults/vaults.reader.js +63 -0
- package/dist/read/vaults/vaults.types.d.ts +140 -0
- package/dist/read/vaults/vaults.types.d.ts.map +1 -0
- package/dist/read/vaults/vaults.types.js +71 -0
- package/dist/read/ws-subscription.d.ts +21 -0
- package/dist/read/ws-subscription.d.ts.map +1 -0
- package/dist/read/ws-subscription.js +170 -0
- package/dist/subaccount-types.d.ts +24 -0
- package/dist/subaccount-types.d.ts.map +1 -0
- package/dist/subaccount-types.js +11 -0
- package/dist/transaction-builder.d.ts +14 -0
- package/dist/transaction-builder.d.ts.map +1 -0
- package/dist/transaction-builder.js +40 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils.d.ts +56 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +164 -0
- package/dist/vault-types.d.ts +43 -0
- package/dist/vault-types.d.ts.map +1 -0
- package/dist/vault-types.js +11 -0
- package/dist/write.d.ts +271 -0
- package/dist/write.d.ts.map +1 -0
- package/dist/write.js +485 -0
- package/eslint.config.mjs +25 -0
- package/package.json +39 -0
- package/readme.md +257 -0
- package/sdk_reference.md +876 -0
- package/src/abi/generate-abis.ts +164 -0
- package/src/abi/json/netna.json +1323 -0
- package/src/abi/json/testnet.json +1315 -0
- package/src/abi/types.ts +23 -0
- package/src/admin.ts +284 -0
- package/src/base.ts +218 -0
- package/src/constants.ts +118 -0
- package/src/fee-pay.ts +39 -0
- package/src/gas/gas-price-manager.ts +115 -0
- package/src/index.ts +10 -0
- package/src/order-event.types.ts +65 -0
- package/src/order-status.ts +89 -0
- package/src/read/account-overview/account-overview.reader.ts +43 -0
- package/src/read/account-overview/account-overview.types.ts +45 -0
- package/src/read/base-reader.ts +41 -0
- package/src/read/candlesticks/candlesticks.reader.ts +61 -0
- package/src/read/candlesticks/candlesticks.types.ts +46 -0
- package/src/read/delegations/delegations.reader.ts +22 -0
- package/src/read/delegations/delegations.types.ts +19 -0
- package/src/read/index.ts +271 -0
- package/src/read/leaderboard/leaderboard.reader.ts +21 -0
- package/src/read/leaderboard/leaderboard.types.ts +26 -0
- package/src/read/market-contexts/market-contexts.reader.ts +26 -0
- package/src/read/market-contexts/market-contexts.types.ts +18 -0
- package/src/read/market-depth/market-depth.reader.ts +60 -0
- package/src/read/market-depth/market-depth.types.ts +24 -0
- package/src/read/market-prices/market-prices.reader.ts +61 -0
- package/src/read/market-prices/market-prices.types.ts +38 -0
- package/src/read/market-trades/market-trades.reader.ts +46 -0
- package/src/read/market-trades/market-trades.types.ts +34 -0
- package/src/read/markets/markets.reader.ts +82 -0
- package/src/read/markets/markets.types.ts +54 -0
- package/src/read/pagination.types.ts +18 -0
- package/src/read/portfolio-chart/portfolio-chart.reader.ts +20 -0
- package/src/read/portfolio-chart/portfolio-chart.types.ts +21 -0
- package/src/read/types.ts +129 -0
- package/src/read/user-active-twaps/user-active-twaps.reader.ts +36 -0
- package/src/read/user-active-twaps/user-active-twaps.types.ts +33 -0
- package/src/read/user-bulk-orders/user-bulk-orders.reader.ts +37 -0
- package/src/read/user-bulk-orders/user-bulk-orders.types.ts +32 -0
- package/src/read/user-funding-history/user-funding-history.reader.ts +38 -0
- package/src/read/user-funding-history/user-funding-history.types.ts +29 -0
- package/src/read/user-notifications/user-notifications.reader.ts +17 -0
- package/src/read/user-notifications/user-notifications.types.ts +61 -0
- package/src/read/user-open-orders/user-open-orders.reader.ts +36 -0
- package/src/read/user-open-orders/user-open-orders.types.ts +42 -0
- package/src/read/user-order-history/user-order-history.reader.ts +34 -0
- package/src/read/user-order-history/user-order-history.types.ts +44 -0
- package/src/read/user-positions/user-positions.reader.ts +55 -0
- package/src/read/user-positions/user-positions.types.ts +43 -0
- package/src/read/user-subaccounts/user-subaccounts.reader.ts +30 -0
- package/src/read/user-subaccounts/user-subaccounts.types.ts +21 -0
- package/src/read/user-trade-history/user-trade-history.reader.ts +38 -0
- package/src/read/user-trade-history/user-trade-history.types.ts +33 -0
- package/src/read/vaults/vaults.reader.ts +79 -0
- package/src/read/vaults/vaults.types.ts +106 -0
- package/src/read/ws-subscription.ts +200 -0
- package/src/subaccount-types.ts +31 -0
- package/src/transaction-builder.ts +75 -0
- package/src/utils.ts +255 -0
- package/src/write.ts +965 -0
- package/tsconfig.json +8 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
4
|
+
|
|
5
|
+
export interface UserOpenOrdersRequestArgs extends BaseRequestArgs {
|
|
6
|
+
subAddr: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const UserOpenOrderSchema = z.object({
|
|
10
|
+
parent: z.string(),
|
|
11
|
+
market: z.string(),
|
|
12
|
+
order_id: z.string(),
|
|
13
|
+
client_order_id: z.string().nullable(),
|
|
14
|
+
orig_size: z.number().nullable(),
|
|
15
|
+
remaining_size: z.number().nullable(),
|
|
16
|
+
size_delta: z.number().nullable(),
|
|
17
|
+
price: z.number().nullable(),
|
|
18
|
+
is_buy: z.boolean(),
|
|
19
|
+
details: z.string(),
|
|
20
|
+
transaction_version: z.number(),
|
|
21
|
+
unix_ms: z.number(),
|
|
22
|
+
tp_order_id: z.string().nullable(),
|
|
23
|
+
tp_trigger_price: z.number().nullable(),
|
|
24
|
+
tp_limit_price: z.number().nullable(),
|
|
25
|
+
sl_order_id: z.string().nullable(),
|
|
26
|
+
sl_trigger_price: z.number().nullable(),
|
|
27
|
+
sl_limit_price: z.number().nullable(),
|
|
28
|
+
order_type: z.string().optional(),
|
|
29
|
+
trigger_condition: z.string().optional(),
|
|
30
|
+
order_direction: z.string().optional(),
|
|
31
|
+
is_reduce_only: z.boolean().optional(),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
export const UserOpenOrdersSchema = z.array(UserOpenOrderSchema);
|
|
35
|
+
|
|
36
|
+
export const UserOpenOrdersWsMessageSchema = z.object({
|
|
37
|
+
orders: z.array(UserOpenOrderSchema),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export type UserOpenOrder = z.infer<typeof UserOpenOrderSchema>;
|
|
41
|
+
export type UserOpenOrders = z.infer<typeof UserOpenOrdersSchema>;
|
|
42
|
+
export type UserOpenOrdersWsMessage = z.infer<typeof UserOpenOrdersWsMessageSchema>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import {
|
|
3
|
+
UserOrderHistoryRequestArgs,
|
|
4
|
+
UserOrdersSchema,
|
|
5
|
+
UserOrdersWsMessage,
|
|
6
|
+
UserOrdersWsMessageSchema,
|
|
7
|
+
} from "./user-order-history.types";
|
|
8
|
+
|
|
9
|
+
export class UserOrderHistoryReader extends BaseReader {
|
|
10
|
+
async getByAddr({ subAddr, fetchOptions }: UserOrderHistoryRequestArgs) {
|
|
11
|
+
const response = await this.getRequest({
|
|
12
|
+
schema: UserOrdersSchema,
|
|
13
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/order_history`,
|
|
14
|
+
queryParams: {
|
|
15
|
+
user: subAddr,
|
|
16
|
+
},
|
|
17
|
+
options: fetchOptions,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return response.data;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Subscribe to user order history updates
|
|
25
|
+
* @param subAddr The subaccount address of the user to subscribe to
|
|
26
|
+
* @param onData Callback function for received user order history data
|
|
27
|
+
* @returns A function to unsubscribe from the user order history updates
|
|
28
|
+
*/
|
|
29
|
+
subscribeByAddr(subAddr: string, onData: (data: UserOrdersWsMessage) => void) {
|
|
30
|
+
const topic = `user_order_history:${subAddr}`;
|
|
31
|
+
|
|
32
|
+
return this.deps.ws.subscribe(topic, UserOrdersWsMessageSchema, onData);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
4
|
+
import { PaginatedResponseSchema } from "../pagination.types";
|
|
5
|
+
|
|
6
|
+
export interface UserOrderHistoryRequestArgs extends BaseRequestArgs {
|
|
7
|
+
subAddr: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const UserOrderSchema = z.object({
|
|
11
|
+
parent: z.string(),
|
|
12
|
+
market: z.string(),
|
|
13
|
+
client_order_id: z.string(),
|
|
14
|
+
order_id: z.string(),
|
|
15
|
+
status: z.string(),
|
|
16
|
+
order_type: z.string(),
|
|
17
|
+
trigger_condition: z.string(),
|
|
18
|
+
order_direction: z.string(),
|
|
19
|
+
orig_size: z.number(),
|
|
20
|
+
remaining_size: z.number(),
|
|
21
|
+
size_delta: z.number(),
|
|
22
|
+
price: z.number(),
|
|
23
|
+
is_buy: z.boolean(),
|
|
24
|
+
is_reduce_only: z.boolean(),
|
|
25
|
+
details: z.string(),
|
|
26
|
+
tp_order_id: z.string().nullable(),
|
|
27
|
+
tp_trigger_price: z.number().nullable(),
|
|
28
|
+
tp_limit_price: z.number().nullable(),
|
|
29
|
+
sl_order_id: z.string().nullable(),
|
|
30
|
+
sl_trigger_price: z.number().nullable(),
|
|
31
|
+
sl_limit_price: z.number().nullable(),
|
|
32
|
+
transaction_version: z.number(),
|
|
33
|
+
unix_ms: z.number(),
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export const UserOrdersSchema = PaginatedResponseSchema(UserOrderSchema);
|
|
37
|
+
|
|
38
|
+
export const UserOrdersWsMessageSchema = z.object({
|
|
39
|
+
orders: z.array(UserOrderSchema),
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export type UserOrder = z.infer<typeof UserOrderSchema>;
|
|
43
|
+
export type UserOrders = z.infer<typeof UserOrdersSchema>;
|
|
44
|
+
export type UserOrdersWsMessage = z.infer<typeof UserOrdersWsMessageSchema>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import {
|
|
3
|
+
UserPositionsRequestArgs,
|
|
4
|
+
UserPositionsSchema,
|
|
5
|
+
UserPositionsWsMessage,
|
|
6
|
+
UserPositionsWsMessageSchema,
|
|
7
|
+
} from "./user-positions.types";
|
|
8
|
+
|
|
9
|
+
export class UserPositionsReader extends BaseReader {
|
|
10
|
+
/**
|
|
11
|
+
* Get the positions for a given user
|
|
12
|
+
* @param userAddr The address of the user to get positions for
|
|
13
|
+
* @param includeDeleted Whether to include deleted positions in the response
|
|
14
|
+
* @returns The positions for the given user
|
|
15
|
+
*/
|
|
16
|
+
async getByAddr({
|
|
17
|
+
subAddr,
|
|
18
|
+
marketAddr,
|
|
19
|
+
includeDeleted = false,
|
|
20
|
+
limit = 10,
|
|
21
|
+
fetchOptions,
|
|
22
|
+
}: UserPositionsRequestArgs) {
|
|
23
|
+
const queryParams = new URLSearchParams({
|
|
24
|
+
user: subAddr,
|
|
25
|
+
include_deleted: includeDeleted.toString(),
|
|
26
|
+
limit: limit.toString(),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
if (marketAddr) {
|
|
30
|
+
queryParams.set("market_address", marketAddr);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const response = await this.getRequest({
|
|
34
|
+
schema: UserPositionsSchema,
|
|
35
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/user_positions`,
|
|
36
|
+
queryParams,
|
|
37
|
+
options: fetchOptions,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
return response.data;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Subscribe to user positions updates
|
|
45
|
+
* @param subAddr The subaccount address of the user to subscribe to
|
|
46
|
+
* @param apiUrl The WebSocket server URL
|
|
47
|
+
* @param onData Callback function for received user positions data
|
|
48
|
+
* @returns A function to unsubscribe from the user positions updates
|
|
49
|
+
*/
|
|
50
|
+
subscribeByAddr(subAddr: string, onData: (data: UserPositionsWsMessage) => void) {
|
|
51
|
+
const topic = `user_positions:${subAddr}`;
|
|
52
|
+
|
|
53
|
+
return this.deps.ws.subscribe(topic, UserPositionsWsMessageSchema, onData);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
4
|
+
|
|
5
|
+
export interface UserPositionsRequestArgs extends BaseRequestArgs {
|
|
6
|
+
subAddr: string;
|
|
7
|
+
marketAddr?: string;
|
|
8
|
+
includeDeleted?: boolean;
|
|
9
|
+
limit?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const UserPositionSchema = z.object({
|
|
13
|
+
market: z.string(),
|
|
14
|
+
user: z.string(),
|
|
15
|
+
size: z.number(),
|
|
16
|
+
// margin: z.number(),
|
|
17
|
+
max_allowed_leverage: z.number(),
|
|
18
|
+
user_leverage: z.number(),
|
|
19
|
+
entry_price: z.number(),
|
|
20
|
+
is_isolated: z.boolean(),
|
|
21
|
+
unrealized_funding: z.number(),
|
|
22
|
+
estimated_liquidation_price: z.number(),
|
|
23
|
+
tp_order_id: z.string().nullable(),
|
|
24
|
+
tp_trigger_price: z.number().nullable(),
|
|
25
|
+
tp_limit_price: z.number().nullable(),
|
|
26
|
+
sl_order_id: z.string().nullable(),
|
|
27
|
+
sl_trigger_price: z.number().nullable(),
|
|
28
|
+
sl_limit_price: z.number().nullable(),
|
|
29
|
+
has_fixed_sized_tpsls: z.boolean(),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export const UserPositionsSchema = z.array(UserPositionSchema);
|
|
33
|
+
|
|
34
|
+
export const UserPositionWsMessageSchema = z.object(UserPositionSchema);
|
|
35
|
+
|
|
36
|
+
export const UserPositionsWsMessageSchema = z.object({
|
|
37
|
+
positions: UserPositionsSchema,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
export type UserPosition = z.infer<typeof UserPositionSchema>;
|
|
41
|
+
export type UserPositions = z.infer<typeof UserPositionsSchema>;
|
|
42
|
+
export type UserPositionWsMessage = z.infer<typeof UserPositionWsMessageSchema>;
|
|
43
|
+
export type UserPositionsWsMessage = z.infer<typeof UserPositionsWsMessageSchema>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { UserSubaccountsRequestArgs, UserSubaccountsSchema } from "./user-subaccounts.types";
|
|
3
|
+
|
|
4
|
+
export class UserSubaccountsReader extends BaseReader {
|
|
5
|
+
/**
|
|
6
|
+
* Get the subaccounts for a given user
|
|
7
|
+
* @param ownerAddr The address of the owner to get subaccounts for
|
|
8
|
+
* @param limit The number of subaccounts to get (default: 10)
|
|
9
|
+
* @returns The subaccounts for the given user
|
|
10
|
+
*/
|
|
11
|
+
async getByAddr({
|
|
12
|
+
ownerAddr,
|
|
13
|
+
// limit = 10,
|
|
14
|
+
fetchOptions,
|
|
15
|
+
}: UserSubaccountsRequestArgs) {
|
|
16
|
+
const queryParams = new URLSearchParams({
|
|
17
|
+
owner: ownerAddr,
|
|
18
|
+
// limit: limit.toString(),
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const response = await this.getRequest({
|
|
22
|
+
schema: UserSubaccountsSchema,
|
|
23
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/subaccounts`, // TODO: update to /user_subaccounts?
|
|
24
|
+
queryParams,
|
|
25
|
+
options: fetchOptions,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return response.data;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
4
|
+
|
|
5
|
+
export interface UserSubaccountsRequestArgs extends BaseRequestArgs {
|
|
6
|
+
ownerAddr: string;
|
|
7
|
+
// limit?: number; // TODO: Add limit
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const UserSubaccountSchema = z.object({
|
|
11
|
+
subaccount_address: z.string(),
|
|
12
|
+
primary_account_address: z.string(),
|
|
13
|
+
is_primary: z.boolean(),
|
|
14
|
+
is_active: z.boolean().optional(),
|
|
15
|
+
custom_label: z.string().nullable(),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export const UserSubaccountsSchema = z.array(UserSubaccountSchema);
|
|
19
|
+
|
|
20
|
+
export type UserSubaccount = z.infer<typeof UserSubaccountSchema>;
|
|
21
|
+
export type UserSubaccounts = UserSubaccount[];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import {
|
|
3
|
+
UserTradeHistoryRequestArgs,
|
|
4
|
+
UserTradesSchema,
|
|
5
|
+
UserTradesWsMessage,
|
|
6
|
+
UserTradesWsMessageSchema,
|
|
7
|
+
} from "./user-trade-history.types";
|
|
8
|
+
|
|
9
|
+
export class UserTradeHistoryReader extends BaseReader {
|
|
10
|
+
/**
|
|
11
|
+
* Get the trade history for a given user
|
|
12
|
+
* @param subAddr The subaccount address of the user to get trade history for
|
|
13
|
+
* @param limit The number of trades to get (default: 10)
|
|
14
|
+
* @returns The trade history for the given user
|
|
15
|
+
*/
|
|
16
|
+
async getByAddr({ subAddr, limit = 10, fetchOptions }: UserTradeHistoryRequestArgs) {
|
|
17
|
+
const response = await this.getRequest({
|
|
18
|
+
schema: UserTradesSchema,
|
|
19
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/trade_history`,
|
|
20
|
+
queryParams: { user: subAddr, limit: limit.toString() },
|
|
21
|
+
options: fetchOptions,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return response.data;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to trade history updates
|
|
29
|
+
* @param subAddr The subaccount address of the user to subscribe to
|
|
30
|
+
* @param onData Callback function for received trade history data
|
|
31
|
+
* @returns A function to unsubscribe from the trade history updates
|
|
32
|
+
*/
|
|
33
|
+
subscribeByAddr(subAddr: string, onData: (data: UserTradesWsMessage) => void) {
|
|
34
|
+
const topic = `user_trade_history:${subAddr}`;
|
|
35
|
+
|
|
36
|
+
return this.deps.ws.subscribe(topic, UserTradesWsMessageSchema, onData);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
4
|
+
|
|
5
|
+
export interface UserTradeHistoryRequestArgs extends BaseRequestArgs {
|
|
6
|
+
subAddr: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const UserTradeSchema = z.object({
|
|
11
|
+
account: z.string(),
|
|
12
|
+
market: z.string(),
|
|
13
|
+
action: z.string(),
|
|
14
|
+
size: z.number(),
|
|
15
|
+
price: z.number(),
|
|
16
|
+
is_profit: z.boolean(),
|
|
17
|
+
realized_pnl_amount: z.number(),
|
|
18
|
+
is_funding_positive: z.boolean(),
|
|
19
|
+
realized_funding_amount: z.number(),
|
|
20
|
+
is_rebate: z.boolean(),
|
|
21
|
+
fee_amount: z.number(),
|
|
22
|
+
transaction_unix_ms: z.number(),
|
|
23
|
+
transaction_version: z.number(),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export const UserTradesSchema = z.array(UserTradeSchema);
|
|
27
|
+
export const UserTradesWsMessageSchema = z.object({
|
|
28
|
+
trades: z.array(UserTradeSchema),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export type UserTrade = z.infer<typeof UserTradeSchema>;
|
|
32
|
+
export type UserTrades = z.infer<typeof UserTradesSchema>;
|
|
33
|
+
export type UserTradesWsMessage = z.infer<typeof UserTradesWsMessageSchema>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import {
|
|
3
|
+
PublicVaultsRequestArgs,
|
|
4
|
+
UserOwnedVaultsRequestArgs,
|
|
5
|
+
UserOwnedVaultsResponseSchema,
|
|
6
|
+
UserPerformancesOnVaultsRequestArgs,
|
|
7
|
+
UserPerformancesOnVaultsResponseSchema,
|
|
8
|
+
VaultsResponseSchema,
|
|
9
|
+
} from "./vaults.types";
|
|
10
|
+
|
|
11
|
+
export class VaultsReader extends BaseReader {
|
|
12
|
+
/**
|
|
13
|
+
* Get all vaults
|
|
14
|
+
* @returns All vaults
|
|
15
|
+
*/
|
|
16
|
+
async getVaults({ fetchOptions, ...args }: PublicVaultsRequestArgs = {}) {
|
|
17
|
+
const queryParams = new URLSearchParams();
|
|
18
|
+
|
|
19
|
+
if (args.vaultType) queryParams.set("vault_type", args.vaultType);
|
|
20
|
+
if (args.limit) queryParams.set("limit", args.limit.toString());
|
|
21
|
+
if (args.offset) queryParams.set("offset", args.offset.toString());
|
|
22
|
+
|
|
23
|
+
const response = await this.getRequest({
|
|
24
|
+
schema: VaultsResponseSchema,
|
|
25
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/vaults`,
|
|
26
|
+
queryParams,
|
|
27
|
+
options: fetchOptions,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
return response.data;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get vaults by owner address
|
|
35
|
+
* @param user The user address to filter vaults by
|
|
36
|
+
* @returns The vaults for the given owner address
|
|
37
|
+
*/
|
|
38
|
+
async getUserOwnedVaults({ fetchOptions, ...args }: UserOwnedVaultsRequestArgs) {
|
|
39
|
+
const queryParams = new URLSearchParams({
|
|
40
|
+
user: args.ownerAddr,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
if (args.limit) queryParams.set("limit", args.limit.toString());
|
|
44
|
+
|
|
45
|
+
if (args.offset) queryParams.set("offset", args.offset.toString());
|
|
46
|
+
|
|
47
|
+
const response = await this.getRequest({
|
|
48
|
+
schema: UserOwnedVaultsResponseSchema,
|
|
49
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/user_owned_vaults`,
|
|
50
|
+
queryParams,
|
|
51
|
+
options: fetchOptions,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return response.data;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Get user performance
|
|
59
|
+
* @param args The arguments for the user performance
|
|
60
|
+
* @returns The user performance
|
|
61
|
+
*/
|
|
62
|
+
async getUserPerformancesOnVaults({
|
|
63
|
+
fetchOptions,
|
|
64
|
+
...args
|
|
65
|
+
}: UserPerformancesOnVaultsRequestArgs) {
|
|
66
|
+
const queryParams = new URLSearchParams({
|
|
67
|
+
user_address: args.ownerAddr,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const response = await this.getRequest({
|
|
71
|
+
schema: UserPerformancesOnVaultsResponseSchema,
|
|
72
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/user_vault_performance`,
|
|
73
|
+
queryParams,
|
|
74
|
+
options: fetchOptions,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
return response.data;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
|
|
3
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
4
|
+
import { PaginatedResponseSchema } from "../pagination.types";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Arguments for fetching vaults owned by a specific user
|
|
8
|
+
*/
|
|
9
|
+
export interface UserOwnedVaultsRequestArgs extends BaseRequestArgs {
|
|
10
|
+
ownerAddr: string;
|
|
11
|
+
limit?: number;
|
|
12
|
+
offset?: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface PublicVaultsRequestArgs extends BaseRequestArgs {
|
|
16
|
+
limit?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
vaultType?: "user" | "protocol";
|
|
19
|
+
address?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Arguments for fetching user performance metrics for a specific subaccount
|
|
24
|
+
*/
|
|
25
|
+
export interface UserPerformancesOnVaultsRequestArgs extends BaseRequestArgs {
|
|
26
|
+
ownerAddr: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Schema for a vault in the protocol
|
|
31
|
+
* Represents both protocol-wide vaults and user-managed vaults
|
|
32
|
+
*/
|
|
33
|
+
export const VaultSchema = z.object({
|
|
34
|
+
address: z.string(),
|
|
35
|
+
name: z.string(),
|
|
36
|
+
description: z.string().nullable(),
|
|
37
|
+
manager: z.string(),
|
|
38
|
+
status: z.string(),
|
|
39
|
+
created_at: z.number(),
|
|
40
|
+
tvl: z.number().nullable(),
|
|
41
|
+
volume: z.number().nullable(),
|
|
42
|
+
all_time_return: z.number().nullable(),
|
|
43
|
+
past_month_return: z.number().nullable(),
|
|
44
|
+
sharpe_ratio: z.number().nullable(),
|
|
45
|
+
max_drawdown: z.number().nullable(),
|
|
46
|
+
weekly_win_rate_12w: z.number().nullable(),
|
|
47
|
+
profit_share: z.number().nullable(),
|
|
48
|
+
pnl_90d: z.number().nullable(),
|
|
49
|
+
manager_avg_cash: z.number().nullable(),
|
|
50
|
+
average_leverage: z.number().nullable(),
|
|
51
|
+
depositors: z.number().nullable(),
|
|
52
|
+
perp_equity: z.number().nullable(),
|
|
53
|
+
vault_type: z.string(),
|
|
54
|
+
pnl_history: z.array(z.string()).nullable(),
|
|
55
|
+
social_links: z.array(z.string()).nullable(),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export const VaultsResponseSchema = PaginatedResponseSchema(VaultSchema).extend({
|
|
59
|
+
total_value_locked: z.number(),
|
|
60
|
+
total_volume: z.number(),
|
|
61
|
+
});
|
|
62
|
+
export type VaultsResponse = z.infer<typeof VaultsResponseSchema>;
|
|
63
|
+
export type Vault = z.infer<typeof VaultSchema>;
|
|
64
|
+
export type Vaults = Vault[];
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Schema for vaults owned/managed by a specific user
|
|
68
|
+
* Contains summary information about vaults the user manages
|
|
69
|
+
*/
|
|
70
|
+
export const UserOwnedVaultSchema = z.object({
|
|
71
|
+
vault_address: z.string(),
|
|
72
|
+
vault_name: z.string(),
|
|
73
|
+
vault_share_symbol: z.string(),
|
|
74
|
+
status: z.string(),
|
|
75
|
+
age_days: z.number(),
|
|
76
|
+
num_managers: z.number(),
|
|
77
|
+
tvl: z.number().nullable(),
|
|
78
|
+
apr: z.number().nullable(),
|
|
79
|
+
manager_equity: z.number().nullable(),
|
|
80
|
+
manager_stake: z.number().nullable(),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export const UserOwnedVaultsResponseSchema = PaginatedResponseSchema(UserOwnedVaultSchema);
|
|
84
|
+
export type UserOwnedVaultsResponse = z.infer<typeof UserOwnedVaultsResponseSchema>;
|
|
85
|
+
export type UserOwnedVault = z.infer<typeof UserOwnedVaultSchema>;
|
|
86
|
+
export type UserOwnedVaults = UserOwnedVault[];
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Schema for user performance metrics within a vault
|
|
90
|
+
* Tracks a user's deposits, shares, returns, and PnL for a specific vault
|
|
91
|
+
*/
|
|
92
|
+
export const UserPerformanceOnVaultSchema = z.object({
|
|
93
|
+
vault_address: z.string(),
|
|
94
|
+
user_address: z.string(),
|
|
95
|
+
net_deposits: z.number().nullable(),
|
|
96
|
+
current_num_shares: z.number().nullable(),
|
|
97
|
+
current_value_of_shares: z.number().nullable(),
|
|
98
|
+
all_time_return: z.number().nullable(),
|
|
99
|
+
unrealized_pnl: z.number().nullable(),
|
|
100
|
+
share_price: z.number(),
|
|
101
|
+
volume: z.number(),
|
|
102
|
+
weekly_win_rate_12w: z.number().nullable(),
|
|
103
|
+
});
|
|
104
|
+
export const UserPerformancesOnVaultsResponseSchema = z.array(UserPerformanceOnVaultSchema);
|
|
105
|
+
export type UserPerformanceOnVault = z.infer<typeof UserPerformanceOnVaultSchema>;
|
|
106
|
+
export type UserPerformancesOnVaults = UserPerformanceOnVault[];
|