@decibeltrade/sdk 0.2.0 → 0.2.2

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.
Files changed (193) hide show
  1. package/.env +2 -0
  2. package/.turbo/turbo-build.log +4 -5
  3. package/dist/abi/generate-abis.d.ts +1 -0
  4. package/dist/abi/generate-abis.d.ts.map +1 -0
  5. package/dist/abi/generate-abis.js +44 -9
  6. package/dist/abi/json/testnet.json +166 -165
  7. package/dist/abi/types.d.ts +1 -0
  8. package/dist/abi/types.d.ts.map +1 -0
  9. package/dist/abi/types.js +2 -1
  10. package/dist/admin.d.ts +1 -0
  11. package/dist/admin.d.ts.map +1 -0
  12. package/dist/admin.js +15 -10
  13. package/dist/base.d.ts +1 -0
  14. package/dist/base.d.ts.map +1 -0
  15. package/dist/base.js +26 -19
  16. package/dist/constants.d.ts +5 -2
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +46 -37
  19. package/dist/fee-pay.d.ts +1 -0
  20. package/dist/fee-pay.d.ts.map +1 -0
  21. package/dist/fee-pay.js +4 -1
  22. package/dist/gas/gas-price-manager.d.ts +1 -0
  23. package/dist/gas/gas-price-manager.d.ts.map +1 -0
  24. package/dist/gas/gas-price-manager.js +7 -3
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +26 -10
  28. package/dist/order-event.types.d.ts +1 -0
  29. package/dist/order-event.types.d.ts.map +1 -0
  30. package/dist/order-event.types.js +2 -1
  31. package/dist/order-status.d.ts +1 -0
  32. package/dist/order-status.d.ts.map +1 -0
  33. package/dist/order-status.js +23 -16
  34. package/dist/read/account-overview/account-overview.reader.d.ts +1 -0
  35. package/dist/read/account-overview/account-overview.reader.d.ts.map +1 -0
  36. package/dist/read/account-overview/account-overview.reader.js +9 -5
  37. package/dist/read/account-overview/account-overview.types.d.ts +1 -0
  38. package/dist/read/account-overview/account-overview.types.d.ts.map +1 -0
  39. package/dist/read/account-overview/account-overview.types.js +29 -23
  40. package/dist/read/base-reader.d.ts +1 -0
  41. package/dist/read/base-reader.d.ts.map +1 -0
  42. package/dist/read/base-reader.js +9 -5
  43. package/dist/read/candlesticks/candlesticks.reader.d.ts +1 -0
  44. package/dist/read/candlesticks/candlesticks.reader.d.ts.map +1 -0
  45. package/dist/read/candlesticks/candlesticks.reader.js +12 -8
  46. package/dist/read/candlesticks/candlesticks.types.d.ts +1 -0
  47. package/dist/read/candlesticks/candlesticks.types.d.ts.map +1 -0
  48. package/dist/read/candlesticks/candlesticks.types.js +20 -14
  49. package/dist/read/delegations/delegations.reader.d.ts +1 -0
  50. package/dist/read/delegations/delegations.reader.d.ts.map +1 -0
  51. package/dist/read/delegations/delegations.reader.js +8 -4
  52. package/dist/read/delegations/delegations.types.d.ts +1 -0
  53. package/dist/read/delegations/delegations.types.d.ts.map +1 -0
  54. package/dist/read/delegations/delegations.types.js +12 -6
  55. package/dist/read/index.d.ts +1 -0
  56. package/dist/read/index.d.ts.map +1 -0
  57. package/dist/read/index.js +68 -50
  58. package/dist/read/leaderboard/leaderboard.reader.d.ts +1 -0
  59. package/dist/read/leaderboard/leaderboard.reader.d.ts.map +1 -0
  60. package/dist/read/leaderboard/leaderboard.reader.js +10 -6
  61. package/dist/read/leaderboard/leaderboard.types.d.ts +1 -0
  62. package/dist/read/leaderboard/leaderboard.types.d.ts.map +1 -0
  63. package/dist/read/leaderboard/leaderboard.types.js +13 -10
  64. package/dist/read/market-contexts/market-contexts.reader.d.ts +1 -1
  65. package/dist/read/market-contexts/market-contexts.reader.d.ts.map +1 -0
  66. package/dist/read/market-contexts/market-contexts.reader.js +8 -4
  67. package/dist/read/market-contexts/market-contexts.types.d.ts +1 -2
  68. package/dist/read/market-contexts/market-contexts.types.d.ts.map +1 -0
  69. package/dist/read/market-contexts/market-contexts.types.js +17 -12
  70. package/dist/read/market-depth/market-depth.reader.d.ts +1 -0
  71. package/dist/read/market-depth/market-depth.reader.d.ts.map +1 -0
  72. package/dist/read/market-depth/market-depth.reader.js +13 -9
  73. package/dist/read/market-depth/market-depth.types.d.ts +1 -0
  74. package/dist/read/market-depth/market-depth.types.d.ts.map +1 -0
  75. package/dist/read/market-depth/market-depth.types.js +14 -8
  76. package/dist/read/market-prices/market-prices.reader.d.ts +8 -1
  77. package/dist/read/market-prices/market-prices.reader.d.ts.map +1 -0
  78. package/dist/read/market-prices/market-prices.reader.js +23 -10
  79. package/dist/read/market-prices/market-prices.types.d.ts +14 -0
  80. package/dist/read/market-prices/market-prices.types.d.ts.map +1 -0
  81. package/dist/read/market-prices/market-prices.types.js +25 -21
  82. package/dist/read/market-trades/market-trades.reader.d.ts +1 -0
  83. package/dist/read/market-trades/market-trades.reader.d.ts.map +1 -0
  84. package/dist/read/market-trades/market-trades.reader.js +12 -8
  85. package/dist/read/market-trades/market-trades.types.d.ts +1 -0
  86. package/dist/read/market-trades/market-trades.types.d.ts.map +1 -0
  87. package/dist/read/market-trades/market-trades.types.js +21 -18
  88. package/dist/read/markets/markets.reader.d.ts +1 -0
  89. package/dist/read/markets/markets.reader.d.ts.map +1 -0
  90. package/dist/read/markets/markets.reader.js +11 -7
  91. package/dist/read/markets/markets.types.d.ts +1 -0
  92. package/dist/read/markets/markets.types.d.ts.map +1 -0
  93. package/dist/read/markets/markets.types.js +35 -32
  94. package/dist/read/pagination.types.d.ts +1 -0
  95. package/dist/read/pagination.types.d.ts.map +1 -0
  96. package/dist/read/pagination.types.js +11 -4
  97. package/dist/read/portfolio-chart/portfolio-chart.reader.d.ts +1 -0
  98. package/dist/read/portfolio-chart/portfolio-chart.reader.d.ts.map +1 -0
  99. package/dist/read/portfolio-chart/portfolio-chart.reader.js +8 -4
  100. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts +1 -0
  101. package/dist/read/portfolio-chart/portfolio-chart.types.d.ts.map +1 -0
  102. package/dist/read/portfolio-chart/portfolio-chart.types.js +11 -5
  103. package/dist/read/types.d.ts +1 -0
  104. package/dist/read/types.d.ts.map +1 -0
  105. package/dist/read/types.js +75 -58
  106. package/dist/read/user-active-twaps/user-active-twaps.reader.d.ts +1 -0
  107. package/dist/read/user-active-twaps/user-active-twaps.reader.d.ts.map +1 -0
  108. package/dist/read/user-active-twaps/user-active-twaps.reader.js +9 -5
  109. package/dist/read/user-active-twaps/user-active-twaps.types.d.ts +1 -0
  110. package/dist/read/user-active-twaps/user-active-twaps.types.d.ts.map +1 -0
  111. package/dist/read/user-active-twaps/user-active-twaps.types.js +24 -18
  112. package/dist/read/user-bulk-orders/user-bulk-orders.reader.d.ts +1 -0
  113. package/dist/read/user-bulk-orders/user-bulk-orders.reader.d.ts.map +1 -0
  114. package/dist/read/user-bulk-orders/user-bulk-orders.reader.js +9 -5
  115. package/dist/read/user-bulk-orders/user-bulk-orders.types.d.ts +1 -0
  116. package/dist/read/user-bulk-orders/user-bulk-orders.types.d.ts.map +1 -0
  117. package/dist/read/user-bulk-orders/user-bulk-orders.types.js +22 -16
  118. package/dist/read/user-funding-history/user-funding-history.reader.d.ts +1 -0
  119. package/dist/read/user-funding-history/user-funding-history.reader.d.ts.map +1 -0
  120. package/dist/read/user-funding-history/user-funding-history.reader.js +9 -5
  121. package/dist/read/user-funding-history/user-funding-history.types.d.ts +1 -0
  122. package/dist/read/user-funding-history/user-funding-history.types.d.ts.map +1 -0
  123. package/dist/read/user-funding-history/user-funding-history.types.js +19 -13
  124. package/dist/read/user-notifications/user-notifications.reader.d.ts +1 -0
  125. package/dist/read/user-notifications/user-notifications.reader.d.ts.map +1 -0
  126. package/dist/read/user-notifications/user-notifications.reader.js +8 -4
  127. package/dist/read/user-notifications/user-notifications.types.d.ts +1 -0
  128. package/dist/read/user-notifications/user-notifications.types.d.ts.map +1 -0
  129. package/dist/read/user-notifications/user-notifications.types.js +25 -19
  130. package/dist/read/user-open-orders/user-open-orders.reader.d.ts +1 -0
  131. package/dist/read/user-open-orders/user-open-orders.reader.d.ts.map +1 -0
  132. package/dist/read/user-open-orders/user-open-orders.reader.js +9 -5
  133. package/dist/read/user-open-orders/user-open-orders.types.d.ts +1 -0
  134. package/dist/read/user-open-orders/user-open-orders.types.d.ts.map +1 -0
  135. package/dist/read/user-open-orders/user-open-orders.types.js +33 -27
  136. package/dist/read/user-order-history/user-order-history.reader.d.ts +4 -3
  137. package/dist/read/user-order-history/user-order-history.reader.d.ts.map +1 -0
  138. package/dist/read/user-order-history/user-order-history.reader.js +13 -9
  139. package/dist/read/user-order-history/user-order-history.types.d.ts +29 -24
  140. package/dist/read/user-order-history/user-order-history.types.d.ts.map +1 -0
  141. package/dist/read/user-order-history/user-order-history.types.js +39 -29
  142. package/dist/read/user-positions/user-positions.reader.d.ts +1 -1
  143. package/dist/read/user-positions/user-positions.reader.d.ts.map +1 -0
  144. package/dist/read/user-positions/user-positions.reader.js +9 -5
  145. package/dist/read/user-positions/user-positions.types.d.ts +34 -243
  146. package/dist/read/user-positions/user-positions.types.d.ts.map +1 -0
  147. package/dist/read/user-positions/user-positions.types.js +27 -22
  148. package/dist/read/user-subaccounts/user-subaccounts.reader.d.ts +1 -0
  149. package/dist/read/user-subaccounts/user-subaccounts.reader.d.ts.map +1 -0
  150. package/dist/read/user-subaccounts/user-subaccounts.reader.js +8 -4
  151. package/dist/read/user-subaccounts/user-subaccounts.types.d.ts +1 -0
  152. package/dist/read/user-subaccounts/user-subaccounts.types.d.ts.map +1 -0
  153. package/dist/read/user-subaccounts/user-subaccounts.types.js +14 -8
  154. package/dist/read/user-trade-history/user-trade-history.reader.d.ts +4 -3
  155. package/dist/read/user-trade-history/user-trade-history.reader.d.ts.map +1 -0
  156. package/dist/read/user-trade-history/user-trade-history.reader.js +13 -9
  157. package/dist/read/user-trade-history/user-trade-history.types.d.ts +1 -0
  158. package/dist/read/user-trade-history/user-trade-history.types.d.ts.map +1 -0
  159. package/dist/read/user-trade-history/user-trade-history.types.js +24 -18
  160. package/dist/read/vaults/vaults.reader.d.ts +2 -1
  161. package/dist/read/vaults/vaults.reader.d.ts.map +1 -0
  162. package/dist/read/vaults/vaults.reader.js +14 -6
  163. package/dist/read/vaults/vaults.types.d.ts +13 -3
  164. package/dist/read/vaults/vaults.types.d.ts.map +1 -0
  165. package/dist/read/vaults/vaults.types.js +59 -52
  166. package/dist/read/ws-subscription.d.ts +1 -0
  167. package/dist/read/ws-subscription.d.ts.map +1 -0
  168. package/dist/read/ws-subscription.js +17 -10
  169. package/dist/subaccount-types.d.ts +1 -0
  170. package/dist/subaccount-types.d.ts.map +1 -0
  171. package/dist/subaccount-types.js +10 -4
  172. package/dist/transaction-builder.d.ts +1 -0
  173. package/dist/transaction-builder.d.ts.map +1 -0
  174. package/dist/transaction-builder.js +16 -11
  175. package/dist/tsconfig.tsbuildinfo +1 -1
  176. package/dist/utils.d.ts +8 -1
  177. package/dist/utils.d.ts.map +1 -0
  178. package/dist/utils.js +63 -29
  179. package/dist/write.d.ts +1 -0
  180. package/dist/write.d.ts.map +1 -0
  181. package/dist/write.js +26 -20
  182. package/package.json +1 -2
  183. package/readme.md +2 -2
  184. package/src/abi/json/testnet.json +166 -165
  185. package/src/admin.ts +1 -0
  186. package/src/base.ts +5 -1
  187. package/src/constants.ts +8 -5
  188. package/src/read/user-positions/user-positions.types.ts +0 -1
  189. package/src/read/vaults/vaults.reader.ts +2 -0
  190. package/src/read/vaults/vaults.types.ts +5 -2
  191. package/src/read/ws-subscription.ts +2 -2
  192. package/src/utils.ts +49 -3
  193. package/src/write.ts +4 -2
package/dist/utils.js CHANGED
@@ -1,11 +1,26 @@
1
- import { AccountAddress, createObjectAddress, MoveString, } from "@aptos-labs/ts-sdk";
2
- import { z, ZodError } from "zod/v4";
3
- import { QUERY_PARAM_KEYS } from "./constants";
4
- export function getMarketAddr(name, perpEngineGlobalAddr) {
5
- const marketNameBytes = new MoveString(name).bcsToBytes();
6
- return createObjectAddress(AccountAddress.fromString(perpEngineGlobalAddr), marketNameBytes);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractVaultAddressFromCreateTx = exports.PARAM_MAP = void 0;
4
+ exports.getMarketAddr = getMarketAddr;
5
+ exports.postRequest = postRequest;
6
+ exports.patchRequest = patchRequest;
7
+ exports.getRequest = getRequest;
8
+ exports.prettifyMaybeZodError = prettifyMaybeZodError;
9
+ exports.bigIntReviver = bigIntReviver;
10
+ exports.getPrimarySubaccountAddr = getPrimarySubaccountAddr;
11
+ exports.getTradingCompetitionSubaccountAddr = getTradingCompetitionSubaccountAddr;
12
+ exports.getVaultShareAddress = getVaultShareAddress;
13
+ exports.constructKnownQueryParams = constructKnownQueryParams;
14
+ exports.generateRandomReplayProtectionNonce = generateRandomReplayProtectionNonce;
15
+ exports.roundToTickSize = roundToTickSize;
16
+ const ts_sdk_1 = require("@aptos-labs/ts-sdk");
17
+ const v4_1 = require("zod/v4");
18
+ const constants_1 = require("./constants");
19
+ function getMarketAddr(name, perpEngineGlobalAddr) {
20
+ const marketNameBytes = new ts_sdk_1.MoveString(name).bcsToBytes();
21
+ return (0, ts_sdk_1.createObjectAddress)(ts_sdk_1.AccountAddress.fromString(perpEngineGlobalAddr), marketNameBytes);
7
22
  }
8
- export async function postRequest({ schema, url, body, options = {}, apiKey, }) {
23
+ async function postRequest({ schema, url, body, options = {}, apiKey, }) {
9
24
  return baseRequest({
10
25
  schema,
11
26
  url,
@@ -16,7 +31,7 @@ export async function postRequest({ schema, url, body, options = {}, apiKey, })
16
31
  apiKey,
17
32
  });
18
33
  }
19
- export async function patchRequest({ schema, url, body, options = {}, apiKey, }) {
34
+ async function patchRequest({ schema, url, body, options = {}, apiKey, }) {
20
35
  return baseRequest({
21
36
  schema,
22
37
  url,
@@ -27,7 +42,7 @@ export async function patchRequest({ schema, url, body, options = {}, apiKey, })
27
42
  apiKey,
28
43
  });
29
44
  }
30
- export async function getRequest({ schema, url, queryParams, options = {}, apiKey, }) {
45
+ async function getRequest({ schema, url, queryParams, options = {}, apiKey, }) {
31
46
  return baseRequest({
32
47
  schema,
33
48
  url,
@@ -72,13 +87,13 @@ async function baseRequest({ schema, url, method, options = {}, body, queryParam
72
87
  throw prettifyMaybeZodError(e);
73
88
  }
74
89
  }
75
- export function prettifyMaybeZodError(e) {
76
- if (e instanceof ZodError) {
77
- return new Error(z.prettifyError(e), { cause: e });
90
+ function prettifyMaybeZodError(e) {
91
+ if (e instanceof v4_1.ZodError) {
92
+ return new Error(v4_1.z.prettifyError(e), { cause: e });
78
93
  }
79
94
  return e;
80
95
  }
81
- export function bigIntReviver(key, value) {
96
+ function bigIntReviver(key, value) {
82
97
  if (value &&
83
98
  typeof value === "object" &&
84
99
  "$bigint" in value &&
@@ -87,40 +102,45 @@ export function bigIntReviver(key, value) {
87
102
  }
88
103
  return value;
89
104
  }
90
- export function getPrimarySubaccountAddr(addr) {
91
- const account = typeof addr === "string" ? AccountAddress.fromString(addr) : addr;
92
- const seed = new TextEncoder().encode("decibel_dex_primary");
93
- return createObjectAddress(account, seed).toString();
105
+ function getPrimarySubaccountAddr(addr, variant = "v2") {
106
+ const account = typeof addr === "string" ? ts_sdk_1.AccountAddress.fromString(addr) : addr;
107
+ const seed = new TextEncoder().encode(variant === "v1" ? "decibel_dex_primary" : "decibel_dex_primary_v2");
108
+ return (0, ts_sdk_1.createObjectAddress)(account, seed).toString();
94
109
  }
95
- export function getVaultShareAddress(vaultAddress) {
110
+ function getTradingCompetitionSubaccountAddr(addr) {
111
+ const account = typeof addr === "string" ? ts_sdk_1.AccountAddress.fromString(addr) : addr;
112
+ const seed = new TextEncoder().encode("trading_competition");
113
+ return (0, ts_sdk_1.createObjectAddress)(account, seed).toString();
114
+ }
115
+ function getVaultShareAddress(vaultAddress) {
96
116
  const seed = new TextEncoder().encode("vault_share_asset");
97
- return createObjectAddress(AccountAddress.fromString(vaultAddress), seed).toString();
117
+ return (0, ts_sdk_1.createObjectAddress)(ts_sdk_1.AccountAddress.fromString(vaultAddress), seed).toString();
98
118
  }
99
- export const PARAM_MAP = {
100
- limit: QUERY_PARAM_KEYS.limit,
101
- offset: QUERY_PARAM_KEYS.offset,
102
- sortKey: QUERY_PARAM_KEYS.sortKey,
103
- sortDir: QUERY_PARAM_KEYS.sortDir,
104
- searchTerm: QUERY_PARAM_KEYS.searchTerm,
119
+ exports.PARAM_MAP = {
120
+ limit: constants_1.QUERY_PARAM_KEYS.limit,
121
+ offset: constants_1.QUERY_PARAM_KEYS.offset,
122
+ sortKey: constants_1.QUERY_PARAM_KEYS.sortKey,
123
+ sortDir: constants_1.QUERY_PARAM_KEYS.sortDir,
124
+ searchTerm: constants_1.QUERY_PARAM_KEYS.searchTerm,
105
125
  };
106
126
  /**
107
127
  * Construct query params from an args object, supporting optional PageParams, SearchTermParams, and generic SortParams.
108
128
  * @param args - The argument object, which may include page, search, and sort params.
109
129
  * @returns URLSearchParams instance with the constructed query parameters.
110
130
  */
111
- export function constructKnownQueryParams(args) {
131
+ function constructKnownQueryParams(args) {
112
132
  const queryParams = new URLSearchParams();
113
133
  Object.keys(args).forEach((_argKey) => {
114
134
  const argKey = _argKey;
115
135
  const value = args[argKey];
116
- const paramKey = PARAM_MAP[argKey];
136
+ const paramKey = exports.PARAM_MAP[argKey];
117
137
  if (paramKey && value !== undefined && !(typeof value === "string" && value.trim() === "")) {
118
138
  queryParams.set(paramKey, String(value));
119
139
  }
120
140
  });
121
141
  return queryParams;
122
142
  }
123
- export function generateRandomReplayProtectionNonce() {
143
+ function generateRandomReplayProtectionNonce() {
124
144
  const buf = new Uint32Array(2);
125
145
  crypto.getRandomValues(buf);
126
146
  const valueAtIndex0 = buf[0];
@@ -130,7 +150,20 @@ export function generateRandomReplayProtectionNonce() {
130
150
  // combine two 32-bit parts into a single 64-bit bigint
131
151
  return (BigInt(valueAtIndex0) << BigInt(32)) | BigInt(valueAtIndex1);
132
152
  }
133
- export const extractVaultAddressFromCreateTx = (createVaultTx) => {
153
+ /**
154
+ * Round price to valid tick size.
155
+ * Prices must be multiples of tickSize in chain units.
156
+ */
157
+ function roundToTickSize(price, tickSize, pxDecimals, roundUp) {
158
+ if (price === 0)
159
+ return 0;
160
+ const denormalized = price * 10 ** pxDecimals;
161
+ const rounded = roundUp
162
+ ? Math.ceil(denormalized / tickSize) * tickSize
163
+ : Math.floor(denormalized / tickSize) * tickSize;
164
+ return Number((rounded / 10 ** pxDecimals).toFixed(pxDecimals));
165
+ }
166
+ const extractVaultAddressFromCreateTx = (createVaultTx) => {
134
167
  // Extract vault address from transaction events
135
168
  let vaultAddress = null;
136
169
  if ("events" in createVaultTx && Array.isArray(createVaultTx.events)) {
@@ -148,3 +181,4 @@ export const extractVaultAddressFromCreateTx = (createVaultTx) => {
148
181
  typeof vaultAddress === "object" && "inner" in vaultAddress ? vaultAddress.inner : vaultAddress;
149
182
  return vaultAddress;
150
183
  };
184
+ exports.extractVaultAddressFromCreateTx = extractVaultAddressFromCreateTx;
package/dist/write.d.ts CHANGED
@@ -268,3 +268,4 @@ export declare class DecibelWriteDex extends BaseSDK {
268
268
  }): Promise<CommittedTransactionResponse>;
269
269
  }
270
270
  export {};
271
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
package/dist/write.js CHANGED
@@ -1,9 +1,12 @@
1
- import { BaseSDK } from "./base";
2
- import { getVaultApiModule } from "./constants";
3
- import { OrderStatusClient } from "./order-status";
4
- import { RenameSubaccountSchema } from "./subaccount-types";
5
- import { getMarketAddr, getPrimarySubaccountAddr, postRequest } from "./utils";
6
- export const TimeInForce = {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DecibelWriteDex = exports.TimeInForce = void 0;
4
+ const base_1 = require("./base");
5
+ const constants_1 = require("./constants");
6
+ const order_status_1 = require("./order-status");
7
+ const subaccount_types_1 = require("./subaccount-types");
8
+ const utils_1 = require("./utils");
9
+ exports.TimeInForce = {
7
10
  GoodTillCanceled: 0,
8
11
  PostOnly: 1,
9
12
  ImmediateOrCancel: 2,
@@ -19,13 +22,13 @@ function roundToTickSize(price, tickSize) {
19
22
  return 0;
20
23
  return Math.round(price / tickSize) * tickSize;
21
24
  }
22
- export class DecibelWriteDex extends BaseSDK {
25
+ class DecibelWriteDex extends base_1.BaseSDK {
23
26
  cache;
24
27
  orderStatusClient;
25
28
  constructor(config, account, opts) {
26
29
  super(config, account, opts);
27
30
  this.cache = {};
28
- this.orderStatusClient = new OrderStatusClient(config);
31
+ this.orderStatusClient = new order_status_1.OrderStatusClient(config);
29
32
  }
30
33
  /**
31
34
  * Extract order_id from OrderEvent in transaction response
@@ -61,8 +64,8 @@ export class DecibelWriteDex extends BaseSDK {
61
64
  }
62
65
  }
63
66
  async renameSubaccount({ subaccountAddress, newName }) {
64
- return await postRequest({
65
- schema: RenameSubaccountSchema,
67
+ return await (0, utils_1.postRequest)({
68
+ schema: subaccount_types_1.RenameSubaccountSchema,
66
69
  url: `${this.config.tradingHttpUrl}/api/v1/subaccounts/${subaccountAddress}`,
67
70
  body: { name: newName },
68
71
  });
@@ -76,13 +79,13 @@ export class DecibelWriteDex extends BaseSDK {
76
79
  }
77
80
  async sendSubaccountTx(sendTx, subaccountAddr) {
78
81
  if (!subaccountAddr) {
79
- subaccountAddr = getPrimarySubaccountAddr(this.account.accountAddress);
82
+ subaccountAddr = (0, utils_1.getPrimarySubaccountAddr)(this.account.accountAddress);
80
83
  }
81
84
  return await sendTx(subaccountAddr);
82
85
  }
83
86
  async withSubaccount(fn, subaccountAddr) {
84
87
  if (!subaccountAddr) {
85
- subaccountAddr = getPrimarySubaccountAddr(this.account.accountAddress);
88
+ subaccountAddr = (0, utils_1.getPrimarySubaccountAddr)(this.account.accountAddress);
86
89
  }
87
90
  return await fn(subaccountAddr);
88
91
  }
@@ -124,7 +127,7 @@ export class DecibelWriteDex extends BaseSDK {
124
127
  }
125
128
  async placeOrder({ marketName, price, size, isBuy, timeInForce, isReduceOnly, clientOrderId, stopPrice, tpTriggerPrice, tpLimitPrice, slTriggerPrice, slLimitPrice, builderAddr, builderFee, subaccountAddr, accountOverride, tickSize, }) {
126
129
  try {
127
- const marketAddr = getMarketAddr(marketName, this.config.deployment.perpEngineGlobal);
130
+ const marketAddr = (0, utils_1.getMarketAddr)(marketName, this.config.deployment.perpEngineGlobal);
128
131
  // Apply tick size rounding if tickSize is provided
129
132
  const roundedPrice = tickSize ? roundToTickSize(price, tickSize) : price;
130
133
  const roundedStopPrice = stopPrice !== undefined && tickSize ? roundToTickSize(stopPrice, tickSize) : stopPrice;
@@ -191,7 +194,7 @@ export class DecibelWriteDex extends BaseSDK {
191
194
  async placeTwapOrder({ marketName, size, isBuy, isReduceOnly,
192
195
  // clientOrderId,
193
196
  twapFrequencySeconds, twapDurationSeconds, builderAddress, builderFees, subaccountAddr, accountOverride, }) {
194
- const marketAddr = getMarketAddr(marketName, this.config.deployment.perpEngineGlobal);
197
+ const marketAddr = (0, utils_1.getMarketAddr)(marketName, this.config.deployment.perpEngineGlobal);
195
198
  const txResponse = await this.sendSubaccountTx((subaccountAddr) => this.sendTx({
196
199
  // TODO: update to place_twap_order_to_subaccount_v2 once available
197
200
  function: `${this.config.deployment.package}::dex_accounts::place_twap_order_to_subaccount`,
@@ -226,7 +229,7 @@ export class DecibelWriteDex extends BaseSDK {
226
229
  async cancelOrder({ orderId, subaccountAddr, accountOverride, ...args }) {
227
230
  // Either marketName or marketAddr must be provided
228
231
  const marketAddr = "marketName" in args
229
- ? getMarketAddr(args.marketName, this.config.deployment.perpEngineGlobal)
232
+ ? (0, utils_1.getMarketAddr)(args.marketName, this.config.deployment.perpEngineGlobal)
230
233
  : args.marketAddr;
231
234
  return await this.sendSubaccountTx((subaccountAddr) => this.sendTx({
232
235
  function: `${this.config.deployment.package}::dex_accounts::cancel_order_to_subaccount`,
@@ -235,7 +238,7 @@ export class DecibelWriteDex extends BaseSDK {
235
238
  }, accountOverride), subaccountAddr);
236
239
  }
237
240
  async cancelClientOrder({ clientOrderId, marketName, subaccountAddr, accountOverride, }) {
238
- const marketAddr = getMarketAddr(marketName, this.config.deployment.perpEngineGlobal);
241
+ const marketAddr = (0, utils_1.getMarketAddr)(marketName, this.config.deployment.perpEngineGlobal);
239
242
  return await this.sendSubaccountTx((subaccountAddr) => this.sendTx({
240
243
  function: `${this.config.deployment.package}::dex_accounts::cancel_client_order_to_subaccount`,
241
244
  typeArguments: [],
@@ -354,11 +357,12 @@ export class DecibelWriteDex extends BaseSDK {
354
357
  * Create a new vault with optional initial funding
355
358
  */
356
359
  async buildCreateVaultTx({ contributionAssetType, vaultName, vaultShareSymbol, vaultShareIconUri = "", vaultShareProjectUri = "", feeBps, feeIntervalS, contributionLockupDurationS, initialFunding = 0, acceptsContributions = false, delegateToCreator = false, signerAddress, vaultDescription, vaultSocialLinks, }) {
357
- const vaultApiModule = getVaultApiModule(this.config.compatVersion);
360
+ const vaultApiModule = (0, constants_1.getVaultApiModule)(this.config.compatVersion);
358
361
  const transaction = await this.buildTx({
359
362
  function: `${this.config.deployment.package}::${vaultApiModule}::create_and_fund_vault`,
360
363
  typeArguments: [],
361
364
  functionArguments: [
365
+ null,
362
366
  contributionAssetType,
363
367
  vaultName,
364
368
  vaultDescription,
@@ -377,11 +381,12 @@ export class DecibelWriteDex extends BaseSDK {
377
381
  return transaction;
378
382
  }
379
383
  async createVault(args) {
380
- const vaultApiModule = getVaultApiModule(this.config.compatVersion);
384
+ const vaultApiModule = (0, constants_1.getVaultApiModule)(this.config.compatVersion);
381
385
  const txResponse = await this.sendSubaccountTx(() => this.sendTx({
382
386
  function: `${this.config.deployment.package}::${vaultApiModule}::create_and_fund_vault`,
383
387
  typeArguments: [],
384
388
  functionArguments: [
389
+ null,
385
390
  args.contributionAssetType,
386
391
  args.vaultName,
387
392
  args.vaultDescription,
@@ -403,7 +408,7 @@ export class DecibelWriteDex extends BaseSDK {
403
408
  * Activate a vault to accept contributions
404
409
  */
405
410
  async buildActivateVaultTx({ vaultAddress, additionalFunding = 0, signerAddress, }) {
406
- const vaultApiModule = getVaultApiModule(this.config.compatVersion);
411
+ const vaultApiModule = (0, constants_1.getVaultApiModule)(this.config.compatVersion);
407
412
  return await this.buildTx({
408
413
  function: `${this.config.deployment.package}::${vaultApiModule}::activate_vault`,
409
414
  typeArguments: [],
@@ -414,7 +419,7 @@ export class DecibelWriteDex extends BaseSDK {
414
419
  * Contribute funds to a vault in exchange for shares
415
420
  */
416
421
  async buildDepositToVaultTx({ vaultAddress, amount, signerAddress, }) {
417
- const vaultApiModule = getVaultApiModule(this.config.compatVersion);
422
+ const vaultApiModule = (0, constants_1.getVaultApiModule)(this.config.compatVersion);
418
423
  return await this.buildTx({
419
424
  function: `${this.config.deployment.package}::${vaultApiModule}::contribute`,
420
425
  typeArguments: [],
@@ -488,3 +493,4 @@ export class DecibelWriteDex extends BaseSDK {
488
493
  }), subaccountAddr);
489
494
  }
490
495
  }
496
+ exports.DecibelWriteDex = DecibelWriteDex;
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@decibeltrade/sdk",
3
- "version": "0.2.0",
4
- "type": "module",
3
+ "version": "0.2.2",
5
4
  "main": "dist/index.js",
6
5
  "types": "dist/index.d.ts",
7
6
  "exports": {
package/readme.md CHANGED
@@ -730,7 +730,7 @@ export enum CandlestickInterval {
730
730
  import { getPrimarySubaccountAddr, getMarketAddr } from "@decibeltrade/sdk";
731
731
 
732
732
  // Get primary subaccount address for an account
733
- const subaccountAddr = getPrimarySubaccountAddr("account_address");
733
+ const subaccountAddr = getPrimarySubaccountAddr("account_address", sdkConfig);
734
734
 
735
735
  // Get market address from name
736
736
  const marketAddr = getMarketAddr("BTC-USD", "perp_engine_global_address");
@@ -1041,7 +1041,7 @@ function getMarketAddress(marketName: string, perpEngineGlobalAddr: string): Acc
1041
1041
  * Get primary subaccount address for a user account
1042
1042
  */
1043
1043
  function getPrimarySubaccountAddress(userAddress: AccountAddress): string {
1044
- const seed = new TextEncoder().encode("decibel_dex_primary");
1044
+ const seed = new TextEncoder().encode("decibel_dex_primary_v2");
1045
1045
  return createObjectAddress(userAddress, seed).toString();
1046
1046
  }
1047
1047