@domino-sdk/relay 0.5.0 → 0.7.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.
package/dist/browser.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SubmitInput, ReviewListOptions, MemberListOptions, ReleaseInput, beginHandoverSchema } from './schema.js';
2
2
  import { SubmissionStore, createRelayClient, QuestView, QuestController, ProgressObservation, questExperienceSchema, ProgressObserver, ExchangeInput, PhotoSubmission, QuizSubmission, ClaimSubmission } from './index.js';
3
- import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, b as walletProofSchema, A as AuthProvider } from './settings-B7vsT8nd.js';
3
+ import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, e as walletProofSchema, A as AuthProvider } from './settings-CU_oBcx0.js';
4
4
  import * as zod from 'zod';
5
5
 
6
6
  /** Browser client with durable submission recovery; safe to construct during SSR. */
@@ -336,13 +336,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
336
336
  } | undefined;
337
337
  } | undefined;
338
338
  };
339
- connections: ("google" | "apple" | "x" | "discord")[];
339
+ connections: ("discord" | "google" | "apple" | "x")[];
340
340
  trigger: {
341
341
  kind: "manual";
342
342
  input: "quiz" | "photo" | "none";
343
343
  actor?: "member" | "staff" | undefined;
344
344
  } | {
345
345
  kind: "automatic";
346
+ observation?: {
347
+ source: string;
348
+ type: string;
349
+ } | undefined;
346
350
  };
347
351
  availability: {
348
352
  kind: "available";
@@ -359,6 +363,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
359
363
  kind: "staff-required";
360
364
  } | {
361
365
  kind: "automatic";
366
+ observation?: {
367
+ source: string;
368
+ type: string;
369
+ } | undefined;
362
370
  } | {
363
371
  kind: "checking";
364
372
  attempt: string;
@@ -370,6 +378,13 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
370
378
  attempt: string;
371
379
  };
372
380
  completed: boolean;
381
+ completion: {
382
+ kind: "once";
383
+ } | {
384
+ kind: "keyed";
385
+ };
386
+ completionCount: number;
387
+ visibility: "visible" | "hidden";
373
388
  missing: {
374
389
  quest: string;
375
390
  title: string;
@@ -380,7 +395,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
380
395
  quest: string;
381
396
  member: string;
382
397
  evidence: string | null;
383
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
398
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
384
399
  reason: string | null;
385
400
  retries: number;
386
401
  generation: number;
@@ -406,6 +421,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
406
421
  kind: "points";
407
422
  balance: string;
408
423
  amount: number;
424
+ } | {
425
+ kind: "integration";
426
+ provider: "discord";
427
+ action: "grant-role";
428
+ roleId: string;
409
429
  })[] | null;
410
430
  createdAt: number;
411
431
  input?: {
@@ -417,7 +437,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
417
437
  } | undefined;
418
438
  } | null;
419
439
  release: string;
420
- interaction: "quiz" | "photo" | "staff" | "automatic" | "claim";
440
+ interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
421
441
  lifecycle: "active" | "paused" | "archived";
422
442
  rewards: {
423
443
  label: string;
@@ -429,7 +449,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
429
449
  quest: string;
430
450
  member: string;
431
451
  evidence: string | null;
432
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
452
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
433
453
  reason: string | null;
434
454
  retries: number;
435
455
  generation: number;
@@ -455,6 +475,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
455
475
  kind: "points";
456
476
  balance: string;
457
477
  amount: number;
478
+ } | {
479
+ kind: "integration";
480
+ provider: "discord";
481
+ action: "grant-role";
482
+ roleId: string;
458
483
  })[] | null;
459
484
  createdAt: number;
460
485
  input?: {
@@ -490,13 +515,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
490
515
  } | undefined;
491
516
  } | undefined;
492
517
  };
493
- connections: ("google" | "apple" | "x" | "discord")[];
518
+ connections: ("discord" | "google" | "apple" | "x")[];
494
519
  trigger: {
495
520
  kind: "manual";
496
521
  input: "quiz" | "photo" | "none";
497
522
  actor?: "member" | "staff" | undefined;
498
523
  } | {
499
524
  kind: "automatic";
525
+ observation?: {
526
+ source: string;
527
+ type: string;
528
+ } | undefined;
500
529
  };
501
530
  availability: {
502
531
  kind: "available";
@@ -513,6 +542,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
513
542
  kind: "staff-required";
514
543
  } | {
515
544
  kind: "automatic";
545
+ observation?: {
546
+ source: string;
547
+ type: string;
548
+ } | undefined;
516
549
  } | {
517
550
  kind: "checking";
518
551
  attempt: string;
@@ -524,6 +557,13 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
524
557
  attempt: string;
525
558
  };
526
559
  completed: boolean;
560
+ completion: {
561
+ kind: "once";
562
+ } | {
563
+ kind: "keyed";
564
+ };
565
+ completionCount: number;
566
+ visibility: "visible" | "hidden";
527
567
  missing: {
528
568
  quest: string;
529
569
  title: string;
@@ -534,7 +574,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
534
574
  quest: string;
535
575
  member: string;
536
576
  evidence: string | null;
537
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
577
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
538
578
  reason: string | null;
539
579
  retries: number;
540
580
  generation: number;
@@ -560,6 +600,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
560
600
  kind: "points";
561
601
  balance: string;
562
602
  amount: number;
603
+ } | {
604
+ kind: "integration";
605
+ provider: "discord";
606
+ action: "grant-role";
607
+ roleId: string;
563
608
  })[] | null;
564
609
  createdAt: number;
565
610
  input?: {
@@ -571,7 +616,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
571
616
  } | undefined;
572
617
  } | null;
573
618
  release: string;
574
- interaction: "quiz" | "photo" | "staff" | "automatic" | "claim";
619
+ interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
575
620
  lifecycle: "active" | "paused" | "archived";
576
621
  rewards: {
577
622
  label: string;
@@ -603,13 +648,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
603
648
  } | undefined;
604
649
  } | undefined;
605
650
  };
606
- connections: ("google" | "apple" | "x" | "discord")[];
651
+ connections: ("discord" | "google" | "apple" | "x")[];
607
652
  trigger: {
608
653
  kind: "manual";
609
654
  input: "quiz" | "photo" | "none";
610
655
  actor?: "member" | "staff" | undefined;
611
656
  } | {
612
657
  kind: "automatic";
658
+ observation?: {
659
+ source: string;
660
+ type: string;
661
+ } | undefined;
613
662
  };
614
663
  availability: {
615
664
  kind: "available";
@@ -626,6 +675,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
626
675
  kind: "staff-required";
627
676
  } | {
628
677
  kind: "automatic";
678
+ observation?: {
679
+ source: string;
680
+ type: string;
681
+ } | undefined;
629
682
  } | {
630
683
  kind: "checking";
631
684
  attempt: string;
@@ -637,6 +690,13 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
637
690
  attempt: string;
638
691
  };
639
692
  completed: boolean;
693
+ completion: {
694
+ kind: "once";
695
+ } | {
696
+ kind: "keyed";
697
+ };
698
+ completionCount: number;
699
+ visibility: "visible" | "hidden";
640
700
  missing: {
641
701
  quest: string;
642
702
  title: string;
@@ -647,7 +707,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
647
707
  quest: string;
648
708
  member: string;
649
709
  evidence: string | null;
650
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
710
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
651
711
  reason: string | null;
652
712
  retries: number;
653
713
  generation: number;
@@ -673,6 +733,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
673
733
  kind: "points";
674
734
  balance: string;
675
735
  amount: number;
736
+ } | {
737
+ kind: "integration";
738
+ provider: "discord";
739
+ action: "grant-role";
740
+ roleId: string;
676
741
  })[] | null;
677
742
  createdAt: number;
678
743
  input?: {
@@ -684,7 +749,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
684
749
  } | undefined;
685
750
  } | null;
686
751
  release: string;
687
- interaction: "quiz" | "photo" | "staff" | "automatic" | "claim";
752
+ interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
688
753
  lifecycle: "active" | "paused" | "archived";
689
754
  rewards: {
690
755
  label: string;
@@ -718,13 +783,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
718
783
  } | undefined;
719
784
  } | undefined;
720
785
  };
721
- connections: ("google" | "apple" | "x" | "discord")[];
786
+ connections: ("discord" | "google" | "apple" | "x")[];
722
787
  trigger: {
723
788
  kind: "manual";
724
789
  input: "quiz" | "photo" | "none";
725
790
  actor?: "member" | "staff" | undefined;
726
791
  } | {
727
792
  kind: "automatic";
793
+ observation?: {
794
+ source: string;
795
+ type: string;
796
+ } | undefined;
728
797
  };
729
798
  availability: {
730
799
  kind: "available";
@@ -741,6 +810,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
741
810
  kind: "staff-required";
742
811
  } | {
743
812
  kind: "automatic";
813
+ observation?: {
814
+ source: string;
815
+ type: string;
816
+ } | undefined;
744
817
  } | {
745
818
  kind: "checking";
746
819
  attempt: string;
@@ -752,6 +825,13 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
752
825
  attempt: string;
753
826
  };
754
827
  completed: boolean;
828
+ completion: {
829
+ kind: "once";
830
+ } | {
831
+ kind: "keyed";
832
+ };
833
+ completionCount: number;
834
+ visibility: "visible" | "hidden";
755
835
  missing: {
756
836
  quest: string;
757
837
  title: string;
@@ -762,7 +842,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
762
842
  quest: string;
763
843
  member: string;
764
844
  evidence: string | null;
765
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
845
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
766
846
  reason: string | null;
767
847
  retries: number;
768
848
  generation: number;
@@ -788,6 +868,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
788
868
  kind: "points";
789
869
  balance: string;
790
870
  amount: number;
871
+ } | {
872
+ kind: "integration";
873
+ provider: "discord";
874
+ action: "grant-role";
875
+ roleId: string;
791
876
  })[] | null;
792
877
  createdAt: number;
793
878
  input?: {
@@ -799,7 +884,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
799
884
  } | undefined;
800
885
  } | null;
801
886
  release: string;
802
- interaction: "quiz" | "photo" | "staff" | "automatic" | "claim";
887
+ interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
803
888
  lifecycle: "active" | "paused" | "archived";
804
889
  rewards: {
805
890
  label: string;
@@ -836,7 +921,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
836
921
  auth: {
837
922
  providers: () => Promise<{
838
923
  providers: {
839
- provider: "google" | "apple" | "x" | "discord";
924
+ provider: "discord" | "google" | "apple" | "x";
840
925
  configured: boolean;
841
926
  }[];
842
927
  email: boolean;
@@ -866,7 +951,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
866
951
  expiresAt: number;
867
952
  }>;
868
953
  accounts: () => Promise<{
869
- provider: "google" | "apple" | "x" | "discord";
954
+ provider: "discord" | "google" | "apple" | "x";
870
955
  configured: boolean;
871
956
  status: "disconnected" | "connected" | "reconnect";
872
957
  subject: string | null;
@@ -931,16 +1016,19 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
931
1016
  input: "photo";
932
1017
  release?: string;
933
1018
  recoverPrevious?: boolean;
1019
+ repeatable?: boolean;
934
1020
  }): Promise<PhotoSubmission>;
935
1021
  (quest: string, options: {
936
1022
  input: "quiz";
937
1023
  release?: string;
938
1024
  recoverPrevious?: boolean;
1025
+ repeatable?: boolean;
939
1026
  }): Promise<QuizSubmission>;
940
1027
  (quest: string, options: {
941
1028
  input: "none";
942
1029
  release?: string;
943
1030
  recoverPrevious?: boolean;
1031
+ repeatable?: boolean;
944
1032
  }): Promise<ClaimSubmission>;
945
1033
  };
946
1034
  collectionPass: (entitlement: string, session: string) => Promise<{
@@ -954,7 +1042,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
954
1042
  quest: string;
955
1043
  member: string;
956
1044
  evidence: string | null;
957
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
1045
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
958
1046
  reason: string | null;
959
1047
  retries: number;
960
1048
  generation: number;
@@ -980,6 +1068,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
980
1068
  kind: "points";
981
1069
  balance: string;
982
1070
  amount: number;
1071
+ } | {
1072
+ kind: "integration";
1073
+ provider: "discord";
1074
+ action: "grant-role";
1075
+ roleId: string;
983
1076
  })[] | null;
984
1077
  createdAt: number;
985
1078
  input?: {
@@ -1015,13 +1108,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1015
1108
  } | undefined;
1016
1109
  } | undefined;
1017
1110
  };
1018
- connections: ("google" | "apple" | "x" | "discord")[];
1111
+ connections: ("discord" | "google" | "apple" | "x")[];
1019
1112
  trigger: {
1020
1113
  kind: "manual";
1021
1114
  input: "quiz" | "photo" | "none";
1022
1115
  actor?: "member" | "staff" | undefined;
1023
1116
  } | {
1024
1117
  kind: "automatic";
1118
+ observation?: {
1119
+ source: string;
1120
+ type: string;
1121
+ } | undefined;
1025
1122
  };
1026
1123
  availability: {
1027
1124
  kind: "available";
@@ -1038,6 +1135,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1038
1135
  kind: "staff-required";
1039
1136
  } | {
1040
1137
  kind: "automatic";
1138
+ observation?: {
1139
+ source: string;
1140
+ type: string;
1141
+ } | undefined;
1041
1142
  } | {
1042
1143
  kind: "checking";
1043
1144
  attempt: string;
@@ -1049,6 +1150,13 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1049
1150
  attempt: string;
1050
1151
  };
1051
1152
  completed: boolean;
1153
+ completion: {
1154
+ kind: "once";
1155
+ } | {
1156
+ kind: "keyed";
1157
+ };
1158
+ completionCount: number;
1159
+ visibility: "visible" | "hidden";
1052
1160
  missing: {
1053
1161
  quest: string;
1054
1162
  title: string;
@@ -1059,7 +1167,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1059
1167
  quest: string;
1060
1168
  member: string;
1061
1169
  evidence: string | null;
1062
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
1170
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
1063
1171
  reason: string | null;
1064
1172
  retries: number;
1065
1173
  generation: number;
@@ -1085,6 +1193,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1085
1193
  kind: "points";
1086
1194
  balance: string;
1087
1195
  amount: number;
1196
+ } | {
1197
+ kind: "integration";
1198
+ provider: "discord";
1199
+ action: "grant-role";
1200
+ roleId: string;
1088
1201
  })[] | null;
1089
1202
  createdAt: number;
1090
1203
  input?: {
@@ -1175,6 +1288,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1175
1288
  } | undefined;
1176
1289
  })[];
1177
1290
  }>;
1291
+ rewardDeliveries: () => Promise<{
1292
+ deliveries: {
1293
+ id: string;
1294
+ quest: string;
1295
+ completion: string;
1296
+ member: string;
1297
+ provider: "discord";
1298
+ action: "grant-role";
1299
+ roleId: string;
1300
+ status: "pending" | "delivered";
1301
+ attempts: number;
1302
+ nextAt: number;
1303
+ lastError: string | null;
1304
+ createdAt: number;
1305
+ deliveredAt: number | null;
1306
+ }[];
1307
+ }>;
1178
1308
  claim: (input: Omit<SubmitInput, "member">, options?: {
1179
1309
  session: string;
1180
1310
  }) => Promise<{
@@ -1183,7 +1313,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1183
1313
  quest: string;
1184
1314
  member: string;
1185
1315
  evidence: string | null;
1186
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
1316
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
1187
1317
  reason: string | null;
1188
1318
  retries: number;
1189
1319
  generation: number;
@@ -1209,6 +1339,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1209
1339
  kind: "points";
1210
1340
  balance: string;
1211
1341
  amount: number;
1342
+ } | {
1343
+ kind: "integration";
1344
+ provider: "discord";
1345
+ action: "grant-role";
1346
+ roleId: string;
1212
1347
  })[] | null;
1213
1348
  createdAt: number;
1214
1349
  input?: {
@@ -1237,7 +1372,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1237
1372
  quest: string;
1238
1373
  member: string;
1239
1374
  evidence: string | null;
1240
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
1375
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
1241
1376
  reason: string | null;
1242
1377
  retries: number;
1243
1378
  generation: number;
@@ -1263,6 +1398,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1263
1398
  kind: "points";
1264
1399
  balance: string;
1265
1400
  amount: number;
1401
+ } | {
1402
+ kind: "integration";
1403
+ provider: "discord";
1404
+ action: "grant-role";
1405
+ roleId: string;
1266
1406
  })[] | null;
1267
1407
  createdAt: number;
1268
1408
  input?: {
@@ -1307,7 +1447,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1307
1447
  code: string;
1308
1448
  definition: {
1309
1449
  quest: string;
1310
- runtimeVersion: 1 | 2;
1450
+ runtimeVersion: 2 | 1;
1311
1451
  title: string;
1312
1452
  presentation: {
1313
1453
  quiz?: {
@@ -1331,6 +1471,30 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1331
1471
  };
1332
1472
  integrations: "discord"[];
1333
1473
  fields: Record<string, {
1474
+ kind: "point-ledger";
1475
+ default: string;
1476
+ label: string;
1477
+ description?: string | undefined;
1478
+ } | {
1479
+ kind: "datetime";
1480
+ default: string;
1481
+ label: string;
1482
+ description?: string | undefined;
1483
+ } | {
1484
+ kind: "resource";
1485
+ default: string;
1486
+ source: {
1487
+ provider: "discord";
1488
+ resource: "channel";
1489
+ types: ("text" | "announcement")[];
1490
+ } | {
1491
+ provider: "discord";
1492
+ resource: "role";
1493
+ assignable: boolean;
1494
+ };
1495
+ label: string;
1496
+ description?: string | undefined;
1497
+ } | {
1334
1498
  kind: "quiz";
1335
1499
  default: {
1336
1500
  id: string;
@@ -1400,6 +1564,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1400
1564
  kind: "points";
1401
1565
  balance: string;
1402
1566
  amount: number;
1567
+ } | {
1568
+ kind: "integration";
1569
+ provider: "discord";
1570
+ action: "grant-role";
1571
+ roleId: string;
1403
1572
  })[];
1404
1573
  humanReview: boolean;
1405
1574
  trigger: {
@@ -1408,6 +1577,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1408
1577
  actor?: "member" | "staff" | undefined;
1409
1578
  } | {
1410
1579
  kind: "automatic";
1580
+ observation?: {
1581
+ source: string;
1582
+ type: string;
1583
+ } | undefined;
1411
1584
  };
1412
1585
  requires: {
1413
1586
  quest: string;
@@ -1415,14 +1588,26 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1415
1588
  }[];
1416
1589
  completion: {
1417
1590
  kind: "once";
1591
+ } | {
1592
+ kind: "keyed";
1418
1593
  };
1594
+ visibility: "visible" | "hidden";
1595
+ budgets: {
1596
+ id: string;
1597
+ scope: "project" | "member";
1598
+ period: "day" | "lifetime";
1599
+ limit: number;
1600
+ cost: number | {
1601
+ balance: string;
1602
+ };
1603
+ }[];
1419
1604
  };
1420
1605
  }[]>;
1421
1606
  template: () => Promise<{
1422
1607
  code: string;
1423
1608
  definition: {
1424
1609
  quest: string;
1425
- runtimeVersion: 1 | 2;
1610
+ runtimeVersion: 2 | 1;
1426
1611
  title: string;
1427
1612
  presentation: {
1428
1613
  quiz?: {
@@ -1446,6 +1631,30 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1446
1631
  };
1447
1632
  integrations: "discord"[];
1448
1633
  fields: Record<string, {
1634
+ kind: "point-ledger";
1635
+ default: string;
1636
+ label: string;
1637
+ description?: string | undefined;
1638
+ } | {
1639
+ kind: "datetime";
1640
+ default: string;
1641
+ label: string;
1642
+ description?: string | undefined;
1643
+ } | {
1644
+ kind: "resource";
1645
+ default: string;
1646
+ source: {
1647
+ provider: "discord";
1648
+ resource: "channel";
1649
+ types: ("text" | "announcement")[];
1650
+ } | {
1651
+ provider: "discord";
1652
+ resource: "role";
1653
+ assignable: boolean;
1654
+ };
1655
+ label: string;
1656
+ description?: string | undefined;
1657
+ } | {
1449
1658
  kind: "quiz";
1450
1659
  default: {
1451
1660
  id: string;
@@ -1515,6 +1724,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1515
1724
  kind: "points";
1516
1725
  balance: string;
1517
1726
  amount: number;
1727
+ } | {
1728
+ kind: "integration";
1729
+ provider: "discord";
1730
+ action: "grant-role";
1731
+ roleId: string;
1518
1732
  })[];
1519
1733
  humanReview: boolean;
1520
1734
  trigger: {
@@ -1523,6 +1737,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1523
1737
  actor?: "member" | "staff" | undefined;
1524
1738
  } | {
1525
1739
  kind: "automatic";
1740
+ observation?: {
1741
+ source: string;
1742
+ type: string;
1743
+ } | undefined;
1526
1744
  };
1527
1745
  requires: {
1528
1746
  quest: string;
@@ -1530,13 +1748,25 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1530
1748
  }[];
1531
1749
  completion: {
1532
1750
  kind: "once";
1751
+ } | {
1752
+ kind: "keyed";
1533
1753
  };
1754
+ visibility: "visible" | "hidden";
1755
+ budgets: {
1756
+ id: string;
1757
+ scope: "project" | "member";
1758
+ period: "day" | "lifetime";
1759
+ limit: number;
1760
+ cost: number | {
1761
+ balance: string;
1762
+ };
1763
+ }[];
1534
1764
  };
1535
1765
  }>;
1536
1766
  snapshot: () => Promise<{
1537
1767
  releases: {
1538
1768
  quest: string;
1539
- runtimeVersion: 1 | 2;
1769
+ runtimeVersion: 2 | 1;
1540
1770
  title: string;
1541
1771
  presentation: {
1542
1772
  quiz?: {
@@ -1560,6 +1790,30 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1560
1790
  };
1561
1791
  integrations: "discord"[];
1562
1792
  fields: Record<string, {
1793
+ kind: "point-ledger";
1794
+ default: string;
1795
+ label: string;
1796
+ description?: string | undefined;
1797
+ } | {
1798
+ kind: "datetime";
1799
+ default: string;
1800
+ label: string;
1801
+ description?: string | undefined;
1802
+ } | {
1803
+ kind: "resource";
1804
+ default: string;
1805
+ source: {
1806
+ provider: "discord";
1807
+ resource: "channel";
1808
+ types: ("text" | "announcement")[];
1809
+ } | {
1810
+ provider: "discord";
1811
+ resource: "role";
1812
+ assignable: boolean;
1813
+ };
1814
+ label: string;
1815
+ description?: string | undefined;
1816
+ } | {
1563
1817
  kind: "quiz";
1564
1818
  default: {
1565
1819
  id: string;
@@ -1629,6 +1883,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1629
1883
  kind: "points";
1630
1884
  balance: string;
1631
1885
  amount: number;
1886
+ } | {
1887
+ kind: "integration";
1888
+ provider: "discord";
1889
+ action: "grant-role";
1890
+ roleId: string;
1632
1891
  })[];
1633
1892
  humanReview: boolean;
1634
1893
  trigger: {
@@ -1637,6 +1896,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1637
1896
  actor?: "member" | "staff" | undefined;
1638
1897
  } | {
1639
1898
  kind: "automatic";
1899
+ observation?: {
1900
+ source: string;
1901
+ type: string;
1902
+ } | undefined;
1640
1903
  };
1641
1904
  requires: {
1642
1905
  quest: string;
@@ -1644,7 +1907,19 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1644
1907
  }[];
1645
1908
  completion: {
1646
1909
  kind: "once";
1910
+ } | {
1911
+ kind: "keyed";
1647
1912
  };
1913
+ visibility: "visible" | "hidden";
1914
+ budgets: {
1915
+ id: string;
1916
+ scope: "project" | "member";
1917
+ period: "day" | "lifetime";
1918
+ limit: number;
1919
+ cost: number | {
1920
+ balance: string;
1921
+ };
1922
+ }[];
1648
1923
  code: string;
1649
1924
  provider: "fixture-pass" | "fixture-fail" | "fixture-unclear" | "fixture-error" | "workers-ai";
1650
1925
  id: string;
@@ -1677,6 +1952,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1677
1952
  } | undefined;
1678
1953
  }[];
1679
1954
  completions: {
1955
+ key: string;
1680
1956
  id: string;
1681
1957
  quest: string;
1682
1958
  member: string;
@@ -1764,7 +2040,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1764
2040
  quest: string;
1765
2041
  member: string;
1766
2042
  evidence: string | null;
1767
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
2043
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
1768
2044
  reason: string | null;
1769
2045
  retries: number;
1770
2046
  generation: number;
@@ -1790,6 +2066,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1790
2066
  kind: "points";
1791
2067
  balance: string;
1792
2068
  amount: number;
2069
+ } | {
2070
+ kind: "integration";
2071
+ provider: "discord";
2072
+ action: "grant-role";
2073
+ roleId: string;
1793
2074
  })[] | null;
1794
2075
  createdAt: number;
1795
2076
  input?: {
@@ -1818,7 +2099,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1818
2099
  }>;
1819
2100
  publish: (release: ReleaseInput) => Promise<{
1820
2101
  quest: string;
1821
- runtimeVersion: 1 | 2;
2102
+ runtimeVersion: 2 | 1;
1822
2103
  title: string;
1823
2104
  presentation: {
1824
2105
  quiz?: {
@@ -1842,6 +2123,30 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1842
2123
  };
1843
2124
  integrations: "discord"[];
1844
2125
  fields: Record<string, {
2126
+ kind: "point-ledger";
2127
+ default: string;
2128
+ label: string;
2129
+ description?: string | undefined;
2130
+ } | {
2131
+ kind: "datetime";
2132
+ default: string;
2133
+ label: string;
2134
+ description?: string | undefined;
2135
+ } | {
2136
+ kind: "resource";
2137
+ default: string;
2138
+ source: {
2139
+ provider: "discord";
2140
+ resource: "channel";
2141
+ types: ("text" | "announcement")[];
2142
+ } | {
2143
+ provider: "discord";
2144
+ resource: "role";
2145
+ assignable: boolean;
2146
+ };
2147
+ label: string;
2148
+ description?: string | undefined;
2149
+ } | {
1845
2150
  kind: "quiz";
1846
2151
  default: {
1847
2152
  id: string;
@@ -1911,6 +2216,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1911
2216
  kind: "points";
1912
2217
  balance: string;
1913
2218
  amount: number;
2219
+ } | {
2220
+ kind: "integration";
2221
+ provider: "discord";
2222
+ action: "grant-role";
2223
+ roleId: string;
1914
2224
  })[];
1915
2225
  humanReview: boolean;
1916
2226
  trigger: {
@@ -1919,6 +2229,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1919
2229
  actor?: "member" | "staff" | undefined;
1920
2230
  } | {
1921
2231
  kind: "automatic";
2232
+ observation?: {
2233
+ source: string;
2234
+ type: string;
2235
+ } | undefined;
1922
2236
  };
1923
2237
  requires: {
1924
2238
  quest: string;
@@ -1926,7 +2240,19 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1926
2240
  }[];
1927
2241
  completion: {
1928
2242
  kind: "once";
2243
+ } | {
2244
+ kind: "keyed";
1929
2245
  };
2246
+ visibility: "visible" | "hidden";
2247
+ budgets: {
2248
+ id: string;
2249
+ scope: "project" | "member";
2250
+ period: "day" | "lifetime";
2251
+ limit: number;
2252
+ cost: number | {
2253
+ balance: string;
2254
+ };
2255
+ }[];
1930
2256
  code: string;
1931
2257
  provider: "fixture-pass" | "fixture-fail" | "fixture-unclear" | "fixture-error" | "workers-ai";
1932
2258
  id: string;
@@ -1960,7 +2286,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1960
2286
  }>;
1961
2287
  publishBatch: (releases: ReleaseInput[]) => Promise<{
1962
2288
  quest: string;
1963
- runtimeVersion: 1 | 2;
2289
+ runtimeVersion: 2 | 1;
1964
2290
  title: string;
1965
2291
  presentation: {
1966
2292
  quiz?: {
@@ -1984,6 +2310,30 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1984
2310
  };
1985
2311
  integrations: "discord"[];
1986
2312
  fields: Record<string, {
2313
+ kind: "point-ledger";
2314
+ default: string;
2315
+ label: string;
2316
+ description?: string | undefined;
2317
+ } | {
2318
+ kind: "datetime";
2319
+ default: string;
2320
+ label: string;
2321
+ description?: string | undefined;
2322
+ } | {
2323
+ kind: "resource";
2324
+ default: string;
2325
+ source: {
2326
+ provider: "discord";
2327
+ resource: "channel";
2328
+ types: ("text" | "announcement")[];
2329
+ } | {
2330
+ provider: "discord";
2331
+ resource: "role";
2332
+ assignable: boolean;
2333
+ };
2334
+ label: string;
2335
+ description?: string | undefined;
2336
+ } | {
1987
2337
  kind: "quiz";
1988
2338
  default: {
1989
2339
  id: string;
@@ -2053,6 +2403,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2053
2403
  kind: "points";
2054
2404
  balance: string;
2055
2405
  amount: number;
2406
+ } | {
2407
+ kind: "integration";
2408
+ provider: "discord";
2409
+ action: "grant-role";
2410
+ roleId: string;
2056
2411
  })[];
2057
2412
  humanReview: boolean;
2058
2413
  trigger: {
@@ -2061,6 +2416,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2061
2416
  actor?: "member" | "staff" | undefined;
2062
2417
  } | {
2063
2418
  kind: "automatic";
2419
+ observation?: {
2420
+ source: string;
2421
+ type: string;
2422
+ } | undefined;
2064
2423
  };
2065
2424
  requires: {
2066
2425
  quest: string;
@@ -2068,7 +2427,19 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2068
2427
  }[];
2069
2428
  completion: {
2070
2429
  kind: "once";
2430
+ } | {
2431
+ kind: "keyed";
2071
2432
  };
2433
+ visibility: "visible" | "hidden";
2434
+ budgets: {
2435
+ id: string;
2436
+ scope: "project" | "member";
2437
+ period: "day" | "lifetime";
2438
+ limit: number;
2439
+ cost: number | {
2440
+ balance: string;
2441
+ };
2442
+ }[];
2072
2443
  code: string;
2073
2444
  provider: "fixture-pass" | "fixture-fail" | "fixture-unclear" | "fixture-error" | "workers-ai";
2074
2445
  id: string;
@@ -2125,13 +2496,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2125
2496
  } | undefined;
2126
2497
  } | undefined;
2127
2498
  };
2128
- connections: ("google" | "apple" | "x" | "discord")[];
2499
+ connections: ("discord" | "google" | "apple" | "x")[];
2129
2500
  trigger: {
2130
2501
  kind: "manual";
2131
2502
  input: "quiz" | "photo" | "none";
2132
2503
  actor?: "member" | "staff" | undefined;
2133
2504
  } | {
2134
2505
  kind: "automatic";
2506
+ observation?: {
2507
+ source: string;
2508
+ type: string;
2509
+ } | undefined;
2135
2510
  };
2136
2511
  availability: {
2137
2512
  kind: "available";
@@ -2148,6 +2523,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2148
2523
  kind: "staff-required";
2149
2524
  } | {
2150
2525
  kind: "automatic";
2526
+ observation?: {
2527
+ source: string;
2528
+ type: string;
2529
+ } | undefined;
2151
2530
  } | {
2152
2531
  kind: "checking";
2153
2532
  attempt: string;
@@ -2159,6 +2538,13 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2159
2538
  attempt: string;
2160
2539
  };
2161
2540
  completed: boolean;
2541
+ completion: {
2542
+ kind: "once";
2543
+ } | {
2544
+ kind: "keyed";
2545
+ };
2546
+ completionCount: number;
2547
+ visibility: "visible" | "hidden";
2162
2548
  missing: {
2163
2549
  quest: string;
2164
2550
  title: string;
@@ -2169,7 +2555,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2169
2555
  quest: string;
2170
2556
  member: string;
2171
2557
  evidence: string | null;
2172
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
2558
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
2173
2559
  reason: string | null;
2174
2560
  retries: number;
2175
2561
  generation: number;
@@ -2195,6 +2581,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2195
2581
  kind: "points";
2196
2582
  balance: string;
2197
2583
  amount: number;
2584
+ } | {
2585
+ kind: "integration";
2586
+ provider: "discord";
2587
+ action: "grant-role";
2588
+ roleId: string;
2198
2589
  })[] | null;
2199
2590
  createdAt: number;
2200
2591
  input?: {
@@ -2454,7 +2845,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2454
2845
  quest: string;
2455
2846
  member: string;
2456
2847
  evidence: string | null;
2457
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
2848
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
2458
2849
  reason: string | null;
2459
2850
  retries: number;
2460
2851
  generation: number;
@@ -2480,6 +2871,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2480
2871
  kind: "points";
2481
2872
  balance: string;
2482
2873
  amount: number;
2874
+ } | {
2875
+ kind: "integration";
2876
+ provider: "discord";
2877
+ action: "grant-role";
2878
+ roleId: string;
2483
2879
  })[] | null;
2484
2880
  createdAt: number;
2485
2881
  input?: {
@@ -2496,7 +2892,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2496
2892
  quest: string;
2497
2893
  member: string;
2498
2894
  evidence: string | null;
2499
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
2895
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
2500
2896
  reason: string | null;
2501
2897
  retries: number;
2502
2898
  generation: number;
@@ -2522,6 +2918,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2522
2918
  kind: "points";
2523
2919
  balance: string;
2524
2920
  amount: number;
2921
+ } | {
2922
+ kind: "integration";
2923
+ provider: "discord";
2924
+ action: "grant-role";
2925
+ roleId: string;
2525
2926
  })[] | null;
2526
2927
  createdAt: number;
2527
2928
  input?: {
@@ -2543,7 +2944,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2543
2944
  quest: string;
2544
2945
  member: string;
2545
2946
  evidence: string | null;
2546
- status: "needs-review" | "queued" | "evaluating" | "accepted" | "rejected" | "failed";
2947
+ status: "queued" | "evaluating" | "accepted" | "rejected" | "needs-review" | "failed";
2547
2948
  reason: string | null;
2548
2949
  retries: number;
2549
2950
  generation: number;
@@ -2569,6 +2970,11 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2569
2970
  kind: "points";
2570
2971
  balance: string;
2571
2972
  amount: number;
2973
+ } | {
2974
+ kind: "integration";
2975
+ provider: "discord";
2976
+ action: "grant-role";
2977
+ roleId: string;
2572
2978
  })[] | null;
2573
2979
  createdAt: number;
2574
2980
  input?: {