@yuants/vendor-gate 0.4.0 → 0.4.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 (120) hide show
  1. package/dist/api/http-client.js +89 -0
  2. package/dist/api/http-client.js.map +1 -0
  3. package/dist/api/private-api.js +108 -0
  4. package/dist/api/private-api.js.map +1 -0
  5. package/dist/api/public-api.js +37 -0
  6. package/dist/api/public-api.js.map +1 -0
  7. package/dist/api/rate-limiter.js +60 -0
  8. package/dist/api/rate-limiter.js.map +1 -0
  9. package/dist/index.js +7 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/services/account-actions-with-credential.js +37 -0
  12. package/dist/services/account-actions-with-credential.js.map +1 -0
  13. package/dist/services/accounts/future.js +56 -0
  14. package/dist/services/accounts/future.js.map +1 -0
  15. package/dist/services/accounts/profile.js +25 -0
  16. package/dist/services/accounts/profile.js.map +1 -0
  17. package/dist/services/accounts/spot.js +19 -0
  18. package/dist/services/accounts/spot.js.map +1 -0
  19. package/dist/services/accounts/unified.js +50 -0
  20. package/dist/services/accounts/unified.js.map +1 -0
  21. package/dist/services/default-credential.js +15 -0
  22. package/dist/services/default-credential.js.map +1 -0
  23. package/dist/services/legacy.js +53 -0
  24. package/dist/services/legacy.js.map +1 -0
  25. package/dist/services/markets/interest-rate.js +30 -0
  26. package/dist/services/markets/interest-rate.js.map +1 -0
  27. package/dist/services/markets/product.js +38 -0
  28. package/dist/services/markets/product.js.map +1 -0
  29. package/dist/services/order-actions-with-credential.js +18 -0
  30. package/dist/services/order-actions-with-credential.js.map +1 -0
  31. package/dist/services/orders/cancelOrder.js +8 -0
  32. package/dist/services/orders/cancelOrder.js.map +1 -0
  33. package/dist/services/orders/listOrders.js +31 -0
  34. package/dist/services/orders/listOrders.js.map +1 -0
  35. package/dist/services/orders/submitOrder.js +50 -0
  36. package/dist/services/orders/submitOrder.js.map +1 -0
  37. package/dist/services/transfer.js +107 -0
  38. package/dist/services/transfer.js.map +1 -0
  39. package/dist/vendor-gate.d.ts +1 -0
  40. package/lib/api/http-client.d.ts +9 -0
  41. package/lib/api/http-client.d.ts.map +1 -0
  42. package/lib/api/http-client.js +97 -0
  43. package/lib/api/http-client.js.map +1 -0
  44. package/lib/api/private-api.d.ts +343 -0
  45. package/lib/api/private-api.d.ts.map +1 -0
  46. package/lib/api/private-api.js +126 -0
  47. package/lib/api/private-api.js.map +1 -0
  48. package/lib/api/public-api.d.ts +149 -0
  49. package/lib/api/public-api.d.ts.map +1 -0
  50. package/lib/api/public-api.js +45 -0
  51. package/lib/api/public-api.js.map +1 -0
  52. package/lib/api/rate-limiter.d.ts +8 -0
  53. package/lib/api/rate-limiter.d.ts.map +1 -0
  54. package/lib/api/rate-limiter.js +64 -0
  55. package/lib/api/rate-limiter.js.map +1 -0
  56. package/lib/index.d.ts +7 -0
  57. package/lib/index.d.ts.map +1 -0
  58. package/lib/index.js +9 -0
  59. package/lib/index.js.map +1 -0
  60. package/lib/services/account-actions-with-credential.d.ts +2 -0
  61. package/lib/services/account-actions-with-credential.d.ts.map +1 -0
  62. package/lib/services/account-actions-with-credential.js +39 -0
  63. package/lib/services/account-actions-with-credential.js.map +1 -0
  64. package/lib/services/accounts/future.d.ts +13 -0
  65. package/lib/services/accounts/future.d.ts.map +1 -0
  66. package/lib/services/accounts/future.js +61 -0
  67. package/lib/services/accounts/future.js.map +1 -0
  68. package/lib/services/accounts/profile.d.ts +10 -0
  69. package/lib/services/accounts/profile.d.ts.map +1 -0
  70. package/lib/services/accounts/profile.js +29 -0
  71. package/lib/services/accounts/profile.js.map +1 -0
  72. package/lib/services/accounts/spot.d.ts +11 -0
  73. package/lib/services/accounts/spot.d.ts.map +1 -0
  74. package/lib/services/accounts/spot.js +23 -0
  75. package/lib/services/accounts/spot.js.map +1 -0
  76. package/lib/services/accounts/unified.d.ts +12 -0
  77. package/lib/services/accounts/unified.d.ts.map +1 -0
  78. package/lib/services/accounts/unified.js +54 -0
  79. package/lib/services/accounts/unified.js.map +1 -0
  80. package/lib/services/default-credential.d.ts +3 -0
  81. package/lib/services/default-credential.d.ts.map +1 -0
  82. package/lib/services/default-credential.js +19 -0
  83. package/lib/services/default-credential.js.map +1 -0
  84. package/lib/services/legacy.d.ts +2 -0
  85. package/lib/services/legacy.d.ts.map +1 -0
  86. package/lib/services/legacy.js +55 -0
  87. package/lib/services/legacy.js.map +1 -0
  88. package/lib/services/markets/interest-rate.d.ts +2 -0
  89. package/lib/services/markets/interest-rate.d.ts.map +1 -0
  90. package/lib/services/markets/interest-rate.js +32 -0
  91. package/lib/services/markets/interest-rate.js.map +1 -0
  92. package/lib/services/markets/product.d.ts +3 -0
  93. package/lib/services/markets/product.d.ts.map +1 -0
  94. package/lib/services/markets/product.js +41 -0
  95. package/lib/services/markets/product.js.map +1 -0
  96. package/lib/services/order-actions-with-credential.d.ts +2 -0
  97. package/lib/services/order-actions-with-credential.d.ts.map +1 -0
  98. package/lib/services/order-actions-with-credential.js +20 -0
  99. package/lib/services/order-actions-with-credential.js.map +1 -0
  100. package/lib/services/orders/cancelOrder.d.ts +4 -0
  101. package/lib/services/orders/cancelOrder.d.ts.map +1 -0
  102. package/lib/services/orders/cancelOrder.js +12 -0
  103. package/lib/services/orders/cancelOrder.js.map +1 -0
  104. package/lib/services/orders/listOrders.d.ts +4 -0
  105. package/lib/services/orders/listOrders.d.ts.map +1 -0
  106. package/lib/services/orders/listOrders.js +35 -0
  107. package/lib/services/orders/listOrders.js.map +1 -0
  108. package/lib/services/orders/submitOrder.d.ts +4 -0
  109. package/lib/services/orders/submitOrder.d.ts.map +1 -0
  110. package/lib/services/orders/submitOrder.js +54 -0
  111. package/lib/services/orders/submitOrder.js.map +1 -0
  112. package/lib/services/transfer.d.ts +2 -0
  113. package/lib/services/transfer.d.ts.map +1 -0
  114. package/lib/services/transfer.js +109 -0
  115. package/lib/services/transfer.js.map +1 -0
  116. package/lib/tsdoc-metadata.json +11 -0
  117. package/package.json +5 -9
  118. package/temp/package-deps.json +46 -0
  119. package/temp/vendor-gate.api.json +177 -0
  120. package/temp/vendor-gate.api.md +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../src/services/legacy.ts"],"names":[],"mappings":"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","sourcesContent":["import { addAccountMarket, provideAccountInfoService } from '@yuants/data-account';\nimport { IOrder, providePendingOrdersService } from '@yuants/data-order';\nimport { Terminal } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\nimport { resolveAccountProfile } from './accounts/profile';\nimport { getFutureAccountInfo } from './accounts/future';\nimport { getUnifiedAccountInfo } from './accounts/unified';\nimport { getSpotAccountInfo } from './accounts/spot';\nimport { listOrders } from './orders/listOrders';\nimport { submitOrder } from './orders/submitOrder';\nimport { cancelOrder } from './orders/cancelOrder';\nimport { getDefaultCredential } from './default-credential';\n\nconst credential = getDefaultCredential();\n\nif (credential) {\n (async () => {\n const terminal = Terminal.fromNodeEnv();\n const accountIds = await resolveAccountProfile(credential);\n\n provideAccountInfoService(\n terminal,\n accountIds.future,\n () => getFutureAccountInfo(credential, accountIds.future),\n { auto_refresh_interval: 1000 },\n );\n addAccountMarket(terminal, { account_id: accountIds.future, market_id: 'GATE/USDT-FUTURE' });\n\n provideAccountInfoService(\n terminal,\n accountIds.unified,\n () => getUnifiedAccountInfo(credential, accountIds.unified),\n { auto_refresh_interval: 1000 },\n );\n addAccountMarket(terminal, { account_id: accountIds.unified, market_id: 'GATE/UNIFIED' });\n\n provideAccountInfoService(\n terminal,\n accountIds.spot,\n () => getSpotAccountInfo(credential, accountIds.spot),\n { auto_refresh_interval: 1000 },\n );\n addAccountMarket(terminal, { account_id: accountIds.spot, market_id: 'GATE/SPOT' });\n\n providePendingOrdersService(\n terminal,\n accountIds.future,\n () => listOrders(credential, accountIds.future),\n { auto_refresh_interval: 2000 },\n );\n\n terminal.server.provideService<IOrder, { order_id: string }>(\n 'SubmitOrder',\n {\n required: ['account_id'],\n properties: { account_id: { const: accountIds.future } },\n },\n async (msg) => {\n try {\n const data = await submitOrder(credential, msg.req);\n return { res: { code: 0, message: 'OK', data } };\n } catch (error) {\n return { res: { code: 500, message: `${error}` } };\n }\n },\n );\n\n terminal.server.provideService<IOrder>(\n 'CancelOrder',\n {\n required: ['account_id'],\n properties: { account_id: { const: accountIds.future } },\n },\n async (msg) => {\n try {\n await cancelOrder(credential, msg.req);\n return { res: { code: 0, message: 'OK' } };\n } catch (error) {\n return { res: { code: 500, message: `${error}` } };\n }\n },\n );\n })().catch((error) => {\n console.error(formatTime(Date.now()), 'GateLegacyInitFailed', error);\n });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interest-rate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interest-rate.d.ts","sourceRoot":"","sources":["../../../src/services/markets/interest-rate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const data_series_1 = require("@yuants/data-series");
4
+ const protocol_1 = require("@yuants/protocol");
5
+ const utils_1 = require("@yuants/utils");
6
+ const public_api_1 = require("../../api/public-api");
7
+ const terminal = protocol_1.Terminal.fromNodeEnv();
8
+ (0, data_series_1.createSeriesProvider)(terminal, {
9
+ tableName: 'interest_rate',
10
+ series_id_prefix_parts: ['GATE-FUTURE'],
11
+ reversed: false,
12
+ queryFn: async ({ series_id }) => {
13
+ const [, product_id] = (0, utils_1.decodePath)(series_id);
14
+ if (!product_id) {
15
+ return [];
16
+ }
17
+ const funding_rate_history = await (0, public_api_1.getFutureFundingRate)('usdt', {
18
+ contract: product_id,
19
+ limit: 1000,
20
+ });
21
+ return funding_rate_history.map((entry) => ({
22
+ series_id,
23
+ product_id,
24
+ datasource_id: 'GATE-FUTURE',
25
+ created_at: (0, utils_1.formatTime)(entry.t * 1000),
26
+ long_rate: `${-Number(entry.r)}`,
27
+ short_rate: `${Number(entry.r)}`,
28
+ settlement_price: '',
29
+ }));
30
+ },
31
+ });
32
+ //# sourceMappingURL=interest-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interest-rate.js","sourceRoot":"","sources":["../../../src/services/markets/interest-rate.ts"],"names":[],"mappings":";;AACA,qDAA2D;AAC3D,+CAA4C;AAC5C,yCAAuD;AACvD,qDAA4D;AAE5D,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;AAExC,IAAA,kCAAoB,EAAgB,QAAQ,EAAE;IAC5C,SAAS,EAAE,eAAe;IAC1B,sBAAsB,EAAE,CAAC,aAAa,CAAC;IACvC,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/B,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,IAAA,kBAAU,EAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,EAAE,CAAC;SACX;QACD,MAAM,oBAAoB,GAAG,MAAM,IAAA,iCAAoB,EAAC,MAAM,EAAE;YAC9D,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,OAAO,oBAAoB,CAAC,GAAG,CAC7B,CAAC,KAAK,EAAiB,EAAE,CAAC,CAAC;YACzB,SAAS;YACT,UAAU;YACV,aAAa,EAAE,aAAa;YAC5B,UAAU,EAAE,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;YACtC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAChC,UAAU,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAChC,gBAAgB,EAAE,EAAE;SACrB,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { IInterestRate } from '@yuants/data-interest-rate';\nimport { createSeriesProvider } from '@yuants/data-series';\nimport { Terminal } from '@yuants/protocol';\nimport { decodePath, formatTime } from '@yuants/utils';\nimport { getFutureFundingRate } from '../../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\ncreateSeriesProvider<IInterestRate>(terminal, {\n tableName: 'interest_rate',\n series_id_prefix_parts: ['GATE-FUTURE'],\n reversed: false,\n queryFn: async ({ series_id }) => {\n const [, product_id] = decodePath(series_id);\n if (!product_id) {\n return [];\n }\n const funding_rate_history = await getFutureFundingRate('usdt', {\n contract: product_id,\n limit: 1000,\n });\n\n return funding_rate_history.map(\n (entry): IInterestRate => ({\n series_id,\n product_id,\n datasource_id: 'GATE-FUTURE',\n created_at: formatTime(entry.t * 1000),\n long_rate: `${-Number(entry.r)}`,\n short_rate: `${Number(entry.r)}`,\n settlement_price: '',\n }),\n );\n },\n});\n"]}
@@ -0,0 +1,3 @@
1
+ import { IProduct } from '@yuants/data-product';
2
+ export declare const mapProductIdToUsdtFutureProduct$: import("rxjs").Observable<Map<string, IProduct>>;
3
+ //# sourceMappingURL=product.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../../src/services/markets/product.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA+ChD,eAAO,MAAM,gCAAgC,kDAG5C,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapProductIdToUsdtFutureProduct$ = void 0;
4
+ const protocol_1 = require("@yuants/protocol");
5
+ const sql_1 = require("@yuants/sql");
6
+ const rxjs_1 = require("rxjs");
7
+ const public_api_1 = require("../../api/public-api");
8
+ const terminal = protocol_1.Terminal.fromNodeEnv();
9
+ const product$ = new rxjs_1.Subject();
10
+ const usdtFutureProducts$ = (0, rxjs_1.defer)(() => (0, public_api_1.getFuturesContracts)('usdt', {})).pipe((0, rxjs_1.mergeMap)((contracts) => (0, rxjs_1.from)(contracts).pipe((0, rxjs_1.map)((contract) => {
11
+ const [base, quote] = contract.name.split('_');
12
+ return {
13
+ datasource_id: 'GATE-FUTURE',
14
+ product_id: contract.name,
15
+ base_currency: base,
16
+ quote_currency: quote,
17
+ value_scale: Number(contract.quanto_multiplier),
18
+ price_step: Number(contract.order_price_round),
19
+ volume_step: 1,
20
+ name: '',
21
+ value_scale_unit: '',
22
+ margin_rate: 0,
23
+ value_based_cost: 0,
24
+ volume_based_cost: 0,
25
+ max_position: 0,
26
+ max_volume: 0,
27
+ allow_long: true,
28
+ allow_short: true,
29
+ market_id: 'GATE/USDT-FUTURE',
30
+ no_interest_rate: false,
31
+ };
32
+ }), (0, rxjs_1.tap)((item) => product$.next(item)), (0, rxjs_1.toArray)())), (0, rxjs_1.repeat)({ delay: 3600000 }), (0, rxjs_1.retry)({ delay: 60000 }), (0, rxjs_1.shareReplay)(1));
33
+ usdtFutureProducts$.subscribe();
34
+ exports.mapProductIdToUsdtFutureProduct$ = usdtFutureProducts$.pipe((0, rxjs_1.map)((items) => new Map(items.map((item) => [item.product_id, item]))), (0, rxjs_1.shareReplay)(1));
35
+ (0, sql_1.createSQLWriter)(terminal, {
36
+ data$: product$,
37
+ tableName: 'product',
38
+ conflictKeys: ['datasource_id', 'product_id'],
39
+ writeInterval: 1000,
40
+ });
41
+ //# sourceMappingURL=product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../../src/services/markets/product.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAC5C,qCAA8C;AAC9C,+BAAqG;AACrG,qDAA2D;AAE3D,MAAM,QAAQ,GAAG,mBAAQ,CAAC,WAAW,EAAE,CAAC;AAExC,MAAM,QAAQ,GAAG,IAAI,cAAO,EAAY,CAAC;AAEzC,MAAM,mBAAmB,GAAG,IAAA,YAAK,EAAC,GAAG,EAAE,CAAC,IAAA,gCAAmB,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3E,IAAA,eAAQ,EAAC,CAAC,SAAS,EAAE,EAAE,CACrB,IAAA,WAAI,EAAC,SAAS,CAAC,CAAC,IAAI,CAClB,IAAA,UAAG,EAAC,CAAC,QAAQ,EAAY,EAAE;IACzB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO;QACL,aAAa,EAAE,aAAa;QAC5B,UAAU,EAAE,QAAQ,CAAC,IAAI;QACzB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,KAAK;QACrB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9C,WAAW,EAAE,CAAC;QACd,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,CAAC;QACd,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,kBAAkB;QAC7B,gBAAgB,EAAE,KAAK;KACxB,CAAC;AACJ,CAAC,CAAC,EACF,IAAA,UAAG,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAClC,IAAA,cAAO,GAAE,CACV,CACF,EACD,IAAA,aAAM,EAAC,EAAE,KAAK,EAAE,OAAS,EAAE,CAAC,EAC5B,IAAA,YAAK,EAAC,EAAE,KAAK,EAAE,KAAM,EAAE,CAAC,EACxB,IAAA,kBAAW,EAAC,CAAC,CAAC,CACf,CAAC;AAEF,mBAAmB,CAAC,SAAS,EAAE,CAAC;AAEnB,QAAA,gCAAgC,GAAG,mBAAmB,CAAC,IAAI,CACtE,IAAA,UAAG,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EACrE,IAAA,kBAAW,EAAC,CAAC,CAAC,CACf,CAAC;AAEF,IAAA,qBAAe,EAAC,QAAQ,EAAE;IACxB,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;IAC7C,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC","sourcesContent":["import { IProduct } from '@yuants/data-product';\nimport { Terminal } from '@yuants/protocol';\nimport { createSQLWriter } from '@yuants/sql';\nimport { defer, from, map, mergeMap, repeat, retry, shareReplay, Subject, tap, toArray } from 'rxjs';\nimport { getFuturesContracts } from '../../api/public-api';\n\nconst terminal = Terminal.fromNodeEnv();\n\nconst product$ = new Subject<IProduct>();\n\nconst usdtFutureProducts$ = defer(() => getFuturesContracts('usdt', {})).pipe(\n mergeMap((contracts) =>\n from(contracts).pipe(\n map((contract): IProduct => {\n const [base, quote] = contract.name.split('_');\n return {\n datasource_id: 'GATE-FUTURE',\n product_id: contract.name,\n base_currency: base,\n quote_currency: quote,\n value_scale: Number(contract.quanto_multiplier),\n price_step: Number(contract.order_price_round),\n volume_step: 1,\n name: '',\n value_scale_unit: '',\n margin_rate: 0,\n value_based_cost: 0,\n volume_based_cost: 0,\n max_position: 0,\n max_volume: 0,\n allow_long: true,\n allow_short: true,\n market_id: 'GATE/USDT-FUTURE',\n no_interest_rate: false,\n };\n }),\n tap((item) => product$.next(item)),\n toArray(),\n ),\n ),\n repeat({ delay: 3_600_000 }),\n retry({ delay: 60_000 }),\n shareReplay(1),\n);\n\nusdtFutureProducts$.subscribe();\n\nexport const mapProductIdToUsdtFutureProduct$ = usdtFutureProducts$.pipe(\n map((items) => new Map(items.map((item) => [item.product_id, item]))),\n shareReplay(1),\n);\n\ncreateSQLWriter(terminal, {\n data$: product$,\n tableName: 'product',\n conflictKeys: ['datasource_id', 'product_id'],\n writeInterval: 1000,\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=order-actions-with-credential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-actions-with-credential.d.ts","sourceRoot":"","sources":["../../src/services/order-actions-with-credential.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const data_order_1 = require("@yuants/data-order");
4
+ const protocol_1 = require("@yuants/protocol");
5
+ const cancelOrder_1 = require("./orders/cancelOrder");
6
+ const submitOrder_1 = require("./orders/submitOrder");
7
+ const listOrders_1 = require("./orders/listOrders");
8
+ (0, data_order_1.provideOrderActionsWithCredential)(protocol_1.Terminal.fromNodeEnv(), 'GATE', {
9
+ type: 'object',
10
+ required: ['access_key', 'secret_key'],
11
+ properties: {
12
+ access_key: { type: 'string' },
13
+ secret_key: { type: 'string' },
14
+ },
15
+ }, {
16
+ submitOrder: submitOrder_1.submitOrder,
17
+ cancelOrder: cancelOrder_1.cancelOrder,
18
+ listOrders: listOrders_1.listOrders,
19
+ });
20
+ //# sourceMappingURL=order-actions-with-credential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-actions-with-credential.js","sourceRoot":"","sources":["../../src/services/order-actions-with-credential.ts"],"names":[],"mappings":";;AAAA,mDAAuE;AACvE,+CAA4C;AAC5C,sDAAmD;AACnD,sDAAmD;AACnD,oDAAiD;AAGjD,IAAA,8CAAiC,EAC/B,mBAAQ,CAAC,WAAW,EAAE,EACtB,MAAM,EACN;IACE,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACtC,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC/B;CACF,EACD;IACE,WAAW,EAAX,yBAAW;IACX,WAAW,EAAX,yBAAW;IACX,UAAU,EAAV,uBAAU;CACX,CACF,CAAC","sourcesContent":["import { provideOrderActionsWithCredential } from '@yuants/data-order';\nimport { Terminal } from '@yuants/protocol';\nimport { cancelOrder } from './orders/cancelOrder';\nimport { submitOrder } from './orders/submitOrder';\nimport { listOrders } from './orders/listOrders';\nimport { ICredential } from '../api/private-api';\n\nprovideOrderActionsWithCredential<ICredential>(\n Terminal.fromNodeEnv(),\n 'GATE',\n {\n type: 'object',\n required: ['access_key', 'secret_key'],\n properties: {\n access_key: { type: 'string' },\n secret_key: { type: 'string' },\n },\n },\n {\n submitOrder,\n cancelOrder,\n listOrders,\n },\n);\n"]}
@@ -0,0 +1,4 @@
1
+ import { IActionHandlerOfCancelOrder } from '@yuants/data-order';
2
+ import { ICredential } from '../../api/private-api';
3
+ export declare const cancelOrder: IActionHandlerOfCancelOrder<ICredential>;
4
+ //# sourceMappingURL=cancelOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelOrder.d.ts","sourceRoot":"","sources":["../../../src/services/orders/cancelOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAsB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAExE,eAAO,MAAM,WAAW,EAAE,2BAA2B,CAAC,WAAW,CAKhE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cancelOrder = void 0;
4
+ const private_api_1 = require("../../api/private-api");
5
+ const cancelOrder = async (credential, order) => {
6
+ if (!order.order_id) {
7
+ throw new Error('Missing order_id');
8
+ }
9
+ await (0, private_api_1.deleteFutureOrders)(credential, 'usdt', order.order_id);
10
+ };
11
+ exports.cancelOrder = cancelOrder;
12
+ //# sourceMappingURL=cancelOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancelOrder.js","sourceRoot":"","sources":["../../../src/services/orders/cancelOrder.ts"],"names":[],"mappings":";;;AACA,uDAAwE;AAEjE,MAAM,WAAW,GAA6C,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;IAC/F,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACrC;IACD,MAAM,IAAA,gCAAkB,EAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB","sourcesContent":["import { IActionHandlerOfCancelOrder } from '@yuants/data-order';\nimport { deleteFutureOrders, ICredential } from '../../api/private-api';\n\nexport const cancelOrder: IActionHandlerOfCancelOrder<ICredential> = async (credential, order) => {\n if (!order.order_id) {\n throw new Error('Missing order_id');\n }\n await deleteFutureOrders(credential, 'usdt', order.order_id);\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { IActionHandlerOfListOrders } from '@yuants/data-order';
2
+ import { ICredential } from '../../api/private-api';
3
+ export declare const listOrders: IActionHandlerOfListOrders<ICredential>;
4
+ //# sourceMappingURL=listOrders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listOrders.d.ts","sourceRoot":"","sources":["../../../src/services/orders/listOrders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAU,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAoB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAYtE,eAAO,MAAM,UAAU,EAAE,0BAA0B,CAAC,WAAW,CAqB9D,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listOrders = void 0;
4
+ const private_api_1 = require("../../api/private-api");
5
+ const resolveOrderDirection = (order) => {
6
+ const isLong = order.size > 0;
7
+ if (order.is_close) {
8
+ return isLong ? 'CLOSE_SHORT' : 'CLOSE_LONG';
9
+ }
10
+ return isLong ? 'OPEN_LONG' : 'OPEN_SHORT';
11
+ };
12
+ const listOrders = async (credential, account_id) => {
13
+ const orders = await (0, private_api_1.getFuturesOrders)(credential, 'usdt', { status: 'open' });
14
+ return orders.map((order) => {
15
+ const volume = Math.abs(order.size);
16
+ const leftVolume = typeof order.left === 'number' ? Math.abs(order.left) : undefined;
17
+ const traded_volume = leftVolume !== undefined ? Math.max(volume - leftVolume, 0) : undefined;
18
+ const price = Number(order.price);
19
+ const traded_price = Number(order.fill_price);
20
+ return {
21
+ order_id: `${order.id}`,
22
+ account_id,
23
+ product_id: order.contract,
24
+ order_direction: resolveOrderDirection(order),
25
+ volume,
26
+ price: Number.isFinite(price) ? price : undefined,
27
+ submit_at: order.create_time * 1000,
28
+ traded_volume,
29
+ traded_price: Number.isFinite(traded_price) ? traded_price : undefined,
30
+ order_status: order.status,
31
+ };
32
+ });
33
+ };
34
+ exports.listOrders = listOrders;
35
+ //# sourceMappingURL=listOrders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listOrders.js","sourceRoot":"","sources":["../../../src/services/orders/listOrders.ts"],"names":[],"mappings":";;;AACA,uDAAsE;AAItE,MAAM,qBAAqB,GAAG,CAAC,KAA0C,EAAkB,EAAE;IAC3F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,OAAO,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;KAC9C;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7C,CAAC,CAAC;AAEK,MAAM,UAAU,GAA4C,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;IAClG,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAgB,EAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAU,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO;YACL,QAAQ,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE;YACvB,UAAU;YACV,UAAU,EAAE,KAAK,CAAC,QAAQ;YAC1B,eAAe,EAAE,qBAAqB,CAAC,KAAK,CAAC;YAC7C,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACjD,SAAS,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI;YACnC,aAAa;YACb,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACtE,YAAY,EAAE,KAAK,CAAC,MAAM;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,UAAU,cAqBrB","sourcesContent":["import { IActionHandlerOfListOrders, IOrder } from '@yuants/data-order';\nimport { getFuturesOrders, ICredential } from '../../api/private-api';\n\ntype OrderDirection = 'OPEN_LONG' | 'OPEN_SHORT' | 'CLOSE_LONG' | 'CLOSE_SHORT';\n\nconst resolveOrderDirection = (order: { size: number; is_close: boolean }): OrderDirection => {\n const isLong = order.size > 0;\n if (order.is_close) {\n return isLong ? 'CLOSE_SHORT' : 'CLOSE_LONG';\n }\n return isLong ? 'OPEN_LONG' : 'OPEN_SHORT';\n};\n\nexport const listOrders: IActionHandlerOfListOrders<ICredential> = async (credential, account_id) => {\n const orders = await getFuturesOrders(credential, 'usdt', { status: 'open' });\n return orders.map((order): IOrder => {\n const volume = Math.abs(order.size);\n const leftVolume = typeof order.left === 'number' ? Math.abs(order.left) : undefined;\n const traded_volume = leftVolume !== undefined ? Math.max(volume - leftVolume, 0) : undefined;\n const price = Number(order.price);\n const traded_price = Number(order.fill_price);\n return {\n order_id: `${order.id}`,\n account_id,\n product_id: order.contract,\n order_direction: resolveOrderDirection(order),\n volume,\n price: Number.isFinite(price) ? price : undefined,\n submit_at: order.create_time * 1000,\n traded_volume,\n traded_price: Number.isFinite(traded_price) ? traded_price : undefined,\n order_status: order.status,\n };\n });\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { IActionHandlerOfSubmitOrder } from '@yuants/data-order';
2
+ import { ICredential } from '../../api/private-api';
3
+ export declare const submitOrder: IActionHandlerOfSubmitOrder<ICredential>;
4
+ //# sourceMappingURL=submitOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAqBtE,eAAO,MAAM,WAAW,EAAE,2BAA2B,CAAC,WAAW,CAiChE,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.submitOrder = void 0;
4
+ const private_api_1 = require("../../api/private-api");
5
+ const resolveSizeSign = (order_direction) => {
6
+ switch (order_direction) {
7
+ case 'OPEN_LONG':
8
+ case 'CLOSE_SHORT':
9
+ return 1;
10
+ case 'OPEN_SHORT':
11
+ case 'CLOSE_LONG':
12
+ return -1;
13
+ default:
14
+ throw new Error(`Unsupported order_direction: ${order_direction}`);
15
+ }
16
+ };
17
+ const resolveTif = (order_type) => {
18
+ if (order_type === 'MARKET')
19
+ return 'ioc';
20
+ if (order_type === 'LIMIT' || order_type === 'MAKER')
21
+ return 'gtc';
22
+ throw new Error(`Unsupported order_type: ${order_type}`);
23
+ };
24
+ const submitOrder = async (credential, order) => {
25
+ if (!order.product_id) {
26
+ throw new Error('Missing product_id');
27
+ }
28
+ if (!order.volume || order.volume <= 0) {
29
+ throw new Error('Invalid order volume');
30
+ }
31
+ const size = order.volume * resolveSizeSign(order.order_direction);
32
+ const tif = resolveTif(order.order_type);
33
+ const reduce_only = order.order_direction === 'CLOSE_LONG' || order.order_direction === 'CLOSE_SHORT';
34
+ const price = order.order_type === 'MARKET' ? '0' : order.price !== undefined ? `${order.price}` : undefined;
35
+ if (price === undefined) {
36
+ throw new Error('Limit/Maker order requires price');
37
+ }
38
+ const res = await (0, private_api_1.postFutureOrders)(credential, 'usdt', {
39
+ contract: order.product_id,
40
+ size,
41
+ price,
42
+ tif,
43
+ reduce_only,
44
+ });
45
+ if (res.label) {
46
+ const detail = [res.label, res.message, res.detail].filter((v) => !!v).join(': ');
47
+ throw new Error(detail);
48
+ }
49
+ return {
50
+ order_id: `${res.id}`,
51
+ };
52
+ };
53
+ exports.submitOrder = submitOrder;
54
+ //# sourceMappingURL=submitOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submitOrder.js","sourceRoot":"","sources":["../../../src/services/orders/submitOrder.ts"],"names":[],"mappings":";;;AACA,uDAAsE;AAEtE,MAAM,eAAe,GAAG,CAAC,eAAwB,EAAU,EAAE;IAC3D,QAAQ,eAAe,EAAE;QACvB,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC;QACX,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,CAAC,CAAC,CAAC;QACZ;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,eAAe,EAAE,CAAC,CAAC;KACtE;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,UAAmB,EAAU,EAAE;IACjD,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACnE,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEK,MAAM,WAAW,GAA6C,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;IAC/F,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,KAAK,YAAY,IAAI,KAAK,CAAC,eAAe,KAAK,aAAa,CAAC;IACtG,MAAM,KAAK,GACT,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;KACrD;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,8BAAgB,EAAC,UAAU,EAAE,MAAM,EAAE;QACrD,QAAQ,EAAE,KAAK,CAAC,UAAU;QAC1B,IAAI;QACJ,KAAK;QACL,GAAG;QACH,WAAW;KACZ,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,KAAK,EAAE;QACb,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;KACzB;IAED,OAAO;QACL,QAAQ,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,WAAW,eAiCtB","sourcesContent":["import { IActionHandlerOfSubmitOrder } from '@yuants/data-order';\nimport { ICredential, postFutureOrders } from '../../api/private-api';\n\nconst resolveSizeSign = (order_direction?: string): number => {\n switch (order_direction) {\n case 'OPEN_LONG':\n case 'CLOSE_SHORT':\n return 1;\n case 'OPEN_SHORT':\n case 'CLOSE_LONG':\n return -1;\n default:\n throw new Error(`Unsupported order_direction: ${order_direction}`);\n }\n};\n\nconst resolveTif = (order_type?: string): string => {\n if (order_type === 'MARKET') return 'ioc';\n if (order_type === 'LIMIT' || order_type === 'MAKER') return 'gtc';\n throw new Error(`Unsupported order_type: ${order_type}`);\n};\n\nexport const submitOrder: IActionHandlerOfSubmitOrder<ICredential> = async (credential, order) => {\n if (!order.product_id) {\n throw new Error('Missing product_id');\n }\n if (!order.volume || order.volume <= 0) {\n throw new Error('Invalid order volume');\n }\n\n const size = order.volume * resolveSizeSign(order.order_direction);\n const tif = resolveTif(order.order_type);\n const reduce_only = order.order_direction === 'CLOSE_LONG' || order.order_direction === 'CLOSE_SHORT';\n const price =\n order.order_type === 'MARKET' ? '0' : order.price !== undefined ? `${order.price}` : undefined;\n if (price === undefined) {\n throw new Error('Limit/Maker order requires price');\n }\n\n const res = await postFutureOrders(credential, 'usdt', {\n contract: order.product_id,\n size,\n price,\n tif,\n reduce_only,\n });\n\n if (res.label) {\n const detail = [res.label, res.message, res.detail].filter((v) => !!v).join(': ');\n throw new Error(detail);\n }\n\n return {\n order_id: `${res.id}`,\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/services/transfer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const protocol_1 = require("@yuants/protocol");
4
+ const transfer_1 = require("@yuants/transfer");
5
+ const utils_1 = require("@yuants/utils");
6
+ const private_api_1 = require("../api/private-api");
7
+ const profile_1 = require("./accounts/profile");
8
+ const default_credential_1 = require("./default-credential");
9
+ const credential = (0, default_credential_1.getDefaultCredential)();
10
+ const registerInternalTransfer = (terminal, credential, accountId, direction, network_id) => {
11
+ const params = direction === 'spot_to_future'
12
+ ? {
13
+ account_id: accountId,
14
+ from: 'spot',
15
+ to: 'futures',
16
+ address: 'SPOT',
17
+ }
18
+ : {
19
+ account_id: accountId,
20
+ from: 'futures',
21
+ to: 'spot',
22
+ address: 'USDT_FUTURE',
23
+ };
24
+ (0, transfer_1.addAccountTransferAddress)({
25
+ terminal,
26
+ account_id: params.account_id,
27
+ network_id,
28
+ currency: 'USDT',
29
+ address: params.address,
30
+ onApply: {
31
+ INIT: async (order) => {
32
+ const transferResult = await (0, private_api_1.postWalletTransfer)(credential, {
33
+ currency: 'USDT',
34
+ from: params.from,
35
+ to: params.to,
36
+ amount: `${order.current_amount}`,
37
+ settle: 'usdt',
38
+ });
39
+ if (transferResult.tx_id !== undefined) {
40
+ return { state: 'COMPLETE', transaction_id: transferResult.tx_id };
41
+ }
42
+ return { state: 'INIT', message: JSON.stringify(transferResult) };
43
+ },
44
+ },
45
+ onEval: async (transferOrder) => ({
46
+ state: 'COMPLETE',
47
+ received_amount: transferOrder.current_amount,
48
+ }),
49
+ });
50
+ };
51
+ if (credential) {
52
+ (async () => {
53
+ const terminal = protocol_1.Terminal.fromNodeEnv();
54
+ const accountIds = await (0, profile_1.resolveAccountProfile)(credential);
55
+ const ACCOUNT_INTERNAL_NETWORK_ID = `Gate/${accountIds.uid}/ACCOUNT_INTERNAL`;
56
+ registerInternalTransfer(terminal, credential, accountIds.future, 'future_to_spot', ACCOUNT_INTERNAL_NETWORK_ID);
57
+ const subAccountsResult = await (0, private_api_1.getSubAccountList)(credential, { type: '0' });
58
+ const isMainAccount = Array.isArray(subAccountsResult);
59
+ if (isMainAccount) {
60
+ const depositAddressRes = await (0, private_api_1.getDepositAddress)(credential, { currency: 'USDT' });
61
+ console.info((0, utils_1.formatTime)(Date.now()), 'DepositAddress', JSON.stringify(depositAddressRes));
62
+ const addresses = depositAddressRes.multichain_addresses.filter((item) => item.chain === 'TRX');
63
+ for (const address of addresses) {
64
+ (0, transfer_1.addAccountTransferAddress)({
65
+ terminal,
66
+ account_id: accountIds.spot,
67
+ network_id: 'TRC20',
68
+ currency: 'USDT',
69
+ address: address.address,
70
+ onApply: {
71
+ INIT: async (transferOrder) => {
72
+ const transferResult = await (0, private_api_1.postWithdrawals)(credential, {
73
+ amount: `${transferOrder.current_amount}`,
74
+ currency: 'USDT',
75
+ address: transferOrder.current_rx_address,
76
+ chain: 'TRX',
77
+ });
78
+ const { txid, withdraw_order_id } = transferResult;
79
+ if (txid && txid.length > 0) {
80
+ return { state: 'COMPLETE', transaction_id: txid };
81
+ }
82
+ return { state: 'PENDING', context: withdraw_order_id };
83
+ },
84
+ PENDING: async (transferOrder) => {
85
+ const wdId = transferOrder.current_tx_context;
86
+ const withdrawalRecordsResult = await (0, private_api_1.getWithdrawalHistory)(credential, {});
87
+ const withdrawalRecord = withdrawalRecordsResult.find((item) => item.withdraw_order_id === wdId);
88
+ if (withdrawalRecord && withdrawalRecord.txid && withdrawalRecord.txid.length > 0) {
89
+ return { state: 'COMPLETE', transaction_id: withdrawalRecord.txid };
90
+ }
91
+ return { state: 'PENDING', context: wdId };
92
+ },
93
+ },
94
+ onEval: async (transferOrder) => {
95
+ const checkResult = await (0, private_api_1.getDepositHistory)(credential, { currency: 'USDT' });
96
+ const depositRecord = checkResult.find((item) => item.txid === transferOrder.current_transaction_id);
97
+ if (depositRecord && depositRecord.status === 'DONE') {
98
+ return { state: 'COMPLETE', received_amount: Number(depositRecord.amount) };
99
+ }
100
+ return { state: 'PENDING' };
101
+ },
102
+ });
103
+ }
104
+ }
105
+ })().catch((error) => {
106
+ console.error((0, utils_1.formatTime)(Date.now()), 'GateTransferInitFailed', error);
107
+ });
108
+ }
109
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/services/transfer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Terminal } from '@yuants/protocol';\nimport { addAccountTransferAddress } from '@yuants/transfer';\nimport { formatTime } from '@yuants/utils';\nimport {\n getDepositAddress,\n getDepositHistory,\n getSubAccountList,\n getWithdrawalHistory,\n ICredential,\n postWalletTransfer,\n postWithdrawals,\n} from '../api/private-api';\nimport { resolveAccountProfile } from './accounts/profile';\nimport { getDefaultCredential } from './default-credential';\n\nconst credential = getDefaultCredential();\n\nconst registerInternalTransfer = (\n terminal: Terminal,\n credential: ICredential,\n accountId: string,\n direction: 'spot_to_future' | 'future_to_spot',\n network_id: string,\n) => {\n const params =\n direction === 'spot_to_future'\n ? {\n account_id: accountId,\n from: 'spot',\n to: 'futures',\n address: 'SPOT',\n }\n : {\n account_id: accountId,\n from: 'futures',\n to: 'spot',\n address: 'USDT_FUTURE',\n };\n\n addAccountTransferAddress({\n terminal,\n account_id: params.account_id,\n network_id,\n currency: 'USDT',\n address: params.address,\n onApply: {\n INIT: async (order) => {\n const transferResult = await postWalletTransfer(credential, {\n currency: 'USDT',\n from: params.from,\n to: params.to,\n amount: `${order.current_amount}`,\n settle: 'usdt',\n });\n if (transferResult.tx_id !== undefined) {\n return { state: 'COMPLETE', transaction_id: transferResult.tx_id };\n }\n return { state: 'INIT', message: JSON.stringify(transferResult) };\n },\n },\n onEval: async (transferOrder) => ({\n state: 'COMPLETE',\n received_amount: transferOrder.current_amount,\n }),\n });\n};\n\nif (credential) {\n (async () => {\n const terminal = Terminal.fromNodeEnv();\n const accountIds = await resolveAccountProfile(credential);\n const ACCOUNT_INTERNAL_NETWORK_ID = `Gate/${accountIds.uid}/ACCOUNT_INTERNAL`;\n\n registerInternalTransfer(\n terminal,\n credential,\n accountIds.future,\n 'future_to_spot',\n ACCOUNT_INTERNAL_NETWORK_ID,\n );\n\n const subAccountsResult = await getSubAccountList(credential, { type: '0' });\n const isMainAccount = Array.isArray(subAccountsResult);\n if (isMainAccount) {\n const depositAddressRes = await getDepositAddress(credential, { currency: 'USDT' });\n console.info(formatTime(Date.now()), 'DepositAddress', JSON.stringify(depositAddressRes));\n const addresses = depositAddressRes.multichain_addresses.filter((item) => item.chain === 'TRX');\n for (const address of addresses) {\n addAccountTransferAddress({\n terminal,\n account_id: accountIds.spot,\n network_id: 'TRC20',\n currency: 'USDT',\n address: address.address,\n onApply: {\n INIT: async (transferOrder) => {\n const transferResult = await postWithdrawals(credential, {\n amount: `${transferOrder.current_amount}`,\n currency: 'USDT',\n address: transferOrder.current_rx_address!,\n chain: 'TRX',\n });\n const { txid, withdraw_order_id } = transferResult;\n if (txid && txid.length > 0) {\n return { state: 'COMPLETE', transaction_id: txid };\n }\n return { state: 'PENDING', context: withdraw_order_id };\n },\n PENDING: async (transferOrder) => {\n const wdId = transferOrder.current_tx_context;\n const withdrawalRecordsResult = await getWithdrawalHistory(credential, {});\n const withdrawalRecord = withdrawalRecordsResult.find(\n (item) => item.withdraw_order_id === wdId,\n );\n if (withdrawalRecord && withdrawalRecord.txid && withdrawalRecord.txid.length > 0) {\n return { state: 'COMPLETE', transaction_id: withdrawalRecord.txid };\n }\n return { state: 'PENDING', context: wdId };\n },\n },\n onEval: async (transferOrder) => {\n const checkResult = await getDepositHistory(credential, { currency: 'USDT' });\n const depositRecord = checkResult.find(\n (item) => item.txid === transferOrder.current_transaction_id,\n );\n if (depositRecord && depositRecord.status === 'DONE') {\n return { state: 'COMPLETE', received_amount: Number(depositRecord.amount) };\n }\n return { state: 'PENDING' };\n },\n });\n }\n }\n })().catch((error) => {\n console.error(formatTime(Date.now()), 'GateTransferInitFailed', error);\n });\n}\n"]}
@@ -0,0 +1,11 @@
1
+ // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
+ // It should be published with your NPM package. It should not be tracked by Git.
3
+ {
4
+ "tsdocVersion": "0.12",
5
+ "toolPackages": [
6
+ {
7
+ "packageName": "@microsoft/api-extractor",
8
+ "packageVersion": "7.30.1"
9
+ }
10
+ ]
11
+ }
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@yuants/vendor-gate",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
+ "main": "lib/index.js",
4
5
  "files": [
5
- "dist/extension.bundle.js"
6
+ "lib",
7
+ "dist",
8
+ "temp"
6
9
  ],
7
10
  "dependencies": {
8
11
  "@yuants/cache": "0.3.0",
@@ -33,13 +36,6 @@
33
36
  "registry": "https://registry.npmjs.org",
34
37
  "access": "public"
35
38
  },
36
- "io_ntnl": {
37
- "deploy_files": [
38
- "dist",
39
- "lib",
40
- "temp"
41
- ]
42
- },
43
39
  "scripts": {
44
40
  "build": "heft test --clean && api-extractor run --local && yuan-toolkit post-build"
45
41
  }
@@ -0,0 +1,46 @@
1
+ {
2
+ "apps/vendor-gate/AGENTS.md": "d5728a3e8234ee12eb6614f5487dc332d9a00281",
3
+ "apps/vendor-gate/CHANGELOG.json": "61d9b9c060ee0828a49e24bbbae530d31738425f",
4
+ "apps/vendor-gate/CHANGELOG.md": "19540f99205f1f12d4f798362a3a9f4b8bb2e103",
5
+ "apps/vendor-gate/README.md": "ea5ee3a61cd87d9104d729902dfaccac9b9913e0",
6
+ "apps/vendor-gate/SESSION_NOTES.md": "768c89019ebca263968450d853c8038b0d56f619",
7
+ "apps/vendor-gate/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
8
+ "apps/vendor-gate/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
9
+ "apps/vendor-gate/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
10
+ "apps/vendor-gate/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
11
+ "apps/vendor-gate/etc/vendor-gate.api.md": "970682cd589432de553cc5cee2a0abe73814a515",
12
+ "apps/vendor-gate/package.json": "d82f99b4d4340c58f712bc13e9a596cbbb77732d",
13
+ "apps/vendor-gate/src/api/http-client.ts": "4c3fd77db025e8029d29e491dbe5e3d8f0259650",
14
+ "apps/vendor-gate/src/api/private-api.ts": "6b38f031d90d433fdd0fde5db31a27921a18efe3",
15
+ "apps/vendor-gate/src/api/public-api.ts": "1e7e0f14fe811faaae7a0733bc031f2718bd35e7",
16
+ "apps/vendor-gate/src/api/rate-limiter.ts": "047c51029ffcaf98190cfd04d96816bbced5fa7c",
17
+ "apps/vendor-gate/src/index.ts": "20a3b3321d54cd26ce064436332d7df260e65225",
18
+ "apps/vendor-gate/src/services/account-actions-with-credential.ts": "4d04defd85b88a10f65a4ffe1d78b976cd8f575b",
19
+ "apps/vendor-gate/src/services/accounts/future.ts": "d86531292a5cbaea51179b4c19d87f204e418eff",
20
+ "apps/vendor-gate/src/services/accounts/profile.ts": "c4a967b73230348f654c0d9b0245a0cd76a7a336",
21
+ "apps/vendor-gate/src/services/accounts/spot.ts": "5b112204d4f39cbe33837cd471aa2e526ef36f66",
22
+ "apps/vendor-gate/src/services/accounts/unified.ts": "ed16c95e1a2ecdd93e0661f50e57ef5447e9c45f",
23
+ "apps/vendor-gate/src/services/default-credential.ts": "b9ffa157b818148450bfaaf4851597e91901190c",
24
+ "apps/vendor-gate/src/services/legacy.ts": "77a91d3c39ee7190cba457efcbf6fc4ff02fdad5",
25
+ "apps/vendor-gate/src/services/markets/interest-rate.ts": "1aeaf3271927e32b2f5a755ac9069e2bed9bbbda",
26
+ "apps/vendor-gate/src/services/markets/product.ts": "4da5d82d4cd1d26d8c24312df08930f74704d510",
27
+ "apps/vendor-gate/src/services/order-actions-with-credential.ts": "fb03f9ee5c2d63f0e5df2b69a922ec29fbbdcd0b",
28
+ "apps/vendor-gate/src/services/orders/cancelOrder.ts": "d41d71738c74384affc5ce7bec7b7fe7baa7b799",
29
+ "apps/vendor-gate/src/services/orders/listOrders.ts": "6c1bcebaa0dd01e64b461521d319489e7d8ebb54",
30
+ "apps/vendor-gate/src/services/orders/submitOrder.ts": "1eee91b948b330176de28f2c561ab49f6b4db2ab",
31
+ "apps/vendor-gate/src/services/transfer.ts": "cf7d6cbcef3fe217b607f0bba7719d62ac603d66",
32
+ "apps/vendor-gate/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
33
+ "apps/vendor-gate/.rush/temp/shrinkwrap-deps.json": "e34609de25d5573e25e1b7def3b8a20819a612cc",
34
+ "libraries/cache/temp/package-deps.json": "49789a92426969daa31f0c956bb56bd783929765",
35
+ "libraries/protocol/temp/package-deps.json": "35bc77333a1c85db1cd130579963e8cefa00f56c",
36
+ "libraries/transfer/temp/package-deps.json": "708a4caf79d042cad56a39f0b00d399bca04af40",
37
+ "libraries/data-account/temp/package-deps.json": "e7b28ee5c9f5236a894a8034de5a037cc7ecb088",
38
+ "libraries/data-order/temp/package-deps.json": "0e2f026ee9847657a72801c106c040fcf905e7b5",
39
+ "libraries/sql/temp/package-deps.json": "e3b6f24485a429fb24cacbf0d6150f55ca394706",
40
+ "libraries/data-product/temp/package-deps.json": "0a4e14971c7dc350b84712fb16c07fefad351619",
41
+ "libraries/utils/temp/package-deps.json": "c58f1ca8f498315d9a0219ca8c498299a41d297b",
42
+ "libraries/data-series/temp/package-deps.json": "d5269fad8f63460b1b5f29ba701ad3a9457e0061",
43
+ "libraries/data-interest-rate/temp/package-deps.json": "11bb199efb64628f67b1165e11d6c85dd7114a9a",
44
+ "libraries/extension/temp/package-deps.json": "fd20507284f9fd74b4de6f9855c8cead9cc132e8",
45
+ "tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
46
+ }