@tradelayerprotocol/tradelayer 1.9.1

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 (249) hide show
  1. package/.claude/settings.local.json +13 -0
  2. package/.claude/skills/tl-algo/SKILL.md +255 -0
  3. package/.gitattributes +2 -0
  4. package/.github/workflows/publish.yaml +26 -0
  5. package/4mm.js +163 -0
  6. package/LICENSE +21 -0
  7. package/NPMSwapRefactor.zip +0 -0
  8. package/README.md +217 -0
  9. package/address.sh +26 -0
  10. package/algoAPI.js +581 -0
  11. package/analyzepsbt.js +92 -0
  12. package/apiEx.js +99 -0
  13. package/bb_hyperscalper.js +290 -0
  14. package/bbo_demo.js +111 -0
  15. package/buyer.js +622 -0
  16. package/client.js +50 -0
  17. package/createTxTest.js +26 -0
  18. package/createWallet.js +75 -0
  19. package/daytrader.js +531 -0
  20. package/decodeTest.js +69 -0
  21. package/fundingManager.js +144 -0
  22. package/index.js +4 -0
  23. package/listener.js +27 -0
  24. package/litecoreTxBuilder.js +1128 -0
  25. package/mmEx.js +356 -0
  26. package/networks.js +51 -0
  27. package/orderbook.js +200 -0
  28. package/package.json +34 -0
  29. package/perTradeQueue.js +36 -0
  30. package/projectsTLNPMTLNPM/package-lock.json +162 -0
  31. package/projectsTLNPMTLNPM/package.json +5 -0
  32. package/quick.js +32 -0
  33. package/quickFut.js +37 -0
  34. package/quickSell.js +37 -0
  35. package/relayerClient.js +117 -0
  36. package/run4mm.js +80 -0
  37. package/run_bbo_tracker.js +241 -0
  38. package/seller.js +443 -0
  39. package/session.js +45 -0
  40. package/setup-lin-ltc.sh +139 -0
  41. package/setup-lin.sh +203 -0
  42. package/setup-win-ltc.bat +108 -0
  43. package/setup-win.bat +167 -0
  44. package/spam_screamer_futures.js +222 -0
  45. package/tradelayer.js/.gitattributes +2 -0
  46. package/tradelayer.js/README.md +2 -0
  47. package/tradelayer.js/oldTests/activationTest.js +6 -0
  48. package/tradelayer.js/oldTests/base58.test.js +23 -0
  49. package/tradelayer.js/oldTests/base64Decode.test.js +16 -0
  50. package/tradelayer.js/oldTests/blocksRefactor.js +140 -0
  51. package/tradelayer.js/oldTests/checkVestBalance.js +25 -0
  52. package/tradelayer.js/oldTests/consensusHashProto.js +151 -0
  53. package/tradelayer.js/oldTests/contractOrderbook.js +243 -0
  54. package/tradelayer.js/oldTests/createPayload.js +0 -0
  55. package/tradelayer.js/oldTests/createTestnetAddr.js +43 -0
  56. package/tradelayer.js/oldTests/decode.js +205 -0
  57. package/tradelayer.js/oldTests/decodeTest.js +50 -0
  58. package/tradelayer.js/oldTests/displayTallyMap.js +19 -0
  59. package/tradelayer.js/oldTests/encodeDecode.js +340 -0
  60. package/tradelayer.js/oldTests/expressTest.js +29 -0
  61. package/tradelayer.js/oldTests/extractBlocksVanilla.js +214 -0
  62. package/tradelayer.js/oldTests/extractBlocksVanillaa.js +179 -0
  63. package/tradelayer.js/oldTests/extractPubkeyTest.js +60 -0
  64. package/tradelayer.js/oldTests/fillInputCacheProto.js +111 -0
  65. package/tradelayer.js/oldTests/getRawTxTest.js +22 -0
  66. package/tradelayer.js/oldTests/indexTest.js +26 -0
  67. package/tradelayer.js/oldTests/initTokensTest.js +32 -0
  68. package/tradelayer.js/oldTests/interfaceChild.js +129 -0
  69. package/tradelayer.js/oldTests/listenerChild.js +112 -0
  70. package/tradelayer.js/oldTests/opdecode.js +26 -0
  71. package/tradelayer.js/oldTests/options.js +79 -0
  72. package/tradelayer.js/oldTests/optxtest.js +116 -0
  73. package/tradelayer.js/oldTests/optxtest1.js +64 -0
  74. package/tradelayer.js/oldTests/oracle.test.js +32 -0
  75. package/tradelayer.js/oldTests/orderbook.test.js +36 -0
  76. package/tradelayer.js/oldTests/parsing.js +93 -0
  77. package/tradelayer.js/oldTests/payload.js +13 -0
  78. package/tradelayer.js/oldTests/persistenceUnitTest.js +23 -0
  79. package/tradelayer.js/oldTests/property.test.js +53 -0
  80. package/tradelayer.js/oldTests/propertyLevel.js +75 -0
  81. package/tradelayer.js/oldTests/propertyTest.js +32 -0
  82. package/tradelayer.js/oldTests/queryAddressTest.js +17 -0
  83. package/tradelayer.js/oldTests/salter.js +14 -0
  84. package/tradelayer.js/oldTests/tally.js +81 -0
  85. package/tradelayer.js/oldTests/tally.test.js +48 -0
  86. package/tradelayer.js/oldTests/tally2.js +124 -0
  87. package/tradelayer.js/oldTests/tally3.js +142 -0
  88. package/tradelayer.js/oldTests/tallyDiag.js +38 -0
  89. package/tradelayer.js/oldTests/testGetRaw.js +40 -0
  90. package/tradelayer.js/oldTests/testHexConvert.js +47 -0
  91. package/tradelayer.js/oldTests/testNewEncoding.js +96 -0
  92. package/tradelayer.js/oldTests/testNewEncoding2.js +113 -0
  93. package/tradelayer.js/oldTests/testNewEncoding3 +112 -0
  94. package/tradelayer.js/oldTests/testNewEncoding3.js +168 -0
  95. package/tradelayer.js/oldTests/testOPReturn.js +102 -0
  96. package/tradelayer.js/oldTests/testPayload.js +23 -0
  97. package/tradelayer.js/oldTests/testRaw.js +50 -0
  98. package/tradelayer.js/oldTests/testSendTooMuch.js +20 -0
  99. package/tradelayer.js/oldTests/testTxBuild +28 -0
  100. package/tradelayer.js/oldTests/testTxBuild.js +42 -0
  101. package/tradelayer.js/oldTests/tokenOrderbook.js +243 -0
  102. package/tradelayer.js/oldTests/txUtilsA.js +515 -0
  103. package/tradelayer.js/oldTests/validityUnitTest.js +53 -0
  104. package/tradelayer.js/oldTests/vaults.js +72 -0
  105. package/tradelayer.js/oldTests/volumeIndex.js +117 -0
  106. package/tradelayer.js/oldTests/volumeIndex2.js +88 -0
  107. package/tradelayer.js/output_base64.txt +1 -0
  108. package/tradelayer.js/package-lock.json +9967 -0
  109. package/tradelayer.js/package.json +61 -0
  110. package/tradelayer.js/server/index.js +88 -0
  111. package/tradelayer.js/server/litecoind.exe +0 -0
  112. package/tradelayer.js/src/activation.js +303 -0
  113. package/tradelayer.js/src/adjuster.js +77 -0
  114. package/tradelayer.js/src/amm.js +400 -0
  115. package/tradelayer.js/src/base256.js +55 -0
  116. package/tradelayer.js/src/base94.js +79 -0
  117. package/tradelayer.js/src/channels.js +1163 -0
  118. package/tradelayer.js/src/clearing.js +3109 -0
  119. package/tradelayer.js/src/clearlist.js +364 -0
  120. package/tradelayer.js/src/client.js +295 -0
  121. package/tradelayer.js/src/consensus.js +613 -0
  122. package/tradelayer.js/src/contractRegistry.js +964 -0
  123. package/tradelayer.js/src/db.js +89 -0
  124. package/tradelayer.js/src/init.js +24 -0
  125. package/tradelayer.js/src/insurance.js +347 -0
  126. package/tradelayer.js/src/interface.js +218 -0
  127. package/tradelayer.js/src/interfaceExpress.js +178 -0
  128. package/tradelayer.js/src/iou.js +509 -0
  129. package/tradelayer.js/src/listener.js +226 -0
  130. package/tradelayer.js/src/logic.js +1702 -0
  131. package/tradelayer.js/src/main.js +927 -0
  132. package/tradelayer.js/src/marginMap.js +2165 -0
  133. package/tradelayer.js/src/options.js +126 -0
  134. package/tradelayer.js/src/oracle.js +394 -0
  135. package/tradelayer.js/src/orderbook.js +4123 -0
  136. package/tradelayer.js/src/persistence.js +554 -0
  137. package/tradelayer.js/src/property.js +411 -0
  138. package/tradelayer.js/src/reOrg.js +41 -0
  139. package/tradelayer.js/src/scaling.js +145 -0
  140. package/tradelayer.js/src/tally.js +1275 -0
  141. package/tradelayer.js/src/tradeHistoryManager.js +552 -0
  142. package/tradelayer.js/src/txDecoder.js +584 -0
  143. package/tradelayer.js/src/txEncoder.js +610 -0
  144. package/tradelayer.js/src/txIndex.js +502 -0
  145. package/tradelayer.js/src/txUtils.js +1392 -0
  146. package/tradelayer.js/src/types.js +429 -0
  147. package/tradelayer.js/src/validity.js +3077 -0
  148. package/tradelayer.js/src/vaults.js +430 -0
  149. package/tradelayer.js/src/vesting.js +491 -0
  150. package/tradelayer.js/src/volumeIndex.js +618 -0
  151. package/tradelayer.js/src/walletInterface.js +220 -0
  152. package/tradelayer.js/src/walletListener.js +665 -0
  153. package/tradelayer.js/tests/256decode.js +82 -0
  154. package/tradelayer.js/tests/UTXOracle.js +205 -0
  155. package/tradelayer.js/tests/base94test.js +23 -0
  156. package/tradelayer.js/tests/cancelTxTest.js +62 -0
  157. package/tradelayer.js/tests/contractInterfaceTest.js +48 -0
  158. package/tradelayer.js/tests/decimalTest.js +65 -0
  159. package/tradelayer.js/tests/decoderTest.js +100 -0
  160. package/tradelayer.js/tests/deltaCount.js +47 -0
  161. package/tradelayer.js/tests/deltaCount2.js +60 -0
  162. package/tradelayer.js/tests/interfaceTest.js +37 -0
  163. package/tradelayer.js/tests/mainTest.js +53 -0
  164. package/tradelayer.js/tests/makeActivationTest.js +24 -0
  165. package/tradelayer.js/tests/maxHeightTest.js +49 -0
  166. package/tradelayer.js/tests/reverseHash.js +72 -0
  167. package/tradelayer.js/tests/sensitiveConsoleOutput.txt +267 -0
  168. package/tradelayer.js/tests/tallyTest.js +40 -0
  169. package/tradelayer.js/tests/testBuybacks.js +46 -0
  170. package/tradelayer.js/tests/testCodeHash.js +49 -0
  171. package/tradelayer.js/tests/testConsensusHash.js +91 -0
  172. package/tradelayer.js/tests/testDecode.js +30 -0
  173. package/tradelayer.js/tests/testEncodingLengths.js +129 -0
  174. package/tradelayer.js/tests/testGetTx +32 -0
  175. package/tradelayer.js/tests/testGetTx.js +32 -0
  176. package/tradelayer.js/tests/testHexHash.js +32 -0
  177. package/tradelayer.js/tests/testIndexHash.js +35 -0
  178. package/tradelayer.js/tests/testInitContracts.js +38 -0
  179. package/tradelayer.js/tests/testMaxConsensus.js +12 -0
  180. package/tradelayer.js/tests/testMaxSynth.js +44 -0
  181. package/tradelayer.js/tests/testMint.js +21 -0
  182. package/tradelayer.js/tests/testNetwork.js +33 -0
  183. package/tradelayer.js/tests/testOrderbookLoad.js +62 -0
  184. package/tradelayer.js/tests/testRebates.js +32 -0
  185. package/tradelayer.js/tests/testRedeem.js +22 -0
  186. package/tradelayer.js/tests/testTokenTrade.js +39 -0
  187. package/tradelayer.js/tests/testTxBuild.js +42 -0
  188. package/tradelayer.js/tests/testUTXOTrade.js +27 -0
  189. package/tradelayer.js/tests/tokenTradeHistory.js +27 -0
  190. package/tradelayer.js/tests/tradeFutures.js +40 -0
  191. package/tradelayer.js/tests/tradeHistoryExample.js +35 -0
  192. package/tradelayer.js/tests/tradeHistoryLoad.js +15 -0
  193. package/tradelayer.js/tests/txScanTest.js +134 -0
  194. package/tradelayer.js/tests/validateTest.js +136 -0
  195. package/tradelayer.js/tests/vestingTest.js +37 -0
  196. package/tradelayer.js/utils/activateMainnet.js +59 -0
  197. package/tradelayer.js/utils/activateMainnetDoge.js +63 -0
  198. package/tradelayer.js/utils/autocompactdb.js +23 -0
  199. package/tradelayer.js/utils/base64toHex.js +32 -0
  200. package/tradelayer.js/utils/broadcastDoge.js +38 -0
  201. package/tradelayer.js/utils/calcRedeem.js +19 -0
  202. package/tradelayer.js/utils/checkNetwork.js +27 -0
  203. package/tradelayer.js/utils/createAddress.js +48 -0
  204. package/tradelayer.js/utils/createAttestation.js +133 -0
  205. package/tradelayer.js/utils/createContract.js +118 -0
  206. package/tradelayer.js/utils/createOracle.js +94 -0
  207. package/tradelayer.js/utils/createwallet.js +20 -0
  208. package/tradelayer.js/utils/crossFuturesTrades.js +57 -0
  209. package/tradelayer.js/utils/crossTokenTrades.js +62 -0
  210. package/tradelayer.js/utils/dumpPriv.js +29 -0
  211. package/tradelayer.js/utils/generateChannel.js +34 -0
  212. package/tradelayer.js/utils/getInfo.js +21 -0
  213. package/tradelayer.js/utils/hardWipe.js +20 -0
  214. package/tradelayer.js/utils/hexTo64.js +16 -0
  215. package/tradelayer.js/utils/importAddress.js +28 -0
  216. package/tradelayer.js/utils/importpriv.js +20 -0
  217. package/tradelayer.js/utils/issueOracleContract.js +67 -0
  218. package/tradelayer.js/utils/issueTokens.js +41 -0
  219. package/tradelayer.js/utils/listunspent.js +66 -0
  220. package/tradelayer.js/utils/litecoinClient.js +30 -0
  221. package/tradelayer.js/utils/loadwallet.js +20 -0
  222. package/tradelayer.js/utils/publishOracle.js +113 -0
  223. package/tradelayer.js/utils/sendActivation.js +21 -0
  224. package/tradelayer.js/utils/sendChannelContractTrade.js +34 -0
  225. package/tradelayer.js/utils/sendChannelTokenTrade.js +34 -0
  226. package/tradelayer.js/utils/sendCommit.js +24 -0
  227. package/tradelayer.js/utils/sendDoge.js +62 -0
  228. package/tradelayer.js/utils/sendDogeMain.js +67 -0
  229. package/tradelayer.js/utils/sendDogeTx.js +46 -0
  230. package/tradelayer.js/utils/sendLTC.js +63 -0
  231. package/tradelayer.js/utils/sendMainnet.js +62 -0
  232. package/tradelayer.js/utils/sendTransfer.js +19 -0
  233. package/tradelayer.js/utils/sendVestTest.js +88 -0
  234. package/tradelayer.js/utils/sendWithdrawal.js +26 -0
  235. package/tradelayer.js/utils/simpleStart.js +8 -0
  236. package/tradelayer.js/utils/startStop.js +27 -0
  237. package/tradelayer.js/utils/structuredTrades.js +136 -0
  238. package/tradelayer.js/utils/verifySignature.js +90 -0
  239. package/tradelayer.js/utils/verifyWitnessAndScriptPubkey.js +41 -0
  240. package/tradelayer.js/utils/walletCache.js +172 -0
  241. package/tradelayer.js/utils/walletContractInterface.js +48 -0
  242. package/tradelayer.js/utils/walletFetchTxs.js +66 -0
  243. package/tradelayer.js/utils/walletUtils.js +97 -0
  244. package/tradelayer.js/utils/wipeDB.js +55 -0
  245. package/tradelayer.js/utils/wipeDBNotTx.js +50 -0
  246. package/txEncoder.js +529 -0
  247. package/utility.js +28 -0
  248. package/verifymessage.js +38 -0
  249. package/ws-transport.js +311 -0
@@ -0,0 +1,226 @@
1
+ const ClientWrapper = require('./client.js');
2
+ const express = require('express');
3
+ const TallyMap = require('./tally.js');
4
+ const PropertyManager = require('./property.js');
5
+ const Main = require('./main.js');
6
+ const Activations = require('./activation.js')
7
+ const Orderbook = require('./orderbook.js')
8
+ const ContractRegistry = require('./contractRegistry.js')
9
+ var activationsInstance = Activations.getInstance()
10
+ const OracleList = require('./oracle.js')
11
+ const MarginMap = require('./marginMap.js')
12
+
13
+
14
+ let isInitialized = false; // A flag to track the initialization status
15
+ const app = express();
16
+ const port = 3000; // Choose a port that suits your setup
17
+
18
+ app.use(express.json()); // Middleware to parse JSON bodies
19
+
20
+ app.post('/initMain', async (req, res) => {
21
+ try {
22
+ console.log('Initializing');
23
+ const mainProcessor = await Main.getInstance(req.body.test); // Use req.body for arguments
24
+ mainProcessor.initialize();
25
+ console.log('initialized')
26
+ res.status(200).send('Main process initialized successfully');
27
+ } catch (error) {
28
+ res.status(500).send('Error in listener init: ' + error.message);
29
+ }
30
+ });
31
+
32
+ app.post('/getAllBalancesForAddress', async (req, res) => {
33
+ console.log('trying to load balances' +req.body.address)
34
+
35
+ try {
36
+ const tallyMapInstance = await TallyMap.getInstance();
37
+ if (!tallyMapInstance) {
38
+ throw new Error("Failed to get TallyMap instance");
39
+ }
40
+ await tallyMapInstance.loadFromDB(); // Wait for the tally map to load
41
+ const balances = tallyMapInstance.getAddressBalances(req.body.address);
42
+ res.status(200).json(balances);
43
+ } catch (error) {
44
+ console.error(error); // Log the full error for debugging
45
+ res.status(500).send('Error: ' + error.message);
46
+ }
47
+ });
48
+
49
+ app.post('/listProperties', async (req, res) => {
50
+ try {
51
+ console.log('express calling property list');
52
+ const propertiesArray = await PropertyManager.getPropertyIndex(); // Await the getPropertyIndex method
53
+ res.json(propertiesArray); // Send the array representation of the properties
54
+ } catch (error) {
55
+ console.error('Error fetching property list:', error);
56
+ res.status(500).send('Error: ' + error.message);
57
+ }
58
+ });
59
+
60
+ app.get('/addressesWithProperty/:propertyId', async (req, res) => {
61
+ try {
62
+ const propertyId = parseInt(req.params.propertyId);
63
+ const addresses = await TallyMap.getAddressesWithBalanceForProperty(propertyId);
64
+ res.json(addresses);
65
+ } catch (error) {
66
+ res.status(500).send(error.message);
67
+ }
68
+ });
69
+
70
+ app.post('/getActivations', async (req, res) => {
71
+ try {
72
+ console.log('express calling activations');
73
+ const activations = await activationsInstance.loadActivationsList(); // Await the getPropertyIndex method
74
+ res.json(activations); // Send the array representation of the properties
75
+ } catch (error) {
76
+ console.error('Error fetching activations:', error);
77
+ res.status(500).send('Error: ' + error.message);
78
+ }
79
+ });
80
+
81
+
82
+ // Endpoint to check the initialization status
83
+ app.get('/initStatus', (req, res) => {
84
+ res.json({ initialized: isInitialized });
85
+ });
86
+
87
+ app.post('/getOrderBook', async (req, res) => {
88
+ try {
89
+ const { propertyId1, propertyId2 } = req.body;
90
+ const orderBookKey = `${propertyId1}-${propertyId2}`;
91
+
92
+ // Instantiate your Orderbook class with the specific orderBookKey
93
+ const orderbook = new Orderbook(orderBookKey);
94
+ await orderbook.loadOrCreateOrderBook(); // Load or create the specific order book
95
+
96
+ // Retrieve the specific order book data
97
+ const orderBookData = orderbook.orderBooks[orderBookKey] || {};
98
+ res.json(orderBookData);
99
+ } catch (error) {
100
+ console.error('Error fetching order book:', error);
101
+ res.status(500).send('Error: ' + error.message);
102
+ }
103
+ });
104
+
105
+ app.post('/getContractOrderBook', async (req, res) => {
106
+ try {
107
+ const { contractId } = req.body;
108
+ const orderBookKey = `contract-${contractId}`;
109
+
110
+ // Instantiate your Orderbook class with the specific contractId
111
+ const orderbook = new Orderbook(orderBookKey);
112
+ // Load or create the specific order book
113
+
114
+ // Retrieve the specific order book data
115
+ const orderBookData = await orderbook.loadOrderBook(orderBookKey);
116
+ res.json(orderBookData);
117
+ } catch (error) {
118
+ console.error('Error fetching contract order book:', error);
119
+ res.status(500).send('Error: ' + error.message);
120
+ }
121
+ });
122
+
123
+
124
+ app.post('/listContractSeries', async (req, res) => {
125
+ try {
126
+ console.log('Fetching contract series list');
127
+ //const contractsRegistry = ContractRegistry.getInstance(); // Access singleton instance
128
+ //console.log(JSON.stringify(contractsRegistry))
129
+ // Assuming loadContractsFromDB is a static method
130
+ //ContractRegistry.loadContractsFromDB(); // Load contracts from the database
131
+ //console.log('contract series array '+contractSeriesArray)
132
+ // Assuming getAllContracts is a static method
133
+ const contractSeriesArray = await ContractRegistry.getAllContracts(); // Get all contract series
134
+ console.log('contract series array '+JSON.stringify(contractSeriesArray))
135
+ res.json(contractSeriesArray);
136
+ } catch (error) {
137
+ console.error('Error fetching contract series:', error);
138
+ res.status(500).send('Error: ' + error.message);
139
+ }
140
+ });
141
+
142
+ // Endpoint to list all oracles
143
+ app.post('/listOracles', async (req, res) => {
144
+ try {
145
+ console.log('Fetching oracle list');
146
+ const oracleArray = await OracleList.getAllOracles(); // Implement this in OracleRegistry
147
+ res.json(oracleArray);
148
+ } catch (error) {
149
+ console.error('Error fetching oracle list:', error);
150
+ res.status(500).send('Error: ' + error.message);
151
+ }
152
+ });
153
+
154
+ app.get('/contractTradeHistory/:contractId', async (req, res) => {
155
+ const { contractId } = req.params;
156
+ const contractTradeHistory = await Orderbook.getContractTradeHistoryByContractId(contractId);
157
+ res.json(contractTradeHistory);
158
+ });
159
+
160
+ app.get('/tradeHistory/:propertyId1/:propertyId2', async (req, res) => {
161
+ const { propertyId1, propertyId2 } = req.params;
162
+ const tradeHistory = await Orderbook.getTradeHistoryByPropertyIdPair(propertyId1, propertyId2);
163
+ console.log('returning trade history '+JSON.stringify(tradeHistory))
164
+ res.json(tradeHistory);
165
+ });
166
+
167
+ app.get('/fundingHistory/:contractId', async (req, res) => {
168
+ const { contractId } = req.params;
169
+ const fundingHistory = await ContractsRegistry.loadFundingEvents(contractId);
170
+ res.json(fundingHistory);
171
+ });
172
+
173
+ app.get('/oracleHistory/:contractId', async (req, res) => {
174
+ // Assuming you have an Oracles class
175
+ const { contractId } = req.params;
176
+ const oracleHistory = await Oracles.getHistory(contractId);
177
+ res.json(oracleHistory);
178
+ });
179
+
180
+
181
+ app.get('/contractPosition/:address/:contractId', async (req, res) => {
182
+ const { address, contractId } = req.params;
183
+ try {
184
+ const marginMap = await MarginMap.getInstance(contractId);
185
+ const position = marginMap.getPositionForAddress(address);
186
+ res.json(position);
187
+ } catch (error) {
188
+ res.status(500).send('Error: ' + error.message);
189
+ }
190
+ });
191
+
192
+ app.get('/clearingHistory/:contractId', async (req, res) => {
193
+ // Implement logic to retrieve clearing history
194
+ const { contractId } = req.params;
195
+ // const clearingHistory = ...
196
+ res.json(clearingHistory);
197
+ });
198
+
199
+ app.get('/walletPositions/:address', async (req, res) => {
200
+ const { address } = req.params;
201
+ const positions = await WalletCache.getPositions(address);
202
+ res.json(positions);
203
+ });
204
+
205
+ app.get('/walletBalances/:address', async (req, res) => {
206
+ const { address } = req.params;
207
+ const balances = await WalletCache.getBalance(address);
208
+ res.json(balances);
209
+ });
210
+
211
+ app.get('/walletPosition/:address/:contractId', async (req, res) => {
212
+ const { address, contractId } = req.params;
213
+ try {
214
+ const position = await WalletCache.getContractPositionForAddressAndContractId(address, contractId);
215
+ res.json(position);
216
+ } catch (error) {
217
+ res.status(500).send(error.message);
218
+ }
219
+ });
220
+
221
+
222
+ // ... Add other endpoints ...
223
+
224
+ app.listen(port, () => {
225
+ console.log(`Express server running on port ${port}`);
226
+ });