import express from 'express'; import { startSyncMarketsData, getIorInfo } from "../libs/syncData.js"; import { getLineInfo } from "../libs/pinnacleClient.js"; import Logs from "../libs/logs.js"; import { createLimitOrder, getBalanceAllowance, getMultipleOrderBooks, getOpenOrders, getOrder, getOrderBook, transferWallet, } from "../libs/polymarketClient.js"; const router = express.Router(); router.get('/balance/:wallet', (req, res) => { const { wallet } = req.params; if (wallet !== "both" && wallet !== "proxy" && wallet !== "deposit") { return res.badRequest('invalid wallet'); } getBalanceAllowance({ wallet }) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get balance allowance error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.post('/wallet/transfer', (req, res) => { const { amount, from, to } = req.body; if (!amount) { return res.badRequest('amount is required'); } if (!from) { return res.badRequest('from is required'); } if (!to) { return res.badRequest('to is required'); } transferWallet({ amount, from, to }) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('transfer wallet error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.get('/get_ior_info/:id/:ior', (req, res) => { const { id, ior } = req.params; getIorInfo(ior, id) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get ior info error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.get('/orderbook/:tokenId', (req, res) => { getOrderBook(req.params.tokenId) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get order book error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.post('/get_line_info', (req, res) => { getLineInfo(req.body) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get line info error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.post('/orderbooks', (req, res) => { const { tokenIds } = req.body; if (!Array.isArray(tokenIds) || tokenIds.length === 0) { return res.badRequest('tokenIds is required'); } getMultipleOrderBooks(tokenIds) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get multiple order books error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.post('/orders/limit', (req, res) => { const { tokenID, tokenId, price, size, side, tickSize = "0.01", negRisk = false, orderType, // postOnly = false, expiration, deferExec = false, } = req.body; createLimitOrder({ tokenID: tokenID || tokenId, price, size, side, tickSize, negRisk, orderType, // postOnly, expiration, deferExec, }) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('create limit order error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.get('/orders/open', (req, res) => { const { id, market, asset_id, assetId, only_first_page, next_cursor, } = req.query; getOpenOrders({ id, market, asset_id: asset_id || assetId, only_first_page: only_first_page === true || only_first_page === 'true', next_cursor, }) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get open orders error', error.message); Logs.errDev(error); return res.sendError(error); }); }); router.get('/orders/:orderID', (req, res) => { getOrder(req.params.orderID) .then(data => res.sendSuccess(data)) .catch(error => { Logs.out('get order error', error.message); Logs.errDev(error); return res.sendError(error); }); }); startSyncMarketsData(); export default router;