@yuants/vendor-aster 0.5.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/api/private-api.js +69 -0
  2. package/dist/api/private-api.js.map +1 -0
  3. package/dist/api/public-api.js +44 -0
  4. package/dist/api/public-api.js.map +1 -0
  5. package/dist/index.js +6 -8
  6. package/dist/index.js.map +1 -1
  7. package/dist/services/account-actions-with-credential.js +34 -0
  8. package/dist/services/account-actions-with-credential.js.map +1 -0
  9. package/dist/{account.js → services/accounts/perp.js} +5 -9
  10. package/dist/services/accounts/perp.js.map +1 -0
  11. package/dist/{account-spot.js → services/accounts/spot.js} +8 -9
  12. package/dist/services/accounts/spot.js.map +1 -0
  13. package/dist/services/legacy.js +69 -0
  14. package/dist/services/legacy.js.map +1 -0
  15. package/dist/{interest_rate.js → services/markets/interest_rate.js} +1 -1
  16. package/dist/services/markets/interest_rate.js.map +1 -0
  17. package/dist/{product.js → services/markets/product.js} +1 -1
  18. package/dist/services/markets/product.js.map +1 -0
  19. package/dist/{quote.js → services/markets/quote.js} +1 -1
  20. package/dist/services/markets/quote.js.map +1 -0
  21. package/dist/services/order-actions-with-credential.js +19 -0
  22. package/dist/services/order-actions-with-credential.js.map +1 -0
  23. package/dist/services/orders/cancelOrder.js +40 -0
  24. package/dist/services/orders/cancelOrder.js.map +1 -0
  25. package/dist/services/orders/listOrders.js +67 -0
  26. package/dist/services/orders/listOrders.js.map +1 -0
  27. package/dist/services/orders/submitOrder.js +101 -0
  28. package/dist/services/orders/submitOrder.js.map +1 -0
  29. package/dist/utils.js +1 -20
  30. package/dist/utils.js.map +1 -1
  31. package/lib/api/private-api.d.ts +192 -0
  32. package/lib/api/private-api.d.ts.map +1 -0
  33. package/lib/api/private-api.js +72 -0
  34. package/lib/api/private-api.js.map +1 -0
  35. package/lib/api/public-api.d.ts +59 -0
  36. package/lib/api/public-api.d.ts.map +1 -0
  37. package/lib/api/public-api.js +47 -0
  38. package/lib/api/public-api.js.map +1 -0
  39. package/lib/index.d.ts +6 -8
  40. package/lib/index.d.ts.map +1 -1
  41. package/lib/index.js +6 -8
  42. package/lib/index.js.map +1 -1
  43. package/lib/services/account-actions-with-credential.d.ts +2 -0
  44. package/lib/services/account-actions-with-credential.d.ts.map +1 -0
  45. package/lib/services/account-actions-with-credential.js +36 -0
  46. package/lib/services/account-actions-with-credential.js.map +1 -0
  47. package/lib/services/accounts/perp.d.ts +4 -0
  48. package/lib/services/accounts/perp.d.ts.map +1 -0
  49. package/lib/{account.js → services/accounts/perp.js} +7 -10
  50. package/lib/services/accounts/perp.js.map +1 -0
  51. package/lib/services/accounts/spot.d.ts +4 -0
  52. package/lib/services/accounts/spot.d.ts.map +1 -0
  53. package/lib/{account-spot.js → services/accounts/spot.js} +10 -10
  54. package/lib/services/accounts/spot.js.map +1 -0
  55. package/lib/services/legacy.d.ts +2 -0
  56. package/lib/services/legacy.d.ts.map +1 -0
  57. package/lib/services/legacy.js +71 -0
  58. package/lib/services/legacy.js.map +1 -0
  59. package/lib/services/markets/interest_rate.d.ts.map +1 -0
  60. package/lib/{interest_rate.js → services/markets/interest_rate.js} +2 -2
  61. package/lib/services/markets/interest_rate.js.map +1 -0
  62. package/lib/services/markets/product.d.ts.map +1 -0
  63. package/lib/{product.js → services/markets/product.js} +2 -2
  64. package/lib/services/markets/product.js.map +1 -0
  65. package/lib/{quote.d.ts.map → services/markets/quote.d.ts.map} +1 -1
  66. package/lib/{quote.js → services/markets/quote.js} +3 -3
  67. package/lib/services/markets/quote.js.map +1 -0
  68. package/lib/services/order-actions-with-credential.d.ts +2 -0
  69. package/lib/services/order-actions-with-credential.d.ts.map +1 -0
  70. package/lib/services/order-actions-with-credential.js +21 -0
  71. package/lib/services/order-actions-with-credential.js.map +1 -0
  72. package/lib/services/orders/cancelOrder.d.ts +4 -0
  73. package/lib/services/orders/cancelOrder.d.ts.map +1 -0
  74. package/lib/services/orders/cancelOrder.js +44 -0
  75. package/lib/services/orders/cancelOrder.js.map +1 -0
  76. package/lib/services/orders/listOrders.d.ts +4 -0
  77. package/lib/services/orders/listOrders.d.ts.map +1 -0
  78. package/lib/services/orders/listOrders.js +71 -0
  79. package/lib/services/orders/listOrders.js.map +1 -0
  80. package/lib/services/orders/submitOrder.d.ts +4 -0
  81. package/lib/services/orders/submitOrder.d.ts.map +1 -0
  82. package/lib/services/orders/submitOrder.js +105 -0
  83. package/lib/services/orders/submitOrder.js.map +1 -0
  84. package/lib/utils.d.ts +1 -2
  85. package/lib/utils.d.ts.map +1 -1
  86. package/lib/utils.js +3 -23
  87. package/lib/utils.js.map +1 -1
  88. package/package.json +3 -4
  89. package/temp/package-deps.json +22 -18
  90. package/dist/account-spot.js.map +0 -1
  91. package/dist/account.js.map +0 -1
  92. package/dist/api.js +0 -55
  93. package/dist/api.js.map +0 -1
  94. package/dist/cli.js +0 -3
  95. package/dist/cli.js.map +0 -1
  96. package/dist/interest_rate.js.map +0 -1
  97. package/dist/order-spot.js +0 -38
  98. package/dist/order-spot.js.map +0 -1
  99. package/dist/order.js +0 -70
  100. package/dist/order.js.map +0 -1
  101. package/dist/pending-orders.js +0 -43
  102. package/dist/pending-orders.js.map +0 -1
  103. package/dist/product.js.map +0 -1
  104. package/dist/quote.js.map +0 -1
  105. package/dist/sapi.js +0 -48
  106. package/dist/sapi.js.map +0 -1
  107. package/lib/account-spot.d.ts +0 -2
  108. package/lib/account-spot.d.ts.map +0 -1
  109. package/lib/account-spot.js.map +0 -1
  110. package/lib/account.d.ts +0 -2
  111. package/lib/account.d.ts.map +0 -1
  112. package/lib/account.js.map +0 -1
  113. package/lib/api.d.ts +0 -149
  114. package/lib/api.d.ts.map +0 -1
  115. package/lib/api.js +0 -58
  116. package/lib/api.js.map +0 -1
  117. package/lib/cli.d.ts +0 -3
  118. package/lib/cli.d.ts.map +0 -1
  119. package/lib/cli.js +0 -5
  120. package/lib/cli.js.map +0 -1
  121. package/lib/interest_rate.d.ts.map +0 -1
  122. package/lib/interest_rate.js.map +0 -1
  123. package/lib/order-spot.d.ts +0 -2
  124. package/lib/order-spot.d.ts.map +0 -1
  125. package/lib/order-spot.js +0 -40
  126. package/lib/order-spot.js.map +0 -1
  127. package/lib/order.d.ts +0 -2
  128. package/lib/order.d.ts.map +0 -1
  129. package/lib/order.js +0 -72
  130. package/lib/order.js.map +0 -1
  131. package/lib/pending-orders.d.ts +0 -2
  132. package/lib/pending-orders.d.ts.map +0 -1
  133. package/lib/pending-orders.js +0 -45
  134. package/lib/pending-orders.js.map +0 -1
  135. package/lib/product.d.ts.map +0 -1
  136. package/lib/product.js.map +0 -1
  137. package/lib/quote.js.map +0 -1
  138. package/lib/sapi.d.ts +0 -37
  139. package/lib/sapi.d.ts.map +0 -1
  140. package/lib/sapi.js +0 -51
  141. package/lib/sapi.js.map +0 -1
  142. /package/lib/{interest_rate.d.ts → services/markets/interest_rate.d.ts} +0 -0
  143. /package/lib/{product.d.ts → services/markets/product.d.ts} +0 -0
  144. /package/lib/{quote.d.ts → services/markets/quote.d.ts} +0 -0
package/lib/quote.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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","sourcesContent":["import { createCache } from '@yuants/cache';\nimport { Terminal } from '@yuants/protocol';\nimport { writeToSQL } from '@yuants/sql';\nimport { decodePath, encodePath } from '@yuants/utils';\nimport { defer, filter, from, map, mergeMap, repeat, retry, shareReplay } from 'rxjs';\nimport type { IQuote } from '../../../libraries/data-quote/lib';\nimport { getFApiV1OpenInterest, getFApiV1TickerPrice } from './api';\n\nconst terminal = Terminal.fromNodeEnv();\nconst OPEN_INTEREST_TTL = process.env.OPEN_INTEREST_TTL ? Number(process.env.OPEN_INTEREST_TTL) : 120_000;\n\nconst openInterestCache = createCache<string>(\n async (symbol: string) => {\n try {\n const data = await getFApiV1OpenInterest({ symbol });\n return data.openInterest;\n } catch (error) {\n console.warn('getFApiV1OpenInterest failed', symbol, error);\n return undefined;\n }\n },\n { expire: OPEN_INTEREST_TTL },\n);\n\nconst quote$ = defer(() => getFApiV1TickerPrice({})).pipe(\n mergeMap((tickers) => tickers || []),\n mergeMap(\n (ticker) =>\n from(openInterestCache.query(ticker.symbol)).pipe(\n map(\n (openInterest): Partial<IQuote> => ({\n datasource_id: 'ASTER',\n product_id: encodePath('PERPETUAL', ticker.symbol),\n last_price: `${ticker.price}`,\n bid_price: `${ticker.price}`,\n ask_price: `${ticker.price}`,\n open_interest: `${openInterest ?? 0}`,\n updated_at: new Date(ticker.time ?? Date.now()).toISOString(),\n }),\n ),\n ),\n 5,\n ),\n repeat({ delay: 1000 }),\n retry({ delay: 5000 }),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nif (process.env.WRITE_QUOTE_TO_SQL === 'true') {\n quote$\n .pipe(\n writeToSQL({\n terminal,\n tableName: 'quote',\n writeInterval: 1000,\n conflictKeys: ['datasource_id', 'product_id'],\n }),\n )\n .subscribe();\n\n terminal.channel.publishChannel('quote', { pattern: '^ASTER/' }, (channel_id) => {\n const [datasourceId, productId] = decodePath(channel_id);\n if (!datasourceId || !productId) {\n throw new Error(`Invalid channel_id: ${channel_id}`);\n }\n return quote$.pipe(filter((quote) => quote.product_id === productId));\n });\n}\n"]}
package/lib/sapi.d.ts DELETED
@@ -1,37 +0,0 @@
1
- /**
2
- * 获取账户信息 (现货)
3
- *
4
- * https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api_CN.md#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data
5
- */
6
- export declare const getApiV1Account: (params: {}) => Promise<{
7
- feeTier: number;
8
- canTrade: boolean;
9
- canDeposit: boolean;
10
- canWithdraw: boolean;
11
- canBurnAsset: boolean;
12
- updateTime: number;
13
- balances: {
14
- asset: string;
15
- free: string;
16
- locked: string;
17
- }[];
18
- }>;
19
- /**
20
- * 获取最新价格
21
- * https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api_CN.md#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC
22
- */
23
- export declare const getApiV1TickerPrice: (params: {}) => Promise<{
24
- symbol: string;
25
- price: string;
26
- time: number;
27
- }[]>;
28
- export declare const postApiV1Order: (params: {
29
- symbol: string;
30
- side: 'BUY' | 'SELL';
31
- type: 'MARKET' | 'LIMIT' | 'STOP' | 'STOP_MARKET' | 'TAKE_PROFIT' | 'TAKE_PROFIT_MARKET';
32
- timeInForce?: "GTC" | "IOC" | "FOK" | "GTX" | undefined;
33
- quantity?: number | undefined;
34
- quoteOrderQty?: number | undefined;
35
- price?: number | undefined;
36
- }) => Promise<{}>;
37
- //# sourceMappingURL=sapi.d.ts.map
package/lib/sapi.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sapi.d.ts","sourceRoot":"","sources":["../src/sapi.ts"],"names":[],"mappings":"AAyDA;;;;GAIG;AACH,eAAO,MAAM,eAAe;aAGf,MAAM;cACL,OAAO;gBACL,OAAO;iBACN,OAAO;kBACN,OAAO;gBACT,MAAM;cACR;QACR,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE;EAEiC,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,mBAAmB;YAGpB,MAAM;WACP,MAAM;UACP,MAAM;IAE+B,CAAC;AAEhD,eAAO,MAAM,cAAc;YAEf,MAAM;UACR,KAAK,GAAG,MAAM;UACd,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,oBAAoB;;;;;iBAOzD,CAAC"}
package/lib/sapi.js DELETED
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.postApiV1Order = exports.getApiV1TickerPrice = exports.getApiV1Account = void 0;
4
- const utils_1 = require("./utils");
5
- const API_KEY = process.env.API_KEY;
6
- const SECRET_KEY = process.env.SECRET_KEY;
7
- const BASE_URL = 'https://sapi.asterdex.com';
8
- const request = async (type, method, endpoint, params = {}) => {
9
- const needApiKey = type !== 'NONE';
10
- const needSign = type === 'TRADE' || type === 'USER_DATA';
11
- const url = new URL(BASE_URL);
12
- url.pathname = endpoint;
13
- for (const [key, value] of Object.entries(params)) {
14
- if (value === undefined)
15
- continue;
16
- url.searchParams.set(key, `${value}`);
17
- }
18
- if (needSign) {
19
- url.searchParams.set('timestamp', `${Date.now()}`);
20
- const msg = url.search.slice(1); // 去掉开头的 '?'
21
- const signature = await (0, utils_1.opensslEquivalentHMAC)(msg, SECRET_KEY);
22
- url.searchParams.set('signature', signature);
23
- }
24
- console.info(url.toString());
25
- const response = await fetch(url.toString(), {
26
- method,
27
- headers: needApiKey
28
- ? {
29
- 'X-MBX-APIKEY': API_KEY,
30
- }
31
- : {},
32
- }).then((response) => response.json());
33
- if (response.code && response.code !== 0) {
34
- throw JSON.stringify(response);
35
- }
36
- return response;
37
- };
38
- const createApi = (type, method, endpoint) => (params) => request(type, method, endpoint, params);
39
- /**
40
- * 获取账户信息 (现货)
41
- *
42
- * https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api_CN.md#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data
43
- */
44
- exports.getApiV1Account = createApi('USER_DATA', 'GET', '/api/v1/account');
45
- /**
46
- * 获取最新价格
47
- * https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api_CN.md#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC
48
- */
49
- exports.getApiV1TickerPrice = createApi('MARKET_DATA', 'GET', '/api/v1/ticker/price');
50
- exports.postApiV1Order = createApi('TRADE', 'POST', '/api/v1/order');
51
- //# sourceMappingURL=sapi.js.map
package/lib/sapi.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sapi.js","sourceRoot":"","sources":["../src/sapi.ts"],"names":[],"mappings":";;;AAAA,mCAAgD;AAEhD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAQ,CAAC;AACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAW,CAAC;AAE3C,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAE7C,MAAM,OAAO,GAAG,KAAK,EACnB,IAAoE,EACpE,MAAc,EACd,QAAgB,EAChB,SAAc,EAAE,EACJ,EAAE;IACd,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,CAAC;IAE1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;KACvC;IAED,IAAI,QAAQ,EAAE;QACZ,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAqB,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;KAC9C;IAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE7B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC3C,MAAM;QACN,OAAO,EAAE,UAAU;YACjB,CAAC,CAAC;gBACE,cAAc,EAAE,OAAO;aACxB;YACH,CAAC,CAAC,EAAE;KACP,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAS,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;QACxC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAChC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,SAAS,GACb,CACE,IAAoE,EACpE,MAAc,EACd,QAAgB,EAChB,EAAE,CACJ,CAAC,MAAY,EAAE,EAAE,CACf,OAAO,CAAO,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAElD;;;;GAIG;AACU,QAAA,eAAe,GAAG,SAAS,CAetC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAEzC;;;GAGG;AACU,QAAA,mBAAmB,GAAG,SAAS,CAO1C,aAAa,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;AAEnC,QAAA,cAAc,GAAG,SAAS,CAWrC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { opensslEquivalentHMAC } from './utils';\n\nconst API_KEY = process.env.API_KEY!;\nconst SECRET_KEY = process.env.SECRET_KEY!;\n\nconst BASE_URL = 'https://sapi.asterdex.com';\n\nconst request = async <T>(\n type: 'NONE' | 'TRADE' | 'USER_DATA' | 'USER_STREAM' | 'MARKET_DATA',\n method: string,\n endpoint: string,\n params: any = {},\n): Promise<T> => {\n const needApiKey = type !== 'NONE';\n const needSign = type === 'TRADE' || type === 'USER_DATA';\n\n const url = new URL(BASE_URL);\n url.pathname = endpoint;\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n url.searchParams.set(key, `${value}`);\n }\n\n if (needSign) {\n url.searchParams.set('timestamp', `${Date.now()}`);\n const msg = url.search.slice(1); // 去掉开头的 '?'\n const signature = await opensslEquivalentHMAC(msg, SECRET_KEY);\n url.searchParams.set('signature', signature);\n }\n\n console.info(url.toString());\n\n const response = await fetch(url.toString(), {\n method,\n headers: needApiKey\n ? {\n 'X-MBX-APIKEY': API_KEY,\n }\n : {},\n }).then((response) => response.json() as any);\n\n if (response.code && response.code !== 0) {\n throw JSON.stringify(response);\n }\n\n return response;\n};\n\nconst createApi =\n <TReq, TRes>(\n type: 'NONE' | 'TRADE' | 'USER_DATA' | 'USER_STREAM' | 'MARKET_DATA',\n method: string,\n endpoint: string,\n ) =>\n (params: TReq) =>\n request<TRes>(type, method, endpoint, params);\n\n/**\n * 获取账户信息 (现货)\n *\n * https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api_CN.md#%E8%B4%A6%E6%88%B7%E4%BF%A1%E6%81%AF-user_data\n */\nexport const getApiV1Account = createApi<\n {},\n {\n feeTier: number;\n canTrade: boolean;\n canDeposit: boolean;\n canWithdraw: boolean;\n canBurnAsset: boolean;\n updateTime: number;\n balances: {\n asset: string;\n free: string;\n locked: string;\n }[];\n }\n>('USER_DATA', 'GET', '/api/v1/account');\n\n/**\n * 获取最新价格\n * https://github.com/asterdex/api-docs/blob/master/aster-finance-spot-api_CN.md#%E6%9C%80%E6%96%B0%E4%BB%B7%E6%A0%BC\n */\nexport const getApiV1TickerPrice = createApi<\n {},\n {\n symbol: string;\n price: string;\n time: number;\n }[]\n>('MARKET_DATA', 'GET', '/api/v1/ticker/price');\n\nexport const postApiV1Order = createApi<\n {\n symbol: string;\n side: 'BUY' | 'SELL';\n type: 'MARKET' | 'LIMIT' | 'STOP' | 'STOP_MARKET' | 'TAKE_PROFIT' | 'TAKE_PROFIT_MARKET';\n timeInForce?: 'GTC' | 'IOC' | 'FOK' | 'GTX';\n quantity?: number;\n quoteOrderQty?: number;\n price?: number;\n },\n {}\n>('TRADE', 'POST', '/api/v1/order');\n"]}
File without changes