@decibeltrade/sdk 0.3.0 → 0.4.0
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/json/netna.json +795 -280
- package/dist/abi/json/testnet.json +734 -507
- package/dist/admin.d.ts +43 -5
- package/dist/admin.d.ts.map +1 -1
- package/dist/admin.js +114 -11
- package/dist/base.d.ts +1 -6
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +13 -23
- package/dist/constants.d.ts +12 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +40 -7
- package/dist/fee-pay.d.ts +3 -3
- package/dist/fee-pay.d.ts.map +1 -1
- package/dist/fee-pay.js +26 -49
- package/dist/gas/gas-price-manager.d.ts.map +1 -1
- package/dist/gas/gas-price-manager.js +3 -1
- package/dist/read/account-overview/account-overview.reader.d.ts +2 -0
- package/dist/read/account-overview/account-overview.reader.d.ts.map +1 -1
- package/dist/read/account-overview/account-overview.types.d.ts +4 -0
- package/dist/read/account-overview/account-overview.types.d.ts.map +1 -1
- package/dist/read/account-overview/account-overview.types.js +5 -0
- package/dist/read/action-utils.d.ts +12 -0
- package/dist/read/action-utils.d.ts.map +1 -0
- package/dist/read/action-utils.js +13 -0
- package/dist/read/base-reader.d.ts +1 -0
- package/dist/read/base-reader.d.ts.map +1 -1
- package/dist/read/base-reader.js +15 -0
- package/dist/read/base-reader.test.d.ts +2 -0
- package/dist/read/base-reader.test.d.ts.map +1 -0
- package/dist/read/base-reader.test.js +68 -0
- package/dist/read/global-points-stats/global-points-stats.reader.d.ts +9 -0
- package/dist/read/global-points-stats/global-points-stats.reader.d.ts.map +1 -0
- package/dist/read/global-points-stats/global-points-stats.reader.js +12 -0
- package/dist/read/global-points-stats/global-points-stats.types.d.ts +9 -0
- package/dist/read/global-points-stats/global-points-stats.types.d.ts.map +1 -0
- package/dist/read/global-points-stats/global-points-stats.types.js +5 -0
- package/dist/read/index.d.ts +15 -0
- package/dist/read/index.d.ts.map +1 -1
- package/dist/read/index.js +27 -3
- package/dist/read/market-depth/market-depth.reader.d.ts +1 -17
- package/dist/read/market-depth/market-depth.reader.d.ts.map +1 -1
- package/dist/read/market-depth/market-depth.reader.js +18 -20
- package/dist/read/market-depth/market-depth.types.d.ts +5 -2
- package/dist/read/market-depth/market-depth.types.d.ts.map +1 -1
- package/dist/read/market-depth/market-depth.types.js +4 -1
- package/dist/read/market-trades/market-trades.reader.d.ts +0 -1
- package/dist/read/market-trades/market-trades.reader.d.ts.map +1 -1
- package/dist/read/market-trades/market-trades.types.d.ts +0 -3
- package/dist/read/market-trades/market-trades.types.d.ts.map +1 -1
- package/dist/read/market-trades/market-trades.types.js +0 -1
- package/dist/read/points-leaderboard/points-leaderboard.reader.d.ts +21 -0
- package/dist/read/points-leaderboard/points-leaderboard.reader.d.ts.map +1 -0
- package/dist/read/points-leaderboard/points-leaderboard.reader.js +23 -0
- package/dist/read/points-leaderboard/points-leaderboard.types.d.ts +30 -0
- package/dist/read/points-leaderboard/points-leaderboard.types.d.ts.map +1 -0
- package/dist/read/points-leaderboard/points-leaderboard.types.js +11 -0
- package/dist/read/portfolio-chart/portfolio-chart.types.d.ts +1 -1
- package/dist/read/portfolio-chart/portfolio-chart.types.d.ts.map +1 -1
- package/dist/read/referrals/referrals.reader.d.ts +98 -0
- package/dist/read/referrals/referrals.reader.d.ts.map +1 -0
- package/dist/read/referrals/referrals.reader.js +92 -0
- package/dist/read/referrals/referrals.types.d.ts +136 -0
- package/dist/read/referrals/referrals.types.d.ts.map +1 -0
- package/dist/read/referrals/referrals.types.js +85 -0
- package/dist/read/streaks/streaks.reader.d.ts +19 -0
- package/dist/read/streaks/streaks.reader.d.ts.map +1 -0
- package/dist/read/streaks/streaks.reader.js +19 -0
- package/dist/read/streaks/streaks.types.d.ts +17 -0
- package/dist/read/streaks/streaks.types.d.ts.map +1 -0
- package/dist/read/streaks/streaks.types.js +10 -0
- package/dist/read/tier/tier.reader.d.ts +21 -0
- package/dist/read/tier/tier.reader.d.ts.map +1 -0
- package/dist/read/tier/tier.reader.js +19 -0
- package/dist/read/tier/tier.types.d.ts +25 -0
- package/dist/read/tier/tier.types.d.ts.map +1 -0
- package/dist/read/tier/tier.types.js +13 -0
- package/dist/read/trading-amps/trading-amps.reader.d.ts +18 -0
- package/dist/read/trading-amps/trading-amps.reader.d.ts.map +1 -0
- package/dist/read/trading-amps/trading-amps.reader.js +23 -0
- package/dist/read/trading-amps/trading-amps.types.d.ts +25 -0
- package/dist/read/trading-amps/trading-amps.types.d.ts.map +1 -0
- package/dist/read/trading-amps/trading-amps.types.js +10 -0
- package/dist/read/trading-points/trading-points.reader.d.ts +18 -0
- package/dist/read/trading-points/trading-points.reader.d.ts.map +1 -0
- package/dist/read/trading-points/trading-points.reader.js +19 -0
- package/dist/read/trading-points/trading-points.types.d.ts +21 -0
- package/dist/read/trading-points/trading-points.types.d.ts.map +1 -0
- package/dist/read/trading-points/trading-points.types.js +10 -0
- package/dist/read/types.d.ts +7 -0
- package/dist/read/types.d.ts.map +1 -1
- package/dist/read/types.js +7 -0
- package/dist/read/user-funding-history/user-funding-history.reader.d.ts +1 -2
- package/dist/read/user-funding-history/user-funding-history.reader.d.ts.map +1 -1
- package/dist/read/user-funding-history/user-funding-history.types.d.ts +8 -4
- package/dist/read/user-funding-history/user-funding-history.types.d.ts.map +1 -1
- package/dist/read/user-funding-history/user-funding-history.types.js +1 -2
- package/dist/read/user-notifications/user-notifications.types.d.ts +1 -2
- package/dist/read/user-notifications/user-notifications.types.d.ts.map +1 -1
- package/dist/read/user-open-orders/user-open-orders.reader.d.ts +1 -2
- package/dist/read/user-open-orders/user-open-orders.reader.d.ts.map +1 -1
- package/dist/read/user-open-orders/user-open-orders.reader.js +1 -1
- package/dist/read/user-open-orders/user-open-orders.types.d.ts +3 -6
- package/dist/read/user-open-orders/user-open-orders.types.d.ts.map +1 -1
- package/dist/read/user-open-orders/user-open-orders.types.js +1 -2
- package/dist/read/user-order-history/user-order-history.reader.d.ts +1 -2
- package/dist/read/user-order-history/user-order-history.reader.d.ts.map +1 -1
- package/dist/read/user-order-history/user-order-history.reader.js +1 -1
- package/dist/read/user-order-history/user-order-history.types.d.ts +3 -6
- package/dist/read/user-order-history/user-order-history.types.d.ts.map +1 -1
- package/dist/read/user-order-history/user-order-history.types.js +1 -2
- package/dist/read/user-positions/user-positions.reader.d.ts +1 -0
- package/dist/read/user-positions/user-positions.reader.d.ts.map +1 -1
- package/dist/read/user-positions/user-positions.types.d.ts +220 -10
- package/dist/read/user-positions/user-positions.types.d.ts.map +1 -1
- package/dist/read/user-positions/user-positions.types.js +1 -0
- package/dist/read/user-trade-history/user-trade-history.reader.d.ts +5 -2
- package/dist/read/user-trade-history/user-trade-history.reader.d.ts.map +1 -1
- package/dist/read/user-trade-history/user-trade-history.types.d.ts +36 -9
- package/dist/read/user-trade-history/user-trade-history.types.d.ts.map +1 -1
- package/dist/read/user-trade-history/user-trade-history.types.js +4 -1
- package/dist/read/vaults/vaults.reader.d.ts +6 -4
- package/dist/read/vaults/vaults.reader.d.ts.map +1 -1
- package/dist/read/vaults/vaults.reader.js +4 -0
- package/dist/read/vaults/vaults.types.d.ts +30 -12
- package/dist/read/vaults/vaults.types.d.ts.map +1 -1
- package/dist/read/vaults/vaults.types.js +20 -3
- package/dist/read/ws-subscription.d.ts +1 -1
- package/dist/read/ws-subscription.d.ts.map +1 -1
- package/dist/read/ws-subscription.js +9 -1
- package/dist/release-config.d.ts +5 -2
- package/dist/release-config.d.ts.map +1 -1
- package/dist/release-config.js +15 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/write.d.ts +12 -0
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +24 -7
- package/package.json +1 -1
- package/readme.md +7 -48
package/dist/fee-pay.js
CHANGED
|
@@ -1,62 +1,39 @@
|
|
|
1
1
|
import { GasStationClient } from "@aptos-labs/gas-station-client";
|
|
2
2
|
import { TransactionResponseType, } from "@aptos-labs/ts-sdk";
|
|
3
3
|
/**
|
|
4
|
-
* Submit a transaction with fee
|
|
5
|
-
*
|
|
4
|
+
* Submit a transaction with Gas Station fee sponsorship.
|
|
5
|
+
* Requires `gasStationApiKey` in the config.
|
|
6
6
|
*
|
|
7
|
-
* @param config The Decibel configuration
|
|
7
|
+
* @param config The Decibel configuration (must include gasStationApiKey)
|
|
8
8
|
* @param transaction The transaction to submit
|
|
9
9
|
* @param senderAuthenticator The sender's authenticator
|
|
10
10
|
* @returns A promise that resolves to the pending transaction response
|
|
11
11
|
*/
|
|
12
12
|
export async function submitFeePaidTransaction(config, transaction, senderAuthenticator) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const gasStationClient = new GasStationClient({
|
|
16
|
-
network: config.network,
|
|
17
|
-
apiKey: config.gasStationApiKey,
|
|
18
|
-
// Use gasStationUrl as base URL for custom networks like netna
|
|
19
|
-
...(config.gasStationUrl && { baseUrl: config.gasStationUrl }),
|
|
20
|
-
});
|
|
21
|
-
const { transactionHash } = await gasStationClient.signAndSubmitTransaction({
|
|
22
|
-
transaction,
|
|
23
|
-
senderAuthenticator,
|
|
24
|
-
});
|
|
25
|
-
// Build PendingTransactionResponse from SimpleTransaction.rawTransaction
|
|
26
|
-
const rawTxn = transaction.rawTransaction;
|
|
27
|
-
return {
|
|
28
|
-
type: TransactionResponseType.Pending,
|
|
29
|
-
hash: transactionHash,
|
|
30
|
-
sender: rawTxn.sender.toString(),
|
|
31
|
-
sequence_number: rawTxn.sequence_number.toString(),
|
|
32
|
-
max_gas_amount: rawTxn.max_gas_amount.toString(),
|
|
33
|
-
gas_unit_price: rawTxn.gas_unit_price.toString(),
|
|
34
|
-
expiration_timestamp_secs: rawTxn.expiration_timestamp_secs.toString(),
|
|
35
|
-
// Payload not available from gas station response
|
|
36
|
-
payload: {},
|
|
37
|
-
};
|
|
13
|
+
if (!config.gasStationApiKey) {
|
|
14
|
+
throw new Error("gasStationApiKey is required for fee-paid transactions");
|
|
38
15
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const signatureBcs = Array.from(senderAuthenticator.bcsToBytes());
|
|
45
|
-
const transactionBcs = Array.from(transaction.rawTransaction.bcsToBytes());
|
|
46
|
-
const body = JSON.stringify({
|
|
47
|
-
signature: signatureBcs,
|
|
48
|
-
transaction: transactionBcs,
|
|
16
|
+
const gasStationClient = new GasStationClient({
|
|
17
|
+
network: config.network,
|
|
18
|
+
apiKey: config.gasStationApiKey,
|
|
19
|
+
// Use gasStationUrl as base URL for custom networks like netna
|
|
20
|
+
...(config.gasStationUrl && { baseUrl: config.gasStationUrl }),
|
|
49
21
|
});
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"Content-Type": "application/json",
|
|
54
|
-
},
|
|
55
|
-
body,
|
|
22
|
+
const { transactionHash } = await gasStationClient.signAndSubmitTransaction({
|
|
23
|
+
transaction,
|
|
24
|
+
senderAuthenticator,
|
|
56
25
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
26
|
+
// Build PendingTransactionResponse from SimpleTransaction.rawTransaction
|
|
27
|
+
const rawTxn = transaction.rawTransaction;
|
|
28
|
+
return {
|
|
29
|
+
type: TransactionResponseType.Pending,
|
|
30
|
+
hash: transactionHash,
|
|
31
|
+
sender: rawTxn.sender.toString(),
|
|
32
|
+
sequence_number: rawTxn.sequence_number.toString(),
|
|
33
|
+
max_gas_amount: rawTxn.max_gas_amount.toString(),
|
|
34
|
+
gas_unit_price: rawTxn.gas_unit_price.toString(),
|
|
35
|
+
expiration_timestamp_secs: rawTxn.expiration_timestamp_secs.toString(),
|
|
36
|
+
// Payload not available from gas station response
|
|
37
|
+
payload: {},
|
|
38
|
+
};
|
|
62
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas-price-manager.d.ts","sourceRoot":"","sources":["../../src/gas/gas-price-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"gas-price-manager.d.ts","sourceRoot":"","sources":["../../src/gas/gas-price-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,sBAAsB;IAchE,WAAW,IAAI,MAAM,GAAG,SAAS;IAQjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBjC,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,IAAI;IAST,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMhD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;CAmB7C"}
|
|
@@ -10,7 +10,9 @@ export class GasPriceManager {
|
|
|
10
10
|
this.aptos = new Aptos(new AptosConfig({
|
|
11
11
|
network: config.network,
|
|
12
12
|
fullnode: config.fullnodeUrl,
|
|
13
|
-
clientConfig:
|
|
13
|
+
clientConfig: config.additionalHeaders
|
|
14
|
+
? { HEADERS: config.additionalHeaders }
|
|
15
|
+
: { API_KEY: opts?.nodeApiKey },
|
|
14
16
|
}));
|
|
15
17
|
this.refreshIntervalMs = opts?.refreshIntervalMs ?? 60_000; // default to 1 minute
|
|
16
18
|
this.multiplier = opts?.multiplier ?? 2; // default to 2x multilier to ensure we have enough gas for the transactipon
|
|
@@ -29,6 +29,8 @@ export declare class AccountOverviewReader extends BaseReader {
|
|
|
29
29
|
liquidation_fees_paid: number | null;
|
|
30
30
|
liquidation_losses: number | null;
|
|
31
31
|
net_deposits?: number | null | undefined;
|
|
32
|
+
margin_deficit?: number | undefined;
|
|
33
|
+
vault_equity?: number | null | undefined;
|
|
32
34
|
}>;
|
|
33
35
|
/**
|
|
34
36
|
* Subscribe to account overview
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-overview.reader.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qBAAsB,SAAQ,UAAU;IACnD;;;;OAIG;IACG,SAAS,CAAC,EACd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE,0BAA0B
|
|
1
|
+
{"version":3,"file":"account-overview.reader.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qBAAsB,SAAQ,UAAU;IACnD;;;;OAIG;IACG,SAAS,CAAC,EACd,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;IAgB7B;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI;CAKlF"}
|
|
@@ -32,9 +32,11 @@ export declare const AccountOverviewSchema: z.ZodObject<{
|
|
|
32
32
|
total_margin: z.ZodNumber;
|
|
33
33
|
usdc_cross_withdrawable_balance: z.ZodNumber;
|
|
34
34
|
usdc_isolated_withdrawable_balance: z.ZodNumber;
|
|
35
|
+
margin_deficit: z.ZodOptional<z.ZodNumber>;
|
|
35
36
|
realized_pnl: z.ZodNullable<z.ZodNumber>;
|
|
36
37
|
liquidation_fees_paid: z.ZodNullable<z.ZodNumber>;
|
|
37
38
|
liquidation_losses: z.ZodNullable<z.ZodNumber>;
|
|
39
|
+
vault_equity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
38
40
|
}, z.core.$strip>;
|
|
39
41
|
export declare const AccountOverviewWsMessageSchema: z.ZodObject<{
|
|
40
42
|
account_overview: z.ZodObject<{
|
|
@@ -56,9 +58,11 @@ export declare const AccountOverviewWsMessageSchema: z.ZodObject<{
|
|
|
56
58
|
total_margin: z.ZodNumber;
|
|
57
59
|
usdc_cross_withdrawable_balance: z.ZodNumber;
|
|
58
60
|
usdc_isolated_withdrawable_balance: z.ZodNumber;
|
|
61
|
+
margin_deficit: z.ZodOptional<z.ZodNumber>;
|
|
59
62
|
realized_pnl: z.ZodNullable<z.ZodNumber>;
|
|
60
63
|
liquidation_fees_paid: z.ZodNullable<z.ZodNumber>;
|
|
61
64
|
liquidation_losses: z.ZodNullable<z.ZodNumber>;
|
|
65
|
+
vault_equity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
62
66
|
}, z.core.$strip>;
|
|
63
67
|
}, z.core.$strip>;
|
|
64
68
|
export type AccountOverview = z.infer<typeof AccountOverviewSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-overview.types.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"account-overview.types.d.ts","sourceRoot":"","sources":["../../../src/read/account-overview/account-overview.types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BhC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEzC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
|
|
@@ -26,9 +26,14 @@ export const AccountOverviewSchema = z.object({
|
|
|
26
26
|
total_margin: z.number(),
|
|
27
27
|
usdc_cross_withdrawable_balance: z.number(),
|
|
28
28
|
usdc_isolated_withdrawable_balance: z.number(),
|
|
29
|
+
/** Cross-margin deficit: 0 when healthy, negative when the account has a margin hole.
|
|
30
|
+
* When negative, new deposits partially fill this deficit before becoming available to trade. */
|
|
31
|
+
margin_deficit: z.number().optional(), // TODO: Remove optional once back-end is deployed
|
|
29
32
|
realized_pnl: z.number().nullable(),
|
|
30
33
|
liquidation_fees_paid: z.number().nullable(),
|
|
31
34
|
liquidation_losses: z.number().nullable(),
|
|
35
|
+
/** Total USDC value of vault shares held by this account. NULL when not yet available via WebSocket. */
|
|
36
|
+
vault_equity: z.number().nullable().optional(), // TODO: Remove optional once back-end is deployed
|
|
32
37
|
});
|
|
33
38
|
export const AccountOverviewWsMessageSchema = z.object({
|
|
34
39
|
account_overview: AccountOverviewSchema.omit({ volume: true }),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the position direction from a trade action.
|
|
3
|
+
*
|
|
4
|
+
* @param action - The trade action (e.g., "CloseLong", "OpenShort")
|
|
5
|
+
* @returns The position direction: "Long" or "Short"
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* getPositionDirection("CloseLong") // returns "Long"
|
|
9
|
+
* getPositionDirection("OpenShort") // returns "Short"
|
|
10
|
+
*/
|
|
11
|
+
export declare function getPositionDirection(action: string): "Long" | "Short";
|
|
12
|
+
//# sourceMappingURL=action-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-utils.d.ts","sourceRoot":"","sources":["../../src/read/action-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAErE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the position direction from a trade action.
|
|
3
|
+
*
|
|
4
|
+
* @param action - The trade action (e.g., "CloseLong", "OpenShort")
|
|
5
|
+
* @returns The position direction: "Long" or "Short"
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* getPositionDirection("CloseLong") // returns "Long"
|
|
9
|
+
* getPositionDirection("OpenShort") // returns "Short"
|
|
10
|
+
*/
|
|
11
|
+
export function getPositionDirection(action) {
|
|
12
|
+
return action.includes("Long") ? "Long" : "Short";
|
|
13
|
+
}
|
|
@@ -6,6 +6,7 @@ export interface BaseRequestArgs {
|
|
|
6
6
|
export declare class BaseReader {
|
|
7
7
|
protected readonly deps: DecibelReaderDeps;
|
|
8
8
|
constructor(deps: DecibelReaderDeps);
|
|
9
|
+
private mergeHeaders;
|
|
9
10
|
protected getRequest<TResponseData>(args: Omit<GetRequestArgs<TResponseData>, "apiKey">): Promise<{
|
|
10
11
|
data: TResponseData;
|
|
11
12
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-reader.d.ts","sourceRoot":"","sources":["../../src/read/base-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,UAAU;IACT,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB;gBAAvB,IAAI,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"base-reader.d.ts","sourceRoot":"","sources":["../../src/read/base-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,UAAU;IACT,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB;gBAAvB,IAAI,EAAE,iBAAiB;IAEtD,OAAO,CAAC,YAAY;cAYJ,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;cAQ7E,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;cAQ/E,YAAY,CAAC,aAAa,EACxC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;;;;;CAQxD"}
|
package/dist/read/base-reader.js
CHANGED
|
@@ -4,21 +4,36 @@ export class BaseReader {
|
|
|
4
4
|
constructor(deps) {
|
|
5
5
|
this.deps = deps;
|
|
6
6
|
}
|
|
7
|
+
mergeHeaders(options) {
|
|
8
|
+
const extra = this.deps.config.additionalHeaders;
|
|
9
|
+
if (!extra)
|
|
10
|
+
return options;
|
|
11
|
+
return {
|
|
12
|
+
...options,
|
|
13
|
+
headers: {
|
|
14
|
+
...extra,
|
|
15
|
+
...options?.headers,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
7
19
|
async getRequest(args) {
|
|
8
20
|
return baseGetRequest({
|
|
9
21
|
...args,
|
|
22
|
+
options: this.mergeHeaders(args.options),
|
|
10
23
|
apiKey: this.deps.apiKey,
|
|
11
24
|
});
|
|
12
25
|
}
|
|
13
26
|
async postRequest(args) {
|
|
14
27
|
return basePostRequest({
|
|
15
28
|
...args,
|
|
29
|
+
options: this.mergeHeaders(args.options),
|
|
16
30
|
apiKey: this.deps.apiKey,
|
|
17
31
|
});
|
|
18
32
|
}
|
|
19
33
|
async patchRequest(args) {
|
|
20
34
|
return basePatchRequest({
|
|
21
35
|
...args,
|
|
36
|
+
options: this.mergeHeaders(args.options),
|
|
22
37
|
apiKey: this.deps.apiKey,
|
|
23
38
|
});
|
|
24
39
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-reader.test.d.ts","sourceRoot":"","sources":["../../src/read/base-reader.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Network } from "@aptos-labs/ts-sdk";
|
|
2
|
+
import { describe, expect, it, vi } from "vitest";
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
|
+
import { DEFAULT_COMPAT_VERSION } from "../release-config";
|
|
5
|
+
import { BaseReader } from "./base-reader";
|
|
6
|
+
// Expose protected methods for testing
|
|
7
|
+
class TestableReader extends BaseReader {
|
|
8
|
+
async doGet(url) {
|
|
9
|
+
return this.getRequest({ schema: z.unknown(), url });
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function createMockDeps(additionalHeaders) {
|
|
13
|
+
const mockConfig = {
|
|
14
|
+
network: Network.TESTNET,
|
|
15
|
+
fullnodeUrl: "https://testnet.aptoslabs.com/v1",
|
|
16
|
+
tradingHttpUrl: "https://api.testnet.example.com",
|
|
17
|
+
tradingWsUrl: "wss://ws.testnet.example.com",
|
|
18
|
+
deployment: {
|
|
19
|
+
package: "0x0000000000000000000000000000000000000000000000000000000000000123",
|
|
20
|
+
usdc: "0x0000000000000000000000000000000000000000000000000000000000000456",
|
|
21
|
+
testc: "0x0000000000000000000000000000000000000000000000000000000000000789",
|
|
22
|
+
perpEngineGlobal: "0x0000000000000000000000000000000000000000000000000000000000000abc",
|
|
23
|
+
},
|
|
24
|
+
compatVersion: DEFAULT_COMPAT_VERSION,
|
|
25
|
+
additionalHeaders,
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
aptos: {},
|
|
29
|
+
ws: {},
|
|
30
|
+
config: mockConfig,
|
|
31
|
+
apiKey: additionalHeaders ? undefined : "test-api-key",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
describe("BaseReader - additionalHeaders", () => {
|
|
35
|
+
it("should not inject headers when additionalHeaders is undefined", async () => {
|
|
36
|
+
const deps = createMockDeps();
|
|
37
|
+
const reader = new TestableReader(deps);
|
|
38
|
+
const fetchSpy = vi
|
|
39
|
+
.spyOn(globalThis, "fetch")
|
|
40
|
+
.mockResolvedValue(new Response(JSON.stringify({ ok: true }), { status: 200 }));
|
|
41
|
+
await reader.doGet("https://api.example.com/test");
|
|
42
|
+
const calledInit = fetchSpy.mock.calls[0]?.[1];
|
|
43
|
+
const headers = calledInit?.headers;
|
|
44
|
+
expect(headers.get("Authorization")).toBe("Bearer test-api-key");
|
|
45
|
+
expect(headers.get("x-internal-organization-id")).toBeNull();
|
|
46
|
+
fetchSpy.mockRestore();
|
|
47
|
+
});
|
|
48
|
+
it("should inject additionalHeaders into requests", async () => {
|
|
49
|
+
const deps = createMockDeps({
|
|
50
|
+
"x-internal-organization-id": "org-1",
|
|
51
|
+
"x-internal-project-id": "proj-1",
|
|
52
|
+
"x-internal-application-id": "app-1",
|
|
53
|
+
});
|
|
54
|
+
const reader = new TestableReader(deps);
|
|
55
|
+
const fetchSpy = vi
|
|
56
|
+
.spyOn(globalThis, "fetch")
|
|
57
|
+
.mockResolvedValue(new Response(JSON.stringify({ ok: true }), { status: 200 }));
|
|
58
|
+
await reader.doGet("https://api.example.com/test");
|
|
59
|
+
const calledInit = fetchSpy.mock.calls[0]?.[1];
|
|
60
|
+
const headers = calledInit?.headers;
|
|
61
|
+
expect(headers.get("x-internal-organization-id")).toBe("org-1");
|
|
62
|
+
expect(headers.get("x-internal-project-id")).toBe("proj-1");
|
|
63
|
+
expect(headers.get("x-internal-application-id")).toBe("app-1");
|
|
64
|
+
// apiKey is undefined when additionalHeaders is set
|
|
65
|
+
expect(headers.get("Authorization")).toBeNull();
|
|
66
|
+
fetchSpy.mockRestore();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { GlobalPointsStatsRequestArgs } from "./global-points-stats.types";
|
|
3
|
+
export declare class GlobalPointsStatsReader extends BaseReader {
|
|
4
|
+
get({ fetchOptions }?: GlobalPointsStatsRequestArgs): Promise<{
|
|
5
|
+
total_users: number;
|
|
6
|
+
total_amps_distributed: number;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=global-points-stats.reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-points-stats.reader.d.ts","sourceRoot":"","sources":["../../../src/read/global-points-stats/global-points-stats.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAA2B,MAAM,6BAA6B,CAAC;AAEpG,qBAAa,uBAAwB,SAAQ,UAAU;IAC/C,GAAG,CAAC,EAAE,YAAY,EAAE,GAAE,4BAAiC;;;;CAS9D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { GlobalPointsStatsSchema } from "./global-points-stats.types";
|
|
3
|
+
export class GlobalPointsStatsReader extends BaseReader {
|
|
4
|
+
async get({ fetchOptions } = {}) {
|
|
5
|
+
const response = await this.getRequest({
|
|
6
|
+
schema: GlobalPointsStatsSchema,
|
|
7
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/points/global`,
|
|
8
|
+
options: fetchOptions,
|
|
9
|
+
});
|
|
10
|
+
return response.data;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
import { BaseRequestArgs } from "../base-reader";
|
|
3
|
+
export type GlobalPointsStatsRequestArgs = BaseRequestArgs;
|
|
4
|
+
export declare const GlobalPointsStatsSchema: z.ZodObject<{
|
|
5
|
+
total_users: z.ZodNumber;
|
|
6
|
+
total_amps_distributed: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type GlobalPointsStats = z.infer<typeof GlobalPointsStatsSchema>;
|
|
9
|
+
//# sourceMappingURL=global-points-stats.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-points-stats.types.d.ts","sourceRoot":"","sources":["../../../src/read/global-points-stats/global-points-stats.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAE3D,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
package/dist/read/index.d.ts
CHANGED
|
@@ -4,13 +4,20 @@ import { DecibelConfig, DecibelReaderDeps } from "../constants";
|
|
|
4
4
|
import { AccountOverviewReader } from "./account-overview/account-overview.reader";
|
|
5
5
|
import { CandlesticksReader } from "./candlesticks/candlesticks.reader";
|
|
6
6
|
import { DelegationsReader } from "./delegations/delegations.reader";
|
|
7
|
+
import { GlobalPointsStatsReader } from "./global-points-stats/global-points-stats.reader";
|
|
7
8
|
import { LeaderboardReader } from "./leaderboard/leaderboard.reader";
|
|
8
9
|
import { MarketContextsReader } from "./market-contexts/market-contexts.reader";
|
|
9
10
|
import { MarketDepthReader } from "./market-depth/market-depth.reader";
|
|
10
11
|
import { MarketPricesReader } from "./market-prices/market-prices.reader";
|
|
11
12
|
import { MarketTradesReader } from "./market-trades/market-trades.reader";
|
|
12
13
|
import { MarketsReader } from "./markets/markets.reader";
|
|
14
|
+
import { PointsLeaderboardReader } from "./points-leaderboard/points-leaderboard.reader";
|
|
13
15
|
import { PortfolioChartReader } from "./portfolio-chart/portfolio-chart.reader";
|
|
16
|
+
import { ReferralsReader } from "./referrals/referrals.reader";
|
|
17
|
+
import { StreaksReader } from "./streaks/streaks.reader";
|
|
18
|
+
import { TierReader } from "./tier/tier.reader";
|
|
19
|
+
import { TradingAmpsReader } from "./trading-amps/trading-amps.reader";
|
|
20
|
+
import { TradingPointsReader } from "./trading-points/trading-points.reader";
|
|
14
21
|
import { UserActiveTwapsReader } from "./user-active-twaps/user-active-twaps.reader";
|
|
15
22
|
import { UserBulkOrdersReader } from "./user-bulk-orders/user-bulk-orders.reader";
|
|
16
23
|
import { UserFundHistoryReader } from "./user-fund-history/user-fund-history.reader";
|
|
@@ -23,6 +30,7 @@ import { UserSubaccountsReader } from "./user-subaccounts/user-subaccounts.reade
|
|
|
23
30
|
import { UserTradeHistoryReader } from "./user-trade-history/user-trade-history.reader";
|
|
24
31
|
import { UserTwapHistoryReader } from "./user-twap-history/user-twap-history.reader";
|
|
25
32
|
import { VaultsReader } from "./vaults/vaults.reader";
|
|
33
|
+
export * from "./action-utils";
|
|
26
34
|
export * from "./types";
|
|
27
35
|
interface Cache {
|
|
28
36
|
usdcDecimals?: number;
|
|
@@ -50,9 +58,16 @@ export declare class DecibelReadDex {
|
|
|
50
58
|
readonly userTwapHistory: UserTwapHistoryReader;
|
|
51
59
|
readonly portfolioChart: PortfolioChartReader;
|
|
52
60
|
readonly leaderboard: LeaderboardReader;
|
|
61
|
+
readonly pointsLeaderboard: PointsLeaderboardReader;
|
|
53
62
|
readonly vaults: VaultsReader;
|
|
54
63
|
readonly delegations: DelegationsReader;
|
|
55
64
|
readonly userNotifications: UserNotificationsReader;
|
|
65
|
+
readonly tradingPoints: TradingPointsReader;
|
|
66
|
+
readonly streaks: StreaksReader;
|
|
67
|
+
readonly tradingAmps: TradingAmpsReader;
|
|
68
|
+
readonly tier: TierReader;
|
|
69
|
+
readonly globalPointsStats: GlobalPointsStatsReader;
|
|
70
|
+
readonly referrals: ReferralsReader;
|
|
56
71
|
constructor(config: DecibelConfig, opts?: {
|
|
57
72
|
nodeApiKey?: string;
|
|
58
73
|
onWsError?: (error: ErrorEvent) => void;
|
package/dist/read/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/read/index.ts"],"names":[],"mappings":"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"}
|
package/dist/read/index.js
CHANGED
|
@@ -2,13 +2,20 @@ import { Aptos, AptosConfig, createObjectAddress } from "@aptos-labs/ts-sdk";
|
|
|
2
2
|
import { AccountOverviewReader } from "./account-overview/account-overview.reader";
|
|
3
3
|
import { CandlesticksReader } from "./candlesticks/candlesticks.reader";
|
|
4
4
|
import { DelegationsReader } from "./delegations/delegations.reader";
|
|
5
|
+
import { GlobalPointsStatsReader } from "./global-points-stats/global-points-stats.reader";
|
|
5
6
|
import { LeaderboardReader } from "./leaderboard/leaderboard.reader";
|
|
6
7
|
import { MarketContextsReader } from "./market-contexts/market-contexts.reader";
|
|
7
8
|
import { MarketDepthReader } from "./market-depth/market-depth.reader";
|
|
8
9
|
import { MarketPricesReader } from "./market-prices/market-prices.reader";
|
|
9
10
|
import { MarketTradesReader } from "./market-trades/market-trades.reader";
|
|
10
11
|
import { MarketsReader } from "./markets/markets.reader";
|
|
12
|
+
import { PointsLeaderboardReader } from "./points-leaderboard/points-leaderboard.reader";
|
|
11
13
|
import { PortfolioChartReader } from "./portfolio-chart/portfolio-chart.reader";
|
|
14
|
+
import { ReferralsReader } from "./referrals/referrals.reader";
|
|
15
|
+
import { StreaksReader } from "./streaks/streaks.reader";
|
|
16
|
+
import { TierReader } from "./tier/tier.reader";
|
|
17
|
+
import { TradingAmpsReader } from "./trading-amps/trading-amps.reader";
|
|
18
|
+
import { TradingPointsReader } from "./trading-points/trading-points.reader";
|
|
12
19
|
import { CrossedPosition } from "./types";
|
|
13
20
|
import { UserActiveTwapsReader } from "./user-active-twaps/user-active-twaps.reader";
|
|
14
21
|
import { UserBulkOrdersReader } from "./user-bulk-orders/user-bulk-orders.reader";
|
|
@@ -23,6 +30,7 @@ import { UserTradeHistoryReader } from "./user-trade-history/user-trade-history.
|
|
|
23
30
|
import { UserTwapHistoryReader } from "./user-twap-history/user-twap-history.reader";
|
|
24
31
|
import { VaultsReader } from "./vaults/vaults.reader";
|
|
25
32
|
import { DecibelWsSubscription } from "./ws-subscription";
|
|
33
|
+
export * from "./action-utils";
|
|
26
34
|
export * from "./types";
|
|
27
35
|
export class DecibelReadDex {
|
|
28
36
|
config;
|
|
@@ -47,21 +55,30 @@ export class DecibelReadDex {
|
|
|
47
55
|
userTwapHistory;
|
|
48
56
|
portfolioChart;
|
|
49
57
|
leaderboard;
|
|
58
|
+
pointsLeaderboard;
|
|
50
59
|
vaults;
|
|
51
60
|
delegations;
|
|
52
61
|
userNotifications;
|
|
62
|
+
tradingPoints;
|
|
63
|
+
streaks;
|
|
64
|
+
tradingAmps;
|
|
65
|
+
tier;
|
|
66
|
+
globalPointsStats;
|
|
67
|
+
referrals;
|
|
53
68
|
constructor(config, opts) {
|
|
54
69
|
this.config = config;
|
|
55
70
|
const aptosConfig = new AptosConfig({
|
|
56
71
|
network: config.network,
|
|
57
72
|
fullnode: config.fullnodeUrl,
|
|
58
|
-
clientConfig:
|
|
73
|
+
clientConfig: config.additionalHeaders
|
|
74
|
+
? { HEADERS: config.additionalHeaders }
|
|
75
|
+
: { API_KEY: opts?.nodeApiKey },
|
|
59
76
|
});
|
|
60
77
|
this.deps = {
|
|
61
78
|
aptos: new Aptos(aptosConfig),
|
|
62
79
|
ws: new DecibelWsSubscription(config, opts?.nodeApiKey, opts?.onWsError),
|
|
63
80
|
config: this.config,
|
|
64
|
-
apiKey: opts?.nodeApiKey,
|
|
81
|
+
apiKey: config.additionalHeaders ? undefined : opts?.nodeApiKey,
|
|
65
82
|
};
|
|
66
83
|
this.cache = {};
|
|
67
84
|
this.accountOverview = new AccountOverviewReader(this.deps);
|
|
@@ -83,9 +100,16 @@ export class DecibelReadDex {
|
|
|
83
100
|
this.candlesticks = new CandlesticksReader(this.deps);
|
|
84
101
|
this.portfolioChart = new PortfolioChartReader(this.deps);
|
|
85
102
|
this.leaderboard = new LeaderboardReader(this.deps);
|
|
103
|
+
this.pointsLeaderboard = new PointsLeaderboardReader(this.deps);
|
|
86
104
|
this.vaults = new VaultsReader(this.deps);
|
|
87
105
|
this.delegations = new DelegationsReader(this.deps);
|
|
88
106
|
this.userNotifications = new UserNotificationsReader(this.deps);
|
|
107
|
+
this.tradingPoints = new TradingPointsReader(this.deps);
|
|
108
|
+
this.streaks = new StreaksReader(this.deps);
|
|
109
|
+
this.tradingAmps = new TradingAmpsReader(this.deps);
|
|
110
|
+
this.tier = new TierReader(this.deps);
|
|
111
|
+
this.globalPointsStats = new GlobalPointsStatsReader(this.deps);
|
|
112
|
+
this.referrals = new ReferralsReader(this.deps);
|
|
89
113
|
}
|
|
90
114
|
async globalPerpEngineState() {
|
|
91
115
|
try {
|
|
@@ -218,7 +242,7 @@ export class DecibelReadDex {
|
|
|
218
242
|
async accountBalance(addr) {
|
|
219
243
|
const balance = await this.deps.aptos.view({
|
|
220
244
|
payload: {
|
|
221
|
-
function: `${this.config.deployment.package}::perp_engine::
|
|
245
|
+
function: `${this.config.deployment.package}::perp_engine::get_cross_total_collateral_value`,
|
|
222
246
|
typeArguments: [],
|
|
223
247
|
functionArguments: [addr],
|
|
224
248
|
},
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import { BaseReader } from "../base-reader";
|
|
2
|
-
import { MarketDepth, MarketDepthAggregationSize
|
|
2
|
+
import { MarketDepth, MarketDepthAggregationSize } from "./market-depth.types";
|
|
3
3
|
export declare class MarketDepthReader extends BaseReader {
|
|
4
|
-
/**
|
|
5
|
-
* Get the market depth data for a given market
|
|
6
|
-
* @param marketName The name of the market to get market depth for
|
|
7
|
-
* @returns The market depth data for the given market
|
|
8
|
-
*/
|
|
9
|
-
getByName({ marketName, limit, fetchOptions }: MarketDepthRequestArgs): Promise<{
|
|
10
|
-
market: string;
|
|
11
|
-
bids: {
|
|
12
|
-
price: number;
|
|
13
|
-
size: number;
|
|
14
|
-
}[];
|
|
15
|
-
asks: {
|
|
16
|
-
price: number;
|
|
17
|
-
size: number;
|
|
18
|
-
}[];
|
|
19
|
-
}>;
|
|
20
4
|
/**
|
|
21
5
|
* Subscribe to market depth updates for a given market ID
|
|
22
6
|
* @param marketName The name of the market to subscribe to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market-depth.reader.d.ts","sourceRoot":"","sources":["../../../src/read/market-depth/market-depth.reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"market-depth.reader.d.ts","sourceRoot":"","sources":["../../../src/read/market-depth/market-depth.reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAqB,MAAM,sBAAsB,CAAC;AAElG,qBAAa,iBAAkB,SAAQ,UAAU;IAmB/C;;;;;OAKG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,0BAA0B,EAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IAQrC,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,GAAE,0BAA8B;IAO3F,mBAAmB;CAGpB"}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
import { getMarketAddr } from "../../utils";
|
|
2
2
|
import { BaseReader } from "../base-reader";
|
|
3
|
-
import { MarketDepthSchema
|
|
3
|
+
import { MarketDepthSchema } from "./market-depth.types";
|
|
4
4
|
export class MarketDepthReader extends BaseReader {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return response.data;
|
|
23
|
-
}
|
|
5
|
+
// TODO: either reintroduce the /depth endpoint or fully delete this method
|
|
6
|
+
// async getByName({ marketName, limit, fetchOptions }: MarketDepthRequestArgs) {
|
|
7
|
+
// const marketAddr = getMarketAddr(marketName, this.deps.config.deployment.perpEngineGlobal);
|
|
8
|
+
// const queryParams = new URLSearchParams({ market: marketAddr.toString() });
|
|
9
|
+
// if (limit !== undefined) {
|
|
10
|
+
// queryParams.set("limit", limit.toString());
|
|
11
|
+
// }
|
|
12
|
+
//
|
|
13
|
+
// const response = await this.getRequest({
|
|
14
|
+
// schema: MarketDepthSchema,
|
|
15
|
+
// url: `${this.deps.config.tradingHttpUrl}/api/v1/depth`,
|
|
16
|
+
// queryParams,
|
|
17
|
+
// options: fetchOptions,
|
|
18
|
+
// });
|
|
19
|
+
//
|
|
20
|
+
// return response.data;
|
|
21
|
+
// }
|
|
24
22
|
/**
|
|
25
23
|
* Subscribe to market depth updates for a given market ID
|
|
26
24
|
* @param marketName The name of the market to subscribe to
|