@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,35 @@
|
|
|
1
|
+
import { DecibelConfig } from "../constants";
|
|
2
|
+
export interface GasPriceInfo {
|
|
3
|
+
gasEstimate: number;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
}
|
|
6
|
+
export interface GasPriceManagerOptions {
|
|
7
|
+
nodeApiKey?: string;
|
|
8
|
+
multiplier: number;
|
|
9
|
+
refreshIntervalMs: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class GasPriceManager {
|
|
12
|
+
private gasPrice;
|
|
13
|
+
private intervalId;
|
|
14
|
+
private readonly aptos;
|
|
15
|
+
private readonly refreshIntervalMs;
|
|
16
|
+
private isInitialized;
|
|
17
|
+
private readonly multiplier;
|
|
18
|
+
constructor(config: DecibelConfig, opts?: GasPriceManagerOptions);
|
|
19
|
+
getGasPrice(): number | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the gas price manager and start fetching gas prices
|
|
22
|
+
*/
|
|
23
|
+
initialize(): Promise<void>;
|
|
24
|
+
refresh(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Stop the gas price manager and clear the interval
|
|
27
|
+
*/
|
|
28
|
+
destroy(): void;
|
|
29
|
+
fetchGasPriceEstimation(): Promise<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Fetch gas price from the network
|
|
32
|
+
*/
|
|
33
|
+
fetchAndSetGasPrice(): Promise<number>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=gas-price-manager.d.ts.map
|
|
@@ -0,0 +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;IAYhE,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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GasPriceManager = void 0;
|
|
4
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
5
|
+
class GasPriceManager {
|
|
6
|
+
gasPrice = null;
|
|
7
|
+
intervalId = null;
|
|
8
|
+
aptos;
|
|
9
|
+
refreshIntervalMs;
|
|
10
|
+
isInitialized = false;
|
|
11
|
+
multiplier;
|
|
12
|
+
constructor(config, opts) {
|
|
13
|
+
this.aptos = new ts_sdk_1.Aptos(new ts_sdk_1.AptosConfig({
|
|
14
|
+
network: config.network,
|
|
15
|
+
fullnode: config.fullnodeUrl,
|
|
16
|
+
clientConfig: { API_KEY: opts?.nodeApiKey },
|
|
17
|
+
}));
|
|
18
|
+
this.refreshIntervalMs = opts?.refreshIntervalMs ?? 60_000; // default to 1 minute
|
|
19
|
+
this.multiplier = opts?.multiplier ?? 2; // default to 2x multilier to ensure we have enough gas for the transactipon
|
|
20
|
+
}
|
|
21
|
+
getGasPrice() {
|
|
22
|
+
const estimatedGasPrice = this.gasPrice?.gasEstimate;
|
|
23
|
+
if (!estimatedGasPrice) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
return estimatedGasPrice;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Initialize the gas price manager and start fetching gas prices
|
|
30
|
+
*/
|
|
31
|
+
async initialize() {
|
|
32
|
+
try {
|
|
33
|
+
if (this.isInitialized) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// Fetch initial gas price
|
|
37
|
+
await this.fetchAndSetGasPrice();
|
|
38
|
+
// Set up interval to refresh gas price
|
|
39
|
+
this.intervalId = setInterval(async () => {
|
|
40
|
+
try {
|
|
41
|
+
await this.fetchAndSetGasPrice();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.warn("Failed to fetch gas price:", error);
|
|
45
|
+
}
|
|
46
|
+
}, this.refreshIntervalMs);
|
|
47
|
+
this.isInitialized = true;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error("Failed to initialize gas price manager:", error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
refresh() {
|
|
54
|
+
void this.fetchAndSetGasPrice();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Stop the gas price manager and clear the interval
|
|
58
|
+
*/
|
|
59
|
+
destroy() {
|
|
60
|
+
if (this.intervalId) {
|
|
61
|
+
clearInterval(this.intervalId);
|
|
62
|
+
this.intervalId = null;
|
|
63
|
+
}
|
|
64
|
+
this.isInitialized = false;
|
|
65
|
+
this.gasPrice = null; // Clear cached data
|
|
66
|
+
}
|
|
67
|
+
async fetchGasPriceEstimation() {
|
|
68
|
+
return this.aptos.getGasPriceEstimation().then((gasEstimation) => {
|
|
69
|
+
return gasEstimation.gas_estimate * this.multiplier; // Multiplier is applied here to ensure we have enough gas for the transaction
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Fetch gas price from the network
|
|
74
|
+
*/
|
|
75
|
+
async fetchAndSetGasPrice() {
|
|
76
|
+
try {
|
|
77
|
+
const gasEstimate = await this.fetchGasPriceEstimation();
|
|
78
|
+
if (!gasEstimate) {
|
|
79
|
+
throw new Error("Gas estimation returned no gas estimate");
|
|
80
|
+
}
|
|
81
|
+
this.gasPrice = {
|
|
82
|
+
gasEstimate,
|
|
83
|
+
timestamp: Date.now(),
|
|
84
|
+
};
|
|
85
|
+
return gasEstimate;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error("Failed to fetch gas price:", error);
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.GasPriceManager = GasPriceManager;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Aptos } from "@aptos-labs/ts-sdk";
|
|
2
|
+
export interface GasPriceInfo {
|
|
3
|
+
gasEstimate: number;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class GasPriceManager {
|
|
7
|
+
private gasPrice;
|
|
8
|
+
private intervalId;
|
|
9
|
+
private readonly aptos;
|
|
10
|
+
private readonly refreshIntervalMs;
|
|
11
|
+
private isInitialized;
|
|
12
|
+
constructor(aptos: Aptos, refreshIntervalMs?: number);
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the gas price manager and start fetching gas prices
|
|
15
|
+
*/
|
|
16
|
+
initialize(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Get the current cached gas price info with timestamp
|
|
19
|
+
*/
|
|
20
|
+
getGasPrice(): Promise<number>;
|
|
21
|
+
refresh(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Stop the gas price manager and clear the interval
|
|
24
|
+
*/
|
|
25
|
+
destroy(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Fetch gas price from the network
|
|
28
|
+
*/
|
|
29
|
+
private fetchGasPrice;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=gas-price-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gas-price-manager.d.ts","sourceRoot":"","sources":["../src/gas-price-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;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,CAAiB;IACnD,OAAO,CAAC,aAAa,CAAS;gBAElB,KAAK,EAAE,KAAK,EAAE,iBAAiB,SAAQ;IAKnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAc9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,OAAO,IAAI,IAAI;IASf;;OAEG;YACW,aAAa;CAc5B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GasPriceManager = void 0;
|
|
4
|
+
class GasPriceManager {
|
|
5
|
+
gasPrice = null;
|
|
6
|
+
intervalId = null;
|
|
7
|
+
aptos;
|
|
8
|
+
refreshIntervalMs = 60000;
|
|
9
|
+
isInitialized = false;
|
|
10
|
+
constructor(aptos, refreshIntervalMs = 60000) {
|
|
11
|
+
this.aptos = aptos;
|
|
12
|
+
this.refreshIntervalMs = refreshIntervalMs;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Initialize the gas price manager and start fetching gas prices
|
|
16
|
+
*/
|
|
17
|
+
async initialize() {
|
|
18
|
+
if (this.isInitialized) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Fetch initial gas price
|
|
22
|
+
await this.fetchGasPrice();
|
|
23
|
+
// Set up interval to refresh gas price
|
|
24
|
+
this.intervalId = setInterval(async () => {
|
|
25
|
+
try {
|
|
26
|
+
await this.fetchGasPrice();
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.warn("Failed to fetch gas price:", error);
|
|
30
|
+
}
|
|
31
|
+
}, this.refreshIntervalMs);
|
|
32
|
+
this.isInitialized = true;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the current cached gas price info with timestamp
|
|
36
|
+
*/
|
|
37
|
+
async getGasPrice() {
|
|
38
|
+
if (this.gasPrice) {
|
|
39
|
+
// If the gas price is too stale, fetch a new one
|
|
40
|
+
if (Date.now() - this.gasPrice.timestamp > this.refreshIntervalMs * 2) {
|
|
41
|
+
return await this.fetchGasPrice();
|
|
42
|
+
}
|
|
43
|
+
// Return the cached gas price
|
|
44
|
+
return this.gasPrice.gasEstimate;
|
|
45
|
+
}
|
|
46
|
+
return await this.fetchGasPrice();
|
|
47
|
+
}
|
|
48
|
+
async refresh() {
|
|
49
|
+
await this.fetchGasPrice().then((gasEstimate) => {
|
|
50
|
+
this.gasPrice = {
|
|
51
|
+
gasEstimate,
|
|
52
|
+
timestamp: Date.now(),
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Stop the gas price manager and clear the interval
|
|
58
|
+
*/
|
|
59
|
+
destroy() {
|
|
60
|
+
if (this.intervalId) {
|
|
61
|
+
clearInterval(this.intervalId);
|
|
62
|
+
this.intervalId = null;
|
|
63
|
+
}
|
|
64
|
+
this.isInitialized = false;
|
|
65
|
+
this.gasPrice = null; // Clear cached data
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Fetch gas price from the network
|
|
69
|
+
*/
|
|
70
|
+
async fetchGasPrice() {
|
|
71
|
+
try {
|
|
72
|
+
const gasEstimation = await this.aptos.getGasPriceEstimation();
|
|
73
|
+
if (!gasEstimation.gas_estimate) {
|
|
74
|
+
throw new Error("Gas estimation returned no gas estimate");
|
|
75
|
+
}
|
|
76
|
+
return gasEstimation.gas_estimate;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error("Failed to fetch gas price:", error);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.GasPriceManager = GasPriceManager;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./admin";
|
|
2
|
+
export * from "./constants";
|
|
3
|
+
export * from "./fee-pay";
|
|
4
|
+
export * from "./gas/gas-price-manager";
|
|
5
|
+
export * from "./order-event.types";
|
|
6
|
+
export * from "./order-status";
|
|
7
|
+
export * from "./read/index";
|
|
8
|
+
export * from "./subaccount-types";
|
|
9
|
+
export * from "./utils";
|
|
10
|
+
export * from "./write";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./admin"), exports);
|
|
18
|
+
__exportStar(require("./constants"), exports);
|
|
19
|
+
__exportStar(require("./fee-pay"), exports);
|
|
20
|
+
__exportStar(require("./gas/gas-price-manager"), exports);
|
|
21
|
+
__exportStar(require("./order-event.types"), exports);
|
|
22
|
+
__exportStar(require("./order-status"), exports);
|
|
23
|
+
__exportStar(require("./read/index"), exports);
|
|
24
|
+
__exportStar(require("./subaccount-types"), exports);
|
|
25
|
+
__exportStar(require("./utils"), exports);
|
|
26
|
+
__exportStar(require("./write"), exports);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface OrderEventClientOrderId {
|
|
2
|
+
vec: unknown[];
|
|
3
|
+
}
|
|
4
|
+
export interface OrderEventStatus {
|
|
5
|
+
__variant__: string;
|
|
6
|
+
}
|
|
7
|
+
export interface OrderEventTimeInForce {
|
|
8
|
+
__variant__: string;
|
|
9
|
+
}
|
|
10
|
+
export interface OrderEventTriggerCondition {
|
|
11
|
+
vec: unknown[];
|
|
12
|
+
}
|
|
13
|
+
export interface OrderEventOrderId {
|
|
14
|
+
order_id: string;
|
|
15
|
+
}
|
|
16
|
+
export interface OrderEvent {
|
|
17
|
+
client_order_id: OrderEventClientOrderId;
|
|
18
|
+
details: string;
|
|
19
|
+
is_bid: boolean;
|
|
20
|
+
is_taker: boolean;
|
|
21
|
+
market: string;
|
|
22
|
+
metadata_bytes: string;
|
|
23
|
+
order_id: string;
|
|
24
|
+
orig_size: string;
|
|
25
|
+
parent: string;
|
|
26
|
+
price: string;
|
|
27
|
+
remaining_size: string;
|
|
28
|
+
size_delta: string;
|
|
29
|
+
status: OrderEventStatus;
|
|
30
|
+
time_in_force: OrderEventTimeInForce;
|
|
31
|
+
trigger_condition: OrderEventTriggerCondition;
|
|
32
|
+
user: string;
|
|
33
|
+
}
|
|
34
|
+
export interface TwapEvent {
|
|
35
|
+
account: string;
|
|
36
|
+
duration_s: string;
|
|
37
|
+
frequency_s: string;
|
|
38
|
+
is_buy: boolean;
|
|
39
|
+
is_reduce_only: boolean;
|
|
40
|
+
market: string;
|
|
41
|
+
order_id: OrderEventOrderId;
|
|
42
|
+
orig_size: string;
|
|
43
|
+
remain_size: string;
|
|
44
|
+
start_time_s: string;
|
|
45
|
+
status: OrderEventStatus;
|
|
46
|
+
}
|
|
47
|
+
export type PlaceOrderResult = {
|
|
48
|
+
success: true;
|
|
49
|
+
orderId: string | undefined;
|
|
50
|
+
transactionHash: string;
|
|
51
|
+
} | {
|
|
52
|
+
success: false;
|
|
53
|
+
error: string;
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=order-event.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-event.types.d.ts","sourceRoot":"","sources":["../src/order-event.types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,uBAAuB,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,EAAE,qBAAqB,CAAC;IACrC,iBAAiB,EAAE,0BAA0B,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
import { DecibelConfig } from "./constants";
|
|
3
|
+
export declare const OrderStatusSchema: z.ZodObject<{
|
|
4
|
+
parent: z.ZodString;
|
|
5
|
+
market: z.ZodString;
|
|
6
|
+
order_id: z.ZodString;
|
|
7
|
+
status: z.ZodString;
|
|
8
|
+
orig_size: z.ZodNumber;
|
|
9
|
+
remaining_size: z.ZodNumber;
|
|
10
|
+
size_delta: z.ZodNumber;
|
|
11
|
+
price: z.ZodNumber;
|
|
12
|
+
is_buy: z.ZodBoolean;
|
|
13
|
+
details: z.ZodString;
|
|
14
|
+
transaction_version: z.ZodNumber;
|
|
15
|
+
unix_ms: z.ZodNumber;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export type OrderStatus = z.infer<typeof OrderStatusSchema>;
|
|
18
|
+
export type OrderStatusType = "Acknowledged" | "Filled" | "Cancelled" | "Rejected" | "Unknown";
|
|
19
|
+
export declare class OrderStatusClient {
|
|
20
|
+
private config;
|
|
21
|
+
constructor(config: DecibelConfig);
|
|
22
|
+
/**
|
|
23
|
+
* Get order status by order ID and market address using REST API
|
|
24
|
+
*/
|
|
25
|
+
getOrderStatus(orderId: string, marketAddress: string, userAddress: string): Promise<OrderStatus | null>;
|
|
26
|
+
/**
|
|
27
|
+
* Parse order status string to enum-like type
|
|
28
|
+
*/
|
|
29
|
+
parseOrderStatusType(status: string | undefined | null): OrderStatusType;
|
|
30
|
+
/**
|
|
31
|
+
* Check if order status represents success
|
|
32
|
+
*/
|
|
33
|
+
isSuccessStatus(status: string | undefined | null): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Check if order status represents failure
|
|
36
|
+
*/
|
|
37
|
+
isFailureStatus(status: string | undefined | null): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Check if order status is final (success or failure)
|
|
40
|
+
*/
|
|
41
|
+
isFinalStatus(status: string | undefined | null): boolean;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=order-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-status.d.ts","sourceRoot":"","sources":["../src/order-status.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;iBAa5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/F,qBAAa,iBAAiB;IAChB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoB9B;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,eAAe;IAUxE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO;IAI3D;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO;IAK3D;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO;CAG1D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OrderStatusClient = exports.OrderStatusSchema = void 0;
|
|
7
|
+
const v4_1 = __importDefault(require("zod/v4"));
|
|
8
|
+
// Order status response schema
|
|
9
|
+
exports.OrderStatusSchema = v4_1.default.object({
|
|
10
|
+
parent: v4_1.default.string(),
|
|
11
|
+
market: v4_1.default.string(),
|
|
12
|
+
order_id: v4_1.default.string(),
|
|
13
|
+
status: v4_1.default.string(),
|
|
14
|
+
orig_size: v4_1.default.number(),
|
|
15
|
+
remaining_size: v4_1.default.number(),
|
|
16
|
+
size_delta: v4_1.default.number(),
|
|
17
|
+
price: v4_1.default.number(),
|
|
18
|
+
is_buy: v4_1.default.boolean(),
|
|
19
|
+
details: v4_1.default.string(),
|
|
20
|
+
transaction_version: v4_1.default.number(),
|
|
21
|
+
unix_ms: v4_1.default.number(),
|
|
22
|
+
});
|
|
23
|
+
class OrderStatusClient {
|
|
24
|
+
config;
|
|
25
|
+
constructor(config) {
|
|
26
|
+
this.config = config;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get order status by order ID and market address using REST API
|
|
30
|
+
*/
|
|
31
|
+
async getOrderStatus(orderId, marketAddress, userAddress) {
|
|
32
|
+
try {
|
|
33
|
+
const url = `${this.config.tradingHttpUrl}/api/v1/orders?order_id=${orderId}&market_address=${marketAddress}&user_address=${userAddress}`;
|
|
34
|
+
const response = await fetch(url);
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
if (response.status === 404) {
|
|
37
|
+
return null; // Order not found yet
|
|
38
|
+
}
|
|
39
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
40
|
+
}
|
|
41
|
+
const data = await response.json();
|
|
42
|
+
return exports.OrderStatusSchema.parse(data);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error("Error fetching order status:", error);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parse order status string to enum-like type
|
|
51
|
+
*/
|
|
52
|
+
parseOrderStatusType(status) {
|
|
53
|
+
if (!status)
|
|
54
|
+
return "Unknown";
|
|
55
|
+
const upperStatus = status.toLowerCase();
|
|
56
|
+
if (upperStatus.includes("acknowledged"))
|
|
57
|
+
return "Acknowledged";
|
|
58
|
+
if (upperStatus.includes("filled"))
|
|
59
|
+
return "Filled";
|
|
60
|
+
if (upperStatus.includes("cancelled"))
|
|
61
|
+
return "Cancelled";
|
|
62
|
+
if (upperStatus.includes("rejected"))
|
|
63
|
+
return "Rejected";
|
|
64
|
+
return "Unknown";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if order status represents success
|
|
68
|
+
*/
|
|
69
|
+
isSuccessStatus(status) {
|
|
70
|
+
return this.parseOrderStatusType(status) === "Filled";
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if order status represents failure
|
|
74
|
+
*/
|
|
75
|
+
isFailureStatus(status) {
|
|
76
|
+
const statusType = this.parseOrderStatusType(status);
|
|
77
|
+
return statusType === "Cancelled" || statusType === "Rejected";
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if order status is final (success or failure)
|
|
81
|
+
*/
|
|
82
|
+
isFinalStatus(status) {
|
|
83
|
+
return this.isSuccessStatus(status) || this.isFailureStatus(status);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.OrderStatusClient = OrderStatusClient;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseReader } from "../base-reader";
|
|
2
|
+
import { AccountOverviewWsMessage, VolumeWindow } from "./account-overview.types";
|
|
3
|
+
export declare class AccountOverviewReader extends BaseReader {
|
|
4
|
+
/**
|
|
5
|
+
* Get the account overview for a given user
|
|
6
|
+
* @param subAddr The subaccount address to get the account overview for
|
|
7
|
+
* @returns The account overview for the given subaccount address
|
|
8
|
+
*/
|
|
9
|
+
getByAddr(subAddr: string, volumeWindow?: VolumeWindow): Promise<{
|
|
10
|
+
perp_equity_balance: number;
|
|
11
|
+
unrealized_pnl: number;
|
|
12
|
+
unrealized_funding_cost: number;
|
|
13
|
+
cross_margin_ratio: number;
|
|
14
|
+
maintenance_margin: number;
|
|
15
|
+
cross_account_leverage_ratio: number | null;
|
|
16
|
+
volume: number | null;
|
|
17
|
+
all_time_return: number | null;
|
|
18
|
+
pnl_90d: number | null;
|
|
19
|
+
sharpe_ratio: number | null;
|
|
20
|
+
max_drawdown: number | null;
|
|
21
|
+
weekly_win_rate_12w: number | null;
|
|
22
|
+
average_cash_position: number | null;
|
|
23
|
+
average_leverage: number | null;
|
|
24
|
+
cross_account_position: number;
|
|
25
|
+
total_margin: number;
|
|
26
|
+
usdc_cross_withdrawable_balance: number;
|
|
27
|
+
usdc_isolated_withdrawable_balance: number;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Subscribe to account overview
|
|
31
|
+
* @param subAddr The subaccount address of the user to subscribe to
|
|
32
|
+
* @param onData Callback function for received account overview data
|
|
33
|
+
* @returns A function to unsubscribe from the account overview updates
|
|
34
|
+
*/
|
|
35
|
+
subscribeByAddr(subAddr: string, onData: (data: AccountOverviewWsMessage) => void): () => void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=account-overview.reader.d.ts.map
|
|
@@ -0,0 +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,EAEL,wBAAwB,EAExB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qBAAsB,SAAQ,UAAU;IACnD;;;;OAIG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;IAgB5D;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI;CAKlF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccountOverviewReader = void 0;
|
|
4
|
+
const base_reader_1 = require("../base-reader");
|
|
5
|
+
const account_overview_types_1 = require("./account-overview.types");
|
|
6
|
+
class AccountOverviewReader extends base_reader_1.BaseReader {
|
|
7
|
+
/**
|
|
8
|
+
* Get the account overview for a given user
|
|
9
|
+
* @param subAddr The subaccount address to get the account overview for
|
|
10
|
+
* @returns The account overview for the given subaccount address
|
|
11
|
+
*/
|
|
12
|
+
async getByAddr(subAddr, volumeWindow) {
|
|
13
|
+
const queryParams = new URLSearchParams({ user: subAddr });
|
|
14
|
+
if (volumeWindow) {
|
|
15
|
+
queryParams.set("volume_window", volumeWindow);
|
|
16
|
+
}
|
|
17
|
+
const response = await this.getRequest({
|
|
18
|
+
schema: account_overview_types_1.AccountOverviewSchema,
|
|
19
|
+
url: `${this.deps.config.tradingHttpUrl}/api/v1/account_overviews`,
|
|
20
|
+
queryParams,
|
|
21
|
+
});
|
|
22
|
+
return response.data;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Subscribe to account overview
|
|
26
|
+
* @param subAddr The subaccount address of the user to subscribe to
|
|
27
|
+
* @param onData Callback function for received account overview data
|
|
28
|
+
* @returns A function to unsubscribe from the account overview updates
|
|
29
|
+
*/
|
|
30
|
+
subscribeByAddr(subAddr, onData) {
|
|
31
|
+
const topic = `account_overview:${subAddr}`;
|
|
32
|
+
return this.deps.ws.subscribe(topic, account_overview_types_1.AccountOverviewWsMessageSchema, onData);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.AccountOverviewReader = AccountOverviewReader;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import z from "zod/v4";
|
|
2
|
+
export declare const VolumeWindow: {
|
|
3
|
+
readonly SevenDays: "7d";
|
|
4
|
+
readonly FourteenDays: "14d";
|
|
5
|
+
readonly ThirtyDays: "30d";
|
|
6
|
+
readonly NinetyDays: "90d";
|
|
7
|
+
};
|
|
8
|
+
export type VolumeWindow = (typeof VolumeWindow)[keyof typeof VolumeWindow];
|
|
9
|
+
export declare const AccountOverviewSchema: z.ZodObject<{
|
|
10
|
+
perp_equity_balance: z.ZodNumber;
|
|
11
|
+
unrealized_pnl: z.ZodNumber;
|
|
12
|
+
unrealized_funding_cost: z.ZodNumber;
|
|
13
|
+
cross_margin_ratio: z.ZodNumber;
|
|
14
|
+
maintenance_margin: z.ZodNumber;
|
|
15
|
+
cross_account_leverage_ratio: z.ZodNullable<z.ZodNumber>;
|
|
16
|
+
volume: z.ZodNullable<z.ZodNumber>;
|
|
17
|
+
all_time_return: z.ZodNullable<z.ZodNumber>;
|
|
18
|
+
pnl_90d: z.ZodNullable<z.ZodNumber>;
|
|
19
|
+
sharpe_ratio: z.ZodNullable<z.ZodNumber>;
|
|
20
|
+
max_drawdown: z.ZodNullable<z.ZodNumber>;
|
|
21
|
+
weekly_win_rate_12w: z.ZodNullable<z.ZodNumber>;
|
|
22
|
+
average_cash_position: z.ZodNullable<z.ZodNumber>;
|
|
23
|
+
average_leverage: z.ZodNullable<z.ZodNumber>;
|
|
24
|
+
cross_account_position: z.ZodNumber;
|
|
25
|
+
total_margin: z.ZodNumber;
|
|
26
|
+
usdc_cross_withdrawable_balance: z.ZodNumber;
|
|
27
|
+
usdc_isolated_withdrawable_balance: z.ZodNumber;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export declare const AccountOverviewWsMessageSchema: z.ZodObject<{
|
|
30
|
+
account_overview: z.ZodObject<{
|
|
31
|
+
perp_equity_balance: z.ZodNumber;
|
|
32
|
+
unrealized_pnl: z.ZodNumber;
|
|
33
|
+
unrealized_funding_cost: z.ZodNumber;
|
|
34
|
+
cross_margin_ratio: z.ZodNumber;
|
|
35
|
+
maintenance_margin: z.ZodNumber;
|
|
36
|
+
cross_account_leverage_ratio: z.ZodNullable<z.ZodNumber>;
|
|
37
|
+
all_time_return: z.ZodNullable<z.ZodNumber>;
|
|
38
|
+
pnl_90d: z.ZodNullable<z.ZodNumber>;
|
|
39
|
+
sharpe_ratio: z.ZodNullable<z.ZodNumber>;
|
|
40
|
+
max_drawdown: z.ZodNullable<z.ZodNumber>;
|
|
41
|
+
weekly_win_rate_12w: z.ZodNullable<z.ZodNumber>;
|
|
42
|
+
average_cash_position: z.ZodNullable<z.ZodNumber>;
|
|
43
|
+
average_leverage: z.ZodNullable<z.ZodNumber>;
|
|
44
|
+
cross_account_position: z.ZodNumber;
|
|
45
|
+
total_margin: z.ZodNumber;
|
|
46
|
+
usdc_cross_withdrawable_balance: z.ZodNumber;
|
|
47
|
+
usdc_isolated_withdrawable_balance: z.ZodNumber;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
export type AccountOverview = z.infer<typeof AccountOverviewSchema>;
|
|
51
|
+
export type AccountOverviewWsMessage = z.infer<typeof AccountOverviewWsMessageSchema>;
|
|
52
|
+
//# sourceMappingURL=account-overview.types.d.ts.map
|
|
@@ -0,0 +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,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;iBAmBhC,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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
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 = {
|
|
9
|
+
SevenDays: "7d",
|
|
10
|
+
FourteenDays: "14d",
|
|
11
|
+
ThirtyDays: "30d",
|
|
12
|
+
NinetyDays: "90d",
|
|
13
|
+
};
|
|
14
|
+
exports.AccountOverviewSchema = v4_1.default.object({
|
|
15
|
+
perp_equity_balance: v4_1.default.number(),
|
|
16
|
+
unrealized_pnl: v4_1.default.number(),
|
|
17
|
+
unrealized_funding_cost: v4_1.default.number(),
|
|
18
|
+
cross_margin_ratio: v4_1.default.number(),
|
|
19
|
+
maintenance_margin: v4_1.default.number(),
|
|
20
|
+
cross_account_leverage_ratio: v4_1.default.number().nullable(),
|
|
21
|
+
volume: v4_1.default.number().nullable(),
|
|
22
|
+
all_time_return: v4_1.default.number().nullable(),
|
|
23
|
+
pnl_90d: v4_1.default.number().nullable(),
|
|
24
|
+
sharpe_ratio: v4_1.default.number().nullable(),
|
|
25
|
+
max_drawdown: v4_1.default.number().nullable(),
|
|
26
|
+
weekly_win_rate_12w: v4_1.default.number().nullable(),
|
|
27
|
+
average_cash_position: v4_1.default.number().nullable(),
|
|
28
|
+
average_leverage: v4_1.default.number().nullable(),
|
|
29
|
+
cross_account_position: v4_1.default.number(),
|
|
30
|
+
total_margin: v4_1.default.number(),
|
|
31
|
+
usdc_cross_withdrawable_balance: v4_1.default.number(),
|
|
32
|
+
usdc_isolated_withdrawable_balance: v4_1.default.number(),
|
|
33
|
+
});
|
|
34
|
+
exports.AccountOverviewWsMessageSchema = v4_1.default.object({
|
|
35
|
+
account_overview: exports.AccountOverviewSchema.omit({ volume: true }),
|
|
36
|
+
});
|