|
| 1 | +import { |
| 2 | + asPredictionMarkets, |
| 3 | + type PredictionMarket, |
| 4 | + type PredictionMarketCategory |
| 5 | +} from './slipstreamTypes' |
| 6 | + |
| 7 | +/** |
| 8 | + * Bundled sample markets, shaped exactly like `GET /connect/markets/{category}` |
| 9 | + * responses. Shown (with an in-UI notice) when no Slipstream Connect API key |
| 10 | + * is configured, so the prediction market scenes stay fully browsable. |
| 11 | + * |
| 12 | + * The literals run through `asPredictionMarkets` so they are guaranteed to |
| 13 | + * match what a live API response would produce. |
| 14 | + */ |
| 15 | +const sampleData = { |
| 16 | + sports: [ |
| 17 | + { |
| 18 | + id: 'hyperliquid:@107|polymarket:0x2a3f9c41', |
| 19 | + title: 'Lakers vs Celtics: Lakers win', |
| 20 | + category: 'sports', |
| 21 | + league: 'nba', |
| 22 | + legs: [ |
| 23 | + { |
| 24 | + venue: 'polymarket', |
| 25 | + market_id: '0x2a3f9c41', |
| 26 | + outcome_id: '71943382', |
| 27 | + url: 'https://polymarket.com/event/lakers-vs-celtics', |
| 28 | + volume_24h: '184200.5', |
| 29 | + resolution_date: '2026-08-21T02:30:00Z' |
| 30 | + }, |
| 31 | + { venue: 'hyperliquid', market_id: '@107', outcome_id: '#107' } |
| 32 | + ], |
| 33 | + venue_prices: [ |
| 34 | + { venue: 'hyperliquid', best_ask: '0.64', best_bid: '0.62' }, |
| 35 | + { venue: 'polymarket', best_ask: '0.62', best_bid: '0.60' } |
| 36 | + ], |
| 37 | + book: { |
| 38 | + bids: [ |
| 39 | + { price: '0.62', size: '1200', venue: 'hyperliquid' }, |
| 40 | + { price: '0.60', size: '2400', venue: 'polymarket' }, |
| 41 | + { price: '0.59', size: '900', venue: 'polymarket' } |
| 42 | + ], |
| 43 | + asks: [ |
| 44 | + { price: '0.62', size: '800', venue: 'polymarket' }, |
| 45 | + { price: '0.63', size: '1500', venue: 'polymarket' }, |
| 46 | + { price: '0.64', size: '650', venue: 'hyperliquid' } |
| 47 | + ], |
| 48 | + best_bid: '0.62', |
| 49 | + best_ask: '0.62' |
| 50 | + } |
| 51 | + }, |
| 52 | + { |
| 53 | + id: 'kalshi:KXNFLGAME|polymarket:0x8b1d2e77', |
| 54 | + title: 'Chiefs win Super Bowl LXI', |
| 55 | + category: 'sports', |
| 56 | + league: 'nfl', |
| 57 | + legs: [ |
| 58 | + { |
| 59 | + venue: 'polymarket', |
| 60 | + market_id: '0x8b1d2e77', |
| 61 | + outcome_id: '55018221', |
| 62 | + url: 'https://polymarket.com/event/super-bowl-lxi', |
| 63 | + volume_24h: '96411.0', |
| 64 | + resolution_date: '2027-02-08T04:00:00Z' |
| 65 | + }, |
| 66 | + { venue: 'kalshi', market_id: 'KXNFLGAME', outcome_id: 'KXNFLGAME-YES' } |
| 67 | + ], |
| 68 | + venue_prices: [ |
| 69 | + { venue: 'polymarket', best_ask: '0.18', best_bid: '0.17' }, |
| 70 | + { venue: 'kalshi', best_ask: '0.19', best_bid: '0.16' } |
| 71 | + ], |
| 72 | + book: { |
| 73 | + bids: [ |
| 74 | + { price: '0.17', size: '5200', venue: 'polymarket' }, |
| 75 | + { price: '0.16', size: '3100', venue: 'kalshi' } |
| 76 | + ], |
| 77 | + asks: [ |
| 78 | + { price: '0.18', size: '4400', venue: 'polymarket' }, |
| 79 | + { price: '0.19', size: '2800', venue: 'kalshi' } |
| 80 | + ], |
| 81 | + best_bid: '0.17', |
| 82 | + best_ask: '0.18' |
| 83 | + } |
| 84 | + } |
| 85 | + ], |
| 86 | + crypto: [ |
| 87 | + { |
| 88 | + id: 'hyperliquid:@212|polymarket:0x91c4aa08', |
| 89 | + title: 'Bitcoin above $150k on Dec 31', |
| 90 | + category: 'crypto', |
| 91 | + legs: [ |
| 92 | + { |
| 93 | + venue: 'polymarket', |
| 94 | + market_id: '0x91c4aa08', |
| 95 | + outcome_id: '83726190', |
| 96 | + url: 'https://polymarket.com/event/bitcoin-150k-2026', |
| 97 | + volume_24h: '412876.2', |
| 98 | + resolution_date: '2027-01-01T00:00:00Z' |
| 99 | + }, |
| 100 | + { venue: 'hyperliquid', market_id: '@212', outcome_id: '#212' } |
| 101 | + ], |
| 102 | + venue_prices: [ |
| 103 | + { venue: 'polymarket', best_ask: '0.41', best_bid: '0.40' }, |
| 104 | + { venue: 'hyperliquid', best_ask: '0.43', best_bid: '0.39' } |
| 105 | + ], |
| 106 | + book: { |
| 107 | + bids: [ |
| 108 | + { price: '0.40', size: '8800', venue: 'polymarket' }, |
| 109 | + { price: '0.39', size: '4100', venue: 'hyperliquid' } |
| 110 | + ], |
| 111 | + asks: [ |
| 112 | + { price: '0.41', size: '6200', venue: 'polymarket' }, |
| 113 | + { price: '0.43', size: '2900', venue: 'hyperliquid' } |
| 114 | + ], |
| 115 | + best_bid: '0.40', |
| 116 | + best_ask: '0.41' |
| 117 | + } |
| 118 | + }, |
| 119 | + { |
| 120 | + id: 'polymarket:0x5e77b3c2', |
| 121 | + title: 'ETH flips BTC market cap this decade', |
| 122 | + category: 'crypto', |
| 123 | + legs: [ |
| 124 | + { |
| 125 | + venue: 'polymarket', |
| 126 | + market_id: '0x5e77b3c2', |
| 127 | + outcome_id: '61054433', |
| 128 | + url: 'https://polymarket.com/event/eth-flips-btc', |
| 129 | + volume_24h: '15320.8', |
| 130 | + resolution_date: '2030-01-01T00:00:00Z' |
| 131 | + } |
| 132 | + ], |
| 133 | + venue_prices: [ |
| 134 | + { venue: 'polymarket', best_ask: '0.07', best_bid: '0.06' } |
| 135 | + ], |
| 136 | + book: { |
| 137 | + bids: [{ price: '0.06', size: '12000', venue: 'polymarket' }], |
| 138 | + asks: [{ price: '0.07', size: '9500', venue: 'polymarket' }], |
| 139 | + best_bid: '0.06', |
| 140 | + best_ask: '0.07' |
| 141 | + } |
| 142 | + } |
| 143 | + ], |
| 144 | + macro: [ |
| 145 | + { |
| 146 | + id: 'kalshi:KXFEDCUT|polymarket:0x33d90f15', |
| 147 | + title: 'Fed cuts rates at the next FOMC meeting', |
| 148 | + category: 'macro', |
| 149 | + legs: [ |
| 150 | + { |
| 151 | + venue: 'polymarket', |
| 152 | + market_id: '0x33d90f15', |
| 153 | + outcome_id: '90211675', |
| 154 | + url: 'https://polymarket.com/event/fed-cut-next-fomc', |
| 155 | + volume_24h: '287554.1', |
| 156 | + resolution_date: '2026-09-17T18:00:00Z' |
| 157 | + }, |
| 158 | + { venue: 'kalshi', market_id: 'KXFEDCUT', outcome_id: 'KXFEDCUT-YES' } |
| 159 | + ], |
| 160 | + venue_prices: [ |
| 161 | + { venue: 'polymarket', best_ask: '0.72', best_bid: '0.71' }, |
| 162 | + { venue: 'kalshi', best_ask: '0.74', best_bid: '0.70' } |
| 163 | + ], |
| 164 | + book: { |
| 165 | + bids: [ |
| 166 | + { price: '0.71', size: '10400', venue: 'polymarket' }, |
| 167 | + { price: '0.70', size: '5600', venue: 'kalshi' } |
| 168 | + ], |
| 169 | + asks: [ |
| 170 | + { price: '0.72', size: '7700', venue: 'polymarket' }, |
| 171 | + { price: '0.74', size: '3900', venue: 'kalshi' } |
| 172 | + ], |
| 173 | + best_bid: '0.71', |
| 174 | + best_ask: '0.72' |
| 175 | + } |
| 176 | + } |
| 177 | + ], |
| 178 | + politics: [ |
| 179 | + { |
| 180 | + id: 'kalshi:KXPRES28|polymarket:0xa10c44d9', |
| 181 | + title: 'Incumbent party wins 2028 US election', |
| 182 | + category: 'politics', |
| 183 | + legs: [ |
| 184 | + { |
| 185 | + venue: 'polymarket', |
| 186 | + market_id: '0xa10c44d9', |
| 187 | + outcome_id: '47700912', |
| 188 | + url: 'https://polymarket.com/event/2028-us-election', |
| 189 | + volume_24h: '731209.9', |
| 190 | + resolution_date: '2028-11-08T05:00:00Z' |
| 191 | + }, |
| 192 | + { venue: 'kalshi', market_id: 'KXPRES28', outcome_id: 'KXPRES28-YES' } |
| 193 | + ], |
| 194 | + venue_prices: [ |
| 195 | + { venue: 'polymarket', best_ask: '0.52', best_bid: '0.51' }, |
| 196 | + { venue: 'kalshi', best_ask: '0.53', best_bid: '0.50' } |
| 197 | + ], |
| 198 | + book: { |
| 199 | + bids: [ |
| 200 | + { price: '0.51', size: '22000', venue: 'polymarket' }, |
| 201 | + { price: '0.50', size: '15000', venue: 'kalshi' } |
| 202 | + ], |
| 203 | + asks: [ |
| 204 | + { price: '0.52', size: '18000', venue: 'polymarket' }, |
| 205 | + { price: '0.53', size: '9000', venue: 'kalshi' } |
| 206 | + ], |
| 207 | + best_bid: '0.51', |
| 208 | + best_ask: '0.52' |
| 209 | + } |
| 210 | + } |
| 211 | + ] |
| 212 | +} |
| 213 | + |
| 214 | +export const predictionMarketSampleData: Record< |
| 215 | + PredictionMarketCategory, |
| 216 | + PredictionMarket[] |
| 217 | +> = { |
| 218 | + sports: asPredictionMarkets(sampleData.sports), |
| 219 | + crypto: asPredictionMarkets(sampleData.crypto), |
| 220 | + macro: asPredictionMarkets(sampleData.macro), |
| 221 | + politics: asPredictionMarkets(sampleData.politics) |
| 222 | +} |
0 commit comments