investing 0.1.232 → 0.1.233

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 (268) hide show
  1. package/README.md +119 -167
  2. package/dist/{archiver-web.es-1JiWwR9l.js → archiver-web.es-B69gABHP.js} +1 -1
  3. package/dist/{archiver-web.es-B5icg6FL.cjs → archiver-web.es-fg4bLLZa.cjs} +1 -1
  4. package/dist/bookmakerAnalysis-Bfo1zUVm.js +1 -0
  5. package/dist/bookmakerAnalysis-CHn1W8uX.cjs +1 -0
  6. package/dist/callGrok-D0D7zBHK.js +1 -0
  7. package/dist/callGrok-DWO719mN.cjs +1 -0
  8. package/dist/db/index.d.ts +0 -189
  9. package/dist/db/index.d.ts.map +1 -1
  10. package/dist/db/schema.d.ts +0 -200
  11. package/dist/db/schema.d.ts.map +1 -1
  12. package/dist/events-BJOyGWeU.cjs +1 -0
  13. package/dist/events-OvBb8rgy.js +1 -0
  14. package/dist/index-D7fsk2gy.js +15 -0
  15. package/dist/index-_V1Ql5Es.cjs +13 -0
  16. package/dist/index.d.ts +1 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -1
  19. package/dist/index.mjs +1 -1
  20. package/dist/leaders/zulu.d.ts +5 -35
  21. package/dist/leaders/zulu.d.ts.map +1 -1
  22. package/dist/live-data/dukascopy-client.d.ts +2 -19
  23. package/dist/live-data/dukascopy-client.d.ts.map +1 -1
  24. package/dist/polymarket-updown-15-limit-order-bot-DCC8HE9Z.cjs +1 -0
  25. package/dist/polymarket-updown-15-limit-order-bot-Dv5oGAF4.js +1 -0
  26. package/dist/prediction/api/analytics.d.ts.map +1 -1
  27. package/dist/prediction/api/leaderboard.d.ts +11 -29
  28. package/dist/prediction/api/leaderboard.d.ts.map +1 -1
  29. package/dist/prediction/api/markets.d.ts.map +1 -1
  30. package/dist/prediction/api/prices.d.ts.map +1 -1
  31. package/dist/prediction/db/markets.d.ts +0 -13
  32. package/dist/prediction/db/markets.d.ts.map +1 -1
  33. package/dist/prediction/index.d.ts +0 -2
  34. package/dist/prediction/index.d.ts.map +1 -1
  35. package/dist/prediction/sync/incremental-markets.d.ts.map +1 -1
  36. package/dist/prediction/sync/leaderboard.d.ts +1 -1
  37. package/dist/prediction/sync/leaderboard.d.ts.map +1 -1
  38. package/dist/prediction/sync/markets.d.ts +2 -2
  39. package/dist/prediction/sync/markets.d.ts.map +1 -1
  40. package/dist/prediction/sync/orchestration.d.ts +1 -1
  41. package/dist/prediction/sync/trade-history.d.ts.map +1 -1
  42. package/dist/predictos/agents/bookmaker-agent.d.ts.map +1 -0
  43. package/dist/predictos/agents/event-analysis-agent.d.ts.map +1 -0
  44. package/dist/{prediction-markets → predictos}/agents/index.d.ts +1 -5
  45. package/dist/predictos/agents/index.d.ts.map +1 -0
  46. package/dist/predictos/agents/index.js +1 -0
  47. package/dist/predictos/agents/index.mjs +1 -0
  48. package/dist/predictos/agents/mapper-agent.d.ts.map +1 -0
  49. package/dist/{prediction-markets → predictos}/agents/polyfactual-research.d.ts +1 -1
  50. package/dist/predictos/agents/polyfactual-research.d.ts.map +1 -0
  51. package/dist/predictos/agents/polymarket-position-tracker.d.ts.map +1 -0
  52. package/dist/{prediction-markets → predictos}/agents/polymarket-put-order.d.ts +1 -1
  53. package/dist/predictos/agents/polymarket-put-order.d.ts.map +1 -0
  54. package/dist/predictos/agents/polymarket-updown-15-limit-order-bot.d.ts.map +1 -0
  55. package/dist/predictos/agents/x402-seller.d.ts.map +1 -0
  56. package/dist/predictos/ai/callBlockRun.d.ts.map +1 -0
  57. package/dist/predictos/ai/callGrok.d.ts.map +1 -0
  58. package/dist/predictos/ai/callOpenAI.d.ts.map +1 -0
  59. package/dist/predictos/ai/http.d.ts.map +1 -0
  60. package/dist/{prediction-markets → predictos}/ai/index.d.ts +1 -1
  61. package/dist/predictos/ai/index.d.ts.map +1 -0
  62. package/dist/predictos/ai/index.js +1 -0
  63. package/dist/predictos/ai/index.mjs +1 -0
  64. package/dist/predictos/ai/prompts/analyzeEventMarkets.d.ts.map +1 -0
  65. package/dist/predictos/ai/prompts/arbitrageAnalysis.d.ts.map +1 -0
  66. package/dist/predictos/ai/prompts/bookmakerAnalysis.d.ts.map +1 -0
  67. package/dist/predictos/ai/prompts/searchQueryGenerator.d.ts.map +1 -0
  68. package/dist/predictos/ai/types.d.ts.map +1 -0
  69. package/dist/predictos/arbitrage.d.ts.map +1 -0
  70. package/dist/predictos/arbitrage.js +1 -0
  71. package/dist/predictos/arbitrage.mjs +1 -0
  72. package/dist/{prediction-markets → predictos}/clients/polyfactual.d.ts +1 -1
  73. package/dist/predictos/clients/polyfactual.d.ts.map +1 -0
  74. package/dist/{prediction-markets → predictos}/clients/polymarket.d.ts +1 -1
  75. package/dist/predictos/clients/polymarket.d.ts.map +1 -0
  76. package/dist/{prediction-markets → predictos}/clients/x402.d.ts +1 -1
  77. package/dist/predictos/clients/x402.d.ts.map +1 -0
  78. package/dist/{prediction-markets → predictos}/data/kalshi.d.ts +1 -1
  79. package/dist/predictos/data/kalshi.d.ts.map +1 -0
  80. package/dist/predictos/data/kalshi.js +1 -0
  81. package/dist/predictos/data/kalshi.mjs +1 -0
  82. package/dist/{prediction-markets → predictos}/data/polymarket.d.ts +1 -1
  83. package/dist/predictos/data/polymarket.d.ts.map +1 -0
  84. package/dist/predictos/data/polymarket.js +1 -0
  85. package/dist/predictos/data/polymarket.mjs +1 -0
  86. package/dist/predictos/events.d.ts.map +1 -0
  87. package/dist/{prediction-markets → predictos}/index.d.ts +5 -8
  88. package/dist/predictos/index.d.ts.map +1 -0
  89. package/dist/predictos/index.js +1 -0
  90. package/dist/predictos/index.mjs +1 -0
  91. package/dist/{prediction-markets → predictos}/types.d.ts +6 -121
  92. package/dist/predictos/types.d.ts.map +1 -0
  93. package/dist/searchQueryGenerator-DIIs9xw5.js +1 -0
  94. package/dist/searchQueryGenerator-rCVblXJS.cjs +1 -0
  95. package/dist/stocks/index.d.ts +1 -2
  96. package/dist/stocks/index.d.ts.map +1 -1
  97. package/dist/stocks/quote-cache-service.d.ts +2 -11
  98. package/dist/stocks/quote-cache-service.d.ts.map +1 -1
  99. package/dist/stocks/unified-quote-service.d.ts +6 -15
  100. package/dist/stocks/unified-quote-service.d.ts.map +1 -1
  101. package/dist/stocks/yahoo-finance-wrapper.d.ts +3 -39
  102. package/dist/stocks/yahoo-finance-wrapper.d.ts.map +1 -1
  103. package/dist/trading-agents/agents/debate-facilitator.d.ts +3 -3
  104. package/dist/trading-agents/agents/debate-facilitator.d.ts.map +1 -1
  105. package/dist/trading-agents/agents/fund-manager.d.ts +2 -4
  106. package/dist/trading-agents/agents/fund-manager.d.ts.map +1 -1
  107. package/dist/trading-agents/agents/improved-researchers.d.ts +3 -3
  108. package/dist/trading-agents/agents/improved-researchers.d.ts.map +1 -1
  109. package/dist/trading-agents/agents/market-analyst.d.ts +2 -2
  110. package/dist/trading-agents/agents/market-analyst.d.ts.map +1 -1
  111. package/dist/trading-agents/agents/news-analyst.d.ts +2 -2
  112. package/dist/trading-agents/agents/news-analyst.d.ts.map +1 -1
  113. package/dist/trading-agents/agents/researchers.d.ts +4 -4
  114. package/dist/trading-agents/agents/researchers.d.ts.map +1 -1
  115. package/dist/trading-agents/agents/risk-team.d.ts +4 -4
  116. package/dist/trading-agents/agents/risk-team.d.ts.map +1 -1
  117. package/dist/trading-agents/agents/trader.d.ts +2 -2
  118. package/dist/trading-agents/agents/trader.d.ts.map +1 -1
  119. package/dist/trading-agents/graph/trading-graph.d.ts +2 -28
  120. package/dist/trading-agents/graph/trading-graph.d.ts.map +1 -1
  121. package/dist/trading-agents/index.d.ts +0 -4
  122. package/dist/trading-agents/index.d.ts.map +1 -1
  123. package/dist/trading-agents/types/index.d.ts +4 -11
  124. package/dist/trading-agents/types/index.d.ts.map +1 -1
  125. package/dist/trading-agents/utils/llm-client.d.ts +1 -4
  126. package/dist/trading-agents/utils/llm-client.d.ts.map +1 -1
  127. package/package.json +50 -19
  128. package/THIRD_PARTY_NOTICES.md +0 -144
  129. package/dist/index-AVsPNv32.cjs +0 -13
  130. package/dist/index-CPsRMTTf.js +0 -15
  131. package/dist/prediction/sync/refill-limits.d.ts +0 -9
  132. package/dist/prediction/sync/refill-limits.d.ts.map +0 -1
  133. package/dist/prediction/sync/refill.d.ts +0 -34
  134. package/dist/prediction/sync/refill.d.ts.map +0 -1
  135. package/dist/prediction/utils/token-ids.d.ts +0 -17
  136. package/dist/prediction/utils/token-ids.d.ts.map +0 -1
  137. package/dist/prediction-markets/adapters/trading-agents.d.ts +0 -21
  138. package/dist/prediction-markets/adapters/trading-agents.d.ts.map +0 -1
  139. package/dist/prediction-markets/agents/bookmaker-agent.d.ts.map +0 -1
  140. package/dist/prediction-markets/agents/event-analysis-agent.d.ts.map +0 -1
  141. package/dist/prediction-markets/agents/index.d.ts.map +0 -1
  142. package/dist/prediction-markets/agents/kalshi-momentum-agent.d.ts +0 -7
  143. package/dist/prediction-markets/agents/kalshi-momentum-agent.d.ts.map +0 -1
  144. package/dist/prediction-markets/agents/mapper-agent.d.ts.map +0 -1
  145. package/dist/prediction-markets/agents/polyfactual-research.d.ts.map +0 -1
  146. package/dist/prediction-markets/agents/polymarket-position-tracker.d.ts.map +0 -1
  147. package/dist/prediction-markets/agents/polymarket-put-order.d.ts.map +0 -1
  148. package/dist/prediction-markets/agents/polymarket-updown-15-limit-order-bot.d.ts.map +0 -1
  149. package/dist/prediction-markets/agents/x402-seller.d.ts.map +0 -1
  150. package/dist/prediction-markets/ai/callBlockRun.d.ts.map +0 -1
  151. package/dist/prediction-markets/ai/callGrok.d.ts.map +0 -1
  152. package/dist/prediction-markets/ai/callOpenAI.d.ts.map +0 -1
  153. package/dist/prediction-markets/ai/http.d.ts.map +0 -1
  154. package/dist/prediction-markets/ai/index.d.ts.map +0 -1
  155. package/dist/prediction-markets/ai/prompts/analyzeEventMarkets.d.ts.map +0 -1
  156. package/dist/prediction-markets/ai/prompts/arbitrageAnalysis.d.ts.map +0 -1
  157. package/dist/prediction-markets/ai/prompts/bookmakerAnalysis.d.ts.map +0 -1
  158. package/dist/prediction-markets/ai/prompts/searchQueryGenerator.d.ts.map +0 -1
  159. package/dist/prediction-markets/ai/types.d.ts.map +0 -1
  160. package/dist/prediction-markets/arbitrage.d.ts.map +0 -1
  161. package/dist/prediction-markets/clients/polyfactual.d.ts.map +0 -1
  162. package/dist/prediction-markets/clients/polymarket.d.ts.map +0 -1
  163. package/dist/prediction-markets/clients/x402.d.ts.map +0 -1
  164. package/dist/prediction-markets/data/kalshi.d.ts.map +0 -1
  165. package/dist/prediction-markets/data/polymarket.d.ts.map +0 -1
  166. package/dist/prediction-markets/events.d.ts.map +0 -1
  167. package/dist/prediction-markets/execution/paper.d.ts +0 -19
  168. package/dist/prediction-markets/execution/paper.d.ts.map +0 -1
  169. package/dist/prediction-markets/index.cjs +0 -1
  170. package/dist/prediction-markets/index.d.ts.map +0 -1
  171. package/dist/prediction-markets/index.mjs +0 -1
  172. package/dist/prediction-markets/kalshi-momentum.LICENSE +0 -21
  173. package/dist/prediction-markets/strategies/btc15m-fusion.d.ts +0 -27
  174. package/dist/prediction-markets/strategies/btc15m-fusion.d.ts.map +0 -1
  175. package/dist/prediction-markets/strategies/copy-trade-sizing.d.ts +0 -27
  176. package/dist/prediction-markets/strategies/copy-trade-sizing.d.ts.map +0 -1
  177. package/dist/prediction-markets/strategies/gabagool.d.ts +0 -26
  178. package/dist/prediction-markets/strategies/gabagool.d.ts.map +0 -1
  179. package/dist/prediction-markets/strategies/kalshi-momentum.d.ts +0 -13
  180. package/dist/prediction-markets/strategies/kalshi-momentum.d.ts.map +0 -1
  181. package/dist/prediction-markets/types.d.ts.map +0 -1
  182. package/dist/prediction-markets/validation.d.ts +0 -5
  183. package/dist/prediction-markets/validation.d.ts.map +0 -1
  184. package/dist/scripted-llm-C6y_Dk4q.cjs +0 -1
  185. package/dist/scripted-llm-DqaYX5Zn.js +0 -1
  186. package/dist/stocks/strategies/bb-rsi-breakout.d.ts +0 -63
  187. package/dist/stocks/strategies/bb-rsi-breakout.d.ts.map +0 -1
  188. package/dist/stocks/strategies/ema-crossover.d.ts +0 -51
  189. package/dist/stocks/strategies/ema-crossover.d.ts.map +0 -1
  190. package/dist/strategy-signals/data/fixture-data-provider.d.ts +0 -8
  191. package/dist/strategy-signals/data/fixture-data-provider.d.ts.map +0 -1
  192. package/dist/strategy-signals/data/openbb-mapping.d.ts +0 -7
  193. package/dist/strategy-signals/data/openbb-mapping.d.ts.map +0 -1
  194. package/dist/strategy-signals/demo.d.ts +0 -446
  195. package/dist/strategy-signals/demo.d.ts.map +0 -1
  196. package/dist/strategy-signals/execution.d.ts +0 -18
  197. package/dist/strategy-signals/execution.d.ts.map +0 -1
  198. package/dist/strategy-signals/fixtures/openbb-data/bars.d.ts +0 -10
  199. package/dist/strategy-signals/fixtures/openbb-data/bars.d.ts.map +0 -1
  200. package/dist/strategy-signals/index.d.ts +0 -32
  201. package/dist/strategy-signals/index.d.ts.map +0 -1
  202. package/dist/strategy-signals/proposal.d.ts +0 -10
  203. package/dist/strategy-signals/proposal.d.ts.map +0 -1
  204. package/dist/strategy-signals/report.d.ts +0 -6
  205. package/dist/strategy-signals/report.d.ts.map +0 -1
  206. package/dist/strategy-signals/risk-gate.d.ts +0 -3
  207. package/dist/strategy-signals/risk-gate.d.ts.map +0 -1
  208. package/dist/strategy-signals/sources/btc15m-fusion.d.ts +0 -16
  209. package/dist/strategy-signals/sources/btc15m-fusion.d.ts.map +0 -1
  210. package/dist/strategy-signals/sources/copy-trade-sizing.d.ts +0 -15
  211. package/dist/strategy-signals/sources/copy-trade-sizing.d.ts.map +0 -1
  212. package/dist/strategy-signals/sources/gabagool.d.ts +0 -12
  213. package/dist/strategy-signals/sources/gabagool.d.ts.map +0 -1
  214. package/dist/strategy-signals/sources/hedge-fund-technicals.d.ts +0 -42
  215. package/dist/strategy-signals/sources/hedge-fund-technicals.d.ts.map +0 -1
  216. package/dist/strategy-signals/sources/kalshi-momentum.d.ts +0 -10
  217. package/dist/strategy-signals/sources/kalshi-momentum.d.ts.map +0 -1
  218. package/dist/strategy-signals/sources/kalshi-vibe-guards.d.ts +0 -15
  219. package/dist/strategy-signals/sources/kalshi-vibe-guards.d.ts.map +0 -1
  220. package/dist/strategy-signals/sources/kalshi-vibe.d.ts +0 -11
  221. package/dist/strategy-signals/sources/kalshi-vibe.d.ts.map +0 -1
  222. package/dist/strategy-signals/sources/red-flags.d.ts +0 -13
  223. package/dist/strategy-signals/sources/red-flags.d.ts.map +0 -1
  224. package/dist/strategy-signals/survival-posture.d.ts +0 -13
  225. package/dist/strategy-signals/survival-posture.d.ts.map +0 -1
  226. package/dist/strategy-signals/types.d.ts +0 -138
  227. package/dist/strategy-signals/types.d.ts.map +0 -1
  228. package/dist/strategy-signals/validate.d.ts +0 -15
  229. package/dist/strategy-signals/validate.d.ts.map +0 -1
  230. package/dist/strategy-signals/venues/kalshi-venue-mapping.d.ts +0 -3
  231. package/dist/strategy-signals/venues/kalshi-venue-mapping.d.ts.map +0 -1
  232. package/dist/strategy-signals/venues/mock-equity-broker.d.ts +0 -16
  233. package/dist/strategy-signals/venues/mock-equity-broker.d.ts.map +0 -1
  234. package/dist/strategy-signals/venues/mock-venue.d.ts +0 -14
  235. package/dist/strategy-signals/venues/mock-venue.d.ts.map +0 -1
  236. package/dist/strategy-signals/venues/pmxt-venue-mapping.d.ts +0 -7
  237. package/dist/strategy-signals/venues/pmxt-venue-mapping.d.ts.map +0 -1
  238. package/dist/trading-agents/agents/risk-judge.d.ts +0 -13
  239. package/dist/trading-agents/agents/risk-judge.d.ts.map +0 -1
  240. package/dist/trading-agents/index.cjs +0 -1
  241. package/dist/trading-agents/index.mjs +0 -1
  242. package/dist/trading-agents/utils/parse-final-line.d.ts +0 -7
  243. package/dist/trading-agents/utils/parse-final-line.d.ts.map +0 -1
  244. package/dist/trading-agents/utils/scripted-llm.d.ts +0 -17
  245. package/dist/trading-agents/utils/scripted-llm.d.ts.map +0 -1
  246. package/dist/trading-agents/utils/strategy-prompt.d.ts +0 -6
  247. package/dist/trading-agents/utils/strategy-prompt.d.ts.map +0 -1
  248. package/dist/trading-agents-Bh9OORHe.js +0 -1
  249. package/dist/trading-agents-C8M7tbB0.cjs +0 -1
  250. package/dist/validate-C1MS8RhG.js +0 -1
  251. package/dist/validate-DBxPUXqH.cjs +0 -1
  252. /package/dist/{prediction-markets → predictos}/agents/bookmaker-agent.d.ts +0 -0
  253. /package/dist/{prediction-markets → predictos}/agents/event-analysis-agent.d.ts +0 -0
  254. /package/dist/{prediction-markets → predictos}/agents/mapper-agent.d.ts +0 -0
  255. /package/dist/{prediction-markets → predictos}/agents/polymarket-position-tracker.d.ts +0 -0
  256. /package/dist/{prediction-markets → predictos}/agents/polymarket-updown-15-limit-order-bot.d.ts +0 -0
  257. /package/dist/{prediction-markets → predictos}/agents/x402-seller.d.ts +0 -0
  258. /package/dist/{prediction-markets → predictos}/ai/callBlockRun.d.ts +0 -0
  259. /package/dist/{prediction-markets → predictos}/ai/callGrok.d.ts +0 -0
  260. /package/dist/{prediction-markets → predictos}/ai/callOpenAI.d.ts +0 -0
  261. /package/dist/{prediction-markets → predictos}/ai/http.d.ts +0 -0
  262. /package/dist/{prediction-markets → predictos}/ai/prompts/analyzeEventMarkets.d.ts +0 -0
  263. /package/dist/{prediction-markets → predictos}/ai/prompts/arbitrageAnalysis.d.ts +0 -0
  264. /package/dist/{prediction-markets → predictos}/ai/prompts/bookmakerAnalysis.d.ts +0 -0
  265. /package/dist/{prediction-markets → predictos}/ai/prompts/searchQueryGenerator.d.ts +0 -0
  266. /package/dist/{prediction-markets → predictos}/ai/types.d.ts +0 -0
  267. /package/dist/{prediction-markets → predictos}/arbitrage.d.ts +0 -0
  268. /package/dist/{prediction-markets → predictos}/events.d.ts +0 -0
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export * from './trading-agents';
15
15
  export * from './alpaca/client';
16
16
  export * from './stocks';
17
17
  export * from './prediction';
18
- export * from './prediction-markets';
18
+ export * from './predictos';
19
19
  export * from './algo-stategies/tv-scraper';
20
20
  export * from './leaders/nvsty-leaders';
21
21
  export * from './leaders/zulu';
@@ -23,5 +23,4 @@ export * from './llm/debate-generator';
23
23
  export * from './alpaca/alpaca-mcp-client';
24
24
  export * from './debate-research/stock-agents-api';
25
25
  export * from './trending-topics/wiki-page-views';
26
- export * from './strategy-signals';
27
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,MAAM,CAAC;AAGrB,cAAc,gCAAgC,CAAC;AAG/C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,UAAU,CAAC;AAGzB,cAAc,cAAc,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,mCAAmC,CAAC;AAElD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,MAAM,CAAC;AAGrB,cAAc,gCAAgC,CAAC;AAG/C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,UAAU,CAAC;AAGzB,cAAc,cAAc,CAAC;AAI7B,cAAc,aAAa,CAAC;AAG5B,cAAc,6BAA6B,CAAC;AAG5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-AVsPNv32.cjs"),t=require("./scripted-llm-C6y_Dk4q.cjs"),r=require("./trading-agents-C8M7tbB0.cjs"),s=require("./validate-DBxPUXqH.cjs");exports.AlpacaMCPClient=e.AlpacaMCPClient,exports.CompanyAndAccessionNumberClass=e.CompanyAndAccessionNumberClass,exports.DEFAULT_BB_RSI_BREAKOUT_CONFIG=e.DEFAULT_BB_RSI_BREAKOUT_CONFIG,exports.DEFAULT_D1_DATABASE_ID=e.DEFAULT_D1_DATABASE_ID,exports.DEFAULT_EMA_CROSSOVER_CONFIG=e.DEFAULT_EMA_CROSSOVER_CONFIG,exports.Downloader=e.Downloader,exports.FinnhubWrapper=e.FinnhubWrapper,exports.FixtureDataProvider=e.FixtureDataProvider,exports.LEADERBOARD_MAX_OFFSET=e.LEADERBOARD_MAX_OFFSET,exports.LEADERBOARD_PAGE_LIMIT=e.LEADERBOARD_PAGE_LIMIT,exports.MAX_REFILL_MARKETS=e.MAX_REFILL_MARKETS,exports.MAX_ZULU_SYNC=e.MAX_ZULU_SYNC,exports.MockEquityBroker=e.MockEquityBroker,exports.MockVenue=e.MockVenue,exports.PM_MARKET_LISTING_KIND=e.PM_MARKET_LISTING_KIND,exports.POLYMARKET_CATEGORIES=e.POLYMARKET_CATEGORIES,exports.RequestedFilingsClass=e.RequestedFilingsClass,exports.StockAgentsAPI=e.StockAgentsAPI,exports.TOP_STOCKS=e.TOP_STOCKS,exports.UnifiedQuoteService=e.UnifiedQuoteService,exports.VIBE_LIMITS=e.VIBE_LIMITS,exports.WikiPageviews=e.WikiPageviews,exports.alpacaMCPClient=e.alpacaMCPClient,exports.analyzeCategories=e.analyzeCategories,exports.analyzeStock=e.analyzeStock,exports.analyzeTechnicals=e.analyzeTechnicals,exports.analyzeTopStocks=e.analyzeTopStocks,exports.backtestStock=e.backtestStock,exports.btc15mFusionSource=e.btc15mFusionSource,exports.btc15mGuard=e.btc15mGuard,exports.buildLeaderboardUrl=e.buildLeaderboardUrl,exports.calculateGreeks=e.calculateGreeks,exports.calculatePriceChanges=e.calculatePriceChanges,exports.calculateR2=e.calculateR2,exports.calculateRMSE=e.calculateRMSE,exports.calculateRollingStats=e.calculateRollingStats,exports.chatWithAI=e.chatWithAI,exports.checkGammaHealth=e.checkGammaHealth,exports.checkMarket=e.checkMarket,exports.clampRefillSize=e.clampRefillSize,exports.cleanCompanyName=e.cleanCompanyName,exports.combineTechnicalSignals=e.combineTechnicalSignals,exports.copyTradeSizingSource=e.copyTradeSizingSource,exports.createAlpacaBrokerClient=e.createAlpacaBrokerClient,exports.createAlpacaClient=e.createAlpacaClient,exports.db=e.db,exports.deactivateExpiredMarkets=e.deactivateExpiredMarkets,exports.detectMovements=e.detectMovements,exports.evaluateBbRsiBreakout=e.evaluateBbRsiBreakout,exports.evaluateEmaCrossover=e.evaluateEmaCrossover,exports.fetchActiveMarketsWithPrices=e.fetchActiveMarketsWithPrices,exports.fetchAllMarkets=e.fetchAllMarkets,exports.fetchAllTraderActivity=e.fetchAllTraderActivity,exports.fetchAndStoreTopTraders=e.fetchAndStoreTopTraders,exports.fetchLeaderboard=e.fetchLeaderboard,exports.fetchLeaderboardPages=e.fetchLeaderboardPages,exports.fetchMarket=e.fetchMarket,exports.fetchMarketDetails=e.fetchMarketDetails,exports.fetchMarketHolders=e.fetchMarketHolders,exports.fetchMarketOrderBook=e.fetchMarketOrderBook,exports.fetchMarketSummary=e.fetchMarketSummary,exports.fetchMarkets=e.fetchMarkets,exports.fetchMarketsDashboard=e.fetchMarketsDashboard,exports.fetchPriceHistory=e.fetchPriceHistory,exports.fetchTopTraders=e.fetchTopTraders,exports.fetchTraderActivity=e.fetchTraderActivity,exports.fetchTraderPositions=e.fetchTraderPositions,exports.fetchTraderProfiles=e.fetchTraderProfiles,exports.fetchZuluTraderDetail=e.fetchZuluTraderDetail,exports.fetchZuluTraders=e.fetchZuluTraders,exports.finnhub=e.finnhub,exports.firstClobTokenId=e.firstClobTokenId,exports.formatTriggerType=e.formatTriggerType,exports.fromKalshiMarket=e.fromKalshiMarket,exports.fromOpenBBBars=e.fromOpenBBBars,exports.fromPmxtMarket=e.fromPmxtMarket,exports.gabagoolSource=e.gabagoolSource,exports.generateDebateAnalysis=e.generateDebateAnalysis,exports.generateDebateAnalysisWithOpenAI=e.generateDebateAnalysisWithOpenAI,exports.getAccount=e.getAccount,exports.getAlpacaMCPClient=e.getAlpacaMCPClient,exports.getCachedMarkets=e.getCachedMarkets,exports.getCategories=e.getCategories,exports.getD1HttpCredentials=e.getD1HttpCredentials,exports.getHistoricalQuotes=e.getHistoricalQuotes,exports.getLatestTradeTimestamp=e.getLatestTradeTimestamp,exports.getLeaders=e.getLeaders,exports.getMarketById=e.getMarketById,exports.getMarketDebate=e.getMarketDebate,exports.getMarketHolders=e.getMarketHolders,exports.getMarketPositions=e.getMarketPositions,exports.getMarkets=e.getMarkets,exports.getMarketsByCategory=e.getMarketsByCategory,exports.getPriceHistory=e.getPriceHistory,exports.getQuoteFromSource=e.getQuoteFromSource,exports.getQuotes=e.getQuotes,exports.getServiceHealth=e.getServiceHealth,exports.getSyncStatusStats=e.getSyncStatusStats,exports.getTradeHistorySyncProgress=e.getTradeHistorySyncProgress,exports.getTradeSyncStatus=e.getTradeSyncStatus,exports.getTraderPositions=e.getTraderPositions,exports.getTraderTradeHistory=e.getTraderTradeHistory,exports.getTraderTradeStats=e.getTraderTradeStats,exports.getTradersNeedingSync=e.getTradersNeedingSync,exports.getZuluTopByRank=e.getZuluTopByRank,exports.getZuluTraderById=e.getZuluTraderById,exports.getZuluTraders=e.getZuluTraders,exports.greeksEnricher=e.greeksEnricher,exports.hedgeFundTechnicalsSource=e.hedgeFundTechnicalsSource,exports.initialSurvivalState=e.initialSurvivalState,exports.isMarketBlocked=e.isMarketBlocked,exports.isValidTokenId=e.isValidTokenId,exports.kalshiVibeGuard=e.kalshiVibeGuard,exports.kalshiVibeSource=e.kalshiVibeSource,exports.loadModel=e.loadModel,exports.myLeadersAPI=e.myLeadersAPI,exports.normalizeBbRsiBreakoutConfig=e.normalizeBbRsiBreakoutConfig,exports.normalizeEmaCrossoverConfig=e.normalizeEmaCrossoverConfig,exports.normalizeZuluTrader=e.normalizeZuluTrader,exports.pageviews=e.pageviews,exports.parseClobTokenIds=e.parseClobTokenIds,exports.placeOrder=e.placeOrder,exports.predictFuture=e.predictFuture,exports.publishedMarketCondition=e.publishedMarketCondition,exports.queryKeys=e.queryKeys,exports.redFlagsSource=e.redFlagsSource,exports.refillMarkets=e.refillMarkets,exports.resumeTradeHistorySync=e.resumeTradeHistorySync,exports.saveCategories=e.saveCategories,exports.saveDebate=e.saveDebate,exports.saveHolders=e.saveHolders,exports.saveLeaderboardData=e.saveLeaderboardData,exports.saveLeaders=e.saveLeaders,exports.saveMarketPositions=e.saveMarketPositions,exports.saveMarkets=e.saveMarkets,exports.saveModel=e.saveModel,exports.savePositions=e.savePositions,exports.savePriceHistory=e.savePriceHistory,exports.saveTradeHistory=e.saveTradeHistory,exports.saveZuluCurrencyStats=e.saveZuluCurrencyStats,exports.saveZuluTraders=e.saveZuluTraders,exports.searchMarkets=e.searchMarkets,exports.searchMarketsInDB=e.searchMarketsInDB,exports.searchPublic=e.searchPublic,exports.searchZuluTraders=e.searchZuluTraders,exports.splitTrainTest=e.splitTrainTest,exports.stockAgentsAPI=e.stockAgentsAPI,exports.stockNames=e.stockNames,exports.syncAll=e.syncAll,exports.syncAllMarkets=e.syncAllMarkets,exports.syncCopyTradingLeadersOrders=e.syncCopyTradingLeadersOrders,exports.syncLeaderboard=e.syncLeaderboard,exports.syncLeadersAndCategories=e.syncLeadersAndCategories,exports.syncMarketHolders=e.syncMarketHolders,exports.syncMarkets=e.syncMarkets,exports.syncMarketsIncremental=e.syncMarketsIncremental,exports.syncPriceHistory=e.syncPriceHistory,exports.syncTopTradersTradeHistory=e.syncTopTradersTradeHistory,exports.syncTraderTradeHistory=e.syncTraderTradeHistory,exports.syncZuluTraderDetails=e.syncZuluTraderDetails,exports.syncZuluTraders=e.syncZuluTraders,exports.technicalAdx=e.technicalAdx,exports.technicalAtr=e.technicalAtr,exports.technicalBollinger=e.technicalBollinger,exports.technicalEma=e.technicalEma,exports.technicalHurst=e.technicalHurst,exports.technicalRsi=e.technicalRsi,exports.toSurvivalPosture=e.toSurvivalPosture,exports.toTradeSignal=e.toTradeSignal,exports.trainModels=e.trainModels,exports.unifiedQuoteService=e.unifiedQuoteService,exports.updateSurvivalState=e.updateSurvivalState,exports.updateTradeSyncStatus=e.updateTradeSyncStatus,exports.vibeBuyFailure=e.vibeBuyFailure,exports.vibeKellyQuantity=e.vibeKellyQuantity,exports.yfinance=e.yfinance,exports.BearResearcher=t.BearResearcher,exports.BullResearcher=t.BullResearcher,exports.FinancialSituationMemory=t.FinancialSituationMemory,exports.FundManager=t.FundManager,exports.InvestmentJudge=t.InvestmentJudge,exports.MarketAnalyst=t.MarketAnalyst,exports.NeutralAnalyst=t.NeutralAnalyst,exports.RiskJudge=t.RiskJudge,exports.RiskyAnalyst=t.RiskyAnalyst,exports.SafeAnalyst=t.SafeAnalyst,exports.ScriptedLLMClient=t.ScriptedLLMClient,exports.Trader=t.Trader,exports.TradingAgentsGraph=t.TradingAgentsGraph,exports.UnifiedLLMClient=t.UnifiedLLMClient,exports.WORKER_SAFE_YAHOO_FINANCE_OPTIONS=t.WORKER_SAFE_YAHOO_FINANCE_OPTIONS,exports.YahooFinanceWrapper=t.YahooFinanceWrapper,exports.applyRiskGate=t.applyRiskGate,exports.createLLM=t.createLLM,exports.createYahooFinance=t.createYahooFinance,exports.formatStructuredReport=t.formatStructuredReport,exports.getFundamentals=t.getFundamentals,exports.getIndicators=t.getIndicators,exports.getNews=t.getNews,exports.getStockData=t.getStockData,exports.normalizeChartQuotes=t.normalizeChartQuotes,exports.parseFundManagerApproval=t.parseFundManagerApproval,exports.parseJudgeDecision=t.parseJudgeDecision,exports.proposalId=t.proposalId,exports.renderStrategySignalsReport=t.renderStrategySignalsReport,exports.selectProposal=t.selectProposal,exports.toStructuredReport=t.toStructuredReport,exports.yahooFinance=t.yahooFinance,exports.yahooFinanceWrapper=t.yahooFinanceWrapper,exports.BLOCKRUN_MODELS=r.BLOCKRUN_MODELS,exports.DEFAULT_KALSHI_MOMENTUM_CONFIG=r.DEFAULT_KALSHI_MOMENTUM_CONFIG,exports.InMemoryPaperExecutor=r.InMemoryPaperExecutor,exports.NoTradeError=r.NoTradeError,exports.analyzeEventMarketsPrompt=r.analyzeEventMarketsPrompt,exports.applyMomentumExecution=r.applyMomentumExecution,exports.arbitrageAnalysisPrompt=r.arbitrageAnalysisPrompt,exports.bookmakerAnalysisPrompt=r.bookmakerAnalysisPrompt,exports.buildDomeKalshiMarketUrl=r.buildKalshiMarketUrl,exports.buildKalshiMarketUrl=r.buildKalshiMarketUrl$1,exports.buildPolymarketUrl=r.buildPolymarketUrl,exports.callBlockRunResponses=r.callBlockRunResponses,exports.callGrokResponses=r.callGrokResponses,exports.callOpenAIResponses=r.callOpenAIResponses,exports.createKalshiMomentumState=r.createKalshiMomentumState,exports.dflowRequest=r.dflowRequest,exports.domeRequest=r.domeRequest,exports.evaluateKalshiMomentumTick=r.evaluateKalshiMomentumTick,exports.fetchWithTimeout=r.fetchWithTimeout,exports.findArbitrage=r.findArbitrage,exports.getDomeKalshiMarketsByEvent=r.getKalshiMarketsByEvent,exports.getEvents=r.getEvents,exports.getKalshiMarketsByEvent=r.getKalshiMarketsByEvent$1,exports.getPolymarketMarkets=r.getPolymarketMarkets,exports.isBlockRunModel=r.isBlockRunModel,exports.isRetryableError=r.isRetryableError,exports.kalshiMomentumSource=r.kalshiMomentumSource,exports.listBlockRunModels=r.listBlockRunModels,exports.normalizeKalshiMomentumConfig=r.normalizeKalshiMomentumConfig,exports.polyfactual=r.polyfactual,exports.polymarketClob=r.polymarket,exports.predictionMarketResearch=r.predictionMarketResearch,exports.reviewPredictionMarketIntent=r.reviewPredictionMarketIntent,exports.runBookmakerAgent=r.runBookmakerAgent,exports.runEventAnalysisAgent=r.runEventAnalysisAgent,exports.runKalshiMomentumPaperAgent=r.runKalshiMomentumPaperAgent,exports.runKalshiMomentumPaperAgentWithResearch=r.runKalshiMomentumPaperAgentWithResearch,exports.runMapperAgent=r.runMapperAgent,exports.runPolyfactualResearch=r.runPolyfactualResearch,exports.runPolymarketPositionTracker=r.runPolymarketPositionTracker,exports.runPolymarketPutOrder=r.runPolymarketPutOrder,exports.runPolymarketUpDown15LimitOrderBot=r.runPolymarketUpDown15LimitOrderBot,exports.runX402Seller=r.runX402Seller,exports.searchQueryGeneratorPrompt=r.searchQueryGeneratorPrompt,exports.sleep=r.sleep,exports.toEquityOrder=r.toEquityOrder,exports.toExecutableCents=r.toExecutableCents,exports.toPredictionMarketIntent=r.toPredictionMarketIntent,exports.x402=r.x402,exports.partitionValidSignals=s.partitionValidSignals,exports.validateAccount=s.validateAccount,exports.validateLimits=s.validateLimits,exports.validatePosture=s.validatePosture,exports.validateSignal=s.validateSignal;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-_V1Ql5Es.cjs"),r=require("./callGrok-DWO719mN.cjs"),t=require("./bookmakerAnalysis-CHn1W8uX.cjs"),s=require("./searchQueryGenerator-rCVblXJS.cjs"),a=require("./predictos/data/kalshi.js"),o=require("./predictos/data/polymarket.js"),p=require("./polymarket-updown-15-limit-order-bot-DCC8HE9Z.cjs"),c=require("./predictos/arbitrage.js"),i=require("./events-BJOyGWeU.cjs");exports.AlpacaMCPClient=e.AlpacaMCPClient,exports.BearResearcher=e.BearResearcher,exports.BullResearcher=e.BullResearcher,exports.CompanyAndAccessionNumberClass=e.CompanyAndAccessionNumberClass,exports.DEFAULT_D1_DATABASE_ID=e.DEFAULT_D1_DATABASE_ID,exports.Downloader=e.Downloader,exports.FinancialSituationMemory=e.FinancialSituationMemory,exports.FinnhubWrapper=e.FinnhubWrapper,exports.InvestmentJudge=e.InvestmentJudge,exports.MarketAnalyst=e.MarketAnalyst,exports.POLYMARKET_CATEGORIES=e.POLYMARKET_CATEGORIES,exports.RequestedFilingsClass=e.RequestedFilingsClass,exports.StockAgentsAPI=e.StockAgentsAPI,exports.TOP_STOCKS=e.TOP_STOCKS,exports.Trader=e.Trader,exports.TradingAgentsGraph=e.TradingAgentsGraph,exports.UnifiedLLMClient=e.UnifiedLLMClient,exports.UnifiedQuoteService=e.UnifiedQuoteService,exports.WikiPageviews=e.WikiPageviews,exports.YahooFinanceWrapper=e.YahooFinanceWrapper,exports.alpacaMCPClient=e.alpacaMCPClient,exports.analyzeCategories=e.analyzeCategories,exports.analyzeStock=e.analyzeStock,exports.analyzeTopStocks=e.analyzeTopStocks,exports.backtestStock=e.backtestStock,exports.calculateGreeks=e.calculateGreeks,exports.calculatePriceChanges=e.calculatePriceChanges,exports.calculateR2=e.calculateR2,exports.calculateRMSE=e.calculateRMSE,exports.calculateRollingStats=e.calculateRollingStats,exports.chatWithAI=e.chatWithAI,exports.checkGammaHealth=e.checkGammaHealth,exports.checkMarket=e.checkMarket,exports.cleanCompanyName=e.cleanCompanyName,exports.createAlpacaBrokerClient=e.createAlpacaBrokerClient,exports.createAlpacaClient=e.createAlpacaClient,exports.createLLM=e.createLLM,exports.db=e.db,exports.detectMovements=e.detectMovements,exports.fetchActiveMarketsWithPrices=e.fetchActiveMarketsWithPrices,exports.fetchAllMarkets=e.fetchAllMarkets,exports.fetchAllTraderActivity=e.fetchAllTraderActivity,exports.fetchAndStoreTopTraders=e.fetchAndStoreTopTraders,exports.fetchLeaderboard=e.fetchLeaderboard,exports.fetchMarket=e.fetchMarket,exports.fetchMarketDetails=e.fetchMarketDetails,exports.fetchMarketHolders=e.fetchMarketHolders,exports.fetchMarketOrderBook=e.fetchMarketOrderBook,exports.fetchMarketSummary=e.fetchMarketSummary,exports.fetchMarkets=e.fetchMarkets,exports.fetchMarketsDashboard=e.fetchMarketsDashboard,exports.fetchPriceHistory=e.fetchPriceHistory,exports.fetchTopTraders=e.fetchTopTraders,exports.fetchTraderActivity=e.fetchTraderActivity,exports.fetchTraderPositions=e.fetchTraderPositions,exports.fetchTraderProfiles=e.fetchTraderProfiles,exports.fetchZuluTraderDetail=e.fetchZuluTraderDetail,exports.fetchZuluTraders=e.fetchZuluTraders,exports.finnhub=e.finnhub,exports.formatTriggerType=e.formatTriggerType,exports.generateDebateAnalysis=e.generateDebateAnalysis,exports.generateDebateAnalysisWithOpenAI=e.generateDebateAnalysisWithOpenAI,exports.getAccount=e.getAccount,exports.getAlpacaMCPClient=e.getAlpacaMCPClient,exports.getCachedMarkets=e.getCachedMarkets,exports.getCategories=e.getCategories,exports.getD1HttpCredentials=e.getD1HttpCredentials,exports.getFundamentals=e.getFundamentals,exports.getHistoricalQuotes=e.getHistoricalQuotes,exports.getIndicators=e.getIndicators,exports.getLatestTradeTimestamp=e.getLatestTradeTimestamp,exports.getLeaders=e.getLeaders,exports.getMarketById=e.getMarketById,exports.getMarketDebate=e.getMarketDebate,exports.getMarketHolders=e.getMarketHolders,exports.getMarketPositions=e.getMarketPositions,exports.getMarkets=e.getMarkets,exports.getMarketsByCategory=e.getMarketsByCategory,exports.getNews=e.getNews,exports.getPriceHistory=e.getPriceHistory,exports.getQuoteFromSource=e.getQuoteFromSource,exports.getQuotes=e.getQuotes,exports.getServiceHealth=e.getServiceHealth,exports.getStockData=e.getStockData,exports.getSyncStatusStats=e.getSyncStatusStats,exports.getTradeHistorySyncProgress=e.getTradeHistorySyncProgress,exports.getTradeSyncStatus=e.getTradeSyncStatus,exports.getTraderPositions=e.getTraderPositions,exports.getTraderTradeHistory=e.getTraderTradeHistory,exports.getTraderTradeStats=e.getTraderTradeStats,exports.getTradersNeedingSync=e.getTradersNeedingSync,exports.getZuluTopByRank=e.getZuluTopByRank,exports.getZuluTraderById=e.getZuluTraderById,exports.getZuluTraders=e.getZuluTraders,exports.greeksEnricher=e.greeksEnricher,exports.isMarketBlocked=e.isMarketBlocked,exports.loadModel=e.loadModel,exports.myLeadersAPI=e.myLeadersAPI,exports.normalizeChartQuotes=e.normalizeChartQuotes,exports.pageviews=e.pageviews,exports.placeOrder=e.placeOrder,exports.predictFuture=e.predictFuture,exports.queryKeys=e.queryKeys,exports.resumeTradeHistorySync=e.resumeTradeHistorySync,exports.saveCategories=e.saveCategories,exports.saveDebate=e.saveDebate,exports.saveHolders=e.saveHolders,exports.saveLeaderboardData=e.saveLeaderboardData,exports.saveLeaders=e.saveLeaders,exports.saveMarketPositions=e.saveMarketPositions,exports.saveMarkets=e.saveMarkets,exports.saveModel=e.saveModel,exports.savePositions=e.savePositions,exports.savePriceHistory=e.savePriceHistory,exports.saveTradeHistory=e.saveTradeHistory,exports.saveZuluCurrencyStats=e.saveZuluCurrencyStats,exports.saveZuluTraders=e.saveZuluTraders,exports.searchMarkets=e.searchMarkets,exports.searchMarketsInDB=e.searchMarketsInDB,exports.searchPublic=e.searchPublic,exports.searchZuluTraders=e.searchZuluTraders,exports.splitTrainTest=e.splitTrainTest,exports.stockAgentsAPI=e.stockAgentsAPI,exports.stockNames=e.stockNames,exports.syncAll=e.syncAll,exports.syncAllMarkets=e.syncAllMarkets,exports.syncCopyTradingLeadersOrders=e.syncCopyTradingLeadersOrders,exports.syncLeaderboard=e.syncLeaderboard,exports.syncLeadersAndCategories=e.syncLeadersAndCategories,exports.syncMarketHolders=e.syncMarketHolders,exports.syncMarkets=e.syncMarkets,exports.syncMarketsIncremental=e.syncMarketsIncremental,exports.syncPriceHistory=e.syncPriceHistory,exports.syncTopTradersTradeHistory=e.syncTopTradersTradeHistory,exports.syncTraderTradeHistory=e.syncTraderTradeHistory,exports.syncZuluTraderDetails=e.syncZuluTraderDetails,exports.syncZuluTraders=e.syncZuluTraders,exports.trainModels=e.trainModels,exports.unifiedQuoteService=e.unifiedQuoteService,exports.updateTradeSyncStatus=e.updateTradeSyncStatus,exports.yahooFinance=e.yahooFinance,exports.yahooFinanceWrapper=e.yahooFinanceWrapper,exports.yfinance=e.yfinance,exports.callGrokResponses=r.callGrokResponses,exports.callOpenAIResponses=r.callOpenAIResponses,exports.fetchWithTimeout=r.fetchWithTimeout,exports.isRetryableError=r.isRetryableError,exports.sleep=r.sleep,exports.BLOCKRUN_MODELS=t.BLOCKRUN_MODELS,exports.analyzeEventMarketsPrompt=t.analyzeEventMarketsPrompt,exports.bookmakerAnalysisPrompt=t.bookmakerAnalysisPrompt,exports.callBlockRunResponses=t.callBlockRunResponses,exports.isBlockRunModel=t.isBlockRunModel,exports.listBlockRunModels=t.listBlockRunModels,exports.arbitrageAnalysisPrompt=s.arbitrageAnalysisPrompt,exports.searchQueryGeneratorPrompt=s.searchQueryGeneratorPrompt,exports.buildKalshiMarketUrl=a.buildKalshiMarketUrl,exports.dflowRequest=a.dflowRequest,exports.getKalshiMarketsByEvent=a.getKalshiMarketsByEvent,exports.buildDomeKalshiMarketUrl=o.buildKalshiMarketUrl,exports.buildPolymarketUrl=o.buildPolymarketUrl,exports.domeRequest=o.domeRequest,exports.getDomeKalshiMarketsByEvent=o.getKalshiMarketsByEvent,exports.getPolymarketMarkets=o.getPolymarketMarkets,exports.NoTradeError=p.NoTradeError,exports.polyfactual=p.polyfactual,exports.polymarketClob=p.polymarket,exports.runBookmakerAgent=p.runBookmakerAgent,exports.runEventAnalysisAgent=p.runEventAnalysisAgent,exports.runMapperAgent=p.runMapperAgent,exports.runPolyfactualResearch=p.runPolyfactualResearch,exports.runPolymarketPositionTracker=p.runPolymarketPositionTracker,exports.runPolymarketPutOrder=p.runPolymarketPutOrder,exports.runPolymarketUpDown15LimitOrderBot=p.runPolymarketUpDown15LimitOrderBot,exports.runX402Seller=p.runX402Seller,exports.x402=p.x402,exports.findArbitrage=c.findArbitrage,exports.getEvents=i.getEvents;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{A as a,C as s,D as e,a as t,b as r,d as i,F as o,e as n,L as l,f as c,M as d,h as u,i as k,j as g,P as y,k as M,R as m,S as h,T as p,U as T,V as A,W as S,l as v,m as P,n as f,o as R,p as C,q as E,r as b,s as I,t as B,u as L,v as D,w as _,x as F,y as O,z as H,B as K,E as N,G as U,H as G,I as z,J as W,K as Z,N as x,O as Q,Q as q,X as w,Y as V,Z as j,_ as Y,$ as X,a0 as J,a1 as $,a2 as aa,a3 as sa,a4 as ea,a5 as ta,a6 as ra,a7 as ia,a8 as oa,a9 as na,aa as la,ab as ca,ac as da,ad as ua,ae as ka,af as ga,ag as ya,ah as Ma,ai as ma,aj as ha,ak as pa,al as Ta,am as Aa,an as Sa,ao as va,ap as Pa,aq as fa,ar as Ra,as as Ca,at as Ea,au as ba,av as Ia,aw as Ba,ax as La,ay as Da,az as _a,aA as Fa,aB as Oa,aC as Ha,aD as Ka,aE as Na,aF as Ua,aG as Ga,aH as za,aI as Wa,aJ as Za,aK as xa,aL as Qa,aM as qa,aN as wa,aO as Va,aP as ja,aQ as Ya,aR as Xa,aS as Ja,aT as $a,aU as as,aV as ss,aW as es,aX as ts,aY as rs,aZ as is,a_ as os,a$ as ns,b0 as ls,b1 as cs,b2 as ds,b3 as us,b4 as ks,b5 as gs,b6 as ys,b7 as Ms,b8 as ms,b9 as hs,ba as ps,bb as Ts,bc as As,bd as Ss,be as vs,bf as Ps,bg as fs,bh as Rs,bi as Cs,bj as Es,bk as bs,bl as Is,bm as Bs,bn as Ls,bo as Ds,bp as _s,bq as Fs,br as Os,bs as Hs,bt as Ks,bu as Ns,bv as Us,bw as Gs,bx as zs,by as Ws,bz as Zs,bA as xs,bB as Qs,bC as qs,bD as ws,bE as Vs,bF as js,bG as Ys,bH as Xs,bI as Js,bJ as $s,bK as ae,bL as se,bM as ee,bN as te,bO as re,bP as ie,bQ as oe,bR as ne,bS as le,bT as ce,bU as de,bV as ue,bW as ke,bX as ge}from"./index-CPsRMTTf.js";import{B as ye,a as Me,F as me,b as he,I as pe,M as Te,N as Ae,R as Se,c as ve,S as Pe,d as fe,T as Re,e as Ce,U as Ee,W as be,Y as Ie,m as Be,f as Le,n as De,o as _e,g as Fe,h as Oe,i as He,j as Ke,q as Ne,p as Ue,k as Ge,r as ze,s as We,t as Ze,u as xe,y as Qe,l as qe}from"./scripted-llm-DqaYX5Zn.js";import{B as we,D as Ve,I as je,N as Ye,a as Xe,b as Je,c as $e,d as at,e as st,f as et,g as tt,h as rt,i as it,j as ot,k as nt,l as lt,m as ct,n as dt,o as ut,p as kt,q as gt,r as yt,s as Mt,t as mt,u as ht,v as pt,W as Tt,w as At,x as St,y as vt,z as Pt,A as ft,C as Rt,E as Ct,F as Et,G as bt,H as It,J as Bt,K as Lt,L as Dt,M as _t,O as Ft,P as Ot,Q as Ht,R as Kt,X as Nt,U as Ut,T as Gt,S as zt}from"./trading-agents-Bh9OORHe.js";import{p as Wt,a as Zt,b as xt,c as Qt,v as qt}from"./validate-C1MS8RhG.js";export{a as AlpacaMCPClient,we as BLOCKRUN_MODELS,ye as BearResearcher,Me as BullResearcher,s as CompanyAndAccessionNumberClass,e as DEFAULT_BB_RSI_BREAKOUT_CONFIG,t as DEFAULT_D1_DATABASE_ID,r as DEFAULT_EMA_CROSSOVER_CONFIG,Ve as DEFAULT_KALSHI_MOMENTUM_CONFIG,i as Downloader,me as FinancialSituationMemory,o as FinnhubWrapper,n as FixtureDataProvider,he as FundManager,je as InMemoryPaperExecutor,pe as InvestmentJudge,l as LEADERBOARD_MAX_OFFSET,c as LEADERBOARD_PAGE_LIMIT,d as MAX_REFILL_MARKETS,u as MAX_ZULU_SYNC,Te as MarketAnalyst,k as MockEquityBroker,g as MockVenue,Ae as NeutralAnalyst,Ye as NoTradeError,y as PM_MARKET_LISTING_KIND,M as POLYMARKET_CATEGORIES,m as RequestedFilingsClass,Se as RiskJudge,ve as RiskyAnalyst,Pe as SafeAnalyst,fe as ScriptedLLMClient,h as StockAgentsAPI,p as TOP_STOCKS,Re as Trader,Ce as TradingAgentsGraph,Ee as UnifiedLLMClient,T as UnifiedQuoteService,A as VIBE_LIMITS,be as WORKER_SAFE_YAHOO_FINANCE_OPTIONS,S as WikiPageviews,Ie as YahooFinanceWrapper,v as alpacaMCPClient,P as analyzeCategories,Xe as analyzeEventMarketsPrompt,f as analyzeStock,R as analyzeTechnicals,C as analyzeTopStocks,Je as applyMomentumExecution,Be as applyRiskGate,$e as arbitrageAnalysisPrompt,E as backtestStock,at as bookmakerAnalysisPrompt,b as btc15mFusionSource,I as btc15mGuard,st as buildDomeKalshiMarketUrl,et as buildKalshiMarketUrl,B as buildLeaderboardUrl,tt as buildPolymarketUrl,L as calculateGreeks,D as calculatePriceChanges,_ as calculateR2,F as calculateRMSE,O as calculateRollingStats,rt as callBlockRunResponses,it as callGrokResponses,ot as callOpenAIResponses,H as chatWithAI,K as checkGammaHealth,N as checkMarket,U as clampRefillSize,G as cleanCompanyName,z as combineTechnicalSignals,W as copyTradeSizingSource,Z as createAlpacaBrokerClient,x as createAlpacaClient,nt as createKalshiMomentumState,Le as createLLM,De as createYahooFinance,Q as db,q as deactivateExpiredMarkets,w as detectMovements,lt as dflowRequest,ct as domeRequest,V as evaluateBbRsiBreakout,j as evaluateEmaCrossover,dt as evaluateKalshiMomentumTick,Y as fetchActiveMarketsWithPrices,X as fetchAllMarkets,J as fetchAllTraderActivity,$ as fetchAndStoreTopTraders,aa as fetchLeaderboard,sa as fetchLeaderboardPages,ea as fetchMarket,ta as fetchMarketDetails,ra as fetchMarketHolders,ia as fetchMarketOrderBook,oa as fetchMarketSummary,na as fetchMarkets,la as fetchMarketsDashboard,ca as fetchPriceHistory,da as fetchTopTraders,ua as fetchTraderActivity,ka as fetchTraderPositions,ga as fetchTraderProfiles,ut as fetchWithTimeout,ya as fetchZuluTraderDetail,Ma as fetchZuluTraders,kt as findArbitrage,ma as finnhub,ha as firstClobTokenId,_e as formatStructuredReport,pa as formatTriggerType,Ta as fromKalshiMarket,Aa as fromOpenBBBars,Sa as fromPmxtMarket,va as gabagoolSource,Pa as generateDebateAnalysis,fa as generateDebateAnalysisWithOpenAI,Ra as getAccount,Ca as getAlpacaMCPClient,Ea as getCachedMarkets,ba as getCategories,Ia as getD1HttpCredentials,gt as getDomeKalshiMarketsByEvent,yt as getEvents,Fe as getFundamentals,Ba as getHistoricalQuotes,Oe as getIndicators,Mt as getKalshiMarketsByEvent,La as getLatestTradeTimestamp,Da as getLeaders,_a as getMarketById,Fa as getMarketDebate,Oa as getMarketHolders,Ha as getMarketPositions,Ka as getMarkets,Na as getMarketsByCategory,He as getNews,mt as getPolymarketMarkets,Ua as getPriceHistory,Ga as getQuoteFromSource,za as getQuotes,Wa as getServiceHealth,Ke as getStockData,Za as getSyncStatusStats,xa as getTradeHistorySyncProgress,Qa as getTradeSyncStatus,qa as getTraderPositions,wa as getTraderTradeHistory,Va as getTraderTradeStats,ja as getTradersNeedingSync,Ya as getZuluTopByRank,Xa as getZuluTraderById,Ja as getZuluTraders,$a as greeksEnricher,as as hedgeFundTechnicalsSource,ss as initialSurvivalState,ht as isBlockRunModel,es as isMarketBlocked,pt as isRetryableError,ts as isValidTokenId,Tt as kalshiMomentumSource,rs as kalshiVibeGuard,is as kalshiVibeSource,At as listBlockRunModels,os as loadModel,ns as myLeadersAPI,ls as normalizeBbRsiBreakoutConfig,Ne as normalizeChartQuotes,cs as normalizeEmaCrossoverConfig,St as normalizeKalshiMomentumConfig,ds as normalizeZuluTrader,us as pageviews,ks as parseClobTokenIds,Ue as parseFundManagerApproval,Ge as parseJudgeDecision,Wt as partitionValidSignals,gs as placeOrder,vt as polyfactual,Pt as polymarketClob,ys as predictFuture,ft as predictionMarketResearch,ze as proposalId,Ms as publishedMarketCondition,ms as queryKeys,hs as redFlagsSource,ps as refillMarkets,We as renderStrategySignalsReport,Ts as resumeTradeHistorySync,Rt as reviewPredictionMarketIntent,Ct as runBookmakerAgent,Et as runEventAnalysisAgent,bt as runKalshiMomentumPaperAgent,It as runKalshiMomentumPaperAgentWithResearch,Bt as runMapperAgent,Lt as runPolyfactualResearch,Dt as runPolymarketPositionTracker,_t as runPolymarketPutOrder,Ft as runPolymarketUpDown15LimitOrderBot,Ot as runX402Seller,As as saveCategories,Ss as saveDebate,vs as saveHolders,Ps as saveLeaderboardData,fs as saveLeaders,Rs as saveMarketPositions,Cs as saveMarkets,Es as saveModel,bs as savePositions,Is as savePriceHistory,Bs as saveTradeHistory,Ls as saveZuluCurrencyStats,Ds as saveZuluTraders,_s as searchMarkets,Fs as searchMarketsInDB,Os as searchPublic,Ht as searchQueryGeneratorPrompt,Hs as searchZuluTraders,Ze as selectProposal,Kt as sleep,Ks as splitTrainTest,Ns as stockAgentsAPI,Us as stockNames,Gs as syncAll,zs as syncAllMarkets,Ws as syncCopyTradingLeadersOrders,Zs as syncLeaderboard,xs as syncLeadersAndCategories,Qs as syncMarketHolders,qs as syncMarkets,ws as syncMarketsIncremental,Vs as syncPriceHistory,js as syncTopTradersTradeHistory,Ys as syncTraderTradeHistory,Xs as syncZuluTraderDetails,Js as syncZuluTraders,$s as technicalAdx,ae as technicalAtr,se as technicalBollinger,ee as technicalEma,te as technicalHurst,re as technicalRsi,Nt as toEquityOrder,Ut as toExecutableCents,Gt as toPredictionMarketIntent,xe as toStructuredReport,ie as toSurvivalPosture,oe as toTradeSignal,ne as trainModels,le as unifiedQuoteService,ce as updateSurvivalState,de as updateTradeSyncStatus,Zt as validateAccount,xt as validateLimits,Qt as validatePosture,qt as validateSignal,ue as vibeBuyFailure,ke as vibeKellyQuantity,zt as x402,Qe as yahooFinance,qe as yahooFinanceWrapper,ge as yfinance};
1
+ import{A as a,B as s,a as e,C as r,D as t,b as o,F as i,d as c,I as n,M as l,P as d,R as u,S as y,T as k,e as g,f as m,U as p,h,W as T,Y as M,i as A,j as f,k as P,l as S,m as v,n as C,o as b,p as D,q as B,r as H,s as L,t as R,u as E,v as I,w as O,x as F,y as Z,z as j,E as G,G as K,H as N,J as Q,K as W,L as U,N as w,O as _,Q as z,V as x,X as q,Z as Y,_ as J,$ as X,a0 as V,a1 as $,a2 as aa,a3 as sa,a4 as ea,a5 as ra,a6 as ta,a7 as oa,a8 as ia,a9 as ca,aa as na,ab as la,ac as da,ad as ua,ae as ya,af as ka,ag as ga,ah as ma,ai as pa,aj as ha,ak as Ta,al as Ma,am as Aa,an as fa,ao as Pa,ap as Sa,aq as va,ar as Ca,as as ba,at as Da,au as Ba,av as Ha,aw as La,ax as Ra,ay as Ea,az as Ia,aA as Oa,aB as Fa,aC as Za,aD as ja,aE as Ga,aF as Ka,aG as Na,aH as Qa,aI as Wa,aJ as Ua,aK as wa,aL as _a,aM as za,aN as xa,aO as qa,aP as Ya,aQ as Ja,aR as Xa,aS as Va,aT as $a,aU as as,aV as ss,aW as es,aX as rs,aY as ts,aZ as os,a_ as is,a$ as cs,b0 as ns,b1 as ls,b2 as ds,b3 as us,b4 as ys,b5 as ks,b6 as gs,b7 as ms,b8 as ps,b9 as hs,ba as Ts,bb as Ms,bc as As,bd as fs,be as Ps,bf as Ss,bg as vs,bh as Cs,bi as bs,bj as Ds,bk as Bs,bl as Hs,bm as Ls,bn as Rs,bo as Es,bp as Is,bq as Os}from"./index-D7fsk2gy.js";import{c as Fs,a as Zs,f as js,i as Gs,s as Ks}from"./callGrok-D0D7zBHK.js";import{B as Ns,a as Qs,b as Ws,c as Us,i as ws,l as _s}from"./bookmakerAnalysis-Bfo1zUVm.js";import{a as zs,s as xs}from"./searchQueryGenerator-DIIs9xw5.js";import{buildKalshiMarketUrl as qs,dflowRequest as Ys,getKalshiMarketsByEvent as Js}from"./predictos/data/kalshi.mjs";import{buildKalshiMarketUrl as Xs,buildPolymarketUrl as Vs,domeRequest as $s,getKalshiMarketsByEvent as ae,getPolymarketMarkets as se}from"./predictos/data/polymarket.mjs";import{N as ee,p as re,h as te,r as oe,a as ie,b as ce,c as ne,d as le,e as de,f as ue,g as ye,x as ke}from"./polymarket-updown-15-limit-order-bot-Dv5oGAF4.js";import{findArbitrage as ge}from"./predictos/arbitrage.mjs";import{g as me}from"./events-OvBb8rgy.js";export{a as AlpacaMCPClient,Ns as BLOCKRUN_MODELS,s as BearResearcher,e as BullResearcher,r as CompanyAndAccessionNumberClass,t as DEFAULT_D1_DATABASE_ID,o as Downloader,i as FinancialSituationMemory,c as FinnhubWrapper,n as InvestmentJudge,l as MarketAnalyst,ee as NoTradeError,d as POLYMARKET_CATEGORIES,u as RequestedFilingsClass,y as StockAgentsAPI,k as TOP_STOCKS,g as Trader,m as TradingAgentsGraph,p as UnifiedLLMClient,h as UnifiedQuoteService,T as WikiPageviews,M as YahooFinanceWrapper,A as alpacaMCPClient,f as analyzeCategories,Qs as analyzeEventMarketsPrompt,P as analyzeStock,S as analyzeTopStocks,zs as arbitrageAnalysisPrompt,v as backtestStock,Ws as bookmakerAnalysisPrompt,Xs as buildDomeKalshiMarketUrl,qs as buildKalshiMarketUrl,Vs as buildPolymarketUrl,C as calculateGreeks,b as calculatePriceChanges,D as calculateR2,B as calculateRMSE,H as calculateRollingStats,Us as callBlockRunResponses,Fs as callGrokResponses,Zs as callOpenAIResponses,L as chatWithAI,R as checkGammaHealth,E as checkMarket,I as cleanCompanyName,O as createAlpacaBrokerClient,F as createAlpacaClient,Z as createLLM,j as db,G as detectMovements,Ys as dflowRequest,$s as domeRequest,K as fetchActiveMarketsWithPrices,N as fetchAllMarkets,Q as fetchAllTraderActivity,W as fetchAndStoreTopTraders,U as fetchLeaderboard,w as fetchMarket,_ as fetchMarketDetails,z as fetchMarketHolders,x as fetchMarketOrderBook,q as fetchMarketSummary,Y as fetchMarkets,J as fetchMarketsDashboard,X as fetchPriceHistory,V as fetchTopTraders,$ as fetchTraderActivity,aa as fetchTraderPositions,sa as fetchTraderProfiles,js as fetchWithTimeout,ea as fetchZuluTraderDetail,ra as fetchZuluTraders,ge as findArbitrage,ta as finnhub,oa as formatTriggerType,ia as generateDebateAnalysis,ca as generateDebateAnalysisWithOpenAI,na as getAccount,la as getAlpacaMCPClient,da as getCachedMarkets,ua as getCategories,ya as getD1HttpCredentials,ae as getDomeKalshiMarketsByEvent,me as getEvents,ka as getFundamentals,ga as getHistoricalQuotes,ma as getIndicators,Js as getKalshiMarketsByEvent,pa as getLatestTradeTimestamp,ha as getLeaders,Ta as getMarketById,Ma as getMarketDebate,Aa as getMarketHolders,fa as getMarketPositions,Pa as getMarkets,Sa as getMarketsByCategory,va as getNews,se as getPolymarketMarkets,Ca as getPriceHistory,ba as getQuoteFromSource,Da as getQuotes,Ba as getServiceHealth,Ha as getStockData,La as getSyncStatusStats,Ra as getTradeHistorySyncProgress,Ea as getTradeSyncStatus,Ia as getTraderPositions,Oa as getTraderTradeHistory,Fa as getTraderTradeStats,Za as getTradersNeedingSync,ja as getZuluTopByRank,Ga as getZuluTraderById,Ka as getZuluTraders,Na as greeksEnricher,ws as isBlockRunModel,Qa as isMarketBlocked,Gs as isRetryableError,_s as listBlockRunModels,Wa as loadModel,Ua as myLeadersAPI,wa as normalizeChartQuotes,_a as pageviews,za as placeOrder,re as polyfactual,te as polymarketClob,xa as predictFuture,qa as queryKeys,Ya as resumeTradeHistorySync,oe as runBookmakerAgent,ie as runEventAnalysisAgent,ce as runMapperAgent,ne as runPolyfactualResearch,le as runPolymarketPositionTracker,de as runPolymarketPutOrder,ue as runPolymarketUpDown15LimitOrderBot,ye as runX402Seller,Ja as saveCategories,Xa as saveDebate,Va as saveHolders,$a as saveLeaderboardData,as as saveLeaders,ss as saveMarketPositions,es as saveMarkets,rs as saveModel,ts as savePositions,os as savePriceHistory,is as saveTradeHistory,cs as saveZuluCurrencyStats,ns as saveZuluTraders,ls as searchMarkets,ds as searchMarketsInDB,us as searchPublic,xs as searchQueryGeneratorPrompt,ys as searchZuluTraders,Ks as sleep,ks as splitTrainTest,gs as stockAgentsAPI,ms as stockNames,ps as syncAll,hs as syncAllMarkets,Ts as syncCopyTradingLeadersOrders,Ms as syncLeaderboard,As as syncLeadersAndCategories,fs as syncMarketHolders,Ps as syncMarkets,Ss as syncMarketsIncremental,vs as syncPriceHistory,Cs as syncTopTradersTradeHistory,bs as syncTraderTradeHistory,Ds as syncZuluTraderDetails,Bs as syncZuluTraders,Hs as trainModels,Ls as unifiedQuoteService,Rs as updateTradeSyncStatus,ke as x402,Es as yahooFinance,Is as yahooFinanceWrapper,Os as yfinance};
@@ -1,33 +1,6 @@
1
- import { zuluTraders } from '../db/schema';
2
- /** Most traders one list sync saves (one D1 upsert each). */
3
- export declare const MAX_ZULU_SYNC = 200;
4
- export declare function fetchZuluTraders(): Promise<any[]>;
5
- export declare function fetchZuluTraderDetail(providerId: number): Promise<any>;
6
- export interface NormalizedZuluTrader {
7
- row: typeof zuluTraders.$inferInsert & {
8
- providerId: number;
9
- };
10
- currencyStats: any[];
11
- }
12
- /**
13
- * Maps one ZuluTrade trader into a `zulu_traders` row. Accepts both shapes
14
- * the gateway serves: a top-traders list element (`{ trader: {...} }`, with
15
- * `timeframeStats` and `currencyStats` nested in `overallStats`) and a detail
16
- * `trader.stats` object (with them as siblings of `overallStats`). Returns
17
- * null for an element without a provider id or profile instead of throwing,
18
- * so one malformed entry can't abort the whole sync.
19
- */
20
- export declare function normalizeZuluTrader(raw: any, now?: Date): NormalizedZuluTrader | null;
21
- /**
22
- * Upserts traders into `zulu_traders`, skipping malformed entries. Currency
23
- * stats cost one query per instrument, so the bulk list sync turns them off
24
- * to stay inside D1's per-invocation query limit.
25
- *
26
- * @returns how many traders were saved
27
- */
28
- export declare function saveZuluTraders(traders: any[], options?: {
29
- currencyStats?: boolean;
30
- }): Promise<number>;
1
+ export declare function fetchZuluTraders(): Promise<any>;
2
+ export declare function fetchZuluTraderDetail(providerId: number): Promise<unknown>;
3
+ export declare function saveZuluTraders(traders: any[]): Promise<void>;
31
4
  export declare function saveZuluCurrencyStats(providerId: number, stats: any[]): Promise<void>;
32
5
  export declare function getZuluTraders(limit?: number): Promise<{
33
6
  providerId: number;
@@ -185,11 +158,8 @@ export declare function searchZuluTraders(filters: any): Promise<{
185
158
  lastOpenTradeDate: Date | null;
186
159
  updatedAt: Date | null;
187
160
  }[]>;
188
- export declare function syncZuluTraders(options?: {
189
- limit?: number;
190
- }): Promise<{
191
- traders: number;
192
- fetched: number;
161
+ export declare function syncZuluTraders(): Promise<{
162
+ traders: any;
193
163
  }>;
194
164
  export declare function syncZuluTraderDetails(providerIds: number[]): Promise<{
195
165
  details: number;
@@ -1 +1 @@
1
- {"version":3,"file":"zulu.d.ts","sourceRoot":"","sources":["../../src/leaders/zulu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAC;AAS9D,6DAA6D;AAC7D,eAAO,MAAM,aAAa,MAAM,CAAC;AAgDjC,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAWvD;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,gBAK7D;AA+BD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,OAAO,WAAW,CAAC,YAAY,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,aAAa,EAAE,GAAG,EAAE,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,OAAa,GAAG,oBAAoB,GAAG,IAAI,CAqD3F;AAMD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,GAAG,EAAE,EACd,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,iBAiC3E;AAMD,wBAAsB,cAAc,CAAC,KAAK,SAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAM9C;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAkBzD;AAED,wBAAsB,gBAAgB,CAAC,KAAK,SAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOhD;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyBnD;AAMD,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO;;;GAarE;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE;;GAkBhE"}
1
+ {"version":3,"file":"zulu.d.ts","sourceRoot":"","sources":["../../src/leaders/zulu.ts"],"names":[],"mappings":"AAQA,wBAAsB,gBAAgB,iBAiBrC;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,oBAkB7D;AAMD,wBAAsB,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,iBAoGnD;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,iBAgC3E;AAMD,wBAAsB,cAAc,CAAC,KAAK,SAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAM9C;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAkBzD;AAED,wBAAsB,gBAAgB,CAAC,KAAK,SAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAMhD;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyBnD;AAMD,wBAAsB,eAAe;;GASpC;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE;;GAoBhE"}
@@ -41,29 +41,13 @@ export interface JsonItemTick {
41
41
  askVolume?: number;
42
42
  bidVolume?: number;
43
43
  }
44
- interface FetchRatesInput {
45
- instrument: string;
46
- from: Date;
47
- to: Date;
48
- timeframe: TimeframeType;
49
- priceType: PriceType;
50
- volumes: boolean;
51
- format: FormatType;
52
- }
53
- /**
54
- * Validate a request by hand instead of through dukascopy-node's
55
- * `getHistoricalRates`, whose config check (fastest-validator) compiles its
56
- * schema with `new Function`. Cloudflare Workers forbid code generation from
57
- * strings, so that call throws in production before any data is fetched.
58
- */
59
- export declare function validateRatesInput(input: FetchRatesInput): void;
60
44
  /**
61
45
  * Fetch historical market data from Dukascopy
62
46
  * Supports forex, stocks, crypto, ETFs, indices, commodities, and bonds
63
47
  */
64
48
  export declare function getHistoricalData(config: DukascopyConfig): Promise<{
65
49
  success: boolean;
66
- data: any;
50
+ data: import('dukascopy-node').Output;
67
51
  error?: undefined;
68
52
  } | {
69
53
  success: boolean;
@@ -76,7 +60,7 @@ export declare function getHistoricalData(config: DukascopyConfig): Promise<{
76
60
  */
77
61
  export declare function getRealTimeData(config: RealTimeConfig): Promise<{
78
62
  success: boolean;
79
- data: any;
63
+ data: import('dukascopy-node').ArrayItem[] & import('dukascopy-node').ArrayTickItem[] & import('dukascopy-node').JsonItem[] & import('dukascopy-node').JsonItemTick[] & string;
80
64
  error?: undefined;
81
65
  } | {
82
66
  success: boolean;
@@ -115,5 +99,4 @@ export declare function searchInstruments(query: string): Instrument[];
115
99
  */
116
100
  export declare const getForexHistoricalData: typeof getHistoricalData;
117
101
  export declare const getForexRealTimeData: typeof getRealTimeData;
118
- export {};
119
102
  //# sourceMappingURL=dukascopy-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dukascopy-client.d.ts","sourceRoot":"","sources":["../../src/live-data/dukascopy-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dukascopy-client.d.ts","sourceRoot":"","sources":["../../src/live-data/dukascopy-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use strict";Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;const e=require("./bookmakerAnalysis-CHn1W8uX.cjs"),t=require("./callGrok-DWO719mN.cjs"),r=require("@polymarket/clob-client"),o=require("ethers"),s=["gpt-5.2","gpt-5.1","gpt-5-nano","gpt-4.1","gpt-4.1-mini"];function n(t){return e.isBlockRunModel(t)?"blockrun":function(e){return s.includes(e)||e.startsWith("gpt-")}(t)?"openai":"grok"}const a=["gpt-5.2","gpt-5.1","gpt-5-nano","gpt-4.1","gpt-4.1-mini"];class i extends Error{constructor(e="Agents recommend NO TRADE - no order to place"){super(e),this.name="NoTradeError"}}function c(e,t,r){if(t.closed)throw new Error("Market is closed");if(!1===t.acceptingOrders)throw new Error("Market is not accepting orders");if(!t.clobTokenIds)throw new Error("Missing clobTokenIds in market data");const[o,s]=function(e){try{const t=JSON.parse(e);if(Array.isArray(t)&&t.length>=2)return[t[0],t[1]];throw new Error("Invalid token IDs format")}catch{throw new Error(`Failed to parse clobTokenIds: ${e}`)}}(t.clobTokenIds),n=function(e){try{return JSON.parse(e)}catch{return["Yes","No"]}}(t.outcomes||'["Yes", "No"]'),a=function(e){try{return JSON.parse(e).map(e=>parseFloat(e))}catch{return[.5,.5]}}(t.outcomePrices||'["0.5", "0.5"]'),i="BUY YES"===e.recommendedAction,c=i?"YES":"NO",l=n.findIndex(e=>"yes"===e.toLowerCase()||"up"===e.toLowerCase()),d=n.findIndex(e=>"no"===e.toLowerCase()||"down"===e.toLowerCase());let u,p;i?(u=0===l?o:s,p=a[l>=0?l:0]):(u=0===d?o:s,p=a[d>=0?d:1]);const m=t.minimumTickSize||"0.01",g=t.negRisk??false,f=function(e,t){const r=parseFloat(t);return Math.round(e/r)*r}(p,m),y=r/f,h=Math.floor(y);if(h<5)throw new Error(`Budget too small. At current price (${(100*f).toFixed(1)}%), minimum budget is $${(5*f).toFixed(2)} for 5 shares`);const w=`BUY ${h} shares of ${c} @ ${(100*f).toFixed(1)}% for ~$${(h*f).toFixed(2)} on "${t.title||t.question||"Unknown Market"}"`;return{tokenId:u,price:f,side:"BUY",size:h,feeRateBps:0,tickSize:m,negRisk:g,conditionId:t.conditionId||"",marketSlug:t.slug||"",orderDescription:w}}const l="https://deep-research-api.thekid-solana.workers.dev",d=3e5;async function u(e,t,r=3e5){const o=new AbortController,s=setTimeout(()=>o.abort(),r);try{const r=await fetch(e,{...t,signal:o.signal});return clearTimeout(s),r}catch(n){if(clearTimeout(s),n instanceof Error&&"AbortError"===n.name)throw new Error(`Request timeout after ${r}ms`);throw n}}async function p(e,t=!0){const r=function(){const e=process.env.POLYFACTUAL_API_KEY;if(!e)throw new Error("POLYFACTUAL_API_KEY environment variable is not set");return e}();if(e.length>1e3)throw new Error("Query exceeds maximum length of 1000 characters");if(!e.trim())throw new Error("Query cannot be empty");const o={query:e,text:t};console.log("Calling Polyfactual API with query:",e.substring(0,100)+(e.length>100?"...":""));const s=await u(`${l}/answer`,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":r},body:JSON.stringify(o)},d);if(!s.ok){let e;switch(s.status){case 400:e="Bad request: Invalid query format or validation error";break;case 401:e="Unauthorized: Invalid API key";break;case 429:e="Rate limit exceeded: Please wait before making another request";break;case 500:e="Internal server error: Polyfactual service is temporarily unavailable";break;default:e=`Polyfactual API error: ${s.status} ${s.statusText}`}try{const t=await s.json();!t.success&&t.error&&(e=t.error)}catch{}throw new Error(e)}const n=await s.json();if(!n.success)throw new Error(n.error||"Unknown error from Polyfactual API");return console.log("Polyfactual response received successfully"),n}const m=Object.freeze(Object.defineProperty({__proto__:null,checkPolyfactualHealth:async function(){try{return(await u(`${l}/health`,{method:"GET"},1e4)).ok}catch{return!1}},generatePolyfactualAnswer:p},Symbol.toStringTag,{value:"Module"}));const g={BASE_MAINNET:"eip155:8453",BASE:"base",SOLANA_MAINNET:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",SOLANA:"solana"},f={base:8453,"eip155:8453":8453},y={TransferWithAuthorization:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"validAfter",type:"uint256"},{name:"validBefore",type:"uint256"},{name:"nonce",type:"bytes32"}]};function h(){const e=process.env.X402_SOLANA_PRIVATE_KEY,t=process.env.X402_EVM_PRIVATE_KEY,r=process.env.X402_DISCOVERY_URL,o=process.env.X402_FACILITATOR_URL;return console.log("[x402] Config loaded:"),console.log("[x402] - Discovery URL:",r||"(not set)"),console.log("[x402] - EVM Private Key:",t?"(set)":"(not set)"),console.log("[x402] - Solana Private Key:",e?"(set)":"(not set)"),{solanaPrivateKey:e,evmPrivateKey:t,discoveryUrl:r,facilitatorUrl:o}}function w(e){return"solana"===e||e.startsWith("solana:")}function S(e){return"base"===e||e.startsWith("eip155:")}function k(e,t){if(!e)return"Unknown";try{const t=BigInt(e),r=10n**6n;return`$${(Number(t)/Number(r)).toFixed(4)}`}catch{return"Unknown"}}async function I(e,t,r,o){console.log("[x402] Creating EVM payment header for Base mainnet...");const{ethers:s}=await(import("ethers")),n=new s.Wallet(e),a=n.address;console.log("[x402] From address:",a);const i=function(){const e=new Uint8Array(32);return crypto.getRandomValues(e),`0x${Array.from(e).map(e=>e.toString(16).padStart(2,"0")).join("")}`}(),c=Math.floor(Date.now()/1e3),l=c-600,d=c+(t.maxTimeoutSeconds||60),u={from:a,to:t.payTo,value:t.amount||t.maxAmountRequired||"0",validAfter:l.toString(),validBefore:d.toString(),nonce:i};console.log("[x402] Authorization:",u);const p=t.extra||{name:"USD Coin",version:"2"},m=(g=t.network,f[g]||8453);var g;const h={name:p.name||"USD Coin",version:p.version||"2",chainId:m,verifyingContract:t.asset};console.log("[x402] Domain:",h);const w=await n.signTypedData(h,y,{from:a,to:t.payTo,value:BigInt(t.amount||t.maxAmountRequired||"0"),validAfter:BigInt(l),validBefore:BigInt(d),nonce:i});console.log("[x402] Signature created");const S={x402Version:r,resource:o||{url:"",description:"",mimeType:"application/json"},accepted:{scheme:t.scheme||"exact",network:t.network,asset:t.asset,amount:t.amount||t.maxAmountRequired||"0",payTo:t.payTo,maxTimeoutSeconds:t.maxTimeoutSeconds||60,extra:t.extra||{}},payload:{authorization:u,signature:w}};console.log("[x402] Payment payload (v2 format):",JSON.stringify(S,null,2));return btoa(JSON.stringify(S))}function E(e,t){if(t?.name&&"string"==typeof t.name)return t.name;if(t?.title&&"string"==typeof t.title)return t.title;try{const t=new URL(e),r=t.pathname.split("/").filter(Boolean);if(r.length>0){return r[r.length-1].replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase())}return t.hostname}catch{return e.substring(0,30)+"..."}}function P(e,t){if(t?.description&&"string"==typeof t.description)return t.description;for(const r of e){if(r.description)return r.description;if(r.outputSchema?.input?.queryParams){const e=Object.entries(r.outputSchema.input.queryParams);if(e.length>0)return`Accepts: ${e.map(([e,t])=>`${e} (${t.type})`).join(", ")}`}}}function O(e){const t=[...new Set((e.accepts||[]).map(e=>e?.network).filter(e=>!!e))];let r,o="Unknown";for(const s of e.accepts||[]){const e=s?.amount||s?.maxAmountRequired;if(!e)continue;const t=k(e,s.network);"Unknown"!==t&&("Unknown"===o||t<o)&&(o=t)}for(const s of e.accepts||[]){if(s?.outputSchema?.input?.queryParams){r=Object.entries(s.outputSchema.input.queryParams).map(([e,t])=>`${e}: ${t?.description||t?.type||"any"}`).join(", ");break}if(s?.outputSchema?.input?.bodyParams){r=Object.entries(s.outputSchema.input.bodyParams).map(([e,t])=>`${e}: ${t?.description||t?.type||"any"}`).join(", ");break}}return{id:e.resource||"",name:E(e.resource||"",e.metadata),description:P(e.accepts||[],e.metadata),resourceUrl:e.resource||"",priceUsdc:o,networks:t,lastUpdated:e.lastUpdated||(new Date).toISOString(),inputDescription:r}}async function T(e){const t=h();if(!t.discoveryUrl)throw new Error("X402_DISCOVERY_URL environment variable is not set");const r=new URLSearchParams;e?.type&&r.set("type",e.type),e?.limit&&r.set("limit",e.limit.toString()),e?.offset&&r.set("offset",e.offset.toString());const o=r.toString(),s=`${t.discoveryUrl}${o?`?${o}`:""}`;console.log("[x402] Fetching bazaar sellers from:",s);try{const t=await fetch(s,{method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json"}});if(!t.ok){let e;if((t.headers.get("content-type")||"").includes("application/json")){const r=await t.json().catch(()=>({}));e=r.error||r.message||t.statusText}else e=`Received non-JSON response (status ${t.status}). Check discovery URL configuration.`;throw new Error(`Failed to fetch bazaar sellers (${t.status}): ${e}`)}const r=await t.json();console.log("[x402] Raw response keys:",Object.keys(r));let o=[];Array.isArray(r)?o=r:r.items&&Array.isArray(r.items)?o=r.items:r.resources&&Array.isArray(r.resources)?o=r.resources:(console.log("[x402] Unexpected response structure:",JSON.stringify(r).substring(0,500)),o=[]),console.log("[x402] Found",o.length,"sellers in bazaar");let a=[];for(const e of o)try{const t=O(e);a.push(t)}catch(n){console.warn("[x402] Failed to transform seller:",e?.resource,n)}return e?.network&&(a=a.filter(t=>t.networks.includes(e.network))),a}catch(a){if(console.error("[x402] Error fetching bazaar sellers:",a),a instanceof Error)throw new Error(`x402 Bazaar error: ${a.message}. Discovery URL: ${s}`);throw a}}async function A(e,t,r){const o=h();console.log("[x402] Calling seller:",e),console.log("[x402] Query:",t),r&&console.log("[x402] Preferred network:",r);try{const n=new URL(e);if(t)try{const e=JSON.parse(t);for(const[t,r]of Object.entries(e))n.searchParams.set(t,String(r))}catch{n.searchParams.set("q",t)}console.log("[x402] Request URL:",n.toString());const a=await fetch(n.toString(),{method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json"}});if(console.log("[x402] Initial response status:",a.status),402!==a.status){if(a.ok){return{success:!0,data:await a.json(),paymentInfo:{network:"free"}}}const e=await a.text();throw new Error(`Unexpected response status: ${a.status}. Body: ${e.substring(0,200)}`)}const i=await a.json();console.log("[x402] Payment requirements received:",JSON.stringify(i,null,2));const c=i.x402Version||1,l=i.resource||{url:n.toString(),description:i.description||"",mimeType:i.mimeType||"application/json"};console.log("[x402] Resource info:",JSON.stringify(l));const d=i.accepts||[];console.log("[x402] Available payment options count:",d.length);for(const e of d)console.log(`[x402] Option - network: ${e.network}, scheme: ${e.scheme}, extra:`,JSON.stringify(e.extra));let u,p,m;if(r&&(u=d.find(e=>e.network===r),u&&(p=w(u.network)?"solana":"evm")),u||(o.solanaPrivateKey&&(u=d.find(e=>w(e.network)),u&&(p="solana",console.log("[x402] Using Solana mainnet for payment"))),!u&&o.evmPrivateKey&&(u=d.find(e=>S(e.network)),u&&(p="evm",console.log("[x402] Using EVM (Base mainnet) for payment")))),!u||!p){const e=d.map(e=>e.network).join(", "),t=[];return o.evmPrivateKey&&t.push("EVM (Base)"),o.solanaPrivateKey&&t.push("Solana"),{success:!1,error:`No compatible payment option found. Seller accepts: [${e}]. You have keys for: [${t.join(", ")||"none"}].`}}if(console.log("[x402] Selected payment network:",u.network),"solana"===p){if(!o.solanaPrivateKey)return{success:!1,error:"Solana private key not configured. Set X402_SOLANA_PRIVATE_KEY environment variable.",paymentInfo:{cost:k(u.amount||u.maxAmountRequired,u.network),network:u.network}};m=await async function(e,t,r,o){console.log("[x402] Creating Solana payment header for mainnet...");const{Keypair:s,PublicKey:n,Transaction:a,TransactionInstruction:i,Connection:c,ComputeBudgetProgram:l}=await(import("@solana/web3.js")),{getAssociatedTokenAddress:d,createTransferCheckedInstruction:u,TOKEN_PROGRAM_ID:p,TOKEN_2022_PROGRAM_ID:m}=await(import("@solana/spl-token")),g=await(import("bs58"));let f;try{const t=g.default.decode(e);f=s.fromSecretKey(t)}catch{throw new Error("Invalid Solana private key. Must be base58 encoded.")}const y=f.publicKey;console.log("[x402] From address:",y.toBase58());const h=t.extra?.feePayer;if(!h)throw new Error("feePayer is required in paymentRequirements.extra for Solana payments");const w=new n(h);console.log("[x402] Fee payer:",w.toBase58());const S=new n(t.payTo),k=new n(t.asset),I=t.amount||t.maxAmountRequired;if(!I)throw new Error("amount or maxAmountRequired is required in paymentRequirements");const E=BigInt(I);console.log("[x402] To address:",S.toBase58()),console.log("[x402] Mint (USDC):",k.toBase58()),console.log("[x402] Amount:",E.toString());const P=await d(k,y,!1,p),O=await d(k,S,!1,p);console.log("[x402] Source ATA:",P.toBase58()),console.log("[x402] Destination ATA:",O.toBase58());const T=new c(process.env.SOLANA_RPC_URL||"https://api.mainnet-beta.solana.com","confirmed"),{blockhash:A,lastValidBlockHeight:R}=await T.getLatestBlockhash("confirmed");console.log("[x402] Got blockhash:",A.substring(0,20)+"...");const x=new a;x.feePayer=w,x.recentBlockhash=A;const U=l.setComputeUnitLimit({units:1e5}),v=l.setComputeUnitPrice({microLamports:5e4});x.add(U),x.add(v);const $=u(P,k,O,y,E,6,[],p);x.add($),x.partialSign(f),console.log("[x402] Transaction created and partially signed");const M=x.serialize({requireAllSignatures:!1,verifySignatures:!1}).toString("base64");console.log("[x402] Transaction serialized, length:",M.length);const D={x402Version:r,resource:o||{url:"",description:"",mimeType:"application/json"},accepted:{scheme:t.scheme||"exact",network:t.network,asset:t.asset,amount:t.amount||t.maxAmountRequired||"0",payTo:t.payTo,maxTimeoutSeconds:t.maxTimeoutSeconds||60,extra:t.extra||{}},payload:{transaction:M}};console.log("[x402] Payment payload (v2 format):",JSON.stringify(D,null,2));const b=btoa(JSON.stringify(D));return console.log("[x402] Payment header created"),b}(o.solanaPrivateKey,u,c,l)}else{if(!o.evmPrivateKey)return{success:!1,error:"EVM private key not configured. Set X402_EVM_PRIVATE_KEY environment variable.",paymentInfo:{cost:k(u.amount||u.maxAmountRequired,u.network),network:u.network}};m=await I(o.evmPrivateKey,u,c,l)}console.log("[x402] Payment header created, making paid request...");const g=await fetch(n.toString(),{method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json","PAYMENT-SIGNATURE":m,"X-Payment":m}});if(console.log("[x402] Paid response status:",g.status),!g.ok){const e=await g.text();console.error("[x402] Paid request failed:",e);try{const t=JSON.parse(e);return{success:!1,error:t.error||t.message||`Payment failed: ${g.status}`,paymentInfo:{cost:k(u.amount||u.maxAmountRequired,u.network),network:u.network}}}catch{return{success:!1,error:`Payment failed (${g.status}): ${e.substring(0,200)}`,paymentInfo:{cost:k(u.amount||u.maxAmountRequired,u.network),network:u.network}}}}const f=await g.text();let y;console.log("[x402] Raw seller response (first 1000 chars):",f.substring(0,1e3)),f.length>1e3&&console.log("[x402] Response truncated, total length:",f.length);try{y=JSON.parse(f);const e=JSON.stringify(y,null,2);console.log("[x402] Parsed seller response (first 1000 chars):",e.substring(0,1e3))}catch(s){console.log("[x402] Response is not JSON, returning as text"),y={rawText:f}}const h=g.headers.get("X-Payment-Receipt");return console.log("[x402] Payment receipt header:",h||"none"),{success:!0,data:y,paymentInfo:{txId:h||void 0,cost:k(u.amount||u.maxAmountRequired,u.network),network:u.network}}}catch(n){return console.error("[x402] Error calling seller:",n),{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function R(){const e=h();if(!e.discoveryUrl)return!1;try{return(await fetch(`${e.discoveryUrl}?limit=1`,{method:"GET",headers:{Accept:"application/json"}})).ok}catch{return!1}}const x=Object.freeze(Object.defineProperty({__proto__:null,NETWORKS:g,callX402Seller:A,checkX402Health:R,isEvmNetwork:S,isSolanaNetwork:w,listBazaarSellers:T,parseUsdcPrice:k,transformSellerToInfo:O},Symbol.toStringTag,{value:"Module"}));const U={BTC:"btc-updown-15m-",SOL:"sol-updown-15m-",ETH:"eth-updown-15m-",XRP:"xrp-updown-15m-"};function v(e,t){return`${U[e]}${t}`}function $(e){return new Date(1e3*e).toISOString().slice(11,19)+" UTC"}function M(e,t,r){return{timestamp:(new Date).toISOString(),level:e,message:t,details:r}}function D(e){const t=JSON.parse(e);if(!Array.isArray(t)||t.length<2)throw new Error(`Expected 2 token IDs, got ${t.length}`);return[t[0],t[1]]}const b="https://clob.polymarket.com",N="https://data-api.polymarket.com";class C{config;logs=[];clobClient=null;constructor(e){this.config={...e,signatureType:e.signatureType??1}}getLogs(){return[...this.logs]}clearLogs(){this.logs=[]}log(e,t,r){this.logs.push(M(e,t,r)),console.log(`[${e}] ${t}`,r||"")}async initClobClient(){if(this.clobClient)return this.clobClient;const{privateKey:e,proxyAddress:t,signatureType:s}=this.config;this.log("INFO","Initializing Polymarket CLOB client...");try{const n=new o.Wallet(e),a=new r.ClobClient(b,137,n),i=await a.createOrDeriveApiKey();return this.log("INFO","API credentials derived successfully"),this.clobClient=new r.ClobClient(b,137,n,i,s,t),this.log("SUCCESS","CLOB client initialized",{funder:`${t.slice(0,10)}...${t.slice(-8)}`,signatureType:s}),this.clobClient}catch(n){const e=n instanceof Error?n.message:String(n);throw this.log("ERROR",`Failed to initialize CLOB client: ${e}`),n}}async getMarketBySlug(e){const t=`https://gamma-api.polymarket.com/markets/slug/${e}`;this.log("INFO",`Fetching market data for slug: ${e}`);try{const r=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!r.ok){if(404===r.status)return this.log("WARN",`Market not found: ${e}`),null;throw new Error(`Gamma API error: ${r.status} ${r.statusText}`)}const o=await r.json();return this.log("SUCCESS",`Found market: ${o.title||e}`),o}catch(r){throw this.log("ERROR",`Failed to fetch market: ${r instanceof Error?r.message:String(r)}`),r}}extractTokenIds(e){const t=e.clobTokenIds;if(!t)throw new Error("No clobTokenIds found in market data");const[r,o]=D(t);return this.log("INFO","Extracted token IDs",{up:`${r.slice(0,16)}...${r.slice(-8)}`,down:`${o.slice(0,16)}...${o.slice(-8)}`}),{up:r,down:o}}async placeOrder(e){const{privateKey:t,proxyAddress:o}=this.config;if(!t)return this.log("ERROR","Missing private key for order placement"),{success:!1,errorMsg:"Missing private key. Please set POLYMARKET_WALLET_PRIVATE_KEY."};if(!o)return this.log("ERROR","Missing proxy address for order placement"),{success:!1,errorMsg:"Missing proxy address. Please set POLYMARKET_PROXY_WALLET_ADDRESS."};this.log("INFO",`Placing ${e.side} order`,{tokenId:`${e.tokenId.slice(0,16)}...`,price:e.price,size:Math.floor(e.size)});try{const t=await this.initClobClient(),o=await t.createAndPostOrder({tokenID:e.tokenId,price:e.price,side:"BUY"===e.side?r.Side.BUY:r.Side.SELL,size:Math.floor(e.size),feeRateBps:0},{tickSize:"0.01",negRisk:false},r.OrderType.GTC);return this.log("SUCCESS","Order placed successfully",{orderId:o?.orderID||o?.id,status:o?.status}),{success:!0,orderId:o?.orderID||o?.id,status:o?.status||"submitted"}}catch(s){const e=s instanceof Error?s.message:String(s);return this.log("ERROR",`Failed to place order: ${e}`),{success:!1,errorMsg:e}}}async placeStraddleOrders(e,t,r){const o=r/t;this.log("INFO","Placing straddle orders",{price:`${(100*t).toFixed(1)}%`,sizeUsd:`$${r}`,shares:Math.floor(o)});return{up:await this.placeOrder({tokenId:e.up,price:t,size:o,side:"BUY"}),down:await this.placeOrder({tokenId:e.down,price:t,size:o,side:"BUY"})}}calculateLadderRungs(e,t=49,r=35,o=1.5){const s=Math.ceil(t/100*5*100)/100,n=[];for(let m=t;m>=r;m--)n.push(m);let a=[...n],i=a.length;for(;i>1;){const t=[];for(let e=0;e<i;e++){const r=Math.exp(-o*e/i);t.push(r)}const r=t.reduce((e,t)=>e+t,0);if(e*t.map(e=>e/r)[i-1]>=s)break;i--,a=n.slice(0,i)}const c=[],l=[];for(let m=0;m<i;m++){const e=Math.exp(-o*m/i);l.push(e)}const d=l.reduce((e,t)=>e+t,0),u=l.map(e=>e/d);for(let m=0;m<i;m++){const t=a[m],r=100*u[m],o=e*u[m];c.push({pricePercent:t,priceDecimal:t/100,sizeUsd:Math.round(100*o)/100,allocationPercent:Math.round(100*r)/100})}const p=a[a.length-1];return this.log("INFO",`Calculated ladder with ${i} rungs`,{maxPrice:`${t}%`,effectiveMinPrice:`${p}%`,requestedMinPrice:`${r}%`,taperFactor:o,totalBankroll:`$${e}`,minRungAllocation:`$${c[c.length-1]?.sizeUsd||0}`}),p>r&&this.log("WARN",`Bankroll too small for full ladder range. Adjusted min price from ${r}% to ${p}%`),c}async placeLadderOrders(e,t,r=49,o=35,s=1.5){const n=this.calculateLadderRungs(t,r,o,s);this.log("INFO","Placing ladder orders",{totalRungs:n.length,totalBankroll:`$${t}`,priceRange:`${r}% → ${o}%`});const a=[];let i=0;const c=2*n.length;for(const l of n){if(l.sizeUsd<1){this.log("WARN",`Skipping rung at ${l.pricePercent}% - allocation too small ($${l.sizeUsd.toFixed(2)})`);continue}const t=l.sizeUsd/l.priceDecimal;if(Math.floor(t)<5){this.log("WARN",`Skipping rung at ${l.pricePercent}% - would result in < 5 shares`);continue}this.log("INFO",`Placing ladder rung at ${l.pricePercent}%`,{sizeUsd:`$${l.sizeUsd.toFixed(2)}`,shares:Math.floor(t),allocation:`${l.allocationPercent.toFixed(1)}%`});const r=await this.placeOrder({tokenId:e.up,price:l.priceDecimal,size:t,side:"BUY"});r.success&&i++;const o=await this.placeOrder({tokenId:e.down,price:l.priceDecimal,size:t,side:"BUY"});o.success&&i++,a.push({pricePercent:l.pricePercent,sizeUsd:l.sizeUsd,up:r,down:o})}return this.log("SUCCESS","Ladder orders complete",{totalOrders:c,successfulOrders:i,successRate:`${(i/c*100).toFixed(1)}%`}),{rungs:n,results:a,totalOrders:c,successfulOrders:i}}async getPositions(e){try{const{proxyAddress:t}=this.config,r=new URLSearchParams;r.append("user",t),r.append("sizeThreshold","0"),e?.market&&r.append("market",e.market);const o=`${N}/positions?${r.toString()}`;this.log("INFO","Fetching positions from Data API",{user:`${t.slice(0,10)}...`,...e});const s=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json"}});if(!s.ok)throw new Error(`Data API error: ${s.status} ${s.statusText}`);const n=await s.json();return this.log("SUCCESS",`Found ${(n||[]).length} positions`),n||[]}catch(t){const e=t instanceof Error?t.message:String(t);return this.log("ERROR",`Failed to get positions: ${e}`),[]}}async getActivity(e){try{const{proxyAddress:t}=this.config,r=new URLSearchParams;r.append("user",t),r.append("type","TRADE"),r.append("limit","500"),e?.market&&r.append("market",e.market);const o=`${N}/activity?${r.toString()}`;this.log("INFO","Fetching activity from Data API",{user:`${t.slice(0,10)}...`,...e});const s=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json"}});if(!s.ok)throw new Error(`Data API error: ${s.status} ${s.statusText}`);const n=await s.json();return this.log("SUCCESS",`Found ${(n||[]).length} trades`),n||[]}catch(t){const e=t instanceof Error?t.message:String(t);return this.log("ERROR",`Failed to get activity: ${e}`),[]}}async getOrder(e){try{const t=await this.initClobClient();this.log("INFO",`Fetching order: ${e.slice(0,16)}...`);const r=await t.getOrder(e);return r?this.log("SUCCESS","Order found",{status:r.status,size_matched:r.size_matched,original_size:r.original_size}):this.log("WARN",`Order not found: ${e}`),r||null}catch(t){const e=t instanceof Error?t.message:String(t);return this.log("ERROR",`Failed to get order: ${e}`),null}}determinePairStatus(e,t){const r=e.shares>0,o=t.shares>0;if(!r&&!o)return e.pendingShares>0||t.pendingShares>0?"PENDING":"NO_POSITION";if(r&&!o)return"DIRECTIONAL_YES";if(!r&&o)return"DIRECTIONAL_NO";const s=e.avgPrice+t.avgPrice;return s<.995?"PROFIT_LOCKED":s<=1.005?"BREAK_EVEN":"LOSS_RISK"}async getMarketPosition(e,t,r){this.log("INFO",`Fetching position for ${e} via Data API`);try{const o=await this.getPositions(),s=o.find(e=>e.asset===t.up),n=o.find(e=>e.asset===t.down),a={shares:s?.size||0,costUsd:s?Math.round(s.size*s.avgPrice*100)/100:0,avgPrice:s?.avgPrice||0,ordersPlaced:0,ordersFilled:s?1:0,pendingShares:0},i={shares:n?.size||0,costUsd:n?Math.round(n.size*n.avgPrice*100)/100:0,avgPrice:n?.avgPrice||0,ordersPlaced:0,ordersFilled:n?1:0,pendingShares:0},c=this.determinePairStatus(a,i),l=a.shares>0,d=i.shares>0;let u=null,p=0,m=0,g=0,f=0,y=0;if(l&&d){u=Math.round(1e4*(a.avgPrice+i.avgPrice))/1e4,p=Math.min(a.shares,i.shares),m=p;const e=p*a.avgPrice,t=p*i.avgPrice;g=Math.round(100*(e+t))/100,f=Math.round(100*(m-g))/100,y=g>0?Math.round(f/g*1e4)/100:0}const h={marketSlug:e,marketTitle:r,tokenIds:t,yes:a,no:i,pairCost:u,status:c,minShares:p,guaranteedPayout:m,totalCost:g,guaranteedProfit:f,returnPercent:y,lastUpdated:(new Date).toISOString()};return this.log("SUCCESS","Position fetched from Data API",{status:c,pairCost:u,yesShares:a.shares,noShares:i.shares,guaranteedProfit:f>0?`$${f}`:"N/A"}),h}catch(o){const s=o instanceof Error?o.message:String(o);this.log("ERROR",`Failed to get position: ${s}`);const n={shares:0,costUsd:0,avgPrice:0,ordersPlaced:0,ordersFilled:0,pendingShares:0};return{marketSlug:e,marketTitle:r,tokenIds:t,yes:n,no:n,pairCost:null,status:"NO_POSITION",minShares:0,guaranteedPayout:0,totalCost:0,guaranteedProfit:0,returnPercent:0,lastUpdated:(new Date).toISOString()}}}}function _(){const e=process.env.POLYMARKET_WALLET_PRIVATE_KEY,t=process.env.POLYMARKET_PROXY_WALLET_ADDRESS,r=parseInt(process.env.POLYMARKET_SIGNATURE_TYPE||"1",10);if(!e)throw new Error("POLYMARKET_WALLET_PRIVATE_KEY environment variable is required");if(!t)throw new Error("POLYMARKET_PROXY_WALLET_ADDRESS environment variable is required");return new C({privateKey:e,proxyAddress:t,signatureType:r})}const L=Object.freeze(Object.defineProperty({__proto__:null,ASSET_SLUG_PREFIXES:U,PolymarketClient:C,buildMarketSlug:v,createClientFromEnv:_,createLogEntry:M,formatTimeShort:$,parseTokenIds:D},Symbol.toStringTag,{value:"Module"}));function q(){const e=Math.floor(Date.now()/1e3);return 900*Math.floor(e/900)}function F(){const e=Math.floor(Date.now()/1e3);return 900*Math.ceil(e/900)}exports.NoTradeError=i,exports.polyfactual=m,exports.polymarket=L,exports.runBookmakerAgent=async function(r,o={}){const s=Date.now(),{analyses:n,x402Results:i,eventIdentifier:c,pmType:l,model:d}=r,u=n&&Array.isArray(n)&&n.length>0,p=i&&Array.isArray(i)&&i.length>0;if(!u&&!p)throw new Error("Missing or invalid 'analyses' or 'x402Results' parameter");const m=(n?.length||0)+(i?.length||0);if(m<2)throw new Error("Need at least 2 data sources (analyses + PayAI results) to aggregate");if(!c)throw new Error("Missing required parameter: 'eventIdentifier'");if(!l||"Kalshi"!==l&&"Polymarket"!==l)throw new Error("Invalid 'pmType'. Must be 'Kalshi' or 'Polymarket'");if(!d)throw new Error("Missing required parameter: 'model'");const g=function(e){return a.includes(e)||e.startsWith("gpt-")}(d),f=(n||[]).map(e=>({agentId:e.agentId,model:e.model,analysis:e.analysis})),{systemPrompt:y,userPrompt:h}=e.bookmakerAnalysisPrompt(f,i||[],c,l);let w,S,k,I;if(g){const e=await t.callOpenAIResponses(h,y,"json_object",d,3,{apiKey:o.openaiApiKey});w=e.model,S=e.usage?.total_tokens;const r=[];for(const t of e.output)if("message"===t.type){const e=t;r.push(...e.content)}k=r.map(e=>e.text).filter(e=>void 0!==e).join("\n")}else{const e=await t.callGrokResponses(h,y,"json_object",d,3,void 0,{apiKey:o.xaiApiKey});w=e.model,S=e.usage?.total_tokens;const r=[];for(const t of e.output)if("message"===t.type){const e=t;r.push(...e.content)}k=r.map(e=>e.text).filter(e=>void 0!==e).join("\n")}try{I=JSON.parse(k)}catch{throw new Error(`Failed to parse AI response as JSON (model ${w}): ${k.substring(0,200)}`)}return{analysis:I,model:w,tokensUsed:S,agentsAggregated:m,processingTimeMs:Date.now()-s}},exports.runEventAnalysisAgent=async function(r,o={}){const s=Date.now(),{markets:a,eventIdentifier:i,pmType:c,model:l,question:d,tools:u,userCommand:p}=r;if(!a||!Array.isArray(a)||0===a.length)throw new Error("Missing or invalid 'markets' parameter");if(!i)throw new Error("Missing required parameter: 'eventIdentifier'");if(!c||"Kalshi"!==c&&"Polymarket"!==c)throw new Error("Invalid 'pmType'. Must be 'Kalshi' or 'Polymarket'");if(!l)throw new Error("Missing required parameter: 'model'");const m=n(l),g=d||"What is the best trading opportunity in this market? Analyze the probability and provide a recommendation.",{systemPrompt:f,userPrompt:y}=e.analyzeEventMarketsPrompt(a,i,g,c,u,p);let h,w,S,k,I;if("blockrun"===m){const t=u?.includes("x_search")||u?.includes("web_search"),r=await e.callBlockRunResponses(y,f,"json_object",l,3,t,{walletKey:o.blockrunWalletKey});h=r.model,w=r.usage?.total_tokens,S=r.blockrun?.paymentCost;const s=[];for(const e of r.output)if("message"===e.type){const t=e;s.push(...t.content)}k=s.map(e=>e.text).filter(e=>void 0!==e).join("\n")}else if("openai"===m){const e=await t.callOpenAIResponses(y,f,"json_object",l,3,{apiKey:o.openaiApiKey});h=e.model,w=e.usage?.total_tokens;const r=[];for(const t of e.output)if("message"===t.type){const e=t;r.push(...e.content)}k=r.map(e=>e.text).filter(e=>void 0!==e).join("\n")}else{const e=await t.callGrokResponses(y,f,"json_object",l,3,u,{apiKey:o.xaiApiKey});h=e.model,w=e.usage?.total_tokens;const r=[];for(const t of e.output)if("message"===t.type){const e=t;r.push(...e.content)}k=r.map(e=>e.text).filter(e=>void 0!==e).join("\n")}try{I=JSON.parse(k)}catch{throw new Error(`Failed to parse AI response as JSON (model ${h}): ${k.substring(0,200)}`)}return{analysis:I,model:h,tokensUsed:w,paymentCost:S,processingTimeMs:Date.now()-s}},exports.runMapperAgent=function(e){const{platform:t,analysisResult:r,marketData:o,budgetUsd:s}=e;if(!t||"Polymarket"!==t&&"Kalshi"!==t)throw new Error("Invalid platform. Must be 'Polymarket' or 'Kalshi'");if(!r||!r.recommendedAction)throw new Error("Missing analysisResult or recommendedAction");if("NO TRADE"===r.recommendedAction)throw new i;if(!o)throw new Error("Missing marketData");if("number"!=typeof s||s<1||s>100)throw new Error("Invalid budgetUsd. Must be between $1 and $100");if("Kalshi"===t)throw new Error("Kalshi autonomous mode coming soon! Currently only Polymarket is supported.");return{platform:"Polymarket",orderParams:c(r,o,s),analysis:{recommendedAction:r.recommendedAction,side:"BUY YES"===r.recommendedAction?"YES":"NO",confidence:r.winnerConfidence}}},exports.runPolyfactualResearch=async function(e){const t=Date.now(),{query:r}=e;if(!r||"string"!=typeof r)return console.log("Missing or invalid query parameter"),{success:!1,error:"Missing required parameter: 'query'",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),query:"",processingTimeMs:Date.now()-t}};const o=r.trim();if(!o)return console.log("Empty query parameter"),{success:!1,error:"Query cannot be empty",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),query:"",processingTimeMs:Date.now()-t}};try{console.log("Starting Polyfactual research for query:",o.substring(0,100));const e=(await p(o,!0)).data,r=e?.answer||JSON.stringify(e),s=e?.citations||[],n=Date.now()-t;return console.log("Request completed in",n,"ms"),{success:!0,answer:"string"==typeof r?r:JSON.stringify(r),citations:Array.isArray(s)?s:[],data:e,metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),query:o,processingTimeMs:n}}}catch(s){console.error("Error:",s);const e=Date.now()-t;return{success:!1,error:s instanceof Error?s.message:"An unexpected error occurred",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),query:"",processingTimeMs:e}}}},exports.runPolymarketPositionTracker=async function(e){const t=[];try{const{asset:o,marketSlug:s,tokenIds:n}=e;if(!o||!function(e){return["BTC","SOL","ETH","XRP"].includes(e.toUpperCase())}(o))return t.push(M("ERROR","Invalid or missing asset",{asset:o})),{success:!1,error:"Invalid asset. Must be one of: BTC, SOL, ETH, XRP",logs:t};const a=o.toUpperCase();let i;try{i=_()}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(M("ERROR",`Failed to initialize client: ${e}`)),{success:!1,error:`Client initialization failed: ${e}`,logs:t}}const c=q(),l=s||v(a,c);t.push(M("INFO",`Checking position for market: ${l}`));let d,u=n;if(!u){const e=await i.getMarketBySlug(l);if(t.push(...i.getLogs()),i.clearLogs(),!e)return t.push(M("WARN","Market not found - may not be created yet")),{success:!1,error:"Market not found - may not be created yet",logs:t};d=e.title;try{u=i.extractTokenIds(e),t.push(...i.getLogs()),i.clearLogs()}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(M("ERROR",`Failed to extract token IDs: ${e}`)),{success:!1,error:`Token extraction failed: ${e}`,logs:t}}}const p=await i.getMarketPosition(l,u,d);return t.push(...i.getLogs()),i.clearLogs(),{success:!0,data:{asset:a,position:p},logs:t}}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(M("ERROR",`Unhandled error: ${e}`)),{success:!1,error:e,logs:t}}},exports.runPolymarketPutOrder=async function(e){const t=Date.now(),r=e;let o,s,n,a,i,c,l;try{o=_()}catch(m){return{success:!1,error:`Failed to initialize Polymarket client: ${m instanceof Error?m.message:String(m)}`,metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}}}let d="",u="0.01",p=!1;try{if(r.orderParams){console.log("Using mapper mode with pre-calculated order params");const e=r.orderParams;if(!e.tokenId)return{success:!1,error:"Missing orderParams.tokenId",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};s=e.tokenId,n=e.price,a=e.size,u=e.tickSize||"0.01",p=e.negRisk??!1,c=e.conditionId,l=e.marketSlug,i="YES",console.log("Mapper order params:",{tokenId:`${s.slice(0,16)}...`,price:n,size:a,tickSize:u,negRisk:p})}else{console.log("Using legacy mode - calculating order params");const{conditionId:e,marketSlug:u,side:p,budgetUsd:m,price:g}=r;if(!e)return{success:!1,error:"Missing required parameter: 'conditionId' or 'orderParams'",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(!u)return{success:!1,error:"Missing required parameter: 'marketSlug'",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(!p||"YES"!==p&&"NO"!==p)return{success:!1,error:"Invalid 'side'. Must be 'YES' or 'NO'",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};if("number"!=typeof m||m<1||m>100)return{success:!1,error:"Invalid 'budgetUsd'. Must be between $1 and $100",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};c=e,l=u,i=p,console.log("Fetching market data for:",l);const f=await o.getMarketBySlug(l);if(!f)return{success:!1,error:`Market not found: ${l}`,metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(!f.acceptingOrders)return{success:!1,error:"Market is not accepting orders",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(f.closed)return{success:!1,error:"Market is closed",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}};d=f.title;const y=o.extractTokenIds(f),h=JSON.parse(f.outcomes||'["Yes", "No"]'),w=JSON.parse(f.outcomePrices||'["0.5", "0.5"]'),S=h.findIndex(e=>"yes"===e.toLowerCase()||"up"===e.toLowerCase()),k=h.findIndex(e=>"no"===e.toLowerCase()||"down"===e.toLowerCase());let I;if("YES"===i?(s=0===S?y.up:y.down,I=parseFloat(w[S>=0?S:0])):(s=0===k?y.up:y.down,I=parseFloat(w[k>=0?k:1])),n=g??I,a=m/n,Math.floor(a)<5)return{success:!1,error:`Budget too small. At current price (${(100*n).toFixed(1)}%), minimum budget is $${(5*n).toFixed(2)}`,metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}}}console.log("Placing order:",{side:i,tokenId:`${s.slice(0,16)}...`,price:n,size:Math.floor(a)});const e=await o.placeOrder({tokenId:s,price:n,size:a,side:"BUY"}),m={success:e.success,orderId:e.orderId,status:e.status,errorMsg:e.errorMsg,tokenId:s,side:i,price:n,size:Math.floor(a),costUsd:Math.round(a*n*100)/100},g=Date.now()-t;return console.log("Request completed in",g,"ms"),e.success?{success:!0,data:{order:m,market:{slug:l,title:d,conditionId:c}},metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:g}}:{success:!1,error:e.errorMsg||"Order placement failed",data:{order:m,market:{slug:l,title:d,conditionId:c}},metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:g}}}catch(m){return console.error("Unhandled error:",m),{success:!1,error:m instanceof Error?m.message:"An unexpected error occurred",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}}}},exports.runPolymarketUpDown15LimitOrderBot=async function(e){const t=[];try{const{asset:o,price:s,sizeUsd:n,ladder:a}=e;if(!o||!function(e){return["BTC","SOL","ETH","XRP"].includes(e.toUpperCase())}(o))return t.push(M("ERROR","Invalid or missing asset",{asset:o})),{success:!1,error:"Invalid asset. Must be one of: BTC, SOL, ETH, XRP",logs:t};const i=o.toUpperCase(),c=a?.enabled??!1,l=s?s/100:.48,d=n||25,u={enabled:c,maxPrice:a?.maxPrice??49,minPrice:a?.minPrice??35,taperFactor:a?.taperFactor??1.5};c&&t.push(M("INFO","Ladder mode enabled",{maxPrice:`${u.maxPrice}%`,minPrice:`${u.minPrice}%`,taperFactor:u.taperFactor,totalBankroll:`$${d}`}));const p=F(),m=v(i,p);let g,f;try{g=_()}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(M("ERROR",`Failed to initialize client: ${e}`)),{success:!1,error:`Client initialization failed: ${e}`,logs:t}}try{const e=await g.getMarketBySlug(m);if(t.push(...g.getLogs()),g.clearLogs(),e){let o;try{o=g.extractTokenIds(e),t.push(...g.getLogs()),g.clearLogs()}catch(r){const o=r instanceof Error?r.message:String(r);return t.push(M("ERROR",`Failed to extract token IDs: ${o}`)),f={marketSlug:m,marketTitle:e.title,marketStartTime:$(p),targetTimestamp:p,error:`Token extraction failed: ${o}`},{success:!1,error:f.error,data:{asset:i,pricePercent:100*l,sizeUsd:d,ladderMode:c,market:f},logs:t}}if(c){const r=await g.placeLadderOrders(o,d,u.maxPrice,u.minPrice,u.taperFactor);t.push(...g.getLogs()),g.clearLogs();const s=r.results.map(e=>({pricePercent:e.pricePercent,sizeUsd:e.sizeUsd,up:e.up,down:e.down}));f={marketSlug:m,marketTitle:e.title,marketStartTime:$(p),targetTimestamp:p,ladderOrdersPlaced:s,ladderTotalOrders:r.totalOrders,ladderSuccessfulOrders:r.successfulOrders}}else{const r=await g.placeStraddleOrders(o,l,d);t.push(...g.getLogs()),g.clearLogs(),f={marketSlug:m,marketTitle:e.title,marketStartTime:$(p),targetTimestamp:p,ordersPlaced:r}}}else f={marketSlug:m,marketStartTime:$(p),targetTimestamp:p,error:"Market not found - may not be created yet"}}catch(r){const e=r instanceof Error?r.message:String(r);t.push(M("ERROR",`Error processing market ${m}: ${e}`)),f={marketSlug:m,marketStartTime:$(p),targetTimestamp:p,error:e}}return{success:!f.error,data:{asset:i,pricePercent:100*l,sizeUsd:d,ladderMode:c,market:f},logs:t}}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(M("ERROR",`Unhandled error: ${e}`)),{success:!1,error:e,logs:t}}},exports.runX402Seller=async function(e){const t=Date.now(),r=e;console.log("[x402-seller] Action:",r.action);const{action:o}=r;try{switch(o){case"health":{const e=await R(),r=process.env.X402_DISCOVERY_URL;return{success:!0,healthy:e,config:{discoveryUrl:r,preferredNetwork:process.env.X402_PREFERRED_NETWORK},metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}}}case"list":{const e=r;try{const r=await T({network:e.network,type:e.type||"http",limit:e.limit,offset:e.offset});return{success:!0,sellers:r,metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t,total:r.length}}}catch(s){return console.error("[x402-seller] Error listing sellers:",s),{success:!1,error:s instanceof Error?s.message:"Failed to list sellers",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t,total:0}}}}case"call":{const e=r;if(!e.resourceUrl)return{success:!1,error:"Missing required parameter: 'resourceUrl'"};if(!e.query)return{success:!1,error:"Missing required parameter: 'query'"};const o=e.network||g.SOLANA_MAINNET;try{const r=await A(e.resourceUrl,e.query,o);return{success:r.success,data:r.data,error:r.error,metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t,paymentTxId:r.paymentInfo?.txId,costUsdc:r.paymentInfo?.cost,network:o}}}catch(s){return console.error("[x402-seller] Error calling seller:",s),{success:!1,error:s instanceof Error?s.message:"Failed to call seller",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t,network:o}}}}case"networks":{const e=g;return{success:!0,networks:[{id:e.SOLANA_MAINNET,name:"Solana Mainnet",type:"solana"},{id:e.SOLANA_DEVNET,name:"Solana Devnet",type:"solana"},{id:e.BASE_MAINNET,name:"Base Mainnet",type:"evm"},{id:e.BASE_SEPOLIA,name:"Base Sepolia",type:"evm"}],metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}}}default:return{success:!1,error:`Unknown action: '${o}'. Valid actions: 'list', 'call', 'health', 'networks'`}}}catch(s){return console.error("[x402-seller] Unhandled error:",s),{success:!1,error:s instanceof Error?s.message:"An unexpected error occurred",metadata:{requestId:crypto.randomUUID(),timestamp:(new Date).toISOString(),processingTimeMs:Date.now()-t}}}},exports.x402=x;
@@ -0,0 +1 @@
1
+ import{a as e,c as t,i as r,b as o}from"./bookmakerAnalysis-Bfo1zUVm.js";import{a as s,c as n}from"./callGrok-D0D7zBHK.js";import{ClobClient as a,Side as i,OrderType as c}from"@polymarket/clob-client";import{Wallet as l}from"ethers";const d=["gpt-5.2","gpt-5.1","gpt-5-nano","gpt-4.1","gpt-4.1-mini"];function u(e){return r(e)?"blockrun":function(e){return d.includes(e)||e.startsWith("gpt-")}(e)?"openai":"grok"}async function m(r,o={}){const a=Date.now(),{markets:i,eventIdentifier:c,pmType:l,model:d,question:m,tools:p,userCommand:g}=r;if(!i||!Array.isArray(i)||0===i.length)throw new Error("Missing or invalid 'markets' parameter");if(!c)throw new Error("Missing required parameter: 'eventIdentifier'");if(!l||"Kalshi"!==l&&"Polymarket"!==l)throw new Error("Invalid 'pmType'. Must be 'Kalshi' or 'Polymarket'");if(!d)throw new Error("Missing required parameter: 'model'");const f=u(d),h=m||"What is the best trading opportunity in this market? Analyze the probability and provide a recommendation.",{systemPrompt:y,userPrompt:w}=e(i,c,h,l,p,g);let S,k,I,E,P;if("blockrun"===f){const e=p?.includes("x_search")||p?.includes("web_search"),r=await t(w,y,"json_object",d,3,e,{walletKey:o.blockrunWalletKey});S=r.model,k=r.usage?.total_tokens,I=r.blockrun?.paymentCost;const s=[];for(const t of r.output)if("message"===t.type){const e=t;s.push(...e.content)}E=s.map(e=>e.text).filter(e=>void 0!==e).join("\n")}else if("openai"===f){const e=await s(w,y,"json_object",d,3,{apiKey:o.openaiApiKey});S=e.model,k=e.usage?.total_tokens;const t=[];for(const r of e.output)if("message"===r.type){const e=r;t.push(...e.content)}E=t.map(e=>e.text).filter(e=>void 0!==e).join("\n")}else{const e=await n(w,y,"json_object",d,3,p,{apiKey:o.xaiApiKey});S=e.model,k=e.usage?.total_tokens;const t=[];for(const r of e.output)if("message"===r.type){const e=r;t.push(...e.content)}E=t.map(e=>e.text).filter(e=>void 0!==e).join("\n")}try{P=JSON.parse(E)}catch{throw new Error(`Failed to parse AI response as JSON (model ${S}): ${E.substring(0,200)}`)}return{analysis:P,model:S,tokensUsed:k,paymentCost:I,processingTimeMs:Date.now()-a}}const p=["gpt-5.2","gpt-5.1","gpt-5-nano","gpt-4.1","gpt-4.1-mini"];async function g(e,t={}){const r=Date.now(),{analyses:a,x402Results:i,eventIdentifier:c,pmType:l,model:d}=e,u=a&&Array.isArray(a)&&a.length>0,m=i&&Array.isArray(i)&&i.length>0;if(!u&&!m)throw new Error("Missing or invalid 'analyses' or 'x402Results' parameter");const g=(a?.length||0)+(i?.length||0);if(g<2)throw new Error("Need at least 2 data sources (analyses + PayAI results) to aggregate");if(!c)throw new Error("Missing required parameter: 'eventIdentifier'");if(!l||"Kalshi"!==l&&"Polymarket"!==l)throw new Error("Invalid 'pmType'. Must be 'Kalshi' or 'Polymarket'");if(!d)throw new Error("Missing required parameter: 'model'");const f=function(e){return p.includes(e)||e.startsWith("gpt-")}(d),h=(a||[]).map(e=>({agentId:e.agentId,model:e.model,analysis:e.analysis})),{systemPrompt:y,userPrompt:w}=o(h,i||[],c,l);let S,k,I,E;if(f){const e=await s(w,y,"json_object",d,3,{apiKey:t.openaiApiKey});S=e.model,k=e.usage?.total_tokens;const r=[];for(const t of e.output)if("message"===t.type){const e=t;r.push(...e.content)}I=r.map(e=>e.text).filter(e=>void 0!==e).join("\n")}else{const e=await n(w,y,"json_object",d,3,void 0,{apiKey:t.xaiApiKey});S=e.model,k=e.usage?.total_tokens;const r=[];for(const t of e.output)if("message"===t.type){const e=t;r.push(...e.content)}I=r.map(e=>e.text).filter(e=>void 0!==e).join("\n")}try{E=JSON.parse(I)}catch{throw new Error(`Failed to parse AI response as JSON (model ${S}): ${I.substring(0,200)}`)}return{analysis:E,model:S,tokensUsed:k,agentsAggregated:g,processingTimeMs:Date.now()-r}}class f extends Error{constructor(e="Agents recommend NO TRADE - no order to place"){super(e),this.name="NoTradeError"}}function h(e,t,r){if(t.closed)throw new Error("Market is closed");if(!1===t.acceptingOrders)throw new Error("Market is not accepting orders");if(!t.clobTokenIds)throw new Error("Missing clobTokenIds in market data");const[o,s]=function(e){try{const t=JSON.parse(e);if(Array.isArray(t)&&t.length>=2)return[t[0],t[1]];throw new Error("Invalid token IDs format")}catch{throw new Error(`Failed to parse clobTokenIds: ${e}`)}}(t.clobTokenIds),n=function(e){try{return JSON.parse(e)}catch{return["Yes","No"]}}(t.outcomes||'["Yes", "No"]'),a=function(e){try{return JSON.parse(e).map(e=>parseFloat(e))}catch{return[.5,.5]}}(t.outcomePrices||'["0.5", "0.5"]'),i="BUY YES"===e.recommendedAction,c=i?"YES":"NO",l=n.findIndex(e=>"yes"===e.toLowerCase()||"up"===e.toLowerCase()),d=n.findIndex(e=>"no"===e.toLowerCase()||"down"===e.toLowerCase());let u,m;i?(u=0===l?o:s,m=a[l>=0?l:0]):(u=0===d?o:s,m=a[d>=0?d:1]);const p=t.minimumTickSize||"0.01",g=t.negRisk??false,f=function(e,t){const r=parseFloat(t);return Math.round(e/r)*r}(m,p),h=r/f,y=Math.floor(h);if(y<5)throw new Error(`Budget too small. At current price (${(100*f).toFixed(1)}%), minimum budget is $${(5*f).toFixed(2)} for 5 shares`);const w=`BUY ${y} shares of ${c} @ ${(100*f).toFixed(1)}% for ~$${(y*f).toFixed(2)} on "${t.title||t.question||"Unknown Market"}"`;return{tokenId:u,price:f,side:"BUY",size:y,feeRateBps:0,tickSize:p,negRisk:g,conditionId:t.conditionId||"",marketSlug:t.slug||"",orderDescription:w}}function y(e){const{platform:t,analysisResult:r,marketData:o,budgetUsd:s}=e;if(!t||"Polymarket"!==t&&"Kalshi"!==t)throw new Error("Invalid platform. Must be 'Polymarket' or 'Kalshi'");if(!r||!r.recommendedAction)throw new Error("Missing analysisResult or recommendedAction");if("NO TRADE"===r.recommendedAction)throw new f;if(!o)throw new Error("Missing marketData");if("number"!=typeof s||s<1||s>100)throw new Error("Invalid budgetUsd. Must be between $1 and $100");if("Kalshi"===t)throw new Error("Kalshi autonomous mode coming soon! Currently only Polymarket is supported.");return{platform:"Polymarket",orderParams:h(r,o,s),analysis:{recommendedAction:r.recommendedAction,side:"BUY YES"===r.recommendedAction?"YES":"NO",confidence:r.winnerConfidence}}}const w="https://deep-research-api.thekid-solana.workers.dev",S=3e5;async function k(e,t,r=3e5){const o=new AbortController,s=setTimeout(()=>o.abort(),r);try{const r=await fetch(e,{...t,signal:o.signal});return clearTimeout(s),r}catch(n){if(clearTimeout(s),n instanceof Error&&"AbortError"===n.name)throw new Error(`Request timeout after ${r}ms`);throw n}}async function I(e,t=!0){const r=function(){const e=process.env.POLYFACTUAL_API_KEY;if(!e)throw new Error("POLYFACTUAL_API_KEY environment variable is not set");return e}();if(e.length>1e3)throw new Error("Query exceeds maximum length of 1000 characters");if(!e.trim())throw new Error("Query cannot be empty");const o={query:e,text:t};console.log("Calling Polyfactual API with query:",e.substring(0,100)+(e.length>100?"...":""));const s=await k(`${w}/answer`,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":r},body:JSON.stringify(o)},S);if(!s.ok){let e;switch(s.status){case 400:e="Bad request: Invalid query format or validation error";break;case 401:e="Unauthorized: Invalid API key";break;case 429:e="Rate limit exceeded: Please wait before making another request";break;case 500:e="Internal server error: Polyfactual service is temporarily unavailable";break;default:e=`Polyfactual API error: ${s.status} ${s.statusText}`}try{const t=await s.json();!t.success&&t.error&&(e=t.error)}catch{}throw new Error(e)}const n=await s.json();if(!n.success)throw new Error(n.error||"Unknown error from Polyfactual API");return console.log("Polyfactual response received successfully"),n}const E=/* @__PURE__ */Object.freeze(/* @__PURE__ */Object.defineProperty({__proto__:null,checkPolyfactualHealth:async function(){try{return(await k(`${w}/health`,{method:"GET"},1e4)).ok}catch{return!1}},generatePolyfactualAnswer:I},Symbol.toStringTag,{value:"Module"}));async function P(e){const t=Date.now(),{query:r}=e;if(!r||"string"!=typeof r)return console.log("Missing or invalid query parameter"),{success:!1,error:"Missing required parameter: 'query'",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),query:"",processingTimeMs:Date.now()-t}};const o=r.trim();if(!o)return console.log("Empty query parameter"),{success:!1,error:"Query cannot be empty",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),query:"",processingTimeMs:Date.now()-t}};try{console.log("Starting Polyfactual research for query:",o.substring(0,100));const e=(await I(o,!0)).data,r=e?.answer||JSON.stringify(e),s=e?.citations||[],n=Date.now()-t;return console.log("Request completed in",n,"ms"),{success:!0,answer:"string"==typeof r?r:JSON.stringify(r),citations:Array.isArray(s)?s:[],data:e,metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),query:o,processingTimeMs:n}}}catch(s){console.error("Error:",s);const e=Date.now()-t;return{success:!1,error:s instanceof Error?s.message:"An unexpected error occurred",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),query:"",processingTimeMs:e}}}}const O={BASE_MAINNET:"eip155:8453",BASE:"base",SOLANA_MAINNET:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",SOLANA:"solana"},T={base:8453,"eip155:8453":8453},A={TransferWithAuthorization:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"validAfter",type:"uint256"},{name:"validBefore",type:"uint256"},{name:"nonce",type:"bytes32"}]};function R(){const e=process.env.X402_SOLANA_PRIVATE_KEY,t=process.env.X402_EVM_PRIVATE_KEY,r=process.env.X402_DISCOVERY_URL,o=process.env.X402_FACILITATOR_URL;return console.log("[x402] Config loaded:"),console.log("[x402] - Discovery URL:",r||"(not set)"),console.log("[x402] - EVM Private Key:",t?"(set)":"(not set)"),console.log("[x402] - Solana Private Key:",e?"(set)":"(not set)"),{solanaPrivateKey:e,evmPrivateKey:t,discoveryUrl:r,facilitatorUrl:o}}function x(e){return"solana"===e||e.startsWith("solana:")}function U(e){return"base"===e||e.startsWith("eip155:")}function v(e,t){if(!e)return"Unknown";try{const t=BigInt(e),r=10n**6n;return`$${(Number(t)/Number(r)).toFixed(4)}`}catch{return"Unknown"}}async function $(e,t,r,o){console.log("[x402] Creating EVM payment header for Base mainnet...");const{ethers:s}=await(import("ethers")),n=new s.Wallet(e),a=n.address;console.log("[x402] From address:",a);const i=function(){const e=new Uint8Array(32);return crypto.getRandomValues(e),`0x${Array.from(e).map(e=>e.toString(16).padStart(2,"0")).join("")}`}(),c=Math.floor(Date.now()/1e3),l=c-600,d=c+(t.maxTimeoutSeconds||60),u={from:a,to:t.payTo,value:t.amount||t.maxAmountRequired||"0",validAfter:l.toString(),validBefore:d.toString(),nonce:i};console.log("[x402] Authorization:",u);const m=t.extra||{name:"USD Coin",version:"2"},p=(g=t.network,T[g]||8453);var g;const f={name:m.name||"USD Coin",version:m.version||"2",chainId:p,verifyingContract:t.asset};console.log("[x402] Domain:",f);const h=await n.signTypedData(f,A,{from:a,to:t.payTo,value:BigInt(t.amount||t.maxAmountRequired||"0"),validAfter:BigInt(l),validBefore:BigInt(d),nonce:i});console.log("[x402] Signature created");const y={x402Version:r,resource:o||{url:"",description:"",mimeType:"application/json"},accepted:{scheme:t.scheme||"exact",network:t.network,asset:t.asset,amount:t.amount||t.maxAmountRequired||"0",payTo:t.payTo,maxTimeoutSeconds:t.maxTimeoutSeconds||60,extra:t.extra||{}},payload:{authorization:u,signature:h}};console.log("[x402] Payment payload (v2 format):",JSON.stringify(y,null,2));return btoa(JSON.stringify(y))}function M(e,t){if(t?.name&&"string"==typeof t.name)return t.name;if(t?.title&&"string"==typeof t.title)return t.title;try{const t=new URL(e),r=t.pathname.split("/").filter(Boolean);if(r.length>0){return r[r.length-1].replace(/[-_]/g," ").replace(/\b\w/g,e=>e.toUpperCase())}return t.hostname}catch{return e.substring(0,30)+"..."}}function D(e,t){if(t?.description&&"string"==typeof t.description)return t.description;for(const r of e){if(r.description)return r.description;if(r.outputSchema?.input?.queryParams){const e=Object.entries(r.outputSchema.input.queryParams);if(e.length>0)return`Accepts: ${e.map(([e,t])=>`${e} (${t.type})`).join(", ")}`}}}function b(e){const t=[...new Set((e.accepts||[]).map(e=>e?.network).filter(e=>!!e))];let r,o="Unknown";for(const s of e.accepts||[]){const e=s?.amount||s?.maxAmountRequired;if(!e)continue;const t=v(e,s.network);"Unknown"!==t&&("Unknown"===o||t<o)&&(o=t)}for(const s of e.accepts||[]){if(s?.outputSchema?.input?.queryParams){r=Object.entries(s.outputSchema.input.queryParams).map(([e,t])=>`${e}: ${t?.description||t?.type||"any"}`).join(", ");break}if(s?.outputSchema?.input?.bodyParams){r=Object.entries(s.outputSchema.input.bodyParams).map(([e,t])=>`${e}: ${t?.description||t?.type||"any"}`).join(", ");break}}return{id:e.resource||"",name:M(e.resource||"",e.metadata),description:D(e.accepts||[],e.metadata),resourceUrl:e.resource||"",priceUsdc:o,networks:t,lastUpdated:e.lastUpdated||/* @__PURE__ */(new Date).toISOString(),inputDescription:r}}async function N(e){const t=R();if(!t.discoveryUrl)throw new Error("X402_DISCOVERY_URL environment variable is not set");const r=new URLSearchParams;e?.type&&r.set("type",e.type),e?.limit&&r.set("limit",e.limit.toString()),e?.offset&&r.set("offset",e.offset.toString());const o=r.toString(),s=`${t.discoveryUrl}${o?`?${o}`:""}`;console.log("[x402] Fetching bazaar sellers from:",s);try{const t=await fetch(s,{method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json"}});if(!t.ok){let e;if((t.headers.get("content-type")||"").includes("application/json")){const r=await t.json().catch(()=>({}));e=r.error||r.message||t.statusText}else e=`Received non-JSON response (status ${t.status}). Check discovery URL configuration.`;throw new Error(`Failed to fetch bazaar sellers (${t.status}): ${e}`)}const r=await t.json();console.log("[x402] Raw response keys:",Object.keys(r));let o=[];Array.isArray(r)?o=r:r.items&&Array.isArray(r.items)?o=r.items:r.resources&&Array.isArray(r.resources)?o=r.resources:(console.log("[x402] Unexpected response structure:",JSON.stringify(r).substring(0,500)),o=[]),console.log("[x402] Found",o.length,"sellers in bazaar");let a=[];for(const e of o)try{const t=b(e);a.push(t)}catch(n){console.warn("[x402] Failed to transform seller:",e?.resource,n)}return e?.network&&(a=a.filter(t=>t.networks.includes(e.network))),a}catch(a){if(console.error("[x402] Error fetching bazaar sellers:",a),a instanceof Error)throw new Error(`x402 Bazaar error: ${a.message}. Discovery URL: ${s}`);throw a}}async function C(e,t,r){const o=R();console.log("[x402] Calling seller:",e),console.log("[x402] Query:",t),r&&console.log("[x402] Preferred network:",r);try{const n=new URL(e);if(t)try{const e=JSON.parse(t);for(const[t,r]of Object.entries(e))n.searchParams.set(t,String(r))}catch{n.searchParams.set("q",t)}console.log("[x402] Request URL:",n.toString());const a=await fetch(n.toString(),{method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json"}});if(console.log("[x402] Initial response status:",a.status),402!==a.status){if(a.ok){return{success:!0,data:await a.json(),paymentInfo:{network:"free"}}}const e=await a.text();throw new Error(`Unexpected response status: ${a.status}. Body: ${e.substring(0,200)}`)}const i=await a.json();console.log("[x402] Payment requirements received:",JSON.stringify(i,null,2));const c=i.x402Version||1,l=i.resource||{url:n.toString(),description:i.description||"",mimeType:i.mimeType||"application/json"};console.log("[x402] Resource info:",JSON.stringify(l));const d=i.accepts||[];console.log("[x402] Available payment options count:",d.length);for(const e of d)console.log(`[x402] Option - network: ${e.network}, scheme: ${e.scheme}, extra:`,JSON.stringify(e.extra));let u,m,p;if(r&&(u=d.find(e=>e.network===r),u&&(m=x(u.network)?"solana":"evm")),u||(o.solanaPrivateKey&&(u=d.find(e=>x(e.network)),u&&(m="solana",console.log("[x402] Using Solana mainnet for payment"))),!u&&o.evmPrivateKey&&(u=d.find(e=>U(e.network)),u&&(m="evm",console.log("[x402] Using EVM (Base mainnet) for payment")))),!u||!m){const e=d.map(e=>e.network).join(", "),t=[];return o.evmPrivateKey&&t.push("EVM (Base)"),o.solanaPrivateKey&&t.push("Solana"),{success:!1,error:`No compatible payment option found. Seller accepts: [${e}]. You have keys for: [${t.join(", ")||"none"}].`}}if(console.log("[x402] Selected payment network:",u.network),"solana"===m){if(!o.solanaPrivateKey)return{success:!1,error:"Solana private key not configured. Set X402_SOLANA_PRIVATE_KEY environment variable.",paymentInfo:{cost:v(u.amount||u.maxAmountRequired,u.network),network:u.network}};p=await async function(e,t,r,o){console.log("[x402] Creating Solana payment header for mainnet...");const{Keypair:s,PublicKey:n,Transaction:a,TransactionInstruction:i,Connection:c,ComputeBudgetProgram:l}=await(import("@solana/web3.js")),{getAssociatedTokenAddress:d,createTransferCheckedInstruction:u,TOKEN_PROGRAM_ID:m,TOKEN_2022_PROGRAM_ID:p}=await(import("@solana/spl-token")),g=await(import("bs58"));let f;try{const t=g.default.decode(e);f=s.fromSecretKey(t)}catch{throw new Error("Invalid Solana private key. Must be base58 encoded.")}const h=f.publicKey;console.log("[x402] From address:",h.toBase58());const y=t.extra?.feePayer;if(!y)throw new Error("feePayer is required in paymentRequirements.extra for Solana payments");const w=new n(y);console.log("[x402] Fee payer:",w.toBase58());const S=new n(t.payTo),k=new n(t.asset),I=t.amount||t.maxAmountRequired;if(!I)throw new Error("amount or maxAmountRequired is required in paymentRequirements");const E=BigInt(I);console.log("[x402] To address:",S.toBase58()),console.log("[x402] Mint (USDC):",k.toBase58()),console.log("[x402] Amount:",E.toString());const P=await d(k,h,!1,m),O=await d(k,S,!1,m);console.log("[x402] Source ATA:",P.toBase58()),console.log("[x402] Destination ATA:",O.toBase58());const T=new c(process.env.SOLANA_RPC_URL||"https://api.mainnet-beta.solana.com","confirmed"),{blockhash:A,lastValidBlockHeight:R}=await T.getLatestBlockhash("confirmed");console.log("[x402] Got blockhash:",A.substring(0,20)+"...");const x=new a;x.feePayer=w,x.recentBlockhash=A;const U=l.setComputeUnitLimit({units:1e5}),v=l.setComputeUnitPrice({microLamports:5e4});x.add(U),x.add(v);const $=u(P,k,O,h,E,6,[],m);x.add($),x.partialSign(f),console.log("[x402] Transaction created and partially signed");const M=x.serialize({requireAllSignatures:!1,verifySignatures:!1}).toString("base64");console.log("[x402] Transaction serialized, length:",M.length);const D={x402Version:r,resource:o||{url:"",description:"",mimeType:"application/json"},accepted:{scheme:t.scheme||"exact",network:t.network,asset:t.asset,amount:t.amount||t.maxAmountRequired||"0",payTo:t.payTo,maxTimeoutSeconds:t.maxTimeoutSeconds||60,extra:t.extra||{}},payload:{transaction:M}};console.log("[x402] Payment payload (v2 format):",JSON.stringify(D,null,2));const b=btoa(JSON.stringify(D));return console.log("[x402] Payment header created"),b}(o.solanaPrivateKey,u,c,l)}else{if(!o.evmPrivateKey)return{success:!1,error:"EVM private key not configured. Set X402_EVM_PRIVATE_KEY environment variable.",paymentInfo:{cost:v(u.amount||u.maxAmountRequired,u.network),network:u.network}};p=await $(o.evmPrivateKey,u,c,l)}console.log("[x402] Payment header created, making paid request...");const g=await fetch(n.toString(),{method:"GET",headers:{"Content-Type":"application/json",Accept:"application/json","PAYMENT-SIGNATURE":p,"X-Payment":p}});if(console.log("[x402] Paid response status:",g.status),!g.ok){const e=await g.text();console.error("[x402] Paid request failed:",e);try{const t=JSON.parse(e);return{success:!1,error:t.error||t.message||`Payment failed: ${g.status}`,paymentInfo:{cost:v(u.amount||u.maxAmountRequired,u.network),network:u.network}}}catch{return{success:!1,error:`Payment failed (${g.status}): ${e.substring(0,200)}`,paymentInfo:{cost:v(u.amount||u.maxAmountRequired,u.network),network:u.network}}}}const f=await g.text();let h;console.log("[x402] Raw seller response (first 1000 chars):",f.substring(0,1e3)),f.length>1e3&&console.log("[x402] Response truncated, total length:",f.length);try{h=JSON.parse(f);const e=JSON.stringify(h,null,2);console.log("[x402] Parsed seller response (first 1000 chars):",e.substring(0,1e3))}catch(s){console.log("[x402] Response is not JSON, returning as text"),h={rawText:f}}const y=g.headers.get("X-Payment-Receipt");return console.log("[x402] Payment receipt header:",y||"none"),{success:!0,data:h,paymentInfo:{txId:y||void 0,cost:v(u.amount||u.maxAmountRequired,u.network),network:u.network}}}catch(n){return console.error("[x402] Error calling seller:",n),{success:!1,error:n instanceof Error?n.message:"Unknown error"}}}async function _(){const e=R();if(!e.discoveryUrl)return!1;try{return(await fetch(`${e.discoveryUrl}?limit=1`,{method:"GET",headers:{Accept:"application/json"}})).ok}catch{return!1}}const L=/* @__PURE__ */Object.freeze(/* @__PURE__ */Object.defineProperty({__proto__:null,NETWORKS:O,callX402Seller:C,checkX402Health:_,isEvmNetwork:U,isSolanaNetwork:x,listBazaarSellers:N,parseUsdcPrice:v,transformSellerToInfo:b},Symbol.toStringTag,{value:"Module"}));async function q(e){const t=Date.now(),r=e;console.log("[x402-seller] Action:",r.action);const{action:o}=r;try{switch(o){case"health":{const e=await _(),r=process.env.X402_DISCOVERY_URL;return{success:!0,healthy:e,config:{discoveryUrl:r,preferredNetwork:process.env.X402_PREFERRED_NETWORK},metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}}}case"list":{const e=r;try{const r=await N({network:e.network,type:e.type||"http",limit:e.limit,offset:e.offset});return{success:!0,sellers:r,metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t,total:r.length}}}catch(s){return console.error("[x402-seller] Error listing sellers:",s),{success:!1,error:s instanceof Error?s.message:"Failed to list sellers",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t,total:0}}}}case"call":{const e=r;if(!e.resourceUrl)return{success:!1,error:"Missing required parameter: 'resourceUrl'"};if(!e.query)return{success:!1,error:"Missing required parameter: 'query'"};const o=e.network||O.SOLANA_MAINNET;try{const r=await C(e.resourceUrl,e.query,o);return{success:r.success,data:r.data,error:r.error,metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t,paymentTxId:r.paymentInfo?.txId,costUsdc:r.paymentInfo?.cost,network:o}}}catch(s){return console.error("[x402-seller] Error calling seller:",s),{success:!1,error:s instanceof Error?s.message:"Failed to call seller",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t,network:o}}}}case"networks":{const e=O;return{success:!0,networks:[{id:e.SOLANA_MAINNET,name:"Solana Mainnet",type:"solana"},{id:e.SOLANA_DEVNET,name:"Solana Devnet",type:"solana"},{id:e.BASE_MAINNET,name:"Base Mainnet",type:"evm"},{id:e.BASE_SEPOLIA,name:"Base Sepolia",type:"evm"}],metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}}}default:return{success:!1,error:`Unknown action: '${o}'. Valid actions: 'list', 'call', 'health', 'networks'`}}}catch(s){return console.error("[x402-seller] Unhandled error:",s),{success:!1,error:s instanceof Error?s.message:"An unexpected error occurred",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}}}}const F={BTC:"btc-updown-15m-",SOL:"sol-updown-15m-",ETH:"eth-updown-15m-",XRP:"xrp-updown-15m-"};function z(e,t){return`${F[e]}${t}`}function B(e){return new Date(1e3*e).toISOString().slice(11,19)+" UTC"}function K(e,t,r){return{timestamp:/* @__PURE__ */(new Date).toISOString(),level:e,message:t,details:r}}function j(e){const t=JSON.parse(e);if(!Array.isArray(t)||t.length<2)throw new Error(`Expected 2 token IDs, got ${t.length}`);return[t[0],t[1]]}const Y="https://clob.polymarket.com",J="https://data-api.polymarket.com";class V{config;logs=[];clobClient=null;constructor(e){this.config={...e,signatureType:e.signatureType??1}}getLogs(){return[...this.logs]}clearLogs(){this.logs=[]}log(e,t,r){this.logs.push(K(e,t,r)),console.log(`[${e}] ${t}`,r||"")}async initClobClient(){if(this.clobClient)return this.clobClient;const{privateKey:e,proxyAddress:t,signatureType:r}=this.config;this.log("INFO","Initializing Polymarket CLOB client...");try{const o=new l(e),s=new a(Y,137,o),n=await s.createOrDeriveApiKey();return this.log("INFO","API credentials derived successfully"),this.clobClient=new a(Y,137,o,n,r,t),this.log("SUCCESS","CLOB client initialized",{funder:`${t.slice(0,10)}...${t.slice(-8)}`,signatureType:r}),this.clobClient}catch(o){const e=o instanceof Error?o.message:String(o);throw this.log("ERROR",`Failed to initialize CLOB client: ${e}`),o}}async getMarketBySlug(e){const t=`https://gamma-api.polymarket.com/markets/slug/${e}`;this.log("INFO",`Fetching market data for slug: ${e}`);try{const r=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!r.ok){if(404===r.status)return this.log("WARN",`Market not found: ${e}`),null;throw new Error(`Gamma API error: ${r.status} ${r.statusText}`)}const o=await r.json();return this.log("SUCCESS",`Found market: ${o.title||e}`),o}catch(r){throw this.log("ERROR",`Failed to fetch market: ${r instanceof Error?r.message:String(r)}`),r}}extractTokenIds(e){const t=e.clobTokenIds;if(!t)throw new Error("No clobTokenIds found in market data");const[r,o]=j(t);return this.log("INFO","Extracted token IDs",{up:`${r.slice(0,16)}...${r.slice(-8)}`,down:`${o.slice(0,16)}...${o.slice(-8)}`}),{up:r,down:o}}async placeOrder(e){const{privateKey:t,proxyAddress:r}=this.config;if(!t)return this.log("ERROR","Missing private key for order placement"),{success:!1,errorMsg:"Missing private key. Please set POLYMARKET_WALLET_PRIVATE_KEY."};if(!r)return this.log("ERROR","Missing proxy address for order placement"),{success:!1,errorMsg:"Missing proxy address. Please set POLYMARKET_PROXY_WALLET_ADDRESS."};this.log("INFO",`Placing ${e.side} order`,{tokenId:`${e.tokenId.slice(0,16)}...`,price:e.price,size:Math.floor(e.size)});try{const t=await this.initClobClient(),r=await t.createAndPostOrder({tokenID:e.tokenId,price:e.price,side:"BUY"===e.side?i.BUY:i.SELL,size:Math.floor(e.size),feeRateBps:0},{tickSize:"0.01",negRisk:false},c.GTC);return this.log("SUCCESS","Order placed successfully",{orderId:r?.orderID||r?.id,status:r?.status}),{success:!0,orderId:r?.orderID||r?.id,status:r?.status||"submitted"}}catch(o){const e=o instanceof Error?o.message:String(o);return this.log("ERROR",`Failed to place order: ${e}`),{success:!1,errorMsg:e}}}async placeStraddleOrders(e,t,r){const o=r/t;this.log("INFO","Placing straddle orders",{price:`${(100*t).toFixed(1)}%`,sizeUsd:`$${r}`,shares:Math.floor(o)});return{up:await this.placeOrder({tokenId:e.up,price:t,size:o,side:"BUY"}),down:await this.placeOrder({tokenId:e.down,price:t,size:o,side:"BUY"})}}calculateLadderRungs(e,t=49,r=35,o=1.5){const s=Math.ceil(t/100*5*100)/100,n=[];for(let p=t;p>=r;p--)n.push(p);let a=[...n],i=a.length;for(;i>1;){const t=[];for(let e=0;e<i;e++){const r=Math.exp(-o*e/i);t.push(r)}const r=t.reduce((e,t)=>e+t,0);if(e*t.map(e=>e/r)[i-1]>=s)break;i--,a=n.slice(0,i)}const c=[],l=[];for(let p=0;p<i;p++){const e=Math.exp(-o*p/i);l.push(e)}const d=l.reduce((e,t)=>e+t,0),u=l.map(e=>e/d);for(let p=0;p<i;p++){const t=a[p],r=100*u[p],o=e*u[p];c.push({pricePercent:t,priceDecimal:t/100,sizeUsd:Math.round(100*o)/100,allocationPercent:Math.round(100*r)/100})}const m=a[a.length-1];return this.log("INFO",`Calculated ladder with ${i} rungs`,{maxPrice:`${t}%`,effectiveMinPrice:`${m}%`,requestedMinPrice:`${r}%`,taperFactor:o,totalBankroll:`$${e}`,minRungAllocation:`$${c[c.length-1]?.sizeUsd||0}`}),m>r&&this.log("WARN",`Bankroll too small for full ladder range. Adjusted min price from ${r}% to ${m}%`),c}async placeLadderOrders(e,t,r=49,o=35,s=1.5){const n=this.calculateLadderRungs(t,r,o,s);this.log("INFO","Placing ladder orders",{totalRungs:n.length,totalBankroll:`$${t}`,priceRange:`${r}% → ${o}%`});const a=[];let i=0;const c=2*n.length;for(const l of n){if(l.sizeUsd<1){this.log("WARN",`Skipping rung at ${l.pricePercent}% - allocation too small ($${l.sizeUsd.toFixed(2)})`);continue}const t=l.sizeUsd/l.priceDecimal;if(Math.floor(t)<5){this.log("WARN",`Skipping rung at ${l.pricePercent}% - would result in < 5 shares`);continue}this.log("INFO",`Placing ladder rung at ${l.pricePercent}%`,{sizeUsd:`$${l.sizeUsd.toFixed(2)}`,shares:Math.floor(t),allocation:`${l.allocationPercent.toFixed(1)}%`});const r=await this.placeOrder({tokenId:e.up,price:l.priceDecimal,size:t,side:"BUY"});r.success&&i++;const o=await this.placeOrder({tokenId:e.down,price:l.priceDecimal,size:t,side:"BUY"});o.success&&i++,a.push({pricePercent:l.pricePercent,sizeUsd:l.sizeUsd,up:r,down:o})}return this.log("SUCCESS","Ladder orders complete",{totalOrders:c,successfulOrders:i,successRate:`${(i/c*100).toFixed(1)}%`}),{rungs:n,results:a,totalOrders:c,successfulOrders:i}}async getPositions(e){try{const{proxyAddress:t}=this.config,r=new URLSearchParams;r.append("user",t),r.append("sizeThreshold","0"),e?.market&&r.append("market",e.market);const o=`${J}/positions?${r.toString()}`;this.log("INFO","Fetching positions from Data API",{user:`${t.slice(0,10)}...`,...e});const s=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json"}});if(!s.ok)throw new Error(`Data API error: ${s.status} ${s.statusText}`);const n=await s.json();return this.log("SUCCESS",`Found ${(n||[]).length} positions`),n||[]}catch(t){const e=t instanceof Error?t.message:String(t);return this.log("ERROR",`Failed to get positions: ${e}`),[]}}async getActivity(e){try{const{proxyAddress:t}=this.config,r=new URLSearchParams;r.append("user",t),r.append("type","TRADE"),r.append("limit","500"),e?.market&&r.append("market",e.market);const o=`${J}/activity?${r.toString()}`;this.log("INFO","Fetching activity from Data API",{user:`${t.slice(0,10)}...`,...e});const s=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json"}});if(!s.ok)throw new Error(`Data API error: ${s.status} ${s.statusText}`);const n=await s.json();return this.log("SUCCESS",`Found ${(n||[]).length} trades`),n||[]}catch(t){const e=t instanceof Error?t.message:String(t);return this.log("ERROR",`Failed to get activity: ${e}`),[]}}async getOrder(e){try{const t=await this.initClobClient();this.log("INFO",`Fetching order: ${e.slice(0,16)}...`);const r=await t.getOrder(e);return r?this.log("SUCCESS","Order found",{status:r.status,size_matched:r.size_matched,original_size:r.original_size}):this.log("WARN",`Order not found: ${e}`),r||null}catch(t){const e=t instanceof Error?t.message:String(t);return this.log("ERROR",`Failed to get order: ${e}`),null}}determinePairStatus(e,t){const r=e.shares>0,o=t.shares>0;if(!r&&!o)return e.pendingShares>0||t.pendingShares>0?"PENDING":"NO_POSITION";if(r&&!o)return"DIRECTIONAL_YES";if(!r&&o)return"DIRECTIONAL_NO";const s=e.avgPrice+t.avgPrice;return s<.995?"PROFIT_LOCKED":s<=1.005?"BREAK_EVEN":"LOSS_RISK"}async getMarketPosition(e,t,r){this.log("INFO",`Fetching position for ${e} via Data API`);try{const o=await this.getPositions(),s=o.find(e=>e.asset===t.up),n=o.find(e=>e.asset===t.down),a={shares:s?.size||0,costUsd:s?Math.round(s.size*s.avgPrice*100)/100:0,avgPrice:s?.avgPrice||0,ordersPlaced:0,ordersFilled:s?1:0,pendingShares:0},i={shares:n?.size||0,costUsd:n?Math.round(n.size*n.avgPrice*100)/100:0,avgPrice:n?.avgPrice||0,ordersPlaced:0,ordersFilled:n?1:0,pendingShares:0},c=this.determinePairStatus(a,i),l=a.shares>0,d=i.shares>0;let u=null,m=0,p=0,g=0,f=0,h=0;if(l&&d){u=Math.round(1e4*(a.avgPrice+i.avgPrice))/1e4,m=Math.min(a.shares,i.shares),p=m;const e=m*a.avgPrice,t=m*i.avgPrice;g=Math.round(100*(e+t))/100,f=Math.round(100*(p-g))/100,h=g>0?Math.round(f/g*1e4)/100:0}const y={marketSlug:e,marketTitle:r,tokenIds:t,yes:a,no:i,pairCost:u,status:c,minShares:m,guaranteedPayout:p,totalCost:g,guaranteedProfit:f,returnPercent:h,lastUpdated:/* @__PURE__ */(new Date).toISOString()};return this.log("SUCCESS","Position fetched from Data API",{status:c,pairCost:u,yesShares:a.shares,noShares:i.shares,guaranteedProfit:f>0?`$${f}`:"N/A"}),y}catch(o){const s=o instanceof Error?o.message:String(o);this.log("ERROR",`Failed to get position: ${s}`);const n={shares:0,costUsd:0,avgPrice:0,ordersPlaced:0,ordersFilled:0,pendingShares:0};return{marketSlug:e,marketTitle:r,tokenIds:t,yes:n,no:n,pairCost:null,status:"NO_POSITION",minShares:0,guaranteedPayout:0,totalCost:0,guaranteedProfit:0,returnPercent:0,lastUpdated:/* @__PURE__ */(new Date).toISOString()}}}}function X(){const e=process.env.POLYMARKET_WALLET_PRIVATE_KEY,t=process.env.POLYMARKET_PROXY_WALLET_ADDRESS,r=parseInt(process.env.POLYMARKET_SIGNATURE_TYPE||"1",10);if(!e)throw new Error("POLYMARKET_WALLET_PRIVATE_KEY environment variable is required");if(!t)throw new Error("POLYMARKET_PROXY_WALLET_ADDRESS environment variable is required");return new V({privateKey:e,proxyAddress:t,signatureType:r})}const W=/* @__PURE__ */Object.freeze(/* @__PURE__ */Object.defineProperty({__proto__:null,ASSET_SLUG_PREFIXES:F,PolymarketClient:V,buildMarketSlug:z,createClientFromEnv:X,createLogEntry:K,formatTimeShort:B,parseTokenIds:j},Symbol.toStringTag,{value:"Module"}));async function G(e){const t=Date.now(),r=e;let o,s,n,a,i,c,l;try{o=X()}catch(p){return{success:!1,error:`Failed to initialize Polymarket client: ${p instanceof Error?p.message:String(p)}`,metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}}}let d="",u="0.01",m=!1;try{if(r.orderParams){console.log("Using mapper mode with pre-calculated order params");const e=r.orderParams;if(!e.tokenId)return{success:!1,error:"Missing orderParams.tokenId",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};s=e.tokenId,n=e.price,a=e.size,u=e.tickSize||"0.01",m=e.negRisk??!1,c=e.conditionId,l=e.marketSlug,i="YES",console.log("Mapper order params:",{tokenId:`${s.slice(0,16)}...`,price:n,size:a,tickSize:u,negRisk:m})}else{console.log("Using legacy mode - calculating order params");const{conditionId:e,marketSlug:u,side:m,budgetUsd:p,price:g}=r;if(!e)return{success:!1,error:"Missing required parameter: 'conditionId' or 'orderParams'",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(!u)return{success:!1,error:"Missing required parameter: 'marketSlug'",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(!m||"YES"!==m&&"NO"!==m)return{success:!1,error:"Invalid 'side'. Must be 'YES' or 'NO'",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};if("number"!=typeof p||p<1||p>100)return{success:!1,error:"Invalid 'budgetUsd'. Must be between $1 and $100",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};c=e,l=u,i=m,console.log("Fetching market data for:",l);const f=await o.getMarketBySlug(l);if(!f)return{success:!1,error:`Market not found: ${l}`,metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(!f.acceptingOrders)return{success:!1,error:"Market is not accepting orders",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};if(f.closed)return{success:!1,error:"Market is closed",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}};d=f.title;const h=o.extractTokenIds(f),y=JSON.parse(f.outcomes||'["Yes", "No"]'),w=JSON.parse(f.outcomePrices||'["0.5", "0.5"]'),S=y.findIndex(e=>"yes"===e.toLowerCase()||"up"===e.toLowerCase()),k=y.findIndex(e=>"no"===e.toLowerCase()||"down"===e.toLowerCase());let I;if("YES"===i?(s=0===S?h.up:h.down,I=parseFloat(w[S>=0?S:0])):(s=0===k?h.up:h.down,I=parseFloat(w[k>=0?k:1])),n=g??I,a=p/n,Math.floor(a)<5)return{success:!1,error:`Budget too small. At current price (${(100*n).toFixed(1)}%), minimum budget is $${(5*n).toFixed(2)}`,metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}}}console.log("Placing order:",{side:i,tokenId:`${s.slice(0,16)}...`,price:n,size:Math.floor(a)});const e=await o.placeOrder({tokenId:s,price:n,size:a,side:"BUY"}),p={success:e.success,orderId:e.orderId,status:e.status,errorMsg:e.errorMsg,tokenId:s,side:i,price:n,size:Math.floor(a),costUsd:Math.round(a*n*100)/100},g=Date.now()-t;return console.log("Request completed in",g,"ms"),e.success?{success:!0,data:{order:p,market:{slug:l,title:d,conditionId:c}},metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:g}}:{success:!1,error:e.errorMsg||"Order placement failed",data:{order:p,market:{slug:l,title:d,conditionId:c}},metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:g}}}catch(p){return console.error("Unhandled error:",p),{success:!1,error:p instanceof Error?p.message:"An unexpected error occurred",metadata:{requestId:crypto.randomUUID(),timestamp:/* @__PURE__ */(new Date).toISOString(),processingTimeMs:Date.now()-t}}}}function H(){const e=Math.floor(Date.now()/1e3);return 900*Math.floor(e/900)}async function Q(e){const t=[];try{const{asset:o,marketSlug:s,tokenIds:n}=e;if(!o||!function(e){return["BTC","SOL","ETH","XRP"].includes(e.toUpperCase())}(o))return t.push(K("ERROR","Invalid or missing asset",{asset:o})),{success:!1,error:"Invalid asset. Must be one of: BTC, SOL, ETH, XRP",logs:t};const a=o.toUpperCase();let i;try{i=X()}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(K("ERROR",`Failed to initialize client: ${e}`)),{success:!1,error:`Client initialization failed: ${e}`,logs:t}}const c=H(),l=s||z(a,c);t.push(K("INFO",`Checking position for market: ${l}`));let d,u=n;if(!u){const e=await i.getMarketBySlug(l);if(t.push(...i.getLogs()),i.clearLogs(),!e)return t.push(K("WARN","Market not found - may not be created yet")),{success:!1,error:"Market not found - may not be created yet",logs:t};d=e.title;try{u=i.extractTokenIds(e),t.push(...i.getLogs()),i.clearLogs()}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(K("ERROR",`Failed to extract token IDs: ${e}`)),{success:!1,error:`Token extraction failed: ${e}`,logs:t}}}const m=await i.getMarketPosition(l,u,d);return t.push(...i.getLogs()),i.clearLogs(),{success:!0,data:{asset:a,position:m},logs:t}}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(K("ERROR",`Unhandled error: ${e}`)),{success:!1,error:e,logs:t}}}function Z(){const e=Math.floor(Date.now()/1e3);return 900*Math.ceil(e/900)}async function ee(e){const t=[];try{const{asset:o,price:s,sizeUsd:n,ladder:a}=e;if(!o||!function(e){return["BTC","SOL","ETH","XRP"].includes(e.toUpperCase())}(o))return t.push(K("ERROR","Invalid or missing asset",{asset:o})),{success:!1,error:"Invalid asset. Must be one of: BTC, SOL, ETH, XRP",logs:t};const i=o.toUpperCase(),c=a?.enabled??!1,l=s?s/100:.48,d=n||25,u={enabled:c,maxPrice:a?.maxPrice??49,minPrice:a?.minPrice??35,taperFactor:a?.taperFactor??1.5};c&&t.push(K("INFO","Ladder mode enabled",{maxPrice:`${u.maxPrice}%`,minPrice:`${u.minPrice}%`,taperFactor:u.taperFactor,totalBankroll:`$${d}`}));const m=Z(),p=z(i,m);let g,f;try{g=X()}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(K("ERROR",`Failed to initialize client: ${e}`)),{success:!1,error:`Client initialization failed: ${e}`,logs:t}}try{const e=await g.getMarketBySlug(p);if(t.push(...g.getLogs()),g.clearLogs(),e){let o;try{o=g.extractTokenIds(e),t.push(...g.getLogs()),g.clearLogs()}catch(r){const o=r instanceof Error?r.message:String(r);return t.push(K("ERROR",`Failed to extract token IDs: ${o}`)),f={marketSlug:p,marketTitle:e.title,marketStartTime:B(m),targetTimestamp:m,error:`Token extraction failed: ${o}`},{success:!1,error:f.error,data:{asset:i,pricePercent:100*l,sizeUsd:d,ladderMode:c,market:f},logs:t}}if(c){const r=await g.placeLadderOrders(o,d,u.maxPrice,u.minPrice,u.taperFactor);t.push(...g.getLogs()),g.clearLogs();const s=r.results.map(e=>({pricePercent:e.pricePercent,sizeUsd:e.sizeUsd,up:e.up,down:e.down}));f={marketSlug:p,marketTitle:e.title,marketStartTime:B(m),targetTimestamp:m,ladderOrdersPlaced:s,ladderTotalOrders:r.totalOrders,ladderSuccessfulOrders:r.successfulOrders}}else{const r=await g.placeStraddleOrders(o,l,d);t.push(...g.getLogs()),g.clearLogs(),f={marketSlug:p,marketTitle:e.title,marketStartTime:B(m),targetTimestamp:m,ordersPlaced:r}}}else f={marketSlug:p,marketStartTime:B(m),targetTimestamp:m,error:"Market not found - may not be created yet"}}catch(r){const e=r instanceof Error?r.message:String(r);t.push(K("ERROR",`Error processing market ${p}: ${e}`)),f={marketSlug:p,marketStartTime:B(m),targetTimestamp:m,error:e}}return{success:!f.error,data:{asset:i,pricePercent:100*l,sizeUsd:d,ladderMode:c,market:f},logs:t}}catch(r){const e=r instanceof Error?r.message:String(r);return t.push(K("ERROR",`Unhandled error: ${e}`)),{success:!1,error:e,logs:t}}}export{f as N,m as a,y as b,P as c,Q as d,G as e,ee as f,q as g,W as h,E as p,g as r,L as x};
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/analytics.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,KAAK,SAAK,GACT,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA4BtC;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,oBAgB1D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,oBAgBxD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,oBAoBvD;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,oBAoB1D"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/analytics.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,KAAK,SAAK,GACT,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA4BtC;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,oBAgB1D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,oBAgBxD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,oBAoBvD;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,oBAoB1D"}
@@ -1,40 +1,22 @@
1
1
  import { PolymarketCategory } from '../constants';
2
- export type LeaderboardTimePeriod = "all" | "1d" | "7d" | "30d";
3
- /** Most rows the data-api leaderboard returns per request. */
4
- export declare const LEADERBOARD_PAGE_LIMIT = 50;
5
- /** Highest offset the data-api leaderboard accepts. */
6
- export declare const LEADERBOARD_MAX_OFFSET = 1000;
7
2
  /**
8
- * Builds the data-api leaderboard URL. The API's enums are upper-case
9
- * (`timePeriod=ALL`, `category=OVERALL`) and it rejects `limit` above 50 and
10
- * `offset` above 1000, so the friendlier values callers pass ("all", "Overall",
11
- * a limit of 100) are normalized here — sending them verbatim made every
12
- * leaderboard sync fail with a 400.
13
- */
14
- export declare function buildLeaderboardUrl(options?: {
15
- timePeriod?: LeaderboardTimePeriod | string;
16
- orderBy?: "VOL" | "PNL";
17
- limit?: number;
18
- offset?: number;
19
- category?: PolymarketCategory | Lowercase<PolymarketCategory> | string;
20
- }): URL;
21
- /**
22
- * Fetches one page of the Polymarket leaderboard, ranked by volume or PnL.
3
+ * Fetches the Polymarket leaderboard with top traders ranked by volume or PnL.
23
4
  * @param options - Configuration options for the leaderboard query
24
5
  * @param options.timePeriod - Time period filter: "all", "1d", "7d", or "30d" (default: "all")
25
6
  * @param options.orderBy - Sort order: "VOL" for volume or "PNL" for profit/loss (default: "VOL")
26
- * @param options.limit - Entries to retrieve, at most 50 (default: 20)
27
- * @param options.offset - Entries to skip for pagination, at most 1000 (default: 0)
28
- * @param options.category - Category filter (default: "Overall")
7
+ * @param options.limit - Maximum number of entries to retrieve (default: 20)
8
+ * @param options.offset - Number of entries to skip for pagination (default: 0)
9
+ * @param options.category - Category filter (default: "overall")
29
10
  * @returns Array of leaderboard entries
30
11
  * @throws Error if the API request fails
31
12
  */
32
- export declare function fetchLeaderboard(options?: Parameters<typeof buildLeaderboardUrl>[0]): Promise<any[]>;
33
- /**
34
- * Fetches up to `limit` leaderboard entries, paging through the API's
35
- * 50-row pages until it runs dry or the offset cap is reached.
36
- */
37
- export declare function fetchLeaderboardPages(options?: Omit<Parameters<typeof buildLeaderboardUrl>[0] & {}, "offset">): Promise<any[]>;
13
+ export declare function fetchLeaderboard(options?: {
14
+ timePeriod?: "all" | "1d" | "7d" | "30d";
15
+ orderBy?: "VOL" | "PNL";
16
+ limit?: number;
17
+ offset?: number;
18
+ category?: PolymarketCategory | Lowercase<PolymarketCategory>;
19
+ }): Promise<unknown>;
38
20
  /**
39
21
  * Fetches top traders from Polymarket Analytics API sorted by overall gain.
40
22
  * @param limit - Maximum number of traders to retrieve (default: 50)
@@ -1 +1 @@
1
- {"version":3,"file":"leaderboard.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/leaderboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"leaderboard.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/leaderboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/markets.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,KAAK,SAAK,EACV,MAAM,SAAe,EACrB,MAAM,SAAI,oBAiCX;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,SAAe,EACrB,UAAU,SAAO,kBAyDlB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,gBAkB7D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,oBAqDA"}
1
+ {"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/markets.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,KAAK,SAAK,EACV,MAAM,SAAe,EACrB,MAAM,SAAI,oBAiCX;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,SAAe,EACrB,UAAU,SAAO,kBAyDlB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,gBAkB7D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,oBAqDA"}
@@ -1 +1 @@
1
- {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/prices.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,oBA2CA"}
1
+ {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../../src/prediction/api/prices.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,oBA2CA"}