@zeroexcore/trader 1.0.0

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 (323) hide show
  1. package/README.md +125 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +28 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/book.d.ts +3 -0
  7. package/dist/commands/book.d.ts.map +1 -0
  8. package/dist/commands/book.js +44 -0
  9. package/dist/commands/book.js.map +1 -0
  10. package/dist/commands/diagnose.d.ts +3 -0
  11. package/dist/commands/diagnose.d.ts.map +1 -0
  12. package/dist/commands/diagnose.js +148 -0
  13. package/dist/commands/diagnose.js.map +1 -0
  14. package/dist/commands/nft/floor.d.ts +3 -0
  15. package/dist/commands/nft/floor.d.ts.map +1 -0
  16. package/dist/commands/nft/floor.js +30 -0
  17. package/dist/commands/nft/floor.js.map +1 -0
  18. package/dist/commands/nft/index.d.ts +3 -0
  19. package/dist/commands/nft/index.d.ts.map +1 -0
  20. package/dist/commands/nft/index.js +14 -0
  21. package/dist/commands/nft/index.js.map +1 -0
  22. package/dist/commands/nft/listings.d.ts +3 -0
  23. package/dist/commands/nft/listings.d.ts.map +1 -0
  24. package/dist/commands/nft/listings.js +37 -0
  25. package/dist/commands/nft/listings.js.map +1 -0
  26. package/dist/commands/nft/popular.d.ts +3 -0
  27. package/dist/commands/nft/popular.d.ts.map +1 -0
  28. package/dist/commands/nft/popular.js +32 -0
  29. package/dist/commands/nft/popular.js.map +1 -0
  30. package/dist/commands/nft/portfolio.d.ts +3 -0
  31. package/dist/commands/nft/portfolio.d.ts.map +1 -0
  32. package/dist/commands/nft/portfolio.js +43 -0
  33. package/dist/commands/nft/portfolio.js.map +1 -0
  34. package/dist/commands/nft/search.d.ts +3 -0
  35. package/dist/commands/nft/search.d.ts.map +1 -0
  36. package/dist/commands/nft/search.js +36 -0
  37. package/dist/commands/nft/search.js.map +1 -0
  38. package/dist/commands/nft.d.ts +3 -0
  39. package/dist/commands/nft.d.ts.map +1 -0
  40. package/dist/commands/nft.js +165 -0
  41. package/dist/commands/nft.js.map +1 -0
  42. package/dist/commands/nfts/floor.d.ts +3 -0
  43. package/dist/commands/nfts/floor.d.ts.map +1 -0
  44. package/dist/commands/nfts/floor.js +30 -0
  45. package/dist/commands/nfts/floor.js.map +1 -0
  46. package/dist/commands/nfts/index.d.ts +3 -0
  47. package/dist/commands/nfts/index.d.ts.map +1 -0
  48. package/dist/commands/nfts/index.js +14 -0
  49. package/dist/commands/nfts/index.js.map +1 -0
  50. package/dist/commands/nfts/listings.d.ts +3 -0
  51. package/dist/commands/nfts/listings.d.ts.map +1 -0
  52. package/dist/commands/nfts/listings.js +37 -0
  53. package/dist/commands/nfts/listings.js.map +1 -0
  54. package/dist/commands/nfts/popular.d.ts +3 -0
  55. package/dist/commands/nfts/popular.d.ts.map +1 -0
  56. package/dist/commands/nfts/popular.js +32 -0
  57. package/dist/commands/nfts/popular.js.map +1 -0
  58. package/dist/commands/nfts/positions.d.ts +3 -0
  59. package/dist/commands/nfts/positions.d.ts.map +1 -0
  60. package/dist/commands/nfts/positions.js +23 -0
  61. package/dist/commands/nfts/positions.js.map +1 -0
  62. package/dist/commands/nfts/search.d.ts +3 -0
  63. package/dist/commands/nfts/search.d.ts.map +1 -0
  64. package/dist/commands/nfts/search.js +36 -0
  65. package/dist/commands/nfts/search.js.map +1 -0
  66. package/dist/commands/perps/index.d.ts +3 -0
  67. package/dist/commands/perps/index.d.ts.map +1 -0
  68. package/dist/commands/perps/index.js +10 -0
  69. package/dist/commands/perps/index.js.map +1 -0
  70. package/dist/commands/perps/info.d.ts +3 -0
  71. package/dist/commands/perps/info.d.ts.map +1 -0
  72. package/dist/commands/perps/info.js +51 -0
  73. package/dist/commands/perps/info.js.map +1 -0
  74. package/dist/commands/perps/markets.d.ts +3 -0
  75. package/dist/commands/perps/markets.d.ts.map +1 -0
  76. package/dist/commands/perps/markets.js +43 -0
  77. package/dist/commands/perps/markets.js.map +1 -0
  78. package/dist/commands/perps/pool.d.ts +3 -0
  79. package/dist/commands/perps/pool.d.ts.map +1 -0
  80. package/dist/commands/perps/pool.js +33 -0
  81. package/dist/commands/perps/pool.js.map +1 -0
  82. package/dist/commands/perps/positions.d.ts +3 -0
  83. package/dist/commands/perps/positions.d.ts.map +1 -0
  84. package/dist/commands/perps/positions.js +68 -0
  85. package/dist/commands/perps/positions.js.map +1 -0
  86. package/dist/commands/perps/show.d.ts +3 -0
  87. package/dist/commands/perps/show.d.ts.map +1 -0
  88. package/dist/commands/perps/show.js +37 -0
  89. package/dist/commands/perps/show.js.map +1 -0
  90. package/dist/commands/perps.d.ts +3 -0
  91. package/dist/commands/perps.d.ts.map +1 -0
  92. package/dist/commands/perps.js +186 -0
  93. package/dist/commands/perps.js.map +1 -0
  94. package/dist/commands/portfolio.d.ts +3 -0
  95. package/dist/commands/portfolio.d.ts.map +1 -0
  96. package/dist/commands/portfolio.js +89 -0
  97. package/dist/commands/portfolio.js.map +1 -0
  98. package/dist/commands/positions/close.d.ts +3 -0
  99. package/dist/commands/positions/close.d.ts.map +1 -0
  100. package/dist/commands/positions/close.js +31 -0
  101. package/dist/commands/positions/close.js.map +1 -0
  102. package/dist/commands/positions/filter.d.ts +3 -0
  103. package/dist/commands/positions/filter.d.ts.map +1 -0
  104. package/dist/commands/positions/filter.js +20 -0
  105. package/dist/commands/positions/filter.js.map +1 -0
  106. package/dist/commands/positions/index.d.ts +3 -0
  107. package/dist/commands/positions/index.d.ts.map +1 -0
  108. package/dist/commands/positions/index.js +22 -0
  109. package/dist/commands/positions/index.js.map +1 -0
  110. package/dist/commands/positions/list.d.ts +3 -0
  111. package/dist/commands/positions/list.d.ts.map +1 -0
  112. package/dist/commands/positions/list.js +38 -0
  113. package/dist/commands/positions/list.js.map +1 -0
  114. package/dist/commands/positions/note.d.ts +3 -0
  115. package/dist/commands/positions/note.d.ts.map +1 -0
  116. package/dist/commands/positions/note.js +19 -0
  117. package/dist/commands/positions/note.js.map +1 -0
  118. package/dist/commands/positions/open.d.ts +3 -0
  119. package/dist/commands/positions/open.d.ts.map +1 -0
  120. package/dist/commands/positions/open.js +47 -0
  121. package/dist/commands/positions/open.js.map +1 -0
  122. package/dist/commands/positions/show.d.ts +3 -0
  123. package/dist/commands/positions/show.d.ts.map +1 -0
  124. package/dist/commands/positions/show.js +46 -0
  125. package/dist/commands/positions/show.js.map +1 -0
  126. package/dist/commands/positions/stats.d.ts +3 -0
  127. package/dist/commands/positions/stats.d.ts.map +1 -0
  128. package/dist/commands/positions/stats.js +27 -0
  129. package/dist/commands/positions/stats.js.map +1 -0
  130. package/dist/commands/positions/tag.d.ts +3 -0
  131. package/dist/commands/positions/tag.d.ts.map +1 -0
  132. package/dist/commands/positions/tag.js +19 -0
  133. package/dist/commands/positions/tag.js.map +1 -0
  134. package/dist/commands/positions/update.d.ts +3 -0
  135. package/dist/commands/positions/update.d.ts.map +1 -0
  136. package/dist/commands/positions/update.js +35 -0
  137. package/dist/commands/positions/update.js.map +1 -0
  138. package/dist/commands/positions.d.ts +3 -0
  139. package/dist/commands/positions.d.ts.map +1 -0
  140. package/dist/commands/positions.js +247 -0
  141. package/dist/commands/positions.js.map +1 -0
  142. package/dist/commands/predict/browse.d.ts +3 -0
  143. package/dist/commands/predict/browse.d.ts.map +1 -0
  144. package/dist/commands/predict/browse.js +46 -0
  145. package/dist/commands/predict/browse.js.map +1 -0
  146. package/dist/commands/predict/buy.d.ts +3 -0
  147. package/dist/commands/predict/buy.d.ts.map +1 -0
  148. package/dist/commands/predict/buy.js +79 -0
  149. package/dist/commands/predict/buy.js.map +1 -0
  150. package/dist/commands/predict/claim.d.ts +3 -0
  151. package/dist/commands/predict/claim.d.ts.map +1 -0
  152. package/dist/commands/predict/claim.js +58 -0
  153. package/dist/commands/predict/claim.js.map +1 -0
  154. package/dist/commands/predict/close.d.ts +3 -0
  155. package/dist/commands/predict/close.d.ts.map +1 -0
  156. package/dist/commands/predict/close.js +56 -0
  157. package/dist/commands/predict/close.js.map +1 -0
  158. package/dist/commands/predict/index.d.ts +3 -0
  159. package/dist/commands/predict/index.d.ts.map +1 -0
  160. package/dist/commands/predict/index.js +20 -0
  161. package/dist/commands/predict/index.js.map +1 -0
  162. package/dist/commands/predict/list.d.ts +3 -0
  163. package/dist/commands/predict/list.d.ts.map +1 -0
  164. package/dist/commands/predict/list.js +46 -0
  165. package/dist/commands/predict/list.js.map +1 -0
  166. package/dist/commands/predict/market.d.ts +3 -0
  167. package/dist/commands/predict/market.d.ts.map +1 -0
  168. package/dist/commands/predict/market.js +37 -0
  169. package/dist/commands/predict/market.js.map +1 -0
  170. package/dist/commands/predict/positions.d.ts +3 -0
  171. package/dist/commands/predict/positions.d.ts.map +1 -0
  172. package/dist/commands/predict/positions.js +71 -0
  173. package/dist/commands/predict/positions.js.map +1 -0
  174. package/dist/commands/predict/search.d.ts +3 -0
  175. package/dist/commands/predict/search.d.ts.map +1 -0
  176. package/dist/commands/predict/search.js +32 -0
  177. package/dist/commands/predict/search.js.map +1 -0
  178. package/dist/commands/predict/sell.d.ts +3 -0
  179. package/dist/commands/predict/sell.d.ts.map +1 -0
  180. package/dist/commands/predict/sell.js +65 -0
  181. package/dist/commands/predict/sell.js.map +1 -0
  182. package/dist/commands/predict/show.d.ts +3 -0
  183. package/dist/commands/predict/show.d.ts.map +1 -0
  184. package/dist/commands/predict/show.js +37 -0
  185. package/dist/commands/predict/show.js.map +1 -0
  186. package/dist/commands/predict/watch.d.ts +3 -0
  187. package/dist/commands/predict/watch.d.ts.map +1 -0
  188. package/dist/commands/predict/watch.js +73 -0
  189. package/dist/commands/predict/watch.js.map +1 -0
  190. package/dist/commands/predict.d.ts +3 -0
  191. package/dist/commands/predict.d.ts.map +1 -0
  192. package/dist/commands/predict.js +484 -0
  193. package/dist/commands/predict.js.map +1 -0
  194. package/dist/commands/shared.d.ts +18 -0
  195. package/dist/commands/shared.d.ts.map +1 -0
  196. package/dist/commands/shared.js +51 -0
  197. package/dist/commands/shared.js.map +1 -0
  198. package/dist/commands/tokens/add.d.ts +3 -0
  199. package/dist/commands/tokens/add.d.ts.map +1 -0
  200. package/dist/commands/tokens/add.js +17 -0
  201. package/dist/commands/tokens/add.js.map +1 -0
  202. package/dist/commands/tokens/browse.d.ts +3 -0
  203. package/dist/commands/tokens/browse.d.ts.map +1 -0
  204. package/dist/commands/tokens/browse.js +19 -0
  205. package/dist/commands/tokens/browse.js.map +1 -0
  206. package/dist/commands/tokens/index.d.ts +3 -0
  207. package/dist/commands/tokens/index.d.ts.map +1 -0
  208. package/dist/commands/tokens/index.js +22 -0
  209. package/dist/commands/tokens/index.js.map +1 -0
  210. package/dist/commands/tokens/info.d.ts +3 -0
  211. package/dist/commands/tokens/info.d.ts.map +1 -0
  212. package/dist/commands/tokens/info.js +13 -0
  213. package/dist/commands/tokens/info.js.map +1 -0
  214. package/dist/commands/tokens/list.d.ts +3 -0
  215. package/dist/commands/tokens/list.d.ts.map +1 -0
  216. package/dist/commands/tokens/list.js +16 -0
  217. package/dist/commands/tokens/list.js.map +1 -0
  218. package/dist/commands/tokens/positions.d.ts +3 -0
  219. package/dist/commands/tokens/positions.d.ts.map +1 -0
  220. package/dist/commands/tokens/positions.js +25 -0
  221. package/dist/commands/tokens/positions.js.map +1 -0
  222. package/dist/commands/tokens/quote.d.ts +3 -0
  223. package/dist/commands/tokens/quote.d.ts.map +1 -0
  224. package/dist/commands/tokens/quote.js +50 -0
  225. package/dist/commands/tokens/quote.js.map +1 -0
  226. package/dist/commands/tokens/remove.d.ts +3 -0
  227. package/dist/commands/tokens/remove.d.ts.map +1 -0
  228. package/dist/commands/tokens/remove.js +17 -0
  229. package/dist/commands/tokens/remove.js.map +1 -0
  230. package/dist/commands/tokens/search.d.ts +3 -0
  231. package/dist/commands/tokens/search.d.ts.map +1 -0
  232. package/dist/commands/tokens/search.js +19 -0
  233. package/dist/commands/tokens/search.js.map +1 -0
  234. package/dist/commands/tokens/swap.d.ts +3 -0
  235. package/dist/commands/tokens/swap.d.ts.map +1 -0
  236. package/dist/commands/tokens/swap.js +88 -0
  237. package/dist/commands/tokens/swap.js.map +1 -0
  238. package/dist/commands/trade/index.d.ts +3 -0
  239. package/dist/commands/trade/index.d.ts.map +1 -0
  240. package/dist/commands/trade/index.js +8 -0
  241. package/dist/commands/trade/index.js.map +1 -0
  242. package/dist/commands/trade/info.d.ts +3 -0
  243. package/dist/commands/trade/info.d.ts.map +1 -0
  244. package/dist/commands/trade/info.js +37 -0
  245. package/dist/commands/trade/info.js.map +1 -0
  246. package/dist/commands/trade/quote.d.ts +3 -0
  247. package/dist/commands/trade/quote.d.ts.map +1 -0
  248. package/dist/commands/trade/quote.js +56 -0
  249. package/dist/commands/trade/quote.js.map +1 -0
  250. package/dist/commands/trade/search.d.ts +3 -0
  251. package/dist/commands/trade/search.d.ts.map +1 -0
  252. package/dist/commands/trade/search.js +22 -0
  253. package/dist/commands/trade/search.js.map +1 -0
  254. package/dist/commands/trade/swap.d.ts +3 -0
  255. package/dist/commands/trade/swap.d.ts.map +1 -0
  256. package/dist/commands/trade/swap.js +70 -0
  257. package/dist/commands/trade/swap.js.map +1 -0
  258. package/dist/commands/trade.d.ts +5 -0
  259. package/dist/commands/trade.d.ts.map +1 -0
  260. package/dist/commands/trade.js +167 -0
  261. package/dist/commands/trade.js.map +1 -0
  262. package/dist/commands/wallet.d.ts +3 -0
  263. package/dist/commands/wallet.d.ts.map +1 -0
  264. package/dist/commands/wallet.js +45 -0
  265. package/dist/commands/wallet.js.map +1 -0
  266. package/dist/config.d.ts +86 -0
  267. package/dist/config.d.ts.map +1 -0
  268. package/dist/config.js +169 -0
  269. package/dist/config.js.map +1 -0
  270. package/dist/utils/amounts.d.ts +40 -0
  271. package/dist/utils/amounts.d.ts.map +1 -0
  272. package/dist/utils/amounts.js +113 -0
  273. package/dist/utils/amounts.js.map +1 -0
  274. package/dist/utils/helius.d.ts +39 -0
  275. package/dist/utils/helius.d.ts.map +1 -0
  276. package/dist/utils/helius.js +253 -0
  277. package/dist/utils/helius.js.map +1 -0
  278. package/dist/utils/jupiter.d.ts +42 -0
  279. package/dist/utils/jupiter.d.ts.map +1 -0
  280. package/dist/utils/jupiter.js +106 -0
  281. package/dist/utils/jupiter.js.map +1 -0
  282. package/dist/utils/nft.d.ts +75 -0
  283. package/dist/utils/nft.d.ts.map +1 -0
  284. package/dist/utils/nft.js +168 -0
  285. package/dist/utils/nft.js.map +1 -0
  286. package/dist/utils/perps/doves-idl.d.ts +380 -0
  287. package/dist/utils/perps/doves-idl.d.ts.map +1 -0
  288. package/dist/utils/perps/doves-idl.js +379 -0
  289. package/dist/utils/perps/doves-idl.js.map +1 -0
  290. package/dist/utils/perps/idl.json +7241 -0
  291. package/dist/utils/perps/index.d.ts +45 -0
  292. package/dist/utils/perps/index.d.ts.map +1 -0
  293. package/dist/utils/perps/index.js +102 -0
  294. package/dist/utils/perps/index.js.map +1 -0
  295. package/dist/utils/perps/jupiter-perpetuals-idl.d.ts +7243 -0
  296. package/dist/utils/perps/jupiter-perpetuals-idl.d.ts.map +1 -0
  297. package/dist/utils/perps/jupiter-perpetuals-idl.js +7242 -0
  298. package/dist/utils/perps/jupiter-perpetuals-idl.js.map +1 -0
  299. package/dist/utils/positions.d.ts +198 -0
  300. package/dist/utils/positions.d.ts.map +1 -0
  301. package/dist/utils/positions.js +595 -0
  302. package/dist/utils/positions.js.map +1 -0
  303. package/dist/utils/prediction.d.ts +196 -0
  304. package/dist/utils/prediction.d.ts.map +1 -0
  305. package/dist/utils/prediction.js +187 -0
  306. package/dist/utils/prediction.js.map +1 -0
  307. package/dist/utils/solana.d.ts +9 -0
  308. package/dist/utils/solana.d.ts.map +1 -0
  309. package/dist/utils/solana.js +45 -0
  310. package/dist/utils/solana.js.map +1 -0
  311. package/dist/utils/token-book.d.ts +9 -0
  312. package/dist/utils/token-book.d.ts.map +1 -0
  313. package/dist/utils/token-book.js +69 -0
  314. package/dist/utils/token-book.js.map +1 -0
  315. package/dist/utils/token-info.d.ts +48 -0
  316. package/dist/utils/token-info.d.ts.map +1 -0
  317. package/dist/utils/token-info.js +332 -0
  318. package/dist/utils/token-info.js.map +1 -0
  319. package/dist/utils/wallet.d.ts +31 -0
  320. package/dist/utils/wallet.d.ts.map +1 -0
  321. package/dist/utils/wallet.js +181 -0
  322. package/dist/utils/wallet.js.map +1 -0
  323. package/package.json +46 -0
@@ -0,0 +1,196 @@
1
+ import { Connection, Keypair } from '@solana/web3.js';
2
+ import Big from 'big.js';
3
+ export interface PredictionEvent {
4
+ eventId: string;
5
+ isActive: boolean;
6
+ isLive: boolean;
7
+ category: string;
8
+ subcategory?: string;
9
+ tags: string[];
10
+ metadata: {
11
+ title: string;
12
+ subtitle?: string;
13
+ slug?: string;
14
+ series?: string;
15
+ imageUrl?: string;
16
+ closeTime?: string;
17
+ };
18
+ volumeUsd?: string;
19
+ beginAt?: string;
20
+ closeCondition?: string;
21
+ markets: PredictionMarket[];
22
+ }
23
+ export interface PredictionMarket {
24
+ marketId: string;
25
+ status: 'open' | 'closed';
26
+ result: 'yes' | 'no' | null;
27
+ openTime: number;
28
+ closeTime: number;
29
+ metadata: {
30
+ title: string;
31
+ rulesPrimary?: string;
32
+ rulesSecondary?: string;
33
+ };
34
+ pricing: {
35
+ buyYesPriceUsd: number;
36
+ sellYesPriceUsd: number;
37
+ buyNoPriceUsd: number;
38
+ sellNoPriceUsd: number;
39
+ volume?: number;
40
+ };
41
+ }
42
+ export interface PredictionPosition {
43
+ pubkey: string;
44
+ owner: string;
45
+ ownerPubkey: string;
46
+ market: string;
47
+ marketId: string;
48
+ eventId: string;
49
+ isYes: boolean;
50
+ contracts: string;
51
+ totalCostUsd: string;
52
+ avgPriceUsd: string;
53
+ valueUsd: string;
54
+ markPriceUsd: string;
55
+ sellPriceUsd: string;
56
+ pnlUsd: string;
57
+ pnlUsdPercent: number;
58
+ pnlUsdAfterFees: string;
59
+ pnlUsdAfterFeesPercent: number;
60
+ feesPaidUsd: string;
61
+ claimable: boolean;
62
+ claimed: boolean;
63
+ payoutUsd: string;
64
+ eventMetadata: {
65
+ title: string;
66
+ category: string;
67
+ };
68
+ marketMetadata: {
69
+ title: string;
70
+ status: string;
71
+ result: 'yes' | 'no' | null;
72
+ };
73
+ }
74
+ export interface OrderResponse {
75
+ transaction: string;
76
+ txMeta?: {
77
+ blockhash: string;
78
+ lastValidBlockHeight: number;
79
+ };
80
+ }
81
+ /**
82
+ * List prediction events with optional filters
83
+ */
84
+ export declare function listEvents(options?: {
85
+ category?: string;
86
+ status?: string;
87
+ limit?: number;
88
+ offset?: number;
89
+ }): Promise<{
90
+ events: PredictionEvent[];
91
+ total: number;
92
+ }>;
93
+ /**
94
+ * Search events by keyword
95
+ */
96
+ export declare function searchEvents(query: string): Promise<{
97
+ events: PredictionEvent[];
98
+ }>;
99
+ /**
100
+ * Get single event details
101
+ */
102
+ export declare function getEvent(eventId: string): Promise<PredictionEvent>;
103
+ /**
104
+ * Get market details with pricing
105
+ */
106
+ export declare function getMarket(marketId: string): Promise<PredictionMarket>;
107
+ /**
108
+ * Get user positions
109
+ */
110
+ export declare function getPositions(ownerPubkey: string, options?: {
111
+ status?: 'open' | 'claimable' | 'all';
112
+ }): Promise<{
113
+ positions: PredictionPosition[];
114
+ }>;
115
+ export interface CreateOrderResponse {
116
+ transaction: string;
117
+ txMeta: {
118
+ blockhash: string;
119
+ lastValidBlockHeight: number;
120
+ };
121
+ externalOrderId: string;
122
+ order: {
123
+ orderPubkey: string;
124
+ marketId: string;
125
+ isBuy: boolean;
126
+ isYes: boolean;
127
+ contracts: string;
128
+ maxBuyPriceUsd: string | null;
129
+ orderCostUsd: string;
130
+ newAvgPriceUsd: string;
131
+ estimatedTotalFeeUsd: string;
132
+ };
133
+ }
134
+ /**
135
+ * Create a buy order for YES or NO contracts
136
+ * @param amountUsd - Amount in USD to spend (e.g., 5 for $5)
137
+ */
138
+ export declare function createOrder(params: {
139
+ ownerPubkey: string;
140
+ marketId: string;
141
+ isYes: boolean;
142
+ amountUsd: number | string;
143
+ }): Promise<CreateOrderResponse>;
144
+ /**
145
+ * Create a sell order to close position (partial)
146
+ */
147
+ export declare function createSellOrder(params: {
148
+ ownerPubkey: string;
149
+ marketId: string;
150
+ isYes: boolean;
151
+ contracts: number;
152
+ minSellPriceUsd?: number;
153
+ }): Promise<OrderResponse>;
154
+ /**
155
+ * Close entire prediction position using DELETE endpoint
156
+ */
157
+ export declare function closePredictionOrder(params: {
158
+ ownerPubkey: string;
159
+ positionPubkey: string;
160
+ }): Promise<OrderResponse>;
161
+ /**
162
+ * Sign and execute a prediction order
163
+ */
164
+ export declare function executeOrder(connection: Connection, keypair: Keypair, orderResponse: OrderResponse | CreateOrderResponse): Promise<string>;
165
+ /**
166
+ * Claim winnings from a resolved position
167
+ */
168
+ export declare function createClaimOrder(params: {
169
+ ownerPubkey: string;
170
+ positionPubkey: string;
171
+ }): Promise<OrderResponse>;
172
+ /**
173
+ * Convert micro USD to USD
174
+ * Handles empty strings and invalid values gracefully
175
+ */
176
+ export declare function microToUsd(microUsd: number | string | null | undefined): Big;
177
+ /**
178
+ * Convert USD to micro USD
179
+ */
180
+ export declare function usdToMicro(usd: number | string): Big;
181
+ /**
182
+ * Format price from micro USD to display
183
+ */
184
+ export declare function formatPrice(microUsd: number | string | null | undefined): string;
185
+ /**
186
+ * Format price as percentage (since $1 = 100%)
187
+ */
188
+ export declare function priceToPercent(microUsd: number | string | null | undefined): string;
189
+ /**
190
+ * Get market status summary
191
+ */
192
+ export declare function getMarketStatus(): Promise<{
193
+ isOpen: boolean;
194
+ message?: string;
195
+ }>;
196
+ //# sourceMappingURL=prediction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prediction.d.ts","sourceRoot":"","sources":["../../src/utils/prediction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { VersionedTransaction } from '@solana/web3.js';
2
+ import Big from 'big.js';
3
+ import { apis, tokens, requireJupiterKey } from '../config.js';
4
+ import { sendAndConfirmTransaction } from './solana.js';
5
+ // Micro USD conversion (6 decimals)
6
+ const MICRO_USD = new Big(1_000_000);
7
+ function getApiKey() {
8
+ return requireJupiterKey();
9
+ }
10
+ async function predictionFetch(path, options) {
11
+ const response = await fetch(`${apis.jupiterPrediction}${path}`, {
12
+ ...options,
13
+ headers: {
14
+ 'Content-Type': 'application/json',
15
+ 'x-api-key': getApiKey(),
16
+ ...options?.headers,
17
+ },
18
+ });
19
+ if (!response.ok) {
20
+ const errorText = await response.text();
21
+ throw new Error(`Prediction API error (${response.status}): ${errorText}`);
22
+ }
23
+ return response.json();
24
+ }
25
+ /**
26
+ * List prediction events with optional filters
27
+ */
28
+ export async function listEvents(options) {
29
+ const params = new URLSearchParams();
30
+ if (options?.category)
31
+ params.append('category', options.category);
32
+ if (options?.status)
33
+ params.append('status', options.status);
34
+ if (options?.limit)
35
+ params.append('limit', options.limit.toString());
36
+ if (options?.offset)
37
+ params.append('offset', options.offset.toString());
38
+ const query = params.toString() ? `?${params.toString()}` : '';
39
+ const response = await predictionFetch(`/events${query}`);
40
+ return { events: response.data || [], total: response.total || response.data?.length || 0 };
41
+ }
42
+ /**
43
+ * Search events by keyword
44
+ */
45
+ export async function searchEvents(query) {
46
+ const response = await predictionFetch(`/events/search?query=${encodeURIComponent(query)}`);
47
+ return { events: response.data || [] };
48
+ }
49
+ /**
50
+ * Get single event details
51
+ */
52
+ export async function getEvent(eventId) {
53
+ // Single event endpoint returns data directly, not wrapped
54
+ return predictionFetch(`/events/${eventId}`);
55
+ }
56
+ /**
57
+ * Get market details with pricing
58
+ */
59
+ export async function getMarket(marketId) {
60
+ // Single market endpoint returns data directly, not wrapped
61
+ return predictionFetch(`/markets/${marketId}`);
62
+ }
63
+ /**
64
+ * Get user positions
65
+ */
66
+ export async function getPositions(ownerPubkey, options) {
67
+ const params = new URLSearchParams();
68
+ params.append('ownerPubkey', ownerPubkey);
69
+ if (options?.status)
70
+ params.append('status', options.status);
71
+ const response = await predictionFetch(`/positions?${params.toString()}`);
72
+ return { positions: response.data || [] };
73
+ }
74
+ /**
75
+ * Create a buy order for YES or NO contracts
76
+ * @param amountUsd - Amount in USD to spend (e.g., 5 for $5)
77
+ */
78
+ export async function createOrder(params) {
79
+ const { ownerPubkey, marketId, isYes, amountUsd } = params;
80
+ // Convert USD to micro USD (6 decimals) - USDC has 6 decimals
81
+ const depositAmount = new Big(amountUsd).times(MICRO_USD).round(0, Big.roundDown).toString();
82
+ return predictionFetch('/orders', {
83
+ method: 'POST',
84
+ body: JSON.stringify({
85
+ ownerPubkey,
86
+ marketId,
87
+ isYes,
88
+ isBuy: true,
89
+ depositAmount,
90
+ depositMint: tokens.USDC,
91
+ }),
92
+ });
93
+ }
94
+ /**
95
+ * Create a sell order to close position (partial)
96
+ */
97
+ export async function createSellOrder(params) {
98
+ const { ownerPubkey, marketId, isYes, contracts, minSellPriceUsd } = params;
99
+ const body = {
100
+ ownerPubkey,
101
+ marketId,
102
+ isYes,
103
+ isBuy: false,
104
+ contracts,
105
+ };
106
+ // Add min sell price if specified (convert to micro USD)
107
+ if (minSellPriceUsd !== undefined) {
108
+ body.minSellPriceUsd = new Big(minSellPriceUsd).times(MICRO_USD).round(0).toString();
109
+ }
110
+ return predictionFetch('/orders', {
111
+ method: 'POST',
112
+ body: JSON.stringify(body),
113
+ });
114
+ }
115
+ /**
116
+ * Close entire prediction position using DELETE endpoint
117
+ */
118
+ export async function closePredictionOrder(params) {
119
+ const { ownerPubkey, positionPubkey } = params;
120
+ return predictionFetch(`/positions/${positionPubkey}`, {
121
+ method: 'DELETE',
122
+ body: JSON.stringify({ ownerPubkey }),
123
+ });
124
+ }
125
+ /**
126
+ * Sign and execute a prediction order
127
+ */
128
+ export async function executeOrder(connection, keypair, orderResponse) {
129
+ const { transaction: txBase64 } = orderResponse;
130
+ // Deserialize and sign
131
+ const transaction = VersionedTransaction.deserialize(Buffer.from(txBase64, 'base64'));
132
+ transaction.sign([keypair]);
133
+ // Send and confirm using enhanced utility
134
+ return sendAndConfirmTransaction(connection, transaction);
135
+ }
136
+ /**
137
+ * Claim winnings from a resolved position
138
+ */
139
+ export async function createClaimOrder(params) {
140
+ return predictionFetch(`/positions/${params.positionPubkey}/claim`, {
141
+ method: 'POST',
142
+ body: JSON.stringify({
143
+ ownerPubkey: params.ownerPubkey,
144
+ }),
145
+ });
146
+ }
147
+ /**
148
+ * Convert micro USD to USD
149
+ * Handles empty strings and invalid values gracefully
150
+ */
151
+ export function microToUsd(microUsd) {
152
+ if (microUsd === null || microUsd === undefined || microUsd === '') {
153
+ return new Big(0);
154
+ }
155
+ return new Big(microUsd).div(MICRO_USD);
156
+ }
157
+ /**
158
+ * Convert USD to micro USD
159
+ */
160
+ export function usdToMicro(usd) {
161
+ return new Big(usd).times(MICRO_USD);
162
+ }
163
+ /**
164
+ * Format price from micro USD to display
165
+ */
166
+ export function formatPrice(microUsd) {
167
+ return `$${microToUsd(microUsd).toFixed(2)}`;
168
+ }
169
+ /**
170
+ * Format price as percentage (since $1 = 100%)
171
+ */
172
+ export function priceToPercent(microUsd) {
173
+ return `${microToUsd(microUsd).times(100).toFixed(1)}%`;
174
+ }
175
+ /**
176
+ * Get market status summary
177
+ */
178
+ export async function getMarketStatus() {
179
+ try {
180
+ const response = await predictionFetch('/status');
181
+ return { isOpen: response.status === 'open' };
182
+ }
183
+ catch (error) {
184
+ return { isOpen: false, message: 'Unable to reach prediction market API' };
185
+ }
186
+ }
187
+ //# sourceMappingURL=prediction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prediction.js","sourceRoot":"","sources":["../../src/utils/prediction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Connection, VersionedTransaction, Transaction } from '@solana/web3.js';
2
+ /**
3
+ * Enhanced transaction sender that supports Helius Sender for lower latency
4
+ * Broadcasts to both validators and Jito simultaneously for best landing rates
5
+ */
6
+ export declare function sendAndConfirmTransaction(connection: Connection, transaction: VersionedTransaction | Transaction, options?: {
7
+ skipPreflight?: boolean;
8
+ }): Promise<string>;
9
+ //# sourceMappingURL=solana.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/utils/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGhF;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,oBAAoB,GAAG,WAAW,EAC/C,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAAC,MAAM,CAAC,CAwCjB"}
@@ -0,0 +1,45 @@
1
+ import { Connection, VersionedTransaction } from '@solana/web3.js';
2
+ import { env, requireHeliusKey, apis } from '../config.js';
3
+ /**
4
+ * Enhanced transaction sender that supports Helius Sender for lower latency
5
+ * Broadcasts to both validators and Jito simultaneously for best landing rates
6
+ */
7
+ export async function sendAndConfirmTransaction(connection, transaction, options = {}) {
8
+ const useHeliusSender = env.useHeliusSender();
9
+ let signature;
10
+ if (useHeliusSender) {
11
+ const apiKey = requireHeliusKey();
12
+ const heliusRpcUrl = apis.heliusRpc(apiKey);
13
+ // Create a dedicated connection for Helius Sender
14
+ const heliusConnection = new Connection(heliusRpcUrl);
15
+ if (transaction instanceof VersionedTransaction) {
16
+ signature = await heliusConnection.sendTransaction(transaction, {
17
+ skipPreflight: options.skipPreflight ?? true,
18
+ maxRetries: 0, // Helius Atlas handles retries better
19
+ });
20
+ }
21
+ else {
22
+ signature = await heliusConnection.sendRawTransaction(transaction.serialize(), {
23
+ skipPreflight: options.skipPreflight ?? true,
24
+ maxRetries: 0,
25
+ });
26
+ }
27
+ console.log('🚀 Transaction submitted via Helius Sender');
28
+ }
29
+ else {
30
+ if (transaction instanceof VersionedTransaction) {
31
+ signature = await connection.sendTransaction(transaction, {
32
+ skipPreflight: options.skipPreflight,
33
+ });
34
+ }
35
+ else {
36
+ signature = await connection.sendRawTransaction(transaction.serialize(), {
37
+ skipPreflight: options.skipPreflight,
38
+ });
39
+ }
40
+ }
41
+ // Wait for confirmation
42
+ await connection.confirmTransaction(signature, 'confirmed');
43
+ return signature;
44
+ }
45
+ //# sourceMappingURL=solana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/utils/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAsB,EACtB,WAA+C,EAC/C,UAAuC,EAAE;IAEzC,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IAE9C,IAAI,SAAiB,CAAC;IAEtB,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE5C,kDAAkD;QAClD,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,WAAW,YAAY,oBAAoB,EAAE,CAAC;YAChD,SAAS,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,WAAW,EAAE;gBAC9D,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;gBAC5C,UAAU,EAAE,CAAC,EAAE,sCAAsC;aACtD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE;gBAC7E,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;gBAC5C,UAAU,EAAE,CAAC;aACd,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,IAAI,WAAW,YAAY,oBAAoB,EAAE,CAAC;YAChD,SAAS,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,WAAW,EAAE;gBACxD,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE;gBACvE,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE5D,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Load token address book - merges defaults with user additions */
2
+ export declare function loadTokenBook(): Record<string, string>;
3
+ /** Save token address book */
4
+ export declare function saveTokenBook(book: Record<string, string>): void;
5
+ /** Resolve ticker to address. Passes through if already an address. */
6
+ export declare function resolveToken(tickerOrAddress: string): string;
7
+ /** Reverse lookup: address → ticker */
8
+ export declare function getTickerFromAddress(address: string): string | null;
9
+ //# sourceMappingURL=token-book.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-book.d.ts","sourceRoot":"","sources":["../../src/utils/token-book.ts"],"names":[],"mappings":"AA8BA,oEAAoE;AACpE,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBtD;AAED,8BAA8B;AAC9B,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAMhE;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,uCAAuC;AACvC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnE"}
@@ -0,0 +1,69 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { paths, defaultTokenBook } from '../config.js';
4
+ const LEGACY_TOKEN_BOOK_PATH = path.join(process.cwd(), 'tokens.json');
5
+ function ensureDir() {
6
+ const dir = paths.openclawDir();
7
+ if (!fs.existsSync(dir)) {
8
+ fs.mkdirSync(dir, { mode: 0o700, recursive: true });
9
+ }
10
+ }
11
+ /** Migrate from legacy ./tokens.json to ~/.openclaw/trader-tokens.json */
12
+ function migrateFromLegacy() {
13
+ const target = paths.tokenBook();
14
+ if (fs.existsSync(target))
15
+ return;
16
+ if (fs.existsSync(LEGACY_TOKEN_BOOK_PATH)) {
17
+ try {
18
+ ensureDir();
19
+ const content = fs.readFileSync(LEGACY_TOKEN_BOOK_PATH, 'utf-8');
20
+ fs.writeFileSync(target, content, { encoding: 'utf-8', mode: 0o600 });
21
+ console.log(`📦 Migrated token book to ${target}`);
22
+ }
23
+ catch {
24
+ // Fall through to defaults
25
+ }
26
+ }
27
+ }
28
+ /** Load token address book - merges defaults with user additions */
29
+ export function loadTokenBook() {
30
+ ensureDir();
31
+ migrateFromLegacy();
32
+ const bookPath = paths.tokenBook();
33
+ let userBook = {};
34
+ try {
35
+ if (fs.existsSync(bookPath)) {
36
+ userBook = JSON.parse(fs.readFileSync(bookPath, 'utf-8'));
37
+ }
38
+ }
39
+ catch {
40
+ // Fall through to defaults
41
+ }
42
+ // Defaults first, user overrides on top
43
+ return { ...defaultTokenBook, ...userBook };
44
+ }
45
+ /** Save token address book */
46
+ export function saveTokenBook(book) {
47
+ ensureDir();
48
+ fs.writeFileSync(paths.tokenBook(), JSON.stringify(book, null, 2), {
49
+ encoding: 'utf-8',
50
+ mode: 0o600,
51
+ });
52
+ }
53
+ /** Resolve ticker to address. Passes through if already an address. */
54
+ export function resolveToken(tickerOrAddress) {
55
+ if (tickerOrAddress.length > 32)
56
+ return tickerOrAddress;
57
+ const book = loadTokenBook();
58
+ return book[tickerOrAddress.toUpperCase()] || tickerOrAddress;
59
+ }
60
+ /** Reverse lookup: address → ticker */
61
+ export function getTickerFromAddress(address) {
62
+ const book = loadTokenBook();
63
+ for (const [ticker, addr] of Object.entries(book)) {
64
+ if (addr === address)
65
+ return ticker;
66
+ }
67
+ return null;
68
+ }
69
+ //# sourceMappingURL=token-book.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-book.js","sourceRoot":"","sources":["../../src/utils/token-book.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Token information aggregation from multiple sources
3
+ * - Helius DAS API for metadata and verification
4
+ * - Jupiter for token list and verification status
5
+ * - DexScreener for market data
6
+ * - Birdeye for additional analytics
7
+ */
8
+ export interface TokenInfo {
9
+ address: string;
10
+ symbol: string;
11
+ name: string;
12
+ decimals: number;
13
+ price?: number;
14
+ priceChange24h?: number;
15
+ volume24h?: number;
16
+ volumeChange24h?: number;
17
+ liquidity?: number;
18
+ marketCap?: number;
19
+ fdv?: number;
20
+ supply?: number;
21
+ verified?: boolean;
22
+ verifiedSource?: string;
23
+ freezeAuthority?: string | null;
24
+ mintAuthority?: string | null;
25
+ holders?: number;
26
+ logoUri?: string;
27
+ description?: string;
28
+ website?: string;
29
+ twitter?: string;
30
+ telegram?: string;
31
+ discord?: string;
32
+ markets?: {
33
+ dex: string;
34
+ pair: string;
35
+ liquidity: number;
36
+ }[];
37
+ sources: string[];
38
+ }
39
+ /**
40
+ * Aggregate token info from all sources
41
+ * Simplified to use only Helius + DexScreener (most reliable)
42
+ */
43
+ export declare function getTokenInfo(mintOrSymbol: string): Promise<TokenInfo>;
44
+ /**
45
+ * Format token info for display
46
+ */
47
+ export declare function formatTokenInfo(info: TokenInfo): string;
48
+ //# sourceMappingURL=token-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-info.d.ts","sourceRoot":"","sources":["../../src/utils/token-info.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,MAAM,WAAW,SAAS;IAExB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IAGJ,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAoND;;;GAGG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA8D3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA4FvD"}