@mostlyrightmd/core 1.1.3 → 1.4.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 (49) hide show
  1. package/README.md +1 -1
  2. package/dist/discovery/index.cjs +471 -169
  3. package/dist/discovery/index.cjs.map +1 -1
  4. package/dist/discovery/index.d.cts +39 -11
  5. package/dist/discovery/index.d.ts +39 -11
  6. package/dist/discovery/index.mjs +471 -169
  7. package/dist/discovery/index.mjs.map +1 -1
  8. package/dist/index.cjs +618 -174
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +326 -29
  11. package/dist/index.d.ts +326 -29
  12. package/dist/index.global.js +610 -173
  13. package/dist/index.global.js.map +1 -1
  14. package/dist/index.mjs +610 -173
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/internal/cache/index.browser.cjs +501 -163
  17. package/dist/internal/cache/index.browser.cjs.map +1 -1
  18. package/dist/internal/cache/index.browser.d.cts +8 -2
  19. package/dist/internal/cache/index.browser.d.ts +8 -2
  20. package/dist/internal/cache/index.browser.mjs +10 -5
  21. package/dist/internal/cache/index.browser.mjs.map +1 -1
  22. package/dist/internal/cache/index.cjs +503 -161
  23. package/dist/internal/cache/index.cjs.map +1 -1
  24. package/dist/internal/cache/index.d.cts +12 -6
  25. package/dist/internal/cache/index.d.ts +12 -6
  26. package/dist/internal/cache/index.mjs +12 -3
  27. package/dist/internal/cache/index.mjs.map +1 -1
  28. package/dist/internal/{chunk-PKJXHY27.mjs → chunk-QDQSYUFW.mjs} +494 -160
  29. package/dist/internal/chunk-QDQSYUFW.mjs.map +1 -0
  30. package/dist/internal/{keys-B7C8C88N.d.cts → versionedCacheStore-DyHDqFIC.d.cts} +23 -1
  31. package/dist/internal/{keys-B7C8C88N.d.ts → versionedCacheStore-DyHDqFIC.d.ts} +23 -1
  32. package/dist/preprocessing/index.cjs +150 -0
  33. package/dist/preprocessing/index.cjs.map +1 -0
  34. package/dist/preprocessing/index.d.cts +111 -0
  35. package/dist/preprocessing/index.d.ts +111 -0
  36. package/dist/preprocessing/index.mjs +121 -0
  37. package/dist/preprocessing/index.mjs.map +1 -0
  38. package/dist/temporal/index.cjs +56 -4
  39. package/dist/temporal/index.cjs.map +1 -1
  40. package/dist/temporal/index.d.cts +24 -1
  41. package/dist/temporal/index.d.ts +24 -1
  42. package/dist/temporal/index.mjs +55 -4
  43. package/dist/temporal/index.mjs.map +1 -1
  44. package/dist/validator.cjs +694 -109
  45. package/dist/validator.cjs.map +1 -1
  46. package/dist/validator.mjs +694 -109
  47. package/dist/validator.mjs.map +1 -1
  48. package/package.json +25 -2
  49. package/dist/internal/chunk-PKJXHY27.mjs.map +0 -1
@@ -22,15 +22,22 @@ var mostlyrightCore = (() => {
22
22
  var index_exports = {};
23
23
  __export(index_exports, {
24
24
  AuthenticationError: () => AuthenticationError,
25
+ CATALOG: () => CATALOG,
25
26
  CLIMATE_REPORT_TYPE_PRIORITY: () => CLIMATE_REPORT_TYPE_PRIORITY,
27
+ DATA_AVAILABILITY_REASONS: () => DATA_AVAILABILITY_REASONS,
28
+ DataAvailabilityError: () => DataAvailabilityError,
26
29
  DeferredMarketError: () => DeferredMarketError,
27
30
  ForbiddenError: () => ForbiddenError,
31
+ IssuedAtMissingError: () => IssuedAtMissingError,
28
32
  LIVE_V1_POLICY: () => LIVE_V1_POLICY,
29
33
  LeakageError: () => LeakageError,
30
34
  LiveStreamError: () => LiveStreamError,
35
+ MostlyRightError: () => MostlyRightError,
31
36
  NoLiveDataError: () => NoLiveDataError,
32
37
  NotFoundError: () => NotFoundError,
38
+ NwpNotAvailableError: () => NwpNotAvailableError,
33
39
  OBSERVATION_SOURCE_PRIORITY: () => OBSERVATION_SOURCE_PRIORITY,
40
+ OpenMeteoSeamlessLeakageError: () => OpenMeteoSeamlessLeakageError,
34
41
  PayloadTooLargeError: () => PayloadTooLargeError,
35
42
  PolymarketEventError: () => PolymarketEventError,
36
43
  QC_ALPHA_RULES: () => QC_ALPHA_RULES,
@@ -43,9 +50,9 @@ var mostlyrightCore = (() => {
43
50
  ServerError: () => ServerError,
44
51
  SourceMismatchError: () => SourceMismatchError,
45
52
  SourceUnavailableError: () => SourceUnavailableError,
53
+ StationCatalog: () => StationCatalog,
46
54
  TemporalDriftError: () => TemporalDriftError,
47
55
  TherminalError: () => TherminalError,
48
- TradewindsError: () => TradewindsError,
49
56
  ValidationError: () => ValidationError,
50
57
  _CLI_PUBLICATION_DELAY_HOURS: () => _CLI_PUBLICATION_DELAY_HOURS,
51
58
  _JAN_REF: () => _JAN_REF,
@@ -74,7 +81,10 @@ var mostlyrightCore = (() => {
74
81
  latitude: 52.3667,
75
82
  longitude: 13.5033,
76
83
  name: "Berlin Brandenburg",
77
- tz: "Europe/Berlin"
84
+ tz: "Europe/Berlin",
85
+ venues: [
86
+ "polymarket"
87
+ ]
78
88
  },
79
89
  {
80
90
  code: "EDDF",
@@ -84,7 +94,10 @@ var mostlyrightCore = (() => {
84
94
  latitude: 50.0379,
85
95
  longitude: 8.5622,
86
96
  name: "Frankfurt am Main",
87
- tz: "Europe/Berlin"
97
+ tz: "Europe/Berlin",
98
+ venues: [
99
+ "polymarket"
100
+ ]
88
101
  },
89
102
  {
90
103
  code: "EDDM",
@@ -94,7 +107,10 @@ var mostlyrightCore = (() => {
94
107
  latitude: 48.3538,
95
108
  longitude: 11.7861,
96
109
  name: "Munich Franz Josef Strauss",
97
- tz: "Europe/Berlin"
110
+ tz: "Europe/Berlin",
111
+ venues: [
112
+ "polymarket"
113
+ ]
98
114
  },
99
115
  {
100
116
  code: "EFHK",
@@ -104,7 +120,10 @@ var mostlyrightCore = (() => {
104
120
  latitude: 60.3172,
105
121
  longitude: 24.9633,
106
122
  name: "Helsinki-Vantaa",
107
- tz: "Europe/Helsinki"
123
+ tz: "Europe/Helsinki",
124
+ venues: [
125
+ "polymarket"
126
+ ]
108
127
  },
109
128
  {
110
129
  code: "EGKK",
@@ -114,7 +133,10 @@ var mostlyrightCore = (() => {
114
133
  latitude: 51.1481,
115
134
  longitude: -0.1903,
116
135
  name: "London Gatwick",
117
- tz: "Europe/London"
136
+ tz: "Europe/London",
137
+ venues: [
138
+ "polymarket"
139
+ ]
118
140
  },
119
141
  {
120
142
  code: "EGLL",
@@ -124,7 +146,10 @@ var mostlyrightCore = (() => {
124
146
  latitude: 51.4706,
125
147
  longitude: -0.4619,
126
148
  name: "London Heathrow",
127
- tz: "Europe/London"
149
+ tz: "Europe/London",
150
+ venues: [
151
+ "polymarket"
152
+ ]
128
153
  },
129
154
  {
130
155
  code: "EHAM",
@@ -134,7 +159,10 @@ var mostlyrightCore = (() => {
134
159
  latitude: 52.3086,
135
160
  longitude: 4.7639,
136
161
  name: "Amsterdam Schiphol",
137
- tz: "Europe/Amsterdam"
162
+ tz: "Europe/Amsterdam",
163
+ venues: [
164
+ "polymarket"
165
+ ]
138
166
  },
139
167
  {
140
168
  code: "EKCH",
@@ -144,7 +172,10 @@ var mostlyrightCore = (() => {
144
172
  latitude: 55.6181,
145
173
  longitude: 12.6561,
146
174
  name: "Copenhagen Kastrup",
147
- tz: "Europe/Copenhagen"
175
+ tz: "Europe/Copenhagen",
176
+ venues: [
177
+ "polymarket"
178
+ ]
148
179
  },
149
180
  {
150
181
  code: "EPWA",
@@ -154,7 +185,10 @@ var mostlyrightCore = (() => {
154
185
  latitude: 52.1657,
155
186
  longitude: 20.9671,
156
187
  name: "Warsaw Chopin",
157
- tz: "Europe/Warsaw"
188
+ tz: "Europe/Warsaw",
189
+ venues: [
190
+ "polymarket"
191
+ ]
158
192
  },
159
193
  {
160
194
  code: "ESSA",
@@ -164,7 +198,10 @@ var mostlyrightCore = (() => {
164
198
  latitude: 59.6519,
165
199
  longitude: 17.9186,
166
200
  name: "Stockholm Arlanda",
167
- tz: "Europe/Stockholm"
201
+ tz: "Europe/Stockholm",
202
+ venues: [
203
+ "polymarket"
204
+ ]
168
205
  },
169
206
  {
170
207
  code: "ATL",
@@ -174,7 +211,11 @@ var mostlyrightCore = (() => {
174
211
  latitude: 33.6407,
175
212
  longitude: -84.4277,
176
213
  name: "Hartsfield-Jackson Atlanta International",
177
- tz: "America/New_York"
214
+ tz: "America/New_York",
215
+ venues: [
216
+ "kalshi",
217
+ "polymarket"
218
+ ]
178
219
  },
179
220
  {
180
221
  code: "AUS",
@@ -184,7 +225,24 @@ var mostlyrightCore = (() => {
184
225
  latitude: 30.1975,
185
226
  longitude: -97.6664,
186
227
  name: "Austin-Bergstrom International",
187
- tz: "America/Chicago"
228
+ tz: "America/Chicago",
229
+ venues: [
230
+ "kalshi",
231
+ "polymarket"
232
+ ]
233
+ },
234
+ {
235
+ code: "BNA",
236
+ country: "US",
237
+ ghcnh_id: "USW00013897",
238
+ icao: "KBNA",
239
+ latitude: 36.1245,
240
+ longitude: -86.6782,
241
+ name: "Nashville International",
242
+ tz: "America/Chicago",
243
+ venues: [
244
+ "kalshi"
245
+ ]
188
246
  },
189
247
  {
190
248
  code: "BOS",
@@ -194,7 +252,24 @@ var mostlyrightCore = (() => {
194
252
  latitude: 42.3656,
195
253
  longitude: -71.0096,
196
254
  name: "Boston Logan International",
197
- tz: "America/New_York"
255
+ tz: "America/New_York",
256
+ venues: [
257
+ "kalshi",
258
+ "polymarket"
259
+ ]
260
+ },
261
+ {
262
+ code: "CVG",
263
+ country: "US",
264
+ ghcnh_id: "USW00093814",
265
+ icao: "KCVG",
266
+ latitude: 39.0488,
267
+ longitude: -84.6678,
268
+ name: "Cincinnati/Northern Kentucky International",
269
+ tz: "America/New_York",
270
+ venues: [
271
+ "kalshi"
272
+ ]
198
273
  },
199
274
  {
200
275
  code: "DCA",
@@ -204,7 +279,11 @@ var mostlyrightCore = (() => {
204
279
  latitude: 38.8512,
205
280
  longitude: -77.0402,
206
281
  name: "Washington Reagan National",
207
- tz: "America/New_York"
282
+ tz: "America/New_York",
283
+ venues: [
284
+ "kalshi",
285
+ "polymarket"
286
+ ]
208
287
  },
209
288
  {
210
289
  code: "DEN",
@@ -214,7 +293,11 @@ var mostlyrightCore = (() => {
214
293
  latitude: 39.8561,
215
294
  longitude: -104.6737,
216
295
  name: "Denver International",
217
- tz: "America/Denver"
296
+ tz: "America/Denver",
297
+ venues: [
298
+ "kalshi",
299
+ "polymarket"
300
+ ]
218
301
  },
219
302
  {
220
303
  code: "DFW",
@@ -224,7 +307,25 @@ var mostlyrightCore = (() => {
224
307
  latitude: 32.8998,
225
308
  longitude: -97.0403,
226
309
  name: "Dallas-Fort Worth International",
227
- tz: "America/Chicago"
310
+ tz: "America/Chicago",
311
+ venues: [
312
+ "kalshi",
313
+ "polymarket"
314
+ ]
315
+ },
316
+ {
317
+ code: "DTW",
318
+ country: "US",
319
+ ghcnh_id: "USW00094847",
320
+ icao: "KDTW",
321
+ latitude: 42.2124,
322
+ longitude: -83.3534,
323
+ name: "Detroit Metropolitan Wayne County",
324
+ tz: "America/New_York",
325
+ venues: [
326
+ "kalshi",
327
+ "polymarket"
328
+ ]
228
329
  },
229
330
  {
230
331
  code: "HOU",
@@ -234,7 +335,22 @@ var mostlyrightCore = (() => {
234
335
  latitude: 29.6454,
235
336
  longitude: -95.2789,
236
337
  name: "Houston Hobby",
237
- tz: "America/Chicago"
338
+ tz: "America/Chicago",
339
+ venues: []
340
+ },
341
+ {
342
+ code: "IAH",
343
+ country: "US",
344
+ ghcnh_id: "USW00012960",
345
+ icao: "KIAH",
346
+ latitude: 29.9844,
347
+ longitude: -95.3414,
348
+ name: "Houston George Bush Intercontinental",
349
+ tz: "America/Chicago",
350
+ venues: [
351
+ "kalshi",
352
+ "polymarket"
353
+ ]
238
354
  },
239
355
  {
240
356
  code: "LAS",
@@ -244,7 +360,10 @@ var mostlyrightCore = (() => {
244
360
  latitude: 36.084,
245
361
  longitude: -115.1537,
246
362
  name: "Harry Reid (McCarran) International",
247
- tz: "America/Los_Angeles"
363
+ tz: "America/Los_Angeles",
364
+ venues: [
365
+ "kalshi"
366
+ ]
248
367
  },
249
368
  {
250
369
  code: "LAX",
@@ -254,7 +373,11 @@ var mostlyrightCore = (() => {
254
373
  latitude: 33.9425,
255
374
  longitude: -118.4081,
256
375
  name: "Los Angeles International",
257
- tz: "America/Los_Angeles"
376
+ tz: "America/Los_Angeles",
377
+ venues: [
378
+ "kalshi",
379
+ "polymarket"
380
+ ]
258
381
  },
259
382
  {
260
383
  code: "MDW",
@@ -264,7 +387,10 @@ var mostlyrightCore = (() => {
264
387
  latitude: 41.7868,
265
388
  longitude: -87.7522,
266
389
  name: "Chicago Midway International",
267
- tz: "America/Chicago"
390
+ tz: "America/Chicago",
391
+ venues: [
392
+ "kalshi"
393
+ ]
268
394
  },
269
395
  {
270
396
  code: "MIA",
@@ -274,7 +400,11 @@ var mostlyrightCore = (() => {
274
400
  latitude: 25.7959,
275
401
  longitude: -80.287,
276
402
  name: "Miami International",
277
- tz: "America/New_York"
403
+ tz: "America/New_York",
404
+ venues: [
405
+ "kalshi",
406
+ "polymarket"
407
+ ]
278
408
  },
279
409
  {
280
410
  code: "MSP",
@@ -284,7 +414,11 @@ var mostlyrightCore = (() => {
284
414
  latitude: 44.8848,
285
415
  longitude: -93.2223,
286
416
  name: "Minneapolis-St Paul International",
287
- tz: "America/Chicago"
417
+ tz: "America/Chicago",
418
+ venues: [
419
+ "kalshi",
420
+ "polymarket"
421
+ ]
288
422
  },
289
423
  {
290
424
  code: "MSY",
@@ -294,7 +428,8 @@ var mostlyrightCore = (() => {
294
428
  latitude: 29.9934,
295
429
  longitude: -90.258,
296
430
  name: "New Orleans Louis Armstrong International",
297
- tz: "America/Chicago"
431
+ tz: "America/Chicago",
432
+ venues: []
298
433
  },
299
434
  {
300
435
  code: "NYC",
@@ -304,7 +439,10 @@ var mostlyrightCore = (() => {
304
439
  latitude: 40.7789,
305
440
  longitude: -73.9692,
306
441
  name: "Central Park, New York",
307
- tz: "America/New_York"
442
+ tz: "America/New_York",
443
+ venues: [
444
+ "kalshi"
445
+ ]
308
446
  },
309
447
  {
310
448
  code: "OKC",
@@ -314,7 +452,8 @@ var mostlyrightCore = (() => {
314
452
  latitude: 35.3931,
315
453
  longitude: -97.6007,
316
454
  name: "Oklahoma City Will Rogers World",
317
- tz: "America/Chicago"
455
+ tz: "America/Chicago",
456
+ venues: []
318
457
  },
319
458
  {
320
459
  code: "PHL",
@@ -324,7 +463,11 @@ var mostlyrightCore = (() => {
324
463
  latitude: 39.8721,
325
464
  longitude: -75.2411,
326
465
  name: "Philadelphia International",
327
- tz: "America/New_York"
466
+ tz: "America/New_York",
467
+ venues: [
468
+ "kalshi",
469
+ "polymarket"
470
+ ]
328
471
  },
329
472
  {
330
473
  code: "PHX",
@@ -334,7 +477,11 @@ var mostlyrightCore = (() => {
334
477
  latitude: 33.4373,
335
478
  longitude: -112.0078,
336
479
  name: "Phoenix Sky Harbor International",
337
- tz: "America/Phoenix"
480
+ tz: "America/Phoenix",
481
+ venues: [
482
+ "kalshi",
483
+ "polymarket"
484
+ ]
338
485
  },
339
486
  {
340
487
  code: "SAT",
@@ -344,7 +491,8 @@ var mostlyrightCore = (() => {
344
491
  latitude: 29.5337,
345
492
  longitude: -98.4698,
346
493
  name: "San Antonio International",
347
- tz: "America/Chicago"
494
+ tz: "America/Chicago",
495
+ venues: []
348
496
  },
349
497
  {
350
498
  code: "SEA",
@@ -354,7 +502,11 @@ var mostlyrightCore = (() => {
354
502
  latitude: 47.4502,
355
503
  longitude: -122.3088,
356
504
  name: "Seattle-Tacoma International",
357
- tz: "America/Los_Angeles"
505
+ tz: "America/Los_Angeles",
506
+ venues: [
507
+ "kalshi",
508
+ "polymarket"
509
+ ]
358
510
  },
359
511
  {
360
512
  code: "SFO",
@@ -364,7 +516,24 @@ var mostlyrightCore = (() => {
364
516
  latitude: 37.6213,
365
517
  longitude: -122.379,
366
518
  name: "San Francisco International",
367
- tz: "America/Los_Angeles"
519
+ tz: "America/Los_Angeles",
520
+ venues: [
521
+ "kalshi",
522
+ "polymarket"
523
+ ]
524
+ },
525
+ {
526
+ code: "SLC",
527
+ country: "US",
528
+ ghcnh_id: "USW00024127",
529
+ icao: "KSLC",
530
+ latitude: 40.7884,
531
+ longitude: -111.9778,
532
+ name: "Salt Lake City International",
533
+ tz: "America/Denver",
534
+ venues: [
535
+ "kalshi"
536
+ ]
368
537
  },
369
538
  {
370
539
  code: "LEBL",
@@ -374,7 +543,10 @@ var mostlyrightCore = (() => {
374
543
  latitude: 41.2974,
375
544
  longitude: 2.0833,
376
545
  name: "Barcelona El Prat",
377
- tz: "Europe/Madrid"
546
+ tz: "Europe/Madrid",
547
+ venues: [
548
+ "polymarket"
549
+ ]
378
550
  },
379
551
  {
380
552
  code: "LEMD",
@@ -384,7 +556,10 @@ var mostlyrightCore = (() => {
384
556
  latitude: 40.4719,
385
557
  longitude: -3.5626,
386
558
  name: "Madrid Barajas",
387
- tz: "Europe/Madrid"
559
+ tz: "Europe/Madrid",
560
+ venues: [
561
+ "polymarket"
562
+ ]
388
563
  },
389
564
  {
390
565
  code: "LFPB",
@@ -394,7 +569,10 @@ var mostlyrightCore = (() => {
394
569
  latitude: 48.9694,
395
570
  longitude: 2.4414,
396
571
  name: "Paris Le Bourget",
397
- tz: "Europe/Paris"
572
+ tz: "Europe/Paris",
573
+ venues: [
574
+ "polymarket"
575
+ ]
398
576
  },
399
577
  {
400
578
  code: "LFPG",
@@ -404,7 +582,10 @@ var mostlyrightCore = (() => {
404
582
  latitude: 49.0097,
405
583
  longitude: 2.5479,
406
584
  name: "Paris Charles de Gaulle",
407
- tz: "Europe/Paris"
585
+ tz: "Europe/Paris",
586
+ venues: [
587
+ "polymarket"
588
+ ]
408
589
  },
409
590
  {
410
591
  code: "LFPO",
@@ -414,7 +595,10 @@ var mostlyrightCore = (() => {
414
595
  latitude: 48.7233,
415
596
  longitude: 2.3794,
416
597
  name: "Paris Orly",
417
- tz: "Europe/Paris"
598
+ tz: "Europe/Paris",
599
+ venues: [
600
+ "polymarket"
601
+ ]
418
602
  },
419
603
  {
420
604
  code: "LIMC",
@@ -424,7 +608,10 @@ var mostlyrightCore = (() => {
424
608
  latitude: 45.6306,
425
609
  longitude: 8.7281,
426
610
  name: "Milan Malpensa",
427
- tz: "Europe/Rome"
611
+ tz: "Europe/Rome",
612
+ venues: [
613
+ "polymarket"
614
+ ]
428
615
  },
429
616
  {
430
617
  code: "LIRF",
@@ -434,7 +621,10 @@ var mostlyrightCore = (() => {
434
621
  latitude: 41.8003,
435
622
  longitude: 12.2389,
436
623
  name: "Rome Fiumicino",
437
- tz: "Europe/Rome"
624
+ tz: "Europe/Rome",
625
+ venues: [
626
+ "polymarket"
627
+ ]
438
628
  },
439
629
  {
440
630
  code: "LOWW",
@@ -444,7 +634,10 @@ var mostlyrightCore = (() => {
444
634
  latitude: 48.1103,
445
635
  longitude: 16.5697,
446
636
  name: "Vienna International",
447
- tz: "Europe/Vienna"
637
+ tz: "Europe/Vienna",
638
+ venues: [
639
+ "polymarket"
640
+ ]
448
641
  },
449
642
  {
450
643
  code: "LSZH",
@@ -454,7 +647,10 @@ var mostlyrightCore = (() => {
454
647
  latitude: 47.4647,
455
648
  longitude: 8.5492,
456
649
  name: "Zurich",
457
- tz: "Europe/Zurich"
650
+ tz: "Europe/Zurich",
651
+ venues: [
652
+ "polymarket"
653
+ ]
458
654
  },
459
655
  {
460
656
  code: "NZAA",
@@ -464,7 +660,10 @@ var mostlyrightCore = (() => {
464
660
  latitude: -37.0081,
465
661
  longitude: 174.7917,
466
662
  name: "Auckland",
467
- tz: "Pacific/Auckland"
663
+ tz: "Pacific/Auckland",
664
+ venues: [
665
+ "polymarket"
666
+ ]
468
667
  },
469
668
  {
470
669
  code: "NZWN",
@@ -474,7 +673,10 @@ var mostlyrightCore = (() => {
474
673
  latitude: -41.3272,
475
674
  longitude: 174.8053,
476
675
  name: "Wellington",
477
- tz: "Pacific/Auckland"
676
+ tz: "Pacific/Auckland",
677
+ venues: [
678
+ "polymarket"
679
+ ]
478
680
  },
479
681
  {
480
682
  code: "OERK",
@@ -484,7 +686,10 @@ var mostlyrightCore = (() => {
484
686
  latitude: 24.9576,
485
687
  longitude: 46.6988,
486
688
  name: "Riyadh King Khalid International",
487
- tz: "Asia/Riyadh"
689
+ tz: "Asia/Riyadh",
690
+ venues: [
691
+ "polymarket"
692
+ ]
488
693
  },
489
694
  {
490
695
  code: "OMDB",
@@ -494,7 +699,10 @@ var mostlyrightCore = (() => {
494
699
  latitude: 25.2532,
495
700
  longitude: 55.3657,
496
701
  name: "Dubai International",
497
- tz: "Asia/Dubai"
702
+ tz: "Asia/Dubai",
703
+ venues: [
704
+ "polymarket"
705
+ ]
498
706
  },
499
707
  {
500
708
  code: "OTHH",
@@ -504,7 +712,10 @@ var mostlyrightCore = (() => {
504
712
  latitude: 25.2731,
505
713
  longitude: 51.608,
506
714
  name: "Doha Hamad International",
507
- tz: "Asia/Qatar"
715
+ tz: "Asia/Qatar",
716
+ venues: [
717
+ "polymarket"
718
+ ]
508
719
  },
509
720
  {
510
721
  code: "RCTP",
@@ -514,7 +725,10 @@ var mostlyrightCore = (() => {
514
725
  latitude: 25.0777,
515
726
  longitude: 121.2328,
516
727
  name: "Taipei Taoyuan",
517
- tz: "Asia/Taipei"
728
+ tz: "Asia/Taipei",
729
+ venues: [
730
+ "polymarket"
731
+ ]
518
732
  },
519
733
  {
520
734
  code: "RJAA",
@@ -524,7 +738,10 @@ var mostlyrightCore = (() => {
524
738
  latitude: 35.7647,
525
739
  longitude: 140.3864,
526
740
  name: "Tokyo Narita",
527
- tz: "Asia/Tokyo"
741
+ tz: "Asia/Tokyo",
742
+ venues: [
743
+ "polymarket"
744
+ ]
528
745
  },
529
746
  {
530
747
  code: "RJTT",
@@ -534,7 +751,10 @@ var mostlyrightCore = (() => {
534
751
  latitude: 35.5522,
535
752
  longitude: 139.78,
536
753
  name: "Tokyo Haneda",
537
- tz: "Asia/Tokyo"
754
+ tz: "Asia/Tokyo",
755
+ venues: [
756
+ "polymarket"
757
+ ]
538
758
  },
539
759
  {
540
760
  code: "RKSI",
@@ -544,7 +764,10 @@ var mostlyrightCore = (() => {
544
764
  latitude: 37.4691,
545
765
  longitude: 126.4505,
546
766
  name: "Seoul Incheon",
547
- tz: "Asia/Seoul"
767
+ tz: "Asia/Seoul",
768
+ venues: [
769
+ "polymarket"
770
+ ]
548
771
  },
549
772
  {
550
773
  code: "SAEZ",
@@ -554,7 +777,10 @@ var mostlyrightCore = (() => {
554
777
  latitude: -34.8222,
555
778
  longitude: -58.5358,
556
779
  name: "Buenos Aires Ezeiza",
557
- tz: "America/Argentina/Buenos_Aires"
780
+ tz: "America/Argentina/Buenos_Aires",
781
+ venues: [
782
+ "polymarket"
783
+ ]
558
784
  },
559
785
  {
560
786
  code: "SBGR",
@@ -564,7 +790,10 @@ var mostlyrightCore = (() => {
564
790
  latitude: -23.4356,
565
791
  longitude: -46.4731,
566
792
  name: "S\xE3o Paulo Guarulhos",
567
- tz: "America/Sao_Paulo"
793
+ tz: "America/Sao_Paulo",
794
+ venues: [
795
+ "polymarket"
796
+ ]
568
797
  },
569
798
  {
570
799
  code: "UUEE",
@@ -574,7 +803,10 @@ var mostlyrightCore = (() => {
574
803
  latitude: 55.9728,
575
804
  longitude: 37.4147,
576
805
  name: "Moscow Sheremetyevo",
577
- tz: "Europe/Moscow"
806
+ tz: "Europe/Moscow",
807
+ venues: [
808
+ "polymarket"
809
+ ]
578
810
  },
579
811
  {
580
812
  code: "VABB",
@@ -584,7 +816,10 @@ var mostlyrightCore = (() => {
584
816
  latitude: 19.0887,
585
817
  longitude: 72.8679,
586
818
  name: "Mumbai Chhatrapati Shivaji",
587
- tz: "Asia/Kolkata"
819
+ tz: "Asia/Kolkata",
820
+ venues: [
821
+ "polymarket"
822
+ ]
588
823
  },
589
824
  {
590
825
  code: "VHHH",
@@ -594,7 +829,10 @@ var mostlyrightCore = (() => {
594
829
  latitude: 22.308,
595
830
  longitude: 113.9185,
596
831
  name: "Hong Kong International",
597
- tz: "Asia/Hong_Kong"
832
+ tz: "Asia/Hong_Kong",
833
+ venues: [
834
+ "polymarket"
835
+ ]
598
836
  },
599
837
  {
600
838
  code: "VIDP",
@@ -604,7 +842,10 @@ var mostlyrightCore = (() => {
604
842
  latitude: 28.5562,
605
843
  longitude: 77.1,
606
844
  name: "Delhi Indira Gandhi",
607
- tz: "Asia/Kolkata"
845
+ tz: "Asia/Kolkata",
846
+ venues: [
847
+ "polymarket"
848
+ ]
608
849
  },
609
850
  {
610
851
  code: "VTBS",
@@ -614,7 +855,10 @@ var mostlyrightCore = (() => {
614
855
  latitude: 13.69,
615
856
  longitude: 100.7501,
616
857
  name: "Bangkok Suvarnabhumi",
617
- tz: "Asia/Bangkok"
858
+ tz: "Asia/Bangkok",
859
+ venues: [
860
+ "polymarket"
861
+ ]
618
862
  },
619
863
  {
620
864
  code: "WSSS",
@@ -624,7 +868,10 @@ var mostlyrightCore = (() => {
624
868
  latitude: 1.3644,
625
869
  longitude: 103.9915,
626
870
  name: "Singapore Changi",
627
- tz: "Asia/Singapore"
871
+ tz: "Asia/Singapore",
872
+ venues: [
873
+ "polymarket"
874
+ ]
628
875
  },
629
876
  {
630
877
  code: "YBBN",
@@ -634,7 +881,10 @@ var mostlyrightCore = (() => {
634
881
  latitude: -27.3842,
635
882
  longitude: 153.1175,
636
883
  name: "Brisbane",
637
- tz: "Australia/Brisbane"
884
+ tz: "Australia/Brisbane",
885
+ venues: [
886
+ "polymarket"
887
+ ]
638
888
  },
639
889
  {
640
890
  code: "YMML",
@@ -644,7 +894,10 @@ var mostlyrightCore = (() => {
644
894
  latitude: -37.6733,
645
895
  longitude: 144.8433,
646
896
  name: "Melbourne Tullamarine",
647
- tz: "Australia/Melbourne"
897
+ tz: "Australia/Melbourne",
898
+ venues: [
899
+ "polymarket"
900
+ ]
648
901
  },
649
902
  {
650
903
  code: "YSSY",
@@ -654,7 +907,10 @@ var mostlyrightCore = (() => {
654
907
  latitude: -33.9461,
655
908
  longitude: 151.1772,
656
909
  name: "Sydney Kingsford Smith",
657
- tz: "Australia/Sydney"
910
+ tz: "Australia/Sydney",
911
+ venues: [
912
+ "polymarket"
913
+ ]
658
914
  },
659
915
  {
660
916
  code: "ZBAA",
@@ -664,7 +920,10 @@ var mostlyrightCore = (() => {
664
920
  latitude: 40.0801,
665
921
  longitude: 116.5846,
666
922
  name: "Beijing Capital",
667
- tz: "Asia/Shanghai"
923
+ tz: "Asia/Shanghai",
924
+ venues: [
925
+ "polymarket"
926
+ ]
668
927
  },
669
928
  {
670
929
  code: "ZSPD",
@@ -674,16 +933,22 @@ var mostlyrightCore = (() => {
674
933
  latitude: 31.1443,
675
934
  longitude: 121.8083,
676
935
  name: "Shanghai Pudong",
677
- tz: "Asia/Shanghai"
936
+ tz: "Asia/Shanghai",
937
+ venues: [
938
+ "polymarket"
939
+ ]
678
940
  }
679
941
  ];
680
942
  var STATION_BY_CODE = /* @__PURE__ */ new Map([
681
943
  ["ATL", STATIONS[10]],
682
944
  ["AUS", STATIONS[11]],
683
- ["BOS", STATIONS[12]],
684
- ["DCA", STATIONS[13]],
685
- ["DEN", STATIONS[14]],
686
- ["DFW", STATIONS[15]],
945
+ ["BNA", STATIONS[12]],
946
+ ["BOS", STATIONS[13]],
947
+ ["CVG", STATIONS[14]],
948
+ ["DCA", STATIONS[15]],
949
+ ["DEN", STATIONS[16]],
950
+ ["DFW", STATIONS[17]],
951
+ ["DTW", STATIONS[18]],
687
952
  ["EDDB", STATIONS[0]],
688
953
  ["EDDF", STATIONS[1]],
689
954
  ["EDDM", STATIONS[2]],
@@ -694,51 +959,53 @@ var mostlyrightCore = (() => {
694
959
  ["EKCH", STATIONS[7]],
695
960
  ["EPWA", STATIONS[8]],
696
961
  ["ESSA", STATIONS[9]],
697
- ["HOU", STATIONS[16]],
698
- ["LAS", STATIONS[17]],
699
- ["LAX", STATIONS[18]],
700
- ["LEBL", STATIONS[30]],
701
- ["LEMD", STATIONS[31]],
702
- ["LFPB", STATIONS[32]],
703
- ["LFPG", STATIONS[33]],
704
- ["LFPO", STATIONS[34]],
705
- ["LIMC", STATIONS[35]],
706
- ["LIRF", STATIONS[36]],
707
- ["LOWW", STATIONS[37]],
708
- ["LSZH", STATIONS[38]],
709
- ["MDW", STATIONS[19]],
710
- ["MIA", STATIONS[20]],
711
- ["MSP", STATIONS[21]],
712
- ["MSY", STATIONS[22]],
713
- ["NYC", STATIONS[23]],
714
- ["NZAA", STATIONS[39]],
715
- ["NZWN", STATIONS[40]],
716
- ["OERK", STATIONS[41]],
717
- ["OKC", STATIONS[24]],
718
- ["OMDB", STATIONS[42]],
719
- ["OTHH", STATIONS[43]],
720
- ["PHL", STATIONS[25]],
721
- ["PHX", STATIONS[26]],
722
- ["RCTP", STATIONS[44]],
723
- ["RJAA", STATIONS[45]],
724
- ["RJTT", STATIONS[46]],
725
- ["RKSI", STATIONS[47]],
726
- ["SAEZ", STATIONS[48]],
727
- ["SAT", STATIONS[27]],
728
- ["SBGR", STATIONS[49]],
729
- ["SEA", STATIONS[28]],
730
- ["SFO", STATIONS[29]],
731
- ["UUEE", STATIONS[50]],
732
- ["VABB", STATIONS[51]],
733
- ["VHHH", STATIONS[52]],
734
- ["VIDP", STATIONS[53]],
735
- ["VTBS", STATIONS[54]],
736
- ["WSSS", STATIONS[55]],
737
- ["YBBN", STATIONS[56]],
738
- ["YMML", STATIONS[57]],
739
- ["YSSY", STATIONS[58]],
740
- ["ZBAA", STATIONS[59]],
741
- ["ZSPD", STATIONS[60]]
962
+ ["HOU", STATIONS[19]],
963
+ ["IAH", STATIONS[20]],
964
+ ["LAS", STATIONS[21]],
965
+ ["LAX", STATIONS[22]],
966
+ ["LEBL", STATIONS[35]],
967
+ ["LEMD", STATIONS[36]],
968
+ ["LFPB", STATIONS[37]],
969
+ ["LFPG", STATIONS[38]],
970
+ ["LFPO", STATIONS[39]],
971
+ ["LIMC", STATIONS[40]],
972
+ ["LIRF", STATIONS[41]],
973
+ ["LOWW", STATIONS[42]],
974
+ ["LSZH", STATIONS[43]],
975
+ ["MDW", STATIONS[23]],
976
+ ["MIA", STATIONS[24]],
977
+ ["MSP", STATIONS[25]],
978
+ ["MSY", STATIONS[26]],
979
+ ["NYC", STATIONS[27]],
980
+ ["NZAA", STATIONS[44]],
981
+ ["NZWN", STATIONS[45]],
982
+ ["OERK", STATIONS[46]],
983
+ ["OKC", STATIONS[28]],
984
+ ["OMDB", STATIONS[47]],
985
+ ["OTHH", STATIONS[48]],
986
+ ["PHL", STATIONS[29]],
987
+ ["PHX", STATIONS[30]],
988
+ ["RCTP", STATIONS[49]],
989
+ ["RJAA", STATIONS[50]],
990
+ ["RJTT", STATIONS[51]],
991
+ ["RKSI", STATIONS[52]],
992
+ ["SAEZ", STATIONS[53]],
993
+ ["SAT", STATIONS[31]],
994
+ ["SBGR", STATIONS[54]],
995
+ ["SEA", STATIONS[32]],
996
+ ["SFO", STATIONS[33]],
997
+ ["SLC", STATIONS[34]],
998
+ ["UUEE", STATIONS[55]],
999
+ ["VABB", STATIONS[56]],
1000
+ ["VHHH", STATIONS[57]],
1001
+ ["VIDP", STATIONS[58]],
1002
+ ["VTBS", STATIONS[59]],
1003
+ ["WSSS", STATIONS[60]],
1004
+ ["YBBN", STATIONS[61]],
1005
+ ["YMML", STATIONS[62]],
1006
+ ["YSSY", STATIONS[63]],
1007
+ ["ZBAA", STATIONS[64]],
1008
+ ["ZSPD", STATIONS[65]]
742
1009
  ]);
743
1010
  var STATION_BY_ICAO = /* @__PURE__ */ new Map([
744
1011
  ["EDDB", STATIONS[0]],
@@ -753,55 +1020,60 @@ var mostlyrightCore = (() => {
753
1020
  ["ESSA", STATIONS[9]],
754
1021
  ["KATL", STATIONS[10]],
755
1022
  ["KAUS", STATIONS[11]],
756
- ["KBOS", STATIONS[12]],
757
- ["KDCA", STATIONS[13]],
758
- ["KDEN", STATIONS[14]],
759
- ["KDFW", STATIONS[15]],
760
- ["KHOU", STATIONS[16]],
761
- ["KLAS", STATIONS[17]],
762
- ["KLAX", STATIONS[18]],
763
- ["KMDW", STATIONS[19]],
764
- ["KMIA", STATIONS[20]],
765
- ["KMSP", STATIONS[21]],
766
- ["KMSY", STATIONS[22]],
767
- ["KNYC", STATIONS[23]],
768
- ["KOKC", STATIONS[24]],
769
- ["KPHL", STATIONS[25]],
770
- ["KPHX", STATIONS[26]],
771
- ["KSAT", STATIONS[27]],
772
- ["KSEA", STATIONS[28]],
773
- ["KSFO", STATIONS[29]],
774
- ["LEBL", STATIONS[30]],
775
- ["LEMD", STATIONS[31]],
776
- ["LFPB", STATIONS[32]],
777
- ["LFPG", STATIONS[33]],
778
- ["LFPO", STATIONS[34]],
779
- ["LIMC", STATIONS[35]],
780
- ["LIRF", STATIONS[36]],
781
- ["LOWW", STATIONS[37]],
782
- ["LSZH", STATIONS[38]],
783
- ["NZAA", STATIONS[39]],
784
- ["NZWN", STATIONS[40]],
785
- ["OERK", STATIONS[41]],
786
- ["OMDB", STATIONS[42]],
787
- ["OTHH", STATIONS[43]],
788
- ["RCTP", STATIONS[44]],
789
- ["RJAA", STATIONS[45]],
790
- ["RJTT", STATIONS[46]],
791
- ["RKSI", STATIONS[47]],
792
- ["SAEZ", STATIONS[48]],
793
- ["SBGR", STATIONS[49]],
794
- ["UUEE", STATIONS[50]],
795
- ["VABB", STATIONS[51]],
796
- ["VHHH", STATIONS[52]],
797
- ["VIDP", STATIONS[53]],
798
- ["VTBS", STATIONS[54]],
799
- ["WSSS", STATIONS[55]],
800
- ["YBBN", STATIONS[56]],
801
- ["YMML", STATIONS[57]],
802
- ["YSSY", STATIONS[58]],
803
- ["ZBAA", STATIONS[59]],
804
- ["ZSPD", STATIONS[60]]
1023
+ ["KBNA", STATIONS[12]],
1024
+ ["KBOS", STATIONS[13]],
1025
+ ["KCVG", STATIONS[14]],
1026
+ ["KDCA", STATIONS[15]],
1027
+ ["KDEN", STATIONS[16]],
1028
+ ["KDFW", STATIONS[17]],
1029
+ ["KDTW", STATIONS[18]],
1030
+ ["KHOU", STATIONS[19]],
1031
+ ["KIAH", STATIONS[20]],
1032
+ ["KLAS", STATIONS[21]],
1033
+ ["KLAX", STATIONS[22]],
1034
+ ["KMDW", STATIONS[23]],
1035
+ ["KMIA", STATIONS[24]],
1036
+ ["KMSP", STATIONS[25]],
1037
+ ["KMSY", STATIONS[26]],
1038
+ ["KNYC", STATIONS[27]],
1039
+ ["KOKC", STATIONS[28]],
1040
+ ["KPHL", STATIONS[29]],
1041
+ ["KPHX", STATIONS[30]],
1042
+ ["KSAT", STATIONS[31]],
1043
+ ["KSEA", STATIONS[32]],
1044
+ ["KSFO", STATIONS[33]],
1045
+ ["KSLC", STATIONS[34]],
1046
+ ["LEBL", STATIONS[35]],
1047
+ ["LEMD", STATIONS[36]],
1048
+ ["LFPB", STATIONS[37]],
1049
+ ["LFPG", STATIONS[38]],
1050
+ ["LFPO", STATIONS[39]],
1051
+ ["LIMC", STATIONS[40]],
1052
+ ["LIRF", STATIONS[41]],
1053
+ ["LOWW", STATIONS[42]],
1054
+ ["LSZH", STATIONS[43]],
1055
+ ["NZAA", STATIONS[44]],
1056
+ ["NZWN", STATIONS[45]],
1057
+ ["OERK", STATIONS[46]],
1058
+ ["OMDB", STATIONS[47]],
1059
+ ["OTHH", STATIONS[48]],
1060
+ ["RCTP", STATIONS[49]],
1061
+ ["RJAA", STATIONS[50]],
1062
+ ["RJTT", STATIONS[51]],
1063
+ ["RKSI", STATIONS[52]],
1064
+ ["SAEZ", STATIONS[53]],
1065
+ ["SBGR", STATIONS[54]],
1066
+ ["UUEE", STATIONS[55]],
1067
+ ["VABB", STATIONS[56]],
1068
+ ["VHHH", STATIONS[57]],
1069
+ ["VIDP", STATIONS[58]],
1070
+ ["VTBS", STATIONS[59]],
1071
+ ["WSSS", STATIONS[60]],
1072
+ ["YBBN", STATIONS[61]],
1073
+ ["YMML", STATIONS[62]],
1074
+ ["YSSY", STATIONS[63]],
1075
+ ["ZBAA", STATIONS[64]],
1076
+ ["ZSPD", STATIONS[65]]
805
1077
  ]);
806
1078
 
807
1079
  // src/data/generated/source-priority.ts
@@ -930,9 +1202,9 @@ var mostlyrightCore = (() => {
930
1202
  }
931
1203
  return { _repr_only: true, value: String(value) };
932
1204
  }
933
- var TradewindsError = class extends Error {
1205
+ var MostlyRightError = class extends Error {
934
1206
  /** Subclass override — the stable string enum surfaced via `errorCode`. */
935
- static defaultErrorCode = "TRADEWINDS_ERROR";
1207
+ static defaultErrorCode = "MOSTLYRIGHT_ERROR";
936
1208
  errorCode;
937
1209
  source;
938
1210
  requestId;
@@ -964,7 +1236,7 @@ var mostlyrightCore = (() => {
964
1236
  return safe;
965
1237
  }
966
1238
  };
967
- var SourceUnavailableError = class extends TradewindsError {
1239
+ var SourceUnavailableError = class extends MostlyRightError {
968
1240
  static defaultErrorCode = "SOURCE_UNAVAILABLE";
969
1241
  httpStatus;
970
1242
  retryable;
@@ -990,7 +1262,66 @@ var mostlyrightCore = (() => {
990
1262
  };
991
1263
  }
992
1264
  };
993
- var SchemaValidationError = class extends TradewindsError {
1265
+ var DATA_AVAILABILITY_REASONS = [
1266
+ "model_unavailable",
1267
+ "out_of_window",
1268
+ "cache_miss",
1269
+ "source_404",
1270
+ "source_5xx",
1271
+ "rate_limited"
1272
+ ];
1273
+ var DataAvailabilityError = class extends MostlyRightError {
1274
+ static defaultErrorCode = "DATA_AVAILABILITY";
1275
+ reason;
1276
+ hint;
1277
+ constructor(options) {
1278
+ if (!DATA_AVAILABILITY_REASONS.includes(options.reason)) {
1279
+ throw new RangeError(
1280
+ `DataAvailabilityError: unknown reason "${String(options.reason)}". Valid reasons: ${DATA_AVAILABILITY_REASONS.join(", ")}`
1281
+ );
1282
+ }
1283
+ if (typeof options.hint !== "string" || options.hint.length === 0) {
1284
+ throw new TypeError("DataAvailabilityError: hint is required and must be a non-empty string");
1285
+ }
1286
+ const message = `[${options.reason}] ${options.hint}`;
1287
+ super(message, options);
1288
+ this.reason = options.reason;
1289
+ this.hint = options.hint;
1290
+ }
1291
+ payload() {
1292
+ return {
1293
+ ...super.payload(),
1294
+ reason: this.reason,
1295
+ hint: this.hint
1296
+ };
1297
+ }
1298
+ };
1299
+ var NwpNotAvailableError = class extends DataAvailabilityError {
1300
+ static defaultErrorCode = "NWP_NOT_AVAILABLE";
1301
+ station;
1302
+ model;
1303
+ constructor(options) {
1304
+ const parentOpts = {
1305
+ reason: "model_unavailable",
1306
+ hint: options.hint,
1307
+ source: options.source ?? `nwp.${options.model}`
1308
+ };
1309
+ if (options.requestId !== void 0 && options.requestId !== null) {
1310
+ parentOpts.requestId = options.requestId;
1311
+ }
1312
+ super(parentOpts);
1313
+ this.station = options.station;
1314
+ this.model = options.model;
1315
+ }
1316
+ payload() {
1317
+ return {
1318
+ ...super.payload(),
1319
+ station: this.station,
1320
+ model: this.model
1321
+ };
1322
+ }
1323
+ };
1324
+ var SchemaValidationError = class extends MostlyRightError {
994
1325
  static defaultErrorCode = "SCHEMA_VALIDATION_FAILED";
995
1326
  schemaId;
996
1327
  violations;
@@ -1013,7 +1344,7 @@ var mostlyrightCore = (() => {
1013
1344
  };
1014
1345
  }
1015
1346
  };
1016
- var SourceMismatchError = class extends TradewindsError {
1347
+ var SourceMismatchError = class extends MostlyRightError {
1017
1348
  static defaultErrorCode = "SOURCE_MISMATCH";
1018
1349
  /** Canonical role-name vocabulary (design.md §R). */
1019
1350
  static VALID_ROLES = /* @__PURE__ */ new Set([
@@ -1042,7 +1373,7 @@ var mostlyrightCore = (() => {
1042
1373
  };
1043
1374
  }
1044
1375
  };
1045
- var LeakageError = class extends TradewindsError {
1376
+ var LeakageError = class extends MostlyRightError {
1046
1377
  static defaultErrorCode = "LEAKAGE_DETECTED";
1047
1378
  asOf;
1048
1379
  violatingCount;
@@ -1062,7 +1393,50 @@ var mostlyrightCore = (() => {
1062
1393
  };
1063
1394
  }
1064
1395
  };
1065
- var TemporalDriftError = class extends TradewindsError {
1396
+ var IssuedAtMissingError = class extends SchemaValidationError {
1397
+ static defaultErrorCode = "ISSUED_AT_MISSING";
1398
+ violatingCountRows;
1399
+ constructor(message, options = {}) {
1400
+ super(message, {
1401
+ ...options,
1402
+ schemaId: "schema.forecast.station.v1",
1403
+ violations: [{ column: "issued_at", rule: "non_null" }]
1404
+ });
1405
+ this.violatingCountRows = options.violatingCount ?? 0;
1406
+ }
1407
+ payload() {
1408
+ return {
1409
+ ...super.payload(),
1410
+ name: "IssuedAtMissingError",
1411
+ violating_count: this.violatingCountRows,
1412
+ origin_issue: "Tarabcak/mostlyright#70"
1413
+ };
1414
+ }
1415
+ };
1416
+ var OpenMeteoSeamlessLeakageError = class extends LeakageError {
1417
+ static defaultErrorCode = "OPEN_METEO_SEAMLESS_LEAKAGE";
1418
+ model;
1419
+ endpointUrl;
1420
+ constructor(message, options) {
1421
+ super(message, {
1422
+ ...options,
1423
+ asOf: options.asOf ?? "(seamless-endpoint-refused-before-fetch)",
1424
+ violatingCount: 0
1425
+ });
1426
+ this.model = options.model;
1427
+ this.endpointUrl = options.endpointUrl;
1428
+ }
1429
+ payload() {
1430
+ return {
1431
+ ...super.payload(),
1432
+ name: "OpenMeteoSeamlessLeakageError",
1433
+ model: this.model,
1434
+ endpoint_url: this.endpointUrl,
1435
+ origin_issue: "Tarabcak/mostlyright#70"
1436
+ };
1437
+ }
1438
+ };
1439
+ var TemporalDriftError = class extends MostlyRightError {
1066
1440
  static defaultErrorCode = "TEMPORAL_DRIFT";
1067
1441
  schemaId;
1068
1442
  assertedRange;
@@ -1085,7 +1459,7 @@ var mostlyrightCore = (() => {
1085
1459
  };
1086
1460
  }
1087
1461
  };
1088
- var PayloadTooLargeError = class extends TradewindsError {
1462
+ var PayloadTooLargeError = class extends MostlyRightError {
1089
1463
  static defaultErrorCode = "PAYLOAD_TOO_LARGE";
1090
1464
  declaredSize;
1091
1465
  limit;
@@ -1105,13 +1479,13 @@ var mostlyrightCore = (() => {
1105
1479
  };
1106
1480
  }
1107
1481
  };
1108
- var DeferredMarketError = class extends TradewindsError {
1482
+ var DeferredMarketError = class extends MostlyRightError {
1109
1483
  static defaultErrorCode = "DEFERRED_MARKET";
1110
1484
  };
1111
- var PolymarketEventError = class extends TradewindsError {
1485
+ var PolymarketEventError = class extends MostlyRightError {
1112
1486
  static defaultErrorCode = "POLYMARKET_EVENT_INVALID";
1113
1487
  };
1114
- var TherminalError = class extends TradewindsError {
1488
+ var TherminalError = class extends MostlyRightError {
1115
1489
  static defaultErrorCode = "HTTP_ERROR";
1116
1490
  statusCode;
1117
1491
  constructor(message, options = {}) {
@@ -1170,13 +1544,13 @@ var mostlyrightCore = (() => {
1170
1544
  super(message, { ...options, statusCode: options.statusCode ?? 500 });
1171
1545
  }
1172
1546
  };
1173
- var LiveStreamError = class extends TradewindsError {
1547
+ var LiveStreamError = class extends MostlyRightError {
1174
1548
  static defaultErrorCode = "LIVE_STREAM_ERROR";
1175
1549
  };
1176
1550
  var NoLiveDataError = class extends LiveStreamError {
1177
1551
  static defaultErrorCode = "NO_LIVE_DATA";
1178
1552
  station;
1179
- constructor(message = "", options) {
1553
+ constructor(message, options) {
1180
1554
  super(message, { ...options, source: options.source });
1181
1555
  this.station = options.station;
1182
1556
  }
@@ -1426,6 +1800,69 @@ var mostlyrightCore = (() => {
1426
1800
  return new Date(marketCloseAsUtcMs - offsetHours * 36e5);
1427
1801
  }
1428
1802
 
1803
+ // src/stations/index.ts
1804
+ var StationCatalog = class {
1805
+ stations;
1806
+ byCode;
1807
+ byIcao;
1808
+ constructor(stations = STATIONS) {
1809
+ this.stations = stations;
1810
+ if (stations === STATIONS) {
1811
+ this.byCode = STATION_BY_CODE;
1812
+ this.byIcao = STATION_BY_ICAO;
1813
+ } else {
1814
+ const byCode = /* @__PURE__ */ new Map();
1815
+ const byIcao = /* @__PURE__ */ new Map();
1816
+ for (const s of stations) {
1817
+ if (s.code !== null) byCode.set(s.code, s);
1818
+ byIcao.set(s.icao, s);
1819
+ }
1820
+ this.byCode = byCode;
1821
+ this.byIcao = byIcao;
1822
+ }
1823
+ }
1824
+ /**
1825
+ * Return the station for `code` (registry code or ICAO).
1826
+ * @throws if no station matches.
1827
+ */
1828
+ get(code) {
1829
+ const station = this.byCode.get(code) ?? this.byIcao.get(code);
1830
+ if (station === void 0) {
1831
+ throw new Error(
1832
+ `Unknown station ${JSON.stringify(code)}. Expected a registry code (e.g. "NYC", "EGLL") or a 4-letter ICAO (e.g. "KNYC").`
1833
+ );
1834
+ }
1835
+ return station;
1836
+ }
1837
+ /** Stations tagged with `venue` (e.g. "kalshi"), sorted by ICAO. */
1838
+ filterByVenue(venue) {
1839
+ return this.stations.filter((s) => s.venues.includes(venue)).sort((a, b) => a.icao.localeCompare(b.icao));
1840
+ }
1841
+ /** Stations whose ISO 3166-1 alpha-2 `country` matches, sorted by ICAO. */
1842
+ filterByCountry(country) {
1843
+ return this.stations.filter((s) => s.country === country).sort((a, b) => a.icao.localeCompare(b.icao));
1844
+ }
1845
+ /** Union of all venue tags present in the catalog. */
1846
+ venues() {
1847
+ const out = /* @__PURE__ */ new Set();
1848
+ for (const s of this.stations) {
1849
+ for (const v of s.venues) out.add(v);
1850
+ }
1851
+ return out;
1852
+ }
1853
+ /** True iff `code` resolves to a station (by registry code or ICAO). */
1854
+ has(code) {
1855
+ return this.byCode.has(code) || this.byIcao.has(code);
1856
+ }
1857
+ get size() {
1858
+ return this.stations.length;
1859
+ }
1860
+ [Symbol.iterator]() {
1861
+ return this.stations[Symbol.iterator]();
1862
+ }
1863
+ };
1864
+ var CATALOG = new StationCatalog();
1865
+
1429
1866
  // src/internal/http.ts
1430
1867
  var DEFAULT_BASE_DELAY_MS = 1e3;
1431
1868
  var DEFAULT_MAX_RETRIES = 3;