@drift-labs/common 1.0.59 → 1.0.60

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 (282) hide show
  1. package/lib/_deprecated/common-math.d.ts +10 -0
  2. package/lib/_deprecated/common-math.js +9 -0
  3. package/lib/_deprecated/common-math.js.map +1 -0
  4. package/lib/_deprecated/common-ui-utils.d.ts +248 -0
  5. package/lib/_deprecated/common-ui-utils.js +59 -0
  6. package/lib/_deprecated/common-ui-utils.js.map +1 -0
  7. package/lib/_deprecated/equality-checks.d.ts +2 -0
  8. package/lib/_deprecated/equality-checks.js +7 -0
  9. package/lib/_deprecated/equality-checks.js.map +1 -0
  10. package/lib/{common-ui-utils/market.d.ts → _deprecated/market-utils.d.ts} +5 -7
  11. package/lib/_deprecated/market-utils.js +18 -0
  12. package/lib/_deprecated/market-utils.js.map +1 -0
  13. package/lib/_deprecated/order-utils.d.ts +12 -0
  14. package/lib/_deprecated/order-utils.js +18 -0
  15. package/lib/_deprecated/order-utils.js.map +1 -0
  16. package/lib/_deprecated/trading-utils.d.ts +52 -0
  17. package/lib/_deprecated/trading-utils.js +27 -0
  18. package/lib/_deprecated/trading-utils.js.map +1 -0
  19. package/lib/_deprecated/user-utils.d.ts +17 -0
  20. package/lib/_deprecated/user-utils.js +12 -0
  21. package/lib/_deprecated/user-utils.js.map +1 -0
  22. package/lib/_deprecated/utils.d.ts +40 -0
  23. package/lib/_deprecated/utils.js +47 -0
  24. package/lib/_deprecated/utils.js.map +1 -0
  25. package/lib/clients/tvFeed.js +2 -2
  26. package/lib/clients/tvFeed.js.map +1 -1
  27. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js +8 -8
  28. package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js.map +1 -1
  29. package/lib/drift/Drift/clients/AuthorityDrift/index.js +9 -9
  30. package/lib/drift/Drift/clients/AuthorityDrift/index.js.map +1 -1
  31. package/lib/drift/Drift/clients/CentralServerDrift/index.js +2 -2
  32. package/lib/drift/Drift/clients/CentralServerDrift/index.js.map +1 -1
  33. package/lib/drift/base/actions/trade/editOrder.d.ts +1 -1
  34. package/lib/drift/base/actions/trade/editOrder.js.map +1 -1
  35. package/lib/drift/base/actions/trade/margin.js +4 -4
  36. package/lib/drift/base/actions/trade/margin.js.map +1 -1
  37. package/lib/drift/base/actions/trade/openPerpOrder/auction.d.ts +1 -1
  38. package/lib/drift/base/actions/trade/openPerpOrder/auction.js +4 -3
  39. package/lib/drift/base/actions/trade/openPerpOrder/auction.js.map +1 -1
  40. package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.js +2 -2
  41. package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.js.map +1 -1
  42. package/lib/drift/base/actions/trade/openPerpOrder/isolatedPositionDeposit.js +2 -2
  43. package/lib/drift/base/actions/trade/openPerpOrder/isolatedPositionDeposit.js.map +1 -1
  44. package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.d.ts +1 -1
  45. package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js +4 -4
  46. package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js.map +1 -1
  47. package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.d.ts +1 -1
  48. package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js +2 -2
  49. package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js.map +1 -1
  50. package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js +4 -3
  51. package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js.map +1 -1
  52. package/lib/drift/base/actions/trade/openPerpOrder/positionMaxLeverage.js +2 -2
  53. package/lib/drift/base/actions/trade/openPerpOrder/positionMaxLeverage.js.map +1 -1
  54. package/lib/drift/base/actions/user/create.js +2 -2
  55. package/lib/drift/base/actions/user/create.js.map +1 -1
  56. package/lib/drift/base/details/user/balances.js +2 -2
  57. package/lib/drift/base/details/user/balances.js.map +1 -1
  58. package/lib/drift/base/details/user/positions.js +2 -2
  59. package/lib/drift/base/details/user/positions.js.map +1 -1
  60. package/lib/index.d.ts +28 -28
  61. package/lib/index.js +44 -29
  62. package/lib/index.js.map +1 -1
  63. package/lib/utils/accounts/index.d.ts +6 -0
  64. package/lib/utils/accounts/index.js +23 -0
  65. package/lib/utils/accounts/index.js.map +1 -0
  66. package/lib/utils/accounts/init.d.ts +22 -0
  67. package/lib/utils/accounts/init.js +90 -0
  68. package/lib/utils/accounts/init.js.map +1 -0
  69. package/lib/utils/accounts/keys.d.ts +22 -0
  70. package/lib/utils/accounts/keys.js +36 -0
  71. package/lib/utils/accounts/keys.js.map +1 -0
  72. package/lib/utils/accounts/multiple.d.ts +14 -0
  73. package/lib/utils/accounts/multiple.js +45 -0
  74. package/lib/utils/accounts/multiple.js.map +1 -0
  75. package/lib/utils/accounts/signature.d.ts +6 -0
  76. package/lib/utils/accounts/signature.js +53 -0
  77. package/lib/utils/accounts/signature.js.map +1 -0
  78. package/lib/utils/accounts/subaccounts.d.ts +8 -0
  79. package/lib/utils/accounts/subaccounts.js +31 -0
  80. package/lib/utils/accounts/subaccounts.js.map +1 -0
  81. package/lib/utils/{WalletConnectionState.d.ts → accounts/wallet.d.ts} +7 -1
  82. package/lib/utils/{WalletConnectionState.js → accounts/wallet.js} +32 -2
  83. package/lib/utils/accounts/wallet.js.map +1 -0
  84. package/lib/utils/core/arrays.d.ts +2 -0
  85. package/lib/utils/core/arrays.js +25 -0
  86. package/lib/utils/core/arrays.js.map +1 -0
  87. package/lib/utils/core/async.d.ts +5 -0
  88. package/lib/utils/core/async.js +17 -0
  89. package/lib/utils/core/async.js.map +1 -0
  90. package/lib/utils/core/cache.d.ts +1 -0
  91. package/lib/utils/core/cache.js +40 -0
  92. package/lib/utils/core/cache.js.map +1 -0
  93. package/lib/utils/core/data-structures.d.ts +30 -0
  94. package/lib/utils/core/data-structures.js +84 -0
  95. package/lib/utils/core/data-structures.js.map +1 -0
  96. package/lib/utils/{equalityChecks.d.ts → core/equality.d.ts} +1 -1
  97. package/lib/utils/{equalityChecks.js → core/equality.js} +3 -3
  98. package/lib/utils/core/equality.js.map +1 -0
  99. package/lib/utils/core/fetch.js.map +1 -0
  100. package/lib/utils/core/index.d.ts +7 -0
  101. package/lib/utils/core/index.js +24 -0
  102. package/lib/utils/core/index.js.map +1 -0
  103. package/lib/utils/core/serialization.d.ts +30 -0
  104. package/lib/utils/core/serialization.js +92 -0
  105. package/lib/utils/core/serialization.js.map +1 -0
  106. package/lib/utils/{enum.js → enum/index.js} +1 -1
  107. package/lib/utils/enum/index.js.map +1 -0
  108. package/lib/utils/index.d.ts +11 -176
  109. package/lib/utils/index.js +25 -594
  110. package/lib/utils/index.js.map +1 -1
  111. package/lib/utils/markets/balances.d.ts +6 -0
  112. package/lib/utils/markets/balances.js +29 -0
  113. package/lib/utils/markets/balances.js.map +1 -0
  114. package/lib/utils/markets/config.d.ts +5 -0
  115. package/lib/utils/markets/config.js +24 -0
  116. package/lib/utils/markets/config.js.map +1 -0
  117. package/lib/utils/markets/index.d.ts +6 -0
  118. package/lib/utils/markets/index.js +23 -0
  119. package/lib/utils/markets/index.js.map +1 -0
  120. package/lib/utils/markets/interest.d.ts +25 -0
  121. package/lib/utils/markets/interest.js +65 -0
  122. package/lib/utils/markets/interest.js.map +1 -0
  123. package/lib/utils/markets/leverage.d.ts +12 -0
  124. package/lib/utils/markets/leverage.js +60 -0
  125. package/lib/utils/markets/leverage.js.map +1 -0
  126. package/lib/utils/markets/operations.d.ts +21 -0
  127. package/lib/utils/markets/operations.js +59 -0
  128. package/lib/utils/markets/operations.js.map +1 -0
  129. package/lib/utils/math/bignum.d.ts +3 -0
  130. package/lib/utils/math/bignum.js +16 -0
  131. package/lib/utils/math/bignum.js.map +1 -0
  132. package/lib/utils/math/bn.d.ts +7 -0
  133. package/lib/utils/math/bn.js +58 -0
  134. package/lib/utils/math/bn.js.map +1 -0
  135. package/lib/utils/math/index.d.ts +7 -0
  136. package/lib/utils/math/index.js +24 -0
  137. package/lib/utils/math/index.js.map +1 -0
  138. package/lib/utils/math/numbers.d.ts +13 -0
  139. package/lib/utils/math/numbers.js +56 -0
  140. package/lib/utils/math/numbers.js.map +1 -0
  141. package/lib/utils/math/precision.d.ts +19 -0
  142. package/lib/utils/math/precision.js +73 -0
  143. package/lib/utils/math/precision.js.map +1 -0
  144. package/lib/utils/math/price.d.ts +12 -0
  145. package/lib/utils/math/price.js +45 -0
  146. package/lib/utils/math/price.js.map +1 -0
  147. package/lib/utils/math/sort.d.ts +13 -0
  148. package/lib/utils/math/sort.js +33 -0
  149. package/lib/utils/math/sort.js.map +1 -0
  150. package/lib/utils/math/spread.d.ts +8 -0
  151. package/lib/utils/math/spread.js +87 -0
  152. package/lib/utils/math/spread.js.map +1 -0
  153. package/lib/utils/orderbook/index.js +4 -4
  154. package/lib/utils/orderbook/index.js.map +1 -1
  155. package/lib/utils/orders/filters.d.ts +7 -0
  156. package/lib/utils/orders/filters.js +31 -0
  157. package/lib/utils/orders/filters.js.map +1 -0
  158. package/lib/utils/orders/flags.d.ts +12 -0
  159. package/lib/utils/orders/flags.js +44 -0
  160. package/lib/utils/orders/flags.js.map +1 -0
  161. package/lib/utils/orders/index.d.ts +6 -0
  162. package/lib/utils/orders/index.js +23 -0
  163. package/lib/utils/orders/index.js.map +1 -0
  164. package/lib/utils/orders/labels.d.ts +4 -0
  165. package/lib/utils/orders/labels.js +122 -0
  166. package/lib/utils/orders/labels.js.map +1 -0
  167. package/lib/utils/orders/misc.d.ts +11 -0
  168. package/lib/utils/orders/misc.js +27 -0
  169. package/lib/utils/orders/misc.js.map +1 -0
  170. package/lib/utils/orders/oracle.d.ts +5 -0
  171. package/lib/utils/orders/oracle.js +23 -0
  172. package/lib/utils/orders/oracle.js.map +1 -0
  173. package/lib/utils/orders/sort.d.ts +38 -0
  174. package/lib/utils/orders/sort.js +83 -0
  175. package/lib/utils/orders/sort.js.map +1 -0
  176. package/lib/utils/positions/index.d.ts +2 -0
  177. package/lib/{common-ui-utils → utils/positions}/index.js +1 -5
  178. package/lib/utils/positions/index.js.map +1 -0
  179. package/lib/utils/positions/open.d.ts +4 -0
  180. package/lib/{common-ui-utils/user.js → utils/positions/open.js} +10 -81
  181. package/lib/utils/positions/open.js.map +1 -0
  182. package/lib/utils/positions/user.d.ts +37 -0
  183. package/lib/utils/positions/user.js +74 -0
  184. package/lib/utils/positions/user.js.map +1 -0
  185. package/lib/utils/settings/settings.js.map +1 -0
  186. package/lib/utils/strings/convert.d.ts +11 -0
  187. package/lib/utils/{strings.js → strings/convert.js} +2 -51
  188. package/lib/utils/strings/convert.js.map +1 -0
  189. package/lib/utils/strings/format.d.ts +14 -0
  190. package/lib/utils/strings/format.js +61 -0
  191. package/lib/utils/strings/format.js.map +1 -0
  192. package/lib/utils/strings/index.d.ts +4 -0
  193. package/lib/utils/strings/index.js +21 -0
  194. package/lib/utils/strings/index.js.map +1 -0
  195. package/lib/utils/strings/parse.d.ts +4 -0
  196. package/lib/utils/strings/parse.js +25 -0
  197. package/lib/utils/strings/parse.js.map +1 -0
  198. package/lib/utils/strings/status.d.ts +15 -0
  199. package/lib/utils/strings/status.js +21 -0
  200. package/lib/utils/strings/status.js.map +1 -0
  201. package/lib/utils/token/account.d.ts +16 -0
  202. package/lib/utils/token/account.js +36 -0
  203. package/lib/utils/token/account.js.map +1 -0
  204. package/lib/utils/{token.d.ts → token/address.d.ts} +2 -7
  205. package/lib/utils/token/address.js +30 -0
  206. package/lib/utils/token/address.js.map +1 -0
  207. package/lib/utils/token/index.d.ts +3 -0
  208. package/lib/utils/token/index.js +20 -0
  209. package/lib/utils/token/index.js.map +1 -0
  210. package/lib/utils/token/instructions.d.ts +3 -0
  211. package/lib/utils/token/instructions.js +17 -0
  212. package/lib/utils/token/instructions.js.map +1 -0
  213. package/lib/utils/trading/auction.d.ts +82 -0
  214. package/lib/utils/trading/auction.js +208 -0
  215. package/lib/utils/trading/auction.js.map +1 -0
  216. package/lib/utils/trading/index.d.ts +7 -0
  217. package/lib/utils/trading/index.js +24 -0
  218. package/lib/utils/trading/index.js.map +1 -0
  219. package/lib/utils/trading/leverage.d.ts +18 -0
  220. package/lib/utils/trading/leverage.js +79 -0
  221. package/lib/utils/trading/leverage.js.map +1 -0
  222. package/lib/utils/trading/liquidation.d.ts +22 -0
  223. package/lib/utils/trading/liquidation.js +67 -0
  224. package/lib/utils/trading/liquidation.js.map +1 -0
  225. package/lib/utils/trading/lp.d.ts +4 -0
  226. package/lib/utils/trading/lp.js +20 -0
  227. package/lib/utils/trading/lp.js.map +1 -0
  228. package/lib/utils/trading/pnl.d.ts +34 -0
  229. package/lib/utils/trading/pnl.js +88 -0
  230. package/lib/utils/trading/pnl.js.map +1 -0
  231. package/lib/utils/trading/price.d.ts +12 -0
  232. package/lib/utils/trading/price.js +36 -0
  233. package/lib/utils/trading/price.js.map +1 -0
  234. package/lib/utils/trading/size.d.ts +27 -0
  235. package/lib/utils/trading/size.js +83 -0
  236. package/lib/utils/trading/size.js.map +1 -0
  237. package/lib/utils/{validation.d.ts → validation/address.d.ts} +1 -2
  238. package/lib/utils/{validation.js → validation/address.js} +4 -6
  239. package/lib/utils/validation/address.js.map +1 -0
  240. package/lib/utils/validation/index.d.ts +3 -0
  241. package/lib/utils/validation/index.js +20 -0
  242. package/lib/utils/validation/index.js.map +1 -0
  243. package/lib/utils/validation/input.d.ts +3 -0
  244. package/lib/utils/validation/input.js +33 -0
  245. package/lib/utils/validation/input.js.map +1 -0
  246. package/lib/utils/validation/notional.d.ts +2 -0
  247. package/lib/utils/validation/notional.js +8 -0
  248. package/lib/utils/validation/notional.js.map +1 -0
  249. package/package.json +90 -3
  250. package/lib/common-ui-utils/commonUiUtils.d.ts +0 -251
  251. package/lib/common-ui-utils/commonUiUtils.js +0 -647
  252. package/lib/common-ui-utils/commonUiUtils.js.map +0 -1
  253. package/lib/common-ui-utils/index.d.ts +0 -6
  254. package/lib/common-ui-utils/index.js.map +0 -1
  255. package/lib/common-ui-utils/market.js +0 -134
  256. package/lib/common-ui-utils/market.js.map +0 -1
  257. package/lib/common-ui-utils/order.d.ts +0 -25
  258. package/lib/common-ui-utils/order.js +0 -191
  259. package/lib/common-ui-utils/order.js.map +0 -1
  260. package/lib/common-ui-utils/settings/settings.js.map +0 -1
  261. package/lib/common-ui-utils/trading.d.ts +0 -79
  262. package/lib/common-ui-utils/trading.js +0 -313
  263. package/lib/common-ui-utils/trading.js.map +0 -1
  264. package/lib/common-ui-utils/user.d.ts +0 -18
  265. package/lib/common-ui-utils/user.js.map +0 -1
  266. package/lib/utils/WalletConnectionState.js.map +0 -1
  267. package/lib/utils/enum.js.map +0 -1
  268. package/lib/utils/equalityChecks.js.map +0 -1
  269. package/lib/utils/fetch.js.map +0 -1
  270. package/lib/utils/math.d.ts +0 -31
  271. package/lib/utils/math.js +0 -181
  272. package/lib/utils/math.js.map +0 -1
  273. package/lib/utils/strings.d.ts +0 -34
  274. package/lib/utils/strings.js.map +0 -1
  275. package/lib/utils/token.js +0 -45
  276. package/lib/utils/token.js.map +0 -1
  277. package/lib/utils/validation.js.map +0 -1
  278. /package/lib/utils/{fetch.d.ts → core/fetch.d.ts} +0 -0
  279. /package/lib/utils/{fetch.js → core/fetch.js} +0 -0
  280. /package/lib/utils/{enum.d.ts → enum/index.d.ts} +0 -0
  281. /package/lib/{common-ui-utils → utils}/settings/settings.d.ts +0 -0
  282. /package/lib/{common-ui-utils → utils}/settings/settings.js +0 -0
@@ -0,0 +1,53 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.compareSignatures = exports.hashSignature = exports.verifySignature = exports.getSignatureVerificationMessageForSettings = void 0;
30
+ const bcryptjs_react_1 = __importDefault(require("bcryptjs-react"));
31
+ const tweetnacl_1 = __importStar(require("tweetnacl"));
32
+ const getSignatureVerificationMessageForSettings = (authority, signTs) => {
33
+ return new TextEncoder().encode(`Verify you are the owner of this wallet to update trade settings: \n${authority.toBase58()}\n\nThis signature will be valid for the next 30 minutes.\n\nTS: ${signTs.toString()}`);
34
+ };
35
+ exports.getSignatureVerificationMessageForSettings = getSignatureVerificationMessageForSettings;
36
+ const verifySignature = (signature, message, pubKey) => {
37
+ return tweetnacl_1.sign.detached.verify(message, signature, pubKey.toBytes());
38
+ };
39
+ exports.verifySignature = verifySignature;
40
+ const hashSignature = async (signature) => {
41
+ bcryptjs_react_1.default.setRandomFallback((num) => {
42
+ return Array.from(tweetnacl_1.default.randomBytes(num));
43
+ });
44
+ const hashedSignature = await bcryptjs_react_1.default.hash(signature, bcryptjs_react_1.default.genSaltSync(10));
45
+ return hashedSignature;
46
+ };
47
+ exports.hashSignature = hashSignature;
48
+ const compareSignatures = async (original, hashed) => {
49
+ const signaturesMatch = await bcryptjs_react_1.default.compare(original, hashed);
50
+ return signaturesMatch;
51
+ };
52
+ exports.compareSignatures = compareSignatures;
53
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/utils/accounts/signature.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,oEAAoC;AACpC,uDAAuC;AAEvC,MAAM,0CAA0C,GAAG,CAClD,SAAoB,EACpB,MAAc,EACD,EAAE;IACf,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAC9B,uEAAuE,SAAS,CAAC,QAAQ,EAAE,oEAAoE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAClL,CAAC;AACH,CAAC,CAAC;AA2BD,gGAA0C;AAzB3C,MAAM,eAAe,GAAG,CACvB,SAAqB,EACrB,OAAmB,EACnB,MAAiB,EACP,EAAE;IACZ,OAAO,gBAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC;AAoBD,0CAAe;AAlBhB,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAmB,EAAE;IAClE,wBAAM,CAAC,iBAAiB,CAAC,CAAC,GAAW,EAAE,EAAE;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,wBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAaD,sCAAa;AAXd,MAAM,iBAAiB,GAAG,KAAK,EAC9B,QAAgB,EAChB,MAAc,EACK,EAAE;IACrB,MAAM,eAAe,GAAG,MAAM,wBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAMD,8CAAiB","sourcesContent":["import { PublicKey } from '@drift-labs/sdk';\nimport bcrypt from 'bcryptjs-react';\nimport nacl, { sign } from 'tweetnacl';\n\nconst getSignatureVerificationMessageForSettings = (\n\tauthority: PublicKey,\n\tsignTs: number\n): Uint8Array => {\n\treturn new TextEncoder().encode(\n\t\t`Verify you are the owner of this wallet to update trade settings: \\n${authority.toBase58()}\\n\\nThis signature will be valid for the next 30 minutes.\\n\\nTS: ${signTs.toString()}`\n\t);\n};\n\nconst verifySignature = (\n\tsignature: Uint8Array,\n\tmessage: Uint8Array,\n\tpubKey: PublicKey\n): boolean => {\n\treturn sign.detached.verify(message, signature, pubKey.toBytes());\n};\n\nconst hashSignature = async (signature: string): Promise<string> => {\n\tbcrypt.setRandomFallback((num: number) => {\n\t\treturn Array.from(nacl.randomBytes(num));\n\t});\n\tconst hashedSignature = await bcrypt.hash(signature, bcrypt.genSaltSync(10));\n\treturn hashedSignature;\n};\n\nconst compareSignatures = async (\n\toriginal: string,\n\thashed: string\n): Promise<boolean> => {\n\tconst signaturesMatch = await bcrypt.compare(original, hashed);\n\treturn signaturesMatch;\n};\n\nexport {\n\tgetSignatureVerificationMessageForSettings,\n\tverifySignature,\n\thashSignature,\n\tcompareSignatures,\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { DriftClient, PublicKey, User, UserAccount } from '@drift-labs/sdk';
2
+ declare const fetchCurrentSubaccounts: (driftClient: DriftClient) => UserAccount[];
3
+ declare const fetchUserClientsAndAccounts: (driftClient: DriftClient) => {
4
+ user: User;
5
+ userAccount: UserAccount;
6
+ }[];
7
+ declare const userExists: (driftClient: DriftClient, userId: number, authority: PublicKey) => Promise<boolean>;
8
+ export { fetchCurrentSubaccounts, fetchUserClientsAndAccounts, userExists };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userExists = exports.fetchUserClientsAndAccounts = exports.fetchCurrentSubaccounts = void 0;
4
+ const fetchCurrentSubaccounts = (driftClient) => {
5
+ return driftClient.getUsers().map((user) => user.getUserAccount());
6
+ };
7
+ exports.fetchCurrentSubaccounts = fetchCurrentSubaccounts;
8
+ const fetchUserClientsAndAccounts = (driftClient) => {
9
+ const accounts = fetchCurrentSubaccounts(driftClient);
10
+ const allUsersAndUserAccounts = accounts.map((acct) => {
11
+ return {
12
+ user: driftClient.getUser(acct.subAccountId, acct.authority),
13
+ userAccount: acct,
14
+ };
15
+ });
16
+ return allUsersAndUserAccounts;
17
+ };
18
+ exports.fetchUserClientsAndAccounts = fetchUserClientsAndAccounts;
19
+ const userExists = async (driftClient, userId, authority) => {
20
+ let userAccountExists = false;
21
+ try {
22
+ const user = driftClient.getUser(userId, authority);
23
+ userAccountExists = await user.exists();
24
+ }
25
+ catch (e) {
26
+ // user account does not exist so we leave userAccountExists false
27
+ }
28
+ return userAccountExists;
29
+ };
30
+ exports.userExists = userExists;
31
+ //# sourceMappingURL=subaccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subaccounts.js","sourceRoot":"","sources":["../../../src/utils/accounts/subaccounts.ts"],"names":[],"mappings":";;;AAEA,MAAM,uBAAuB,GAAG,CAAC,WAAwB,EAAiB,EAAE;IAC3E,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC;AAiCO,0DAAuB;AA/BhC,MAAM,2BAA2B,GAAG,CACnC,WAAwB,EACqB,EAAE;IAC/C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,uBAAuB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrD,OAAO;YACN,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5D,WAAW,EAAE,IAAI;SACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,uBAAuB,CAAC;AAChC,CAAC,CAAC;AAmBgC,kEAA2B;AAjB7D,MAAM,UAAU,GAAG,KAAK,EACvB,WAAwB,EACxB,MAAc,EACd,SAAoB,EACnB,EAAE;IACH,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpD,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,kEAAkE;IACnE,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAC;AAE6D,gCAAU","sourcesContent":["import { DriftClient, PublicKey, User, UserAccount } from '@drift-labs/sdk';\n\nconst fetchCurrentSubaccounts = (driftClient: DriftClient): UserAccount[] => {\n\treturn driftClient.getUsers().map((user) => user.getUserAccount());\n};\n\nconst fetchUserClientsAndAccounts = (\n\tdriftClient: DriftClient\n): { user: User; userAccount: UserAccount }[] => {\n\tconst accounts = fetchCurrentSubaccounts(driftClient);\n\tconst allUsersAndUserAccounts = accounts.map((acct) => {\n\t\treturn {\n\t\t\tuser: driftClient.getUser(acct.subAccountId, acct.authority),\n\t\t\tuserAccount: acct,\n\t\t};\n\t});\n\n\treturn allUsersAndUserAccounts;\n};\n\nconst userExists = async (\n\tdriftClient: DriftClient,\n\tuserId: number,\n\tauthority: PublicKey\n) => {\n\tlet userAccountExists = false;\n\n\ttry {\n\t\tconst user = driftClient.getUser(userId, authority);\n\t\tuserAccountExists = await user.exists();\n\t} catch (e) {\n\t\t// user account does not exist so we leave userAccountExists false\n\t}\n\n\treturn userAccountExists;\n};\n\nexport { fetchCurrentSubaccounts, fetchUserClientsAndAccounts, userExists };\n"]}
@@ -1,4 +1,4 @@
1
- import { PublicKey } from '@drift-labs/sdk';
1
+ import { IWalletV2, PublicKey } from '@drift-labs/sdk';
2
2
  export declare enum ConnectionStateSteps {
3
3
  NotConnected = 0,
4
4
  AdapterConnected = 1,
@@ -29,3 +29,9 @@ export declare class WalletConnectionState {
29
29
  get FullyConnected(): boolean;
30
30
  get SubaccountsSubscribed(): boolean;
31
31
  }
32
+ /**
33
+ * Creates an IWallet wrapper, with redundant methods. If a `walletPubKey` is passed in,
34
+ * the `publicKey` will be based on that.
35
+ */
36
+ declare const createPlaceholderIWallet: (walletPubKey?: PublicKey) => IWalletV2;
37
+ export { createPlaceholderIWallet };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WalletConnectionState = exports.ConnectionStates = exports.ConnectionStateSteps = void 0;
3
+ exports.createPlaceholderIWallet = exports.WalletConnectionState = exports.ConnectionStates = exports.ConnectionStateSteps = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
4
5
  var ConnectionStateSteps;
5
6
  (function (ConnectionStateSteps) {
6
7
  ConnectionStateSteps[ConnectionStateSteps["NotConnected"] = 0] = "NotConnected";
@@ -80,4 +81,33 @@ class WalletConnectionState {
80
81
  }
81
82
  }
82
83
  exports.WalletConnectionState = WalletConnectionState;
83
- //# sourceMappingURL=WalletConnectionState.js.map
84
+ /**
85
+ * Creates an IWallet wrapper, with redundant methods. If a `walletPubKey` is passed in,
86
+ * the `publicKey` will be based on that.
87
+ */
88
+ const createPlaceholderIWallet = (walletPubKey) => {
89
+ const newKeypair = walletPubKey
90
+ ? new web3_js_1.Keypair({
91
+ publicKey: walletPubKey.toBytes(),
92
+ secretKey: new web3_js_1.Keypair().publicKey.toBytes(),
93
+ })
94
+ : new web3_js_1.Keypair();
95
+ const newWallet = {
96
+ publicKey: newKeypair.publicKey,
97
+ //@ts-ignore
98
+ signTransaction: () => {
99
+ return Promise.resolve();
100
+ },
101
+ //@ts-ignore
102
+ signAllTransactions: () => {
103
+ return Promise.resolve();
104
+ },
105
+ //@ts-ignore
106
+ signMessage: () => {
107
+ return Promise.resolve();
108
+ },
109
+ };
110
+ return newWallet;
111
+ };
112
+ exports.createPlaceholderIWallet = createPlaceholderIWallet;
113
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/utils/accounts/wallet.ts"],"names":[],"mappings":"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","sourcesContent":["import { IWalletV2, PublicKey } from '@drift-labs/sdk';\nimport { Keypair } from '@solana/web3.js';\n\nexport enum ConnectionStateSteps {\n\tNotConnected = 0,\n\tAdapterConnected = 1,\n\tClientConnected = 2,\n\tBalanceLoaded = 4,\n\tSubaccountsSubscribed = 8,\n}\n\nexport enum ConnectionStates {\n\tNotConnected = ConnectionStateSteps.NotConnected,\n\tAdapterConnected = ConnectionStateSteps.AdapterConnected,\n\tClientConnected = ConnectionStateSteps.ClientConnected,\n\tBalanceLoaded = ConnectionStateSteps.BalanceLoaded,\n\tSubaccountsSubscribed = ConnectionStateSteps.SubaccountsSubscribed,\n\tFullyConnected = ConnectionStateSteps.AdapterConnected +\n\t\tConnectionStateSteps.ClientConnected +\n\t\tConnectionStateSteps.BalanceLoaded +\n\t\tConnectionStateSteps.SubaccountsSubscribed,\n}\n\nexport type ConnectionStepString = keyof typeof ConnectionStateSteps;\n\nexport type ConnectionStateString = keyof typeof ConnectionStates;\n\nexport class WalletConnectionState {\n\tstate: number;\n\tauthority: PublicKey;\n\n\tconstructor(authority: PublicKey) {\n\t\tthis.state = ConnectionStates.NotConnected;\n\t\tthis.authority = authority;\n\t}\n\n\tis(stateQuery: ConnectionStateString) {\n\t\tswitch (stateQuery) {\n\t\t\tcase 'NotConnected':\n\t\t\t\treturn this.state === ConnectionStates.NotConnected;\n\t\t\tcase 'AdapterConnected':\n\t\t\t\treturn (\n\t\t\t\t\t(this.state & ConnectionStates.AdapterConnected) ===\n\t\t\t\t\tConnectionStates.AdapterConnected\n\t\t\t\t);\n\t\t\tcase 'ClientConnected':\n\t\t\t\treturn (\n\t\t\t\t\t(this.state & ConnectionStates.ClientConnected) ===\n\t\t\t\t\tConnectionStates.ClientConnected\n\t\t\t\t);\n\t\t\tcase 'BalanceLoaded':\n\t\t\t\treturn (\n\t\t\t\t\t(this.state & ConnectionStates.BalanceLoaded) ===\n\t\t\t\t\tConnectionStates.BalanceLoaded\n\t\t\t\t);\n\t\t\tcase 'FullyConnected':\n\t\t\t\treturn (\n\t\t\t\t\t(this.state & ConnectionStates.FullyConnected) ===\n\t\t\t\t\tConnectionStates.FullyConnected\n\t\t\t\t);\n\t\t\tcase 'SubaccountsSubscribed':\n\t\t\t\treturn (\n\t\t\t\t\t(this.state & ConnectionStates.SubaccountsSubscribed) ===\n\t\t\t\t\tConnectionStates.SubaccountsSubscribed\n\t\t\t\t);\n\t\t\tdefault: {\n\t\t\t\t// Throw a typescript error if we have an unhandled case\n\t\t\t\tconst nothing: never = stateQuery;\n\t\t\t\treturn nothing;\n\t\t\t}\n\t\t}\n\t}\n\n\tupdate(updateStep: ConnectionStepString, authorityGate?: PublicKey) {\n\t\t// Check that authorities match before updating state\n\t\tif (authorityGate && !this.authority.equals(authorityGate)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (updateStep === 'NotConnected') {\n\t\t\tthis.state = ConnectionStates.NotConnected;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state = this.state | ConnectionStateSteps[updateStep];\n\t}\n\n\tget NotConnected() {\n\t\treturn this.is('NotConnected');\n\t}\n\tget AdapterConnected() {\n\t\treturn this.is('AdapterConnected');\n\t}\n\tget ClientConnected() {\n\t\treturn this.is('ClientConnected');\n\t}\n\tget BalanceLoaded() {\n\t\treturn this.is('BalanceLoaded');\n\t}\n\tget FullyConnected() {\n\t\treturn this.is('FullyConnected');\n\t}\n\tget SubaccountsSubscribed() {\n\t\treturn this.is('SubaccountsSubscribed');\n\t}\n}\n\n/**\n * Creates an IWallet wrapper, with redundant methods. If a `walletPubKey` is passed in,\n * the `publicKey` will be based on that.\n */\nconst createPlaceholderIWallet = (walletPubKey?: PublicKey) => {\n\tconst newKeypair = walletPubKey\n\t\t? new Keypair({\n\t\t\t\tpublicKey: walletPubKey.toBytes(),\n\t\t\t\tsecretKey: new Keypair().publicKey.toBytes(),\n\t\t })\n\t\t: new Keypair();\n\n\tconst newWallet: IWalletV2 = {\n\t\tpublicKey: newKeypair.publicKey,\n\t\t//@ts-ignore\n\t\tsignTransaction: () => {\n\t\t\treturn Promise.resolve();\n\t\t},\n\t\t//@ts-ignore\n\t\tsignAllTransactions: () => {\n\t\t\treturn Promise.resolve();\n\t\t},\n\t\t//@ts-ignore\n\t\tsignMessage: () => {\n\t\t\treturn Promise.resolve();\n\t\t},\n\t};\n\n\treturn newWallet;\n};\n\nexport { createPlaceholderIWallet };\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const chunks: <T>(array: readonly T[], size: number) => T[][];
2
+ export declare const glueArray: <T>(size: number, elements: T[]) => T[][];
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.glueArray = exports.chunks = void 0;
4
+ const chunks = (array, size) => {
5
+ return new Array(Math.ceil(array.length / size))
6
+ .fill(null)
7
+ .map((_, index) => index * size)
8
+ .map((begin) => array.slice(begin, begin + size));
9
+ };
10
+ exports.chunks = chunks;
11
+ const glueArray = (size, elements) => {
12
+ const gluedElements = [];
13
+ elements.forEach((element, index) => {
14
+ const gluedIndex = Math.floor(index / size);
15
+ if (gluedElements[gluedIndex]) {
16
+ gluedElements[gluedIndex].push(element);
17
+ }
18
+ else {
19
+ gluedElements[gluedIndex] = [element];
20
+ }
21
+ });
22
+ return gluedElements;
23
+ };
24
+ exports.glueArray = glueArray;
25
+ //# sourceMappingURL=arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../src/utils/core/arrays.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAI,KAAmB,EAAE,IAAY,EAAS,EAAE;IACrE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;SAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AALW,QAAA,MAAM,UAKjB;AAEK,MAAM,SAAS,GAAG,CAAI,IAAY,EAAE,QAAa,EAAS,EAAE;IAClE,MAAM,aAAa,GAAU,EAAE,CAAC;IAEhC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC5C,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACP,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AAbW,QAAA,SAAS,aAapB","sourcesContent":["export const chunks = <T>(array: readonly T[], size: number): T[][] => {\n\treturn new Array(Math.ceil(array.length / size))\n\t\t.fill(null)\n\t\t.map((_, index) => index * size)\n\t\t.map((begin) => array.slice(begin, begin + size));\n};\n\nexport const glueArray = <T>(size: number, elements: T[]): T[][] => {\n\tconst gluedElements: T[][] = [];\n\n\telements.forEach((element, index) => {\n\t\tconst gluedIndex = Math.floor(index / size);\n\t\tif (gluedElements[gluedIndex]) {\n\t\t\tgluedElements[gluedIndex].push(element);\n\t\t} else {\n\t\t\tgluedElements[gluedIndex] = [element];\n\t\t}\n\t});\n\n\treturn gluedElements;\n};\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function sleep(ms: any): Promise<unknown>;
2
+ export declare const timedPromise: <T>(promise: T) => Promise<{
3
+ promiseTime: number;
4
+ promiseResult: Awaited<T>;
5
+ }>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.timedPromise = exports.sleep = void 0;
4
+ async function sleep(ms) {
5
+ return new Promise((resolve) => setTimeout(resolve, ms));
6
+ }
7
+ exports.sleep = sleep;
8
+ const timedPromise = async (promise) => {
9
+ const start = Date.now();
10
+ const promiseResult = await promise;
11
+ return {
12
+ promiseTime: Date.now() - start,
13
+ promiseResult,
14
+ };
15
+ };
16
+ exports.timedPromise = timedPromise;
17
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../../src/utils/core/async.ts"],"names":[],"mappings":";;;AAAO,KAAK,UAAU,KAAK,CAAC,EAAE;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,sBAEC;AAEM,MAAM,YAAY,GAAG,KAAK,EAAK,OAAU,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;IAEpC,OAAO;QACN,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;QAC/B,aAAa;KACb,CAAC;AACH,CAAC,CAAC;AARW,QAAA,YAAY,gBAQvB","sourcesContent":["export async function sleep(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport const timedPromise = async <T>(promise: T) => {\n\tconst start = Date.now();\n\tconst promiseResult = await promise;\n\n\treturn {\n\t\tpromiseTime: Date.now() - start,\n\t\tpromiseResult,\n\t};\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare function getCachedUiString(pattern: string, ...values: (string | number)[]): string;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCachedUiString = void 0;
4
+ // Cache for common UI string patterns to reduce memory allocation
5
+ const uiStringCache = new Map();
6
+ const MAX_UI_STRING_CACHE_SIZE = 2000;
7
+ // Helper function to cache common string patterns
8
+ function getCachedUiString(pattern, ...values) {
9
+ const cacheKey = `${pattern}:${values.join(':')}`;
10
+ if (uiStringCache.has(cacheKey)) {
11
+ return uiStringCache.get(cacheKey);
12
+ }
13
+ let result;
14
+ switch (pattern) {
15
+ case 'abbreviate': {
16
+ const [authString, length] = values;
17
+ result = `${authString.slice(0, length)}\u2026${authString.slice(-length)}`;
18
+ break;
19
+ }
20
+ case 'userKey': {
21
+ const [userId, authority] = values;
22
+ result = `${userId}_${authority}`;
23
+ break;
24
+ }
25
+ case 'marketKey': {
26
+ const [marketType, marketIndex] = values;
27
+ result = `${marketType}_${marketIndex}`;
28
+ break;
29
+ }
30
+ default:
31
+ result = values.join('_');
32
+ }
33
+ // Cache if not too large
34
+ if (uiStringCache.size < MAX_UI_STRING_CACHE_SIZE) {
35
+ uiStringCache.set(cacheKey, result);
36
+ }
37
+ return result;
38
+ }
39
+ exports.getCachedUiString = getCachedUiString;
40
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/utils/core/cache.ts"],"names":[],"mappings":";;;AAAA,kEAAkE;AAClE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAChD,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,kDAAkD;AAClD,SAAgB,iBAAiB,CAChC,OAAe,EACf,GAAG,MAA2B;IAE9B,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAElD,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACrC,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAA0B,CAAC;YACxD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,UAAU,CAAC,KAAK,CAC/D,CAAC,MAAM,CACP,EAAE,CAAC;YACJ,MAAM;QACP,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAA0B,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM;QACP,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,MAA0B,CAAC;YAC7D,MAAM,GAAG,GAAG,UAAU,IAAI,WAAW,EAAE,CAAC;YACxC,MAAM;QACP,CAAC;QACD;YACC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,yBAAyB;IACzB,IAAI,aAAa,CAAC,IAAI,GAAG,wBAAwB,EAAE,CAAC;QACnD,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAvCD,8CAuCC","sourcesContent":["// Cache for common UI string patterns to reduce memory allocation\nconst uiStringCache = new Map<string, string>();\nconst MAX_UI_STRING_CACHE_SIZE = 2000;\n\n// Helper function to cache common string patterns\nexport function getCachedUiString(\n\tpattern: string,\n\t...values: (string | number)[]\n): string {\n\tconst cacheKey = `${pattern}:${values.join(':')}`;\n\n\tif (uiStringCache.has(cacheKey)) {\n\t\treturn uiStringCache.get(cacheKey)!;\n\t}\n\n\tlet result: string;\n\tswitch (pattern) {\n\t\tcase 'abbreviate': {\n\t\t\tconst [authString, length] = values as [string, number];\n\t\t\tresult = `${authString.slice(0, length)}\\u2026${authString.slice(\n\t\t\t\t-length\n\t\t\t)}`;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'userKey': {\n\t\t\tconst [userId, authority] = values as [number, string];\n\t\t\tresult = `${userId}_${authority}`;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'marketKey': {\n\t\t\tconst [marketType, marketIndex] = values as [string, number];\n\t\t\tresult = `${marketType}_${marketIndex}`;\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tresult = values.join('_');\n\t}\n\n\t// Cache if not too large\n\tif (uiStringCache.size < MAX_UI_STRING_CACHE_SIZE) {\n\t\tuiStringCache.set(cacheKey, result);\n\t}\n\n\treturn result;\n}\n"]}
@@ -0,0 +1,30 @@
1
+ export declare class Ref<T> {
2
+ val: T;
3
+ constructor(val: T);
4
+ set(val: T): void;
5
+ get(): T;
6
+ }
7
+ export declare class Counter {
8
+ private val;
9
+ get(): number;
10
+ increment(value?: number): void;
11
+ reset(): void;
12
+ }
13
+ /**
14
+ * A class which allows a group of switches to seperately turn a multiswitch on or off. The base state is the state of the "multiswitch" when all of the constituent switches are off. When any of the switches are "on" then the multiswitch flips to the opposite state
15
+ *
16
+ * If baseState is on => any switch being "on" will turn the multiswitch off.
17
+ * If baseState is off => any switch being "off" will turn the multiswitch off.
18
+ */
19
+ export declare class MultiSwitch {
20
+ private baseState;
21
+ private switches;
22
+ private switchValue;
23
+ constructor(baseState?: 'on' | 'off');
24
+ private getSwitchKey;
25
+ switchOn(key: string): void;
26
+ switchOff(key: string): void;
27
+ private _switchOff;
28
+ private _switchOn;
29
+ get isOn(): boolean;
30
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiSwitch = exports.Counter = exports.Ref = void 0;
4
+ class Ref {
5
+ constructor(val) {
6
+ this.val = val;
7
+ }
8
+ set(val) {
9
+ this.val = val;
10
+ }
11
+ get() {
12
+ return this.val;
13
+ }
14
+ }
15
+ exports.Ref = Ref;
16
+ class Counter {
17
+ constructor() {
18
+ this.val = 0;
19
+ }
20
+ get() {
21
+ return this.val;
22
+ }
23
+ increment(value = 1) {
24
+ this.val += value;
25
+ }
26
+ reset() {
27
+ this.val = 0;
28
+ }
29
+ }
30
+ exports.Counter = Counter;
31
+ /**
32
+ * A class which allows a group of switches to seperately turn a multiswitch on or off. The base state is the state of the "multiswitch" when all of the constituent switches are off. When any of the switches are "on" then the multiswitch flips to the opposite state
33
+ *
34
+ * If baseState is on => any switch being "on" will turn the multiswitch off.
35
+ * If baseState is off => any switch being "off" will turn the multiswitch off.
36
+ */
37
+ class MultiSwitch {
38
+ constructor(baseState = 'off') {
39
+ this.baseState = baseState;
40
+ this.switches = [];
41
+ this.switchValue = 0;
42
+ }
43
+ getSwitchKey(key) {
44
+ // If first time using switch, add to list of switches
45
+ if (!this.switches.includes(key)) {
46
+ this.switches.push(key);
47
+ }
48
+ const switchIndex = this.switches.indexOf(key);
49
+ return 2 ** switchIndex;
50
+ }
51
+ switchOn(key) {
52
+ if (this.baseState === 'on') {
53
+ this._switchOff(key);
54
+ return;
55
+ }
56
+ this._switchOn(key);
57
+ }
58
+ switchOff(key) {
59
+ if (this.baseState === 'on') {
60
+ this._switchOn(key);
61
+ return;
62
+ }
63
+ this._switchOff(key);
64
+ }
65
+ _switchOff(key) {
66
+ const switchKey = this.getSwitchKey(key);
67
+ this.switchValue &= ~switchKey;
68
+ }
69
+ _switchOn(key) {
70
+ const switchKey = this.getSwitchKey(key);
71
+ this.switchValue |= switchKey;
72
+ }
73
+ get isOn() {
74
+ // When the base state is on, then if any switch is on the multi-switch is off
75
+ if (this.baseState === 'on') {
76
+ return this.switchValue === 0;
77
+ }
78
+ if (this.baseState === 'off') {
79
+ return this.switchValue > 0;
80
+ }
81
+ }
82
+ }
83
+ exports.MultiSwitch = MultiSwitch;
84
+ //# sourceMappingURL=data-structures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-structures.js","sourceRoot":"","sources":["../../../src/utils/core/data-structures.ts"],"names":[],"mappings":";;;AAAA,MAAa,GAAG;IAGf,YAAY,GAAM;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAM;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;CACD;AAdD,kBAcC;AAED,MAAa,OAAO;IAApB;QACS,QAAG,GAAG,CAAC,CAAC;IAajB,CAAC;IAXA,GAAG;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,KAAK,GAAG,CAAC;QAClB,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;IACnB,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACd,CAAC;CACD;AAdD,0BAcC;AAED;;;;;GAKG;AACH,MAAa,WAAW;IAIvB,YAAoB,YAA0B,KAAK;QAA/B,cAAS,GAAT,SAAS,CAAsB;QAH3C,aAAQ,GAAa,EAAE,CAAC;QACxB,gBAAW,GAAG,CAAC,CAAC;IAE8B,CAAC;IAE/C,YAAY,CAAC,GAAW;QAC/B,sDAAsD;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE/C,OAAO,CAAC,IAAI,WAAW,CAAC;IACzB,CAAC;IAEM,QAAQ,CAAC,GAAW;QAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAEM,SAAS,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAEO,UAAU,CAAC,GAAW;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC;IAChC,CAAC;IAEO,SAAS,CAAC,GAAW;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;IAC/B,CAAC;IAED,IAAW,IAAI;QACd,8EAA8E;QAC9E,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;CACD;AAvDD,kCAuDC","sourcesContent":["export class Ref<T> {\n\tpublic val: T;\n\n\tconstructor(val: T) {\n\t\tthis.val = val;\n\t}\n\n\tset(val: T) {\n\t\tthis.val = val;\n\t}\n\n\tget() {\n\t\treturn this.val;\n\t}\n}\n\nexport class Counter {\n\tprivate val = 0;\n\n\tget() {\n\t\treturn this.val;\n\t}\n\n\tincrement(value = 1) {\n\t\tthis.val += value;\n\t}\n\n\treset() {\n\t\tthis.val = 0;\n\t}\n}\n\n/**\n * A class which allows a group of switches to seperately turn a multiswitch on or off. The base state is the state of the \"multiswitch\" when all of the constituent switches are off. When any of the switches are \"on\" then the multiswitch flips to the opposite state\n *\n * If baseState is on => any switch being \"on\" will turn the multiswitch off.\n * If baseState is off => any switch being \"off\" will turn the multiswitch off.\n */\nexport class MultiSwitch {\n\tprivate switches: string[] = [];\n\tprivate switchValue = 0;\n\n\tconstructor(private baseState: 'on' | 'off' = 'off') {}\n\n\tprivate getSwitchKey(key: string) {\n\t\t// If first time using switch, add to list of switches\n\t\tif (!this.switches.includes(key)) {\n\t\t\tthis.switches.push(key);\n\t\t}\n\n\t\tconst switchIndex = this.switches.indexOf(key);\n\n\t\treturn 2 ** switchIndex;\n\t}\n\n\tpublic switchOn(key: string) {\n\t\tif (this.baseState === 'on') {\n\t\t\tthis._switchOff(key);\n\t\t\treturn;\n\t\t}\n\t\tthis._switchOn(key);\n\t}\n\n\tpublic switchOff(key: string) {\n\t\tif (this.baseState === 'on') {\n\t\t\tthis._switchOn(key);\n\t\t\treturn;\n\t\t}\n\t\tthis._switchOff(key);\n\t}\n\n\tprivate _switchOff(key: string) {\n\t\tconst switchKey = this.getSwitchKey(key);\n\n\t\tthis.switchValue &= ~switchKey;\n\t}\n\n\tprivate _switchOn(key: string) {\n\t\tconst switchKey = this.getSwitchKey(key);\n\n\t\tthis.switchValue |= switchKey;\n\t}\n\n\tpublic get isOn() {\n\t\t// When the base state is on, then if any switch is on the multi-switch is off\n\t\tif (this.baseState === 'on') {\n\t\t\treturn this.switchValue === 0;\n\t\t}\n\n\t\tif (this.baseState === 'off') {\n\t\t\treturn this.switchValue > 0;\n\t\t}\n\t}\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { OpenPosition } from '../types';
1
+ import { OpenPosition } from '../../types';
2
2
  export type PropertyType = 'primitive' | 'primitiveArray' | 'bn' | 'bignum' | 'programEnum' | 'custom';
3
3
  export type PropertyAndType<KeyOfObject> = [
4
4
  property: KeyOfObject,
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EQUALITY_CHECKS = void 0;
4
- const _1 = require(".");
4
+ const enum_1 = require("../enum");
5
5
  const arePropertiesEqual = (obj1, obj2, properties) => {
6
6
  return properties.every((property) => {
7
7
  var _a, _b, _c, _d;
@@ -21,7 +21,7 @@ const arePropertiesEqual = (obj1, obj2, properties) => {
21
21
  case 'bignum':
22
22
  return (_d = obj1[propertyName]) === null || _d === void 0 ? void 0 : _d.eq(obj2[propertyName]);
23
23
  case 'programEnum':
24
- return _1.ENUM_UTILS.match(obj1[propertyName], obj2[propertyName]);
24
+ return enum_1.ENUM_UTILS.match(obj1[propertyName], obj2[propertyName]);
25
25
  case 'custom':
26
26
  if (!customEqualityFn)
27
27
  throw new Error('You need to provide a custom equality function for this property');
@@ -67,4 +67,4 @@ exports.EQUALITY_CHECKS = {
67
67
  openPosition: areTwoOpenPositionsEqual,
68
68
  openPositionLists: areOpenPositionListsEqual,
69
69
  };
70
- //# sourceMappingURL=equalityChecks.js.map
70
+ //# sourceMappingURL=equality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equality.js","sourceRoot":"","sources":["../../../src/utils/core/equality.ts"],"names":[],"mappings":"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","sourcesContent":["import { ENUM_UTILS } from '../enum';\nimport { OpenPosition } from '../../types';\n\nexport type PropertyType =\n\t| 'primitive'\n\t| 'primitiveArray'\n\t| 'bn'\n\t| 'bignum'\n\t| 'programEnum'\n\t| 'custom';\nexport type PropertyAndType<KeyOfObject> = [\n\tproperty: KeyOfObject,\n\ttype: PropertyType,\n\tcustomEqualityFn?: (a: any, b: any) => boolean\n];\n\nconst arePropertiesEqual = (\n\tobj1: any,\n\tobj2: any,\n\tproperties: PropertyAndType<any>[]\n) => {\n\treturn properties.every((property) => {\n\t\tconst propertyName = property[0];\n\t\tconst propertyType = property[1];\n\t\tconst customEqualityFn = property[2];\n\n\t\tswitch (propertyType) {\n\t\t\tcase 'primitive':\n\t\t\t\treturn obj1[propertyName] === obj2[propertyName];\n\t\t\tcase 'primitiveArray':\n\t\t\t\treturn (\n\t\t\t\t\tobj1[propertyName]?.length === obj2[propertyName]?.length &&\n\t\t\t\t\tobj1[propertyName]?.every((value: any, index: number) => {\n\t\t\t\t\t\treturn value === obj2[propertyName]?.[index];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\tcase 'bn':\n\t\t\tcase 'bignum':\n\t\t\t\treturn obj1[propertyName]?.eq(obj2[propertyName]);\n\t\t\tcase 'programEnum':\n\t\t\t\treturn ENUM_UTILS.match(obj1[propertyName], obj2[propertyName]);\n\t\t\tcase 'custom':\n\t\t\t\tif (!customEqualityFn)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'You need to provide a custom equality function for this property'\n\t\t\t\t\t);\n\n\t\t\t\treturn customEqualityFn(obj1[propertyName], obj2[propertyName]);\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Invalid property type');\n\t\t}\n\t});\n};\n\nconst areTwoOpenPositionsEqual = (\n\topenPosition1: OpenPosition,\n\topenPosition2: OpenPosition\n) => {\n\tconst propertiesToCompare: PropertyAndType<keyof OpenPosition>[] = [\n\t\t['marketIndex', 'primitive'],\n\t\t['marketSymbol', 'primitive'],\n\t\t['direction', 'primitive'],\n\t\t['notional', 'bn'],\n\t\t['baseSize', 'bn'],\n\t\t['entryPrice', 'bn'],\n\t\t['exitPrice', 'bn'],\n\t\t['liqPrice', 'bn'],\n\t\t['pnlVsOracle', 'bn'],\n\t\t['pnlVsMark', 'bn'],\n\t\t['quoteAssetNotionalAmount', 'bn'],\n\t\t['quoteEntryAmount', 'bn'],\n\t\t['unrealizedFundingPnl', 'bn'],\n\t\t['lastCumulativeFundingRate', 'bn'],\n\t\t['openOrders', 'primitive'],\n\t\t['unsettledPnl', 'bn'],\n\t\t['unsettledFundingPnl', 'bn'],\n\t\t['totalUnrealizedPnl', 'bn'],\n\t\t['costBasis', 'bn'],\n\t\t['pnlIsClaimable', 'primitive'],\n\t\t['realizedPnl', 'bn'],\n\t];\n\n\treturn arePropertiesEqual(openPosition1, openPosition2, propertiesToCompare);\n};\n\nconst areOpenPositionListsEqual = (\n\topenPositions1: OpenPosition[],\n\topenPositions2: OpenPosition[]\n) => {\n\tif (openPositions1.length !== openPositions2.length) return false;\n\n\treturn openPositions1.every((openPosition, index) =>\n\t\tareTwoOpenPositionsEqual(openPosition, openPositions2[index])\n\t);\n};\n\nexport const EQUALITY_CHECKS = {\n\tarePropertiesEqual,\n\topenPosition: areTwoOpenPositionsEqual,\n\topenPositionLists: areOpenPositionListsEqual,\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/utils/core/fetch.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAAG,CAChC,MAA0C,EACjC,EAAE;IACX,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SAC3C,GAAG,CACH,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAChB,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,KAAM,CAAC,EAAE,CAC3D;SACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B","sourcesContent":["export const encodeQueryParams = (\n\tparams: Record<string, string | undefined>\n): string => {\n\treturn Object.entries(params)\n\t\t.filter(([_, value]) => value !== undefined)\n\t\t.map(\n\t\t\t([key, value]) =>\n\t\t\t\t`${encodeURIComponent(key)}=${encodeURIComponent(value!)}`\n\t\t)\n\t\t.join('&');\n};\n"]}
@@ -0,0 +1,7 @@
1
+ export * from './async';
2
+ export * from './arrays';
3
+ export * from './data-structures';
4
+ export * from './cache';
5
+ export * from './fetch';
6
+ export * from './serialization';
7
+ export * from './equality';
@@ -0,0 +1,24 @@
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("./async"), exports);
18
+ __exportStar(require("./arrays"), exports);
19
+ __exportStar(require("./data-structures"), exports);
20
+ __exportStar(require("./cache"), exports);
21
+ __exportStar(require("./fetch"), exports);
22
+ __exportStar(require("./serialization"), exports);
23
+ __exportStar(require("./equality"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,oDAAkC;AAClC,0CAAwB;AACxB,0CAAwB;AACxB,kDAAgC;AAChC,6CAA2B","sourcesContent":["export * from './async';\nexport * from './arrays';\nexport * from './data-structures';\nexport * from './cache';\nexport * from './fetch';\nexport * from './serialization';\nexport * from './equality';\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Converts an objects with potential Pubkeys and BNs in it into a form that can be JSON stringified. When pubkeys get converted a _pbky_ suffix will be added to their key, and _bgnm_ for BNs.
3
+ *
4
+ * e.g.
5
+ * input : {
6
+ * QuoteAmount: BN
7
+ * }
8
+ *
9
+ * output: {
10
+ * _bgnm_QuoteAmount: string
11
+ * }
12
+ * @param value
13
+ * @returns
14
+ */
15
+ export declare const encodeStringifiableObject: (value: any) => any;
16
+ /**
17
+ * Converts a parsed object with potential Pubkeys and BNs in it (in string form) to their proper form. Pubkey values must have a key starting in _pbky_ and BN values must have a key starting in _bnnm_
18
+ *
19
+ * * e.g.
20
+ * input : {
21
+ * _bgnm_QuoteAmount: string
22
+ * }
23
+ *
24
+ * output: {
25
+ * QuoteAmount: BN
26
+ * }
27
+ * @param value
28
+ * @returns
29
+ */
30
+ export declare const decodeStringifiableObject: (value: any) => any;