trading.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import express from 'express';
  2. import { startSyncMarketsData, getIorInfo } from "../libs/syncData.js";
  3. import { getLineInfo } from "../libs/pinnacleClient.js";
  4. import Logs from "../libs/logs.js";
  5. import {
  6. createLimitOrder,
  7. getBalanceAllowance,
  8. getMultipleOrderBooks,
  9. getOrderBook,
  10. transferWallet,
  11. } from "../libs/polymarketClient.js";
  12. const router = express.Router();
  13. router.get('/balance/:wallet', (req, res) => {
  14. const { wallet } = req.params;
  15. if (wallet !== "both" && wallet !== "proxy" && wallet !== "deposit") {
  16. return res.badRequest('invalid wallet');
  17. }
  18. getBalanceAllowance({ wallet })
  19. .then(data => res.sendSuccess(data))
  20. .catch(error => {
  21. Logs.errDev('get balance allowance error', error);
  22. return res.sendError(error);
  23. });
  24. });
  25. router.post('/wallet/transfer', (req, res) => {
  26. const { amount, from, to } = req.body;
  27. if (!amount) {
  28. return res.badRequest('amount is required');
  29. }
  30. if (!from) {
  31. return res.badRequest('from is required');
  32. }
  33. if (!to) {
  34. return res.badRequest('to is required');
  35. }
  36. transferWallet({ amount, from, to })
  37. .then(data => res.sendSuccess(data))
  38. .catch(error => {
  39. Logs.errDev('transfer wallet error', error);
  40. return res.sendError(error);
  41. });
  42. });
  43. router.get('/get_ior_info/:id/:ior', (req, res) => {
  44. const { id, ior } = req.params;
  45. getIorInfo(ior, id)
  46. .then(data => res.sendSuccess(data))
  47. .catch(error => {
  48. Logs.errDev('get ior info error', error);
  49. return res.sendError(error);
  50. });
  51. });
  52. router.get('/orderbook/:tokenId', (req, res) => {
  53. getOrderBook(req.params.tokenId)
  54. .then(data => res.sendSuccess(data))
  55. .catch(error => {
  56. Logs.errDev('get order book error', error);
  57. return res.sendError(error);
  58. });
  59. });
  60. router.post('/get_line_info', (req, res) => {
  61. getLineInfo(req.body)
  62. .then(data => res.sendSuccess(data))
  63. .catch(error => {
  64. Logs.errDev('get line info error', error);
  65. return res.sendError(error);
  66. });
  67. });
  68. router.post('/orderbooks', (req, res) => {
  69. const { tokenIds } = req.body;
  70. if (!Array.isArray(tokenIds) || tokenIds.length === 0) {
  71. return res.badRequest('tokenIds is required');
  72. }
  73. getMultipleOrderBooks(tokenIds)
  74. .then(data => res.sendSuccess(data))
  75. .catch(error => {
  76. Logs.errDev('get multiple order books error', error);
  77. return res.sendError(error);
  78. });
  79. });
  80. router.post('/orders/limit', (req, res) => {
  81. const {
  82. tokenID,
  83. tokenId,
  84. price,
  85. size,
  86. side,
  87. tickSize = "0.01",
  88. negRisk = false,
  89. orderType,
  90. // postOnly = false,
  91. expiration,
  92. deferExec = false,
  93. } = req.body;
  94. createLimitOrder({
  95. tokenID: tokenID || tokenId,
  96. price,
  97. size,
  98. side,
  99. tickSize,
  100. negRisk,
  101. orderType,
  102. // postOnly,
  103. expiration,
  104. deferExec,
  105. })
  106. .then(data => res.sendSuccess(data))
  107. .catch(error => {
  108. Logs.errDev('create limit order error', error);
  109. return res.sendError(error);
  110. });
  111. });
  112. startSyncMarketsData();
  113. export default router;