@domino-sdk/relay 0.14.1 → 0.16.1

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.
@@ -1,7 +1,7 @@
1
- import { O as Observation, T as TrackerReader, D as DiscordMember, a as DiscordMessage, W as WalletConnection, S as SolanaBalance, o as observationTriggerSchema, B as Budget, A as AuthoringIdentity, I as IntegrationProvider, b as StreakPolicy } from './settings-CU2y-wUM.js';
2
- export { c as customSource, d as defineLeaderboard, e as defineReferral, f as defineTracker, g as discord, p as pointLedgers, s as settings, h as streak, x } from './settings-CU2y-wUM.js';
1
+ import { O as Observation, T as TrackerReader, X as XReader, D as DiscordMember, a as DiscordMessage, W as WalletConnection, S as SolanaBalance, o as observationTriggerSchema, B as Budget, A as AuthoringIdentity, I as IntegrationProvider, b as StreakPolicy, c as TextEvidence, U as UrlEvidence, d as TextOptions, e as UrlOptions } from './submission-input-Cktvl71b.js';
2
+ export { f as customSource, g as defineLeaderboard, h as defineReferral, i as defineTracker, j as discord, p as pointLedgers, s as settings, k as streak, x } from './submission-input-Cktvl71b.js';
3
3
  import { z } from 'zod';
4
- import { PhotoResult, rewardSchema, triggerSchema, QuestPresentation, QuizEvidence, Decision, TieredRewardDefinition } from './schema.js';
4
+ import { TextReviewInput, TextResult, PhotoResult, rewardSchema, triggerSchema, QuestPresentation, QuizEvidence, Decision, TieredRewardDefinition } from './schema.js';
5
5
 
6
6
  type Reward = z.infer<typeof rewardSchema>;
7
7
  declare const points: (balance: string, amount: number) => {
@@ -15,10 +15,32 @@ declare const discordRole: (roleId: string) => {
15
15
  action: "grant-role";
16
16
  roleId: string;
17
17
  };
18
+
18
19
  declare const evidence: {
20
+ text: (options?: TextOptions) => {
21
+ input: "text";
22
+ constraints: {
23
+ required: boolean;
24
+ minLength: number;
25
+ maxLength: number;
26
+ };
27
+ };
28
+ url: (options?: UrlOptions) => {
29
+ input: "url";
30
+ constraints: {
31
+ required: boolean;
32
+ allowedHosts?: string[] | undefined;
33
+ };
34
+ };
19
35
  photo: () => "photo";
20
36
  quiz: () => "quiz";
21
37
  };
38
+ type ValueContract = ReturnType<typeof evidence.text> | ReturnType<typeof evidence.url>;
39
+ declare function manual<const I extends ValueContract>(options: {
40
+ input: I;
41
+ }): I & {
42
+ kind: "manual";
43
+ };
22
44
  declare function manual<const I extends "photo" | "quiz">(options: {
23
45
  input: I;
24
46
  }): {
@@ -138,7 +160,9 @@ type EvaluationContext<T, I = {
138
160
  observation: Observation | null;
139
161
  eligibleAt: number;
140
162
  trackers: TrackerReader;
163
+ x: XReader;
141
164
  review: {
165
+ text(options: TextReviewInput): Promise<TextResult>;
142
166
  photo(options: {
143
167
  image: string;
144
168
  criteria: string;
@@ -177,7 +201,11 @@ type QuestInput<T extends Trigger> = T extends {
177
201
  photo: string;
178
202
  } : T extends {
179
203
  input: "quiz";
180
- } ? QuizEvidence : Record<string, never>;
204
+ } ? QuizEvidence : T extends {
205
+ input: "text";
206
+ } ? TextEvidence : T extends {
207
+ input: "url";
208
+ } ? UrlEvidence : Record<string, never>;
181
209
  declare function defineQuest<T extends Record<string, z.ZodType>, const G extends Trigger>(definition: AuthoringIdentity & {
182
210
  title: string | ((ctx: {
183
211
  settings: z.output<z.ZodObject<T>>;
@@ -335,6 +363,23 @@ declare function defineQuest<T extends Record<string, z.ZodType>, const G extend
335
363
  })[];
336
364
  humanReview: boolean;
337
365
  trigger: {
366
+ kind: "manual";
367
+ input: "text";
368
+ constraints: {
369
+ required: boolean;
370
+ minLength: number;
371
+ maxLength: number;
372
+ };
373
+ actor?: "staff" | "member" | undefined;
374
+ } | {
375
+ kind: "manual";
376
+ input: "url";
377
+ constraints: {
378
+ required: boolean;
379
+ allowedHosts?: string[] | undefined;
380
+ };
381
+ actor?: "staff" | "member" | undefined;
382
+ } | {
338
383
  kind: "manual";
339
384
  input: "photo" | "quiz" | "none";
340
385
  actor?: "staff" | "member" | undefined;
package/dist/authoring.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  defineReferral,
6
6
  defineTracker,
7
7
  x
8
- } from "./chunk-CJARNIVP.js";
8
+ } from "./chunk-XNS25KST.js";
9
9
  import {
10
10
  budgetSchema,
11
11
  decisionSchema,
@@ -20,9 +20,11 @@ import {
20
20
  settingFieldSchema,
21
21
  settings,
22
22
  streak,
23
+ textOptionsSchema,
23
24
  tierRewardSchema,
24
- tieredRewardDefinitionSchema
25
- } from "./chunk-FUQYKTOJ.js";
25
+ tieredRewardDefinitionSchema,
26
+ urlOptionsSchema
27
+ } from "./chunk-YUAE6PFY.js";
26
28
 
27
29
  // src/authoring.ts
28
30
  import { z } from "zod";
@@ -34,10 +36,21 @@ var discordRole = (roleId) => integrationRewardSchema.parse({
34
36
  roleId
35
37
  });
36
38
  var evidence = {
39
+ text: (options = {}) => ({
40
+ input: "text",
41
+ constraints: textOptionsSchema.parse(options)
42
+ }),
43
+ url: (options = {}) => ({
44
+ input: "url",
45
+ constraints: urlOptionsSchema.parse(options)
46
+ }),
37
47
  photo: () => "photo",
38
48
  quiz: () => "quiz"
39
49
  };
40
50
  function manual(options) {
51
+ if (typeof options?.input === "object") {
52
+ return { kind: "manual", ...options.input };
53
+ }
41
54
  return {
42
55
  kind: "manual",
43
56
  input: options?.input ?? "none",
@@ -172,6 +185,7 @@ function defineQuest(definition) {
172
185
  review: ctx.review,
173
186
  trackers: ctx.trackers,
174
187
  wallet: ctx.wallet,
188
+ x: ctx.x,
175
189
  discord: ctx.discord
176
190
  }) : decision.accept();
177
191
  if (!result) {
package/dist/browser.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SubmitInput, ReviewListOptions, MemberListOptions, ReleaseInput, beginHandoverSchema } from './schema.js';
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, i as walletProofSchema, j as AuthProvider } from './settings-CU2y-wUM.js';
2
+ import { SubmissionStore, createRelayClient, QuestView, QuestController, ProgressObservation, questExperienceSchema, ProgressObserver, ExchangeInput, PhotoSubmission, QuizSubmission, ClaimSubmission, ValueSubmission } from './index.js';
3
+ import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, l as walletProofSchema, m as AuthProvider } from './submission-input-Cktvl71b.js';
4
4
  import * as zod from 'zod';
5
5
 
6
6
  /** Browser client with durable submission recovery; safe to construct during SSR. */
@@ -341,6 +341,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
341
341
  };
342
342
  connections: ("discord" | "google" | "apple" | "x")[];
343
343
  trigger: {
344
+ kind: "manual";
345
+ input: "text";
346
+ constraints: {
347
+ required: boolean;
348
+ minLength: number;
349
+ maxLength: number;
350
+ };
351
+ actor?: "member" | "staff" | undefined;
352
+ } | {
353
+ kind: "manual";
354
+ input: "url";
355
+ constraints: {
356
+ required: boolean;
357
+ allowedHosts?: string[] | undefined;
358
+ };
359
+ actor?: "member" | "staff" | undefined;
360
+ } | {
344
361
  kind: "manual";
345
362
  input: "quiz" | "photo" | "none";
346
363
  actor?: "member" | "staff" | undefined;
@@ -353,7 +370,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
353
370
  };
354
371
  availability: {
355
372
  kind: "available";
356
- input: "quiz" | "photo" | "none";
373
+ input: "url" | "text" | "quiz" | "photo" | "none";
357
374
  } | {
358
375
  kind: "completed";
359
376
  } | {
@@ -436,6 +453,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
436
453
  })[] | null;
437
454
  createdAt: number;
438
455
  input?: {
456
+ kind: "text";
457
+ value: string;
458
+ } | {
459
+ kind: "url";
460
+ value: string;
461
+ } | {
439
462
  kind: "quiz";
440
463
  answers: {
441
464
  [k: string]: string;
@@ -444,7 +467,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
444
467
  } | undefined;
445
468
  } | null;
446
469
  release: string;
447
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
470
+ interaction: "staff" | "url" | "text" | "quiz" | "photo" | "automatic" | "claim";
448
471
  lifecycle: "paused" | "active" | "archived";
449
472
  rewards: {
450
473
  label: string;
@@ -521,6 +544,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
521
544
  })[] | null;
522
545
  createdAt: number;
523
546
  input?: {
547
+ kind: "text";
548
+ value: string;
549
+ } | {
550
+ kind: "url";
551
+ value: string;
552
+ } | {
524
553
  kind: "quiz";
525
554
  answers: {
526
555
  [k: string]: string;
@@ -555,6 +584,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
555
584
  };
556
585
  connections: ("discord" | "google" | "apple" | "x")[];
557
586
  trigger: {
587
+ kind: "manual";
588
+ input: "text";
589
+ constraints: {
590
+ required: boolean;
591
+ minLength: number;
592
+ maxLength: number;
593
+ };
594
+ actor?: "member" | "staff" | undefined;
595
+ } | {
596
+ kind: "manual";
597
+ input: "url";
598
+ constraints: {
599
+ required: boolean;
600
+ allowedHosts?: string[] | undefined;
601
+ };
602
+ actor?: "member" | "staff" | undefined;
603
+ } | {
558
604
  kind: "manual";
559
605
  input: "quiz" | "photo" | "none";
560
606
  actor?: "member" | "staff" | undefined;
@@ -567,7 +613,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
567
613
  };
568
614
  availability: {
569
615
  kind: "available";
570
- input: "quiz" | "photo" | "none";
616
+ input: "url" | "text" | "quiz" | "photo" | "none";
571
617
  } | {
572
618
  kind: "completed";
573
619
  } | {
@@ -650,6 +696,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
650
696
  })[] | null;
651
697
  createdAt: number;
652
698
  input?: {
699
+ kind: "text";
700
+ value: string;
701
+ } | {
702
+ kind: "url";
703
+ value: string;
704
+ } | {
653
705
  kind: "quiz";
654
706
  answers: {
655
707
  [k: string]: string;
@@ -658,7 +710,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
658
710
  } | undefined;
659
711
  } | null;
660
712
  release: string;
661
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
713
+ interaction: "staff" | "url" | "text" | "quiz" | "photo" | "automatic" | "claim";
662
714
  lifecycle: "paused" | "active" | "archived";
663
715
  rewards: {
664
716
  label: string;
@@ -723,6 +775,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
723
775
  };
724
776
  connections: ("discord" | "google" | "apple" | "x")[];
725
777
  trigger: {
778
+ kind: "manual";
779
+ input: "text";
780
+ constraints: {
781
+ required: boolean;
782
+ minLength: number;
783
+ maxLength: number;
784
+ };
785
+ actor?: "member" | "staff" | undefined;
786
+ } | {
787
+ kind: "manual";
788
+ input: "url";
789
+ constraints: {
790
+ required: boolean;
791
+ allowedHosts?: string[] | undefined;
792
+ };
793
+ actor?: "member" | "staff" | undefined;
794
+ } | {
726
795
  kind: "manual";
727
796
  input: "quiz" | "photo" | "none";
728
797
  actor?: "member" | "staff" | undefined;
@@ -735,7 +804,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
735
804
  };
736
805
  availability: {
737
806
  kind: "available";
738
- input: "quiz" | "photo" | "none";
807
+ input: "url" | "text" | "quiz" | "photo" | "none";
739
808
  } | {
740
809
  kind: "completed";
741
810
  } | {
@@ -818,6 +887,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
818
887
  })[] | null;
819
888
  createdAt: number;
820
889
  input?: {
890
+ kind: "text";
891
+ value: string;
892
+ } | {
893
+ kind: "url";
894
+ value: string;
895
+ } | {
821
896
  kind: "quiz";
822
897
  answers: {
823
898
  [k: string]: string;
@@ -826,7 +901,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
826
901
  } | undefined;
827
902
  } | null;
828
903
  release: string;
829
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
904
+ interaction: "staff" | "url" | "text" | "quiz" | "photo" | "automatic" | "claim";
830
905
  lifecycle: "paused" | "active" | "archived";
831
906
  rewards: {
832
907
  label: string;
@@ -894,6 +969,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
894
969
  };
895
970
  connections: ("discord" | "google" | "apple" | "x")[];
896
971
  trigger: {
972
+ kind: "manual";
973
+ input: "text";
974
+ constraints: {
975
+ required: boolean;
976
+ minLength: number;
977
+ maxLength: number;
978
+ };
979
+ actor?: "member" | "staff" | undefined;
980
+ } | {
981
+ kind: "manual";
982
+ input: "url";
983
+ constraints: {
984
+ required: boolean;
985
+ allowedHosts?: string[] | undefined;
986
+ };
987
+ actor?: "member" | "staff" | undefined;
988
+ } | {
897
989
  kind: "manual";
898
990
  input: "quiz" | "photo" | "none";
899
991
  actor?: "member" | "staff" | undefined;
@@ -906,7 +998,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
906
998
  };
907
999
  availability: {
908
1000
  kind: "available";
909
- input: "quiz" | "photo" | "none";
1001
+ input: "url" | "text" | "quiz" | "photo" | "none";
910
1002
  } | {
911
1003
  kind: "completed";
912
1004
  } | {
@@ -989,6 +1081,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
989
1081
  })[] | null;
990
1082
  createdAt: number;
991
1083
  input?: {
1084
+ kind: "text";
1085
+ value: string;
1086
+ } | {
1087
+ kind: "url";
1088
+ value: string;
1089
+ } | {
992
1090
  kind: "quiz";
993
1091
  answers: {
994
1092
  [k: string]: string;
@@ -997,7 +1095,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
997
1095
  } | undefined;
998
1096
  } | null;
999
1097
  release: string;
1000
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
1098
+ interaction: "staff" | "url" | "text" | "quiz" | "photo" | "automatic" | "claim";
1001
1099
  lifecycle: "paused" | "active" | "archived";
1002
1100
  rewards: {
1003
1101
  label: string;
@@ -1175,6 +1273,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1175
1273
  recoverPrevious?: boolean;
1176
1274
  repeatable?: boolean;
1177
1275
  }): Promise<ClaimSubmission>;
1276
+ (quest: string, options: {
1277
+ input: "text" | "url";
1278
+ release?: string;
1279
+ recoverPrevious?: boolean;
1280
+ repeatable?: boolean;
1281
+ }): Promise<ValueSubmission>;
1178
1282
  };
1179
1283
  collectionPass: (entitlement: string, session: string) => Promise<{
1180
1284
  code: string;
@@ -1221,6 +1325,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1221
1325
  })[] | null;
1222
1326
  createdAt: number;
1223
1327
  input?: {
1328
+ kind: "text";
1329
+ value: string;
1330
+ } | {
1331
+ kind: "url";
1332
+ value: string;
1333
+ } | {
1224
1334
  kind: "quiz";
1225
1335
  answers: {
1226
1336
  [k: string]: string;
@@ -1255,6 +1365,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1255
1365
  };
1256
1366
  connections: ("discord" | "google" | "apple" | "x")[];
1257
1367
  trigger: {
1368
+ kind: "manual";
1369
+ input: "text";
1370
+ constraints: {
1371
+ required: boolean;
1372
+ minLength: number;
1373
+ maxLength: number;
1374
+ };
1375
+ actor?: "member" | "staff" | undefined;
1376
+ } | {
1377
+ kind: "manual";
1378
+ input: "url";
1379
+ constraints: {
1380
+ required: boolean;
1381
+ allowedHosts?: string[] | undefined;
1382
+ };
1383
+ actor?: "member" | "staff" | undefined;
1384
+ } | {
1258
1385
  kind: "manual";
1259
1386
  input: "quiz" | "photo" | "none";
1260
1387
  actor?: "member" | "staff" | undefined;
@@ -1267,7 +1394,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1267
1394
  };
1268
1395
  availability: {
1269
1396
  kind: "available";
1270
- input: "quiz" | "photo" | "none";
1397
+ input: "url" | "text" | "quiz" | "photo" | "none";
1271
1398
  } | {
1272
1399
  kind: "completed";
1273
1400
  } | {
@@ -1350,6 +1477,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1350
1477
  })[] | null;
1351
1478
  createdAt: number;
1352
1479
  input?: {
1480
+ kind: "text";
1481
+ value: string;
1482
+ } | {
1483
+ kind: "url";
1484
+ value: string;
1485
+ } | {
1353
1486
  kind: "quiz";
1354
1487
  answers: {
1355
1488
  [k: string]: string;
@@ -1527,6 +1660,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1527
1660
  })[] | null;
1528
1661
  createdAt: number;
1529
1662
  input?: {
1663
+ kind: "text";
1664
+ value: string;
1665
+ } | {
1666
+ kind: "url";
1667
+ value: string;
1668
+ } | {
1530
1669
  kind: "quiz";
1531
1670
  answers: {
1532
1671
  [k: string]: string;
@@ -1586,6 +1725,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1586
1725
  })[] | null;
1587
1726
  createdAt: number;
1588
1727
  input?: {
1728
+ kind: "text";
1729
+ value: string;
1730
+ } | {
1731
+ kind: "url";
1732
+ value: string;
1733
+ } | {
1589
1734
  kind: "quiz";
1590
1735
  answers: {
1591
1736
  [k: string]: string;
@@ -1755,6 +1900,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1755
1900
  })[];
1756
1901
  humanReview: boolean;
1757
1902
  trigger: {
1903
+ kind: "manual";
1904
+ input: "text";
1905
+ constraints: {
1906
+ required: boolean;
1907
+ minLength: number;
1908
+ maxLength: number;
1909
+ };
1910
+ actor?: "member" | "staff" | undefined;
1911
+ } | {
1912
+ kind: "manual";
1913
+ input: "url";
1914
+ constraints: {
1915
+ required: boolean;
1916
+ allowedHosts?: string[] | undefined;
1917
+ };
1918
+ actor?: "member" | "staff" | undefined;
1919
+ } | {
1758
1920
  kind: "manual";
1759
1921
  input: "quiz" | "photo" | "none";
1760
1922
  actor?: "member" | "staff" | undefined;
@@ -1922,6 +2084,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1922
2084
  })[];
1923
2085
  humanReview: boolean;
1924
2086
  trigger: {
2087
+ kind: "manual";
2088
+ input: "text";
2089
+ constraints: {
2090
+ required: boolean;
2091
+ minLength: number;
2092
+ maxLength: number;
2093
+ };
2094
+ actor?: "member" | "staff" | undefined;
2095
+ } | {
2096
+ kind: "manual";
2097
+ input: "url";
2098
+ constraints: {
2099
+ required: boolean;
2100
+ allowedHosts?: string[] | undefined;
2101
+ };
2102
+ actor?: "member" | "staff" | undefined;
2103
+ } | {
1925
2104
  kind: "manual";
1926
2105
  input: "quiz" | "photo" | "none";
1927
2106
  actor?: "member" | "staff" | undefined;
@@ -2088,6 +2267,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2088
2267
  })[];
2089
2268
  humanReview: boolean;
2090
2269
  trigger: {
2270
+ kind: "manual";
2271
+ input: "text";
2272
+ constraints: {
2273
+ required: boolean;
2274
+ minLength: number;
2275
+ maxLength: number;
2276
+ };
2277
+ actor?: "member" | "staff" | undefined;
2278
+ } | {
2279
+ kind: "manual";
2280
+ input: "url";
2281
+ constraints: {
2282
+ required: boolean;
2283
+ allowedHosts?: string[] | undefined;
2284
+ };
2285
+ actor?: "member" | "staff" | undefined;
2286
+ } | {
2091
2287
  kind: "manual";
2092
2288
  input: "quiz" | "photo" | "none";
2093
2289
  actor?: "member" | "staff" | undefined;
@@ -2276,6 +2472,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2276
2472
  })[] | null;
2277
2473
  createdAt: number;
2278
2474
  input?: {
2475
+ kind: "text";
2476
+ value: string;
2477
+ } | {
2478
+ kind: "url";
2479
+ value: string;
2480
+ } | {
2279
2481
  kind: "quiz";
2280
2482
  answers: {
2281
2483
  [k: string]: string;
@@ -2429,6 +2631,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2429
2631
  })[];
2430
2632
  humanReview: boolean;
2431
2633
  trigger: {
2634
+ kind: "manual";
2635
+ input: "text";
2636
+ constraints: {
2637
+ required: boolean;
2638
+ minLength: number;
2639
+ maxLength: number;
2640
+ };
2641
+ actor?: "member" | "staff" | undefined;
2642
+ } | {
2643
+ kind: "manual";
2644
+ input: "url";
2645
+ constraints: {
2646
+ required: boolean;
2647
+ allowedHosts?: string[] | undefined;
2648
+ };
2649
+ actor?: "member" | "staff" | undefined;
2650
+ } | {
2432
2651
  kind: "manual";
2433
2652
  input: "quiz" | "photo" | "none";
2434
2653
  actor?: "member" | "staff" | undefined;
@@ -2624,6 +2843,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2624
2843
  })[];
2625
2844
  humanReview: boolean;
2626
2845
  trigger: {
2846
+ kind: "manual";
2847
+ input: "text";
2848
+ constraints: {
2849
+ required: boolean;
2850
+ minLength: number;
2851
+ maxLength: number;
2852
+ };
2853
+ actor?: "member" | "staff" | undefined;
2854
+ } | {
2855
+ kind: "manual";
2856
+ input: "url";
2857
+ constraints: {
2858
+ required: boolean;
2859
+ allowedHosts?: string[] | undefined;
2860
+ };
2861
+ actor?: "member" | "staff" | undefined;
2862
+ } | {
2627
2863
  kind: "manual";
2628
2864
  input: "quiz" | "photo" | "none";
2629
2865
  actor?: "member" | "staff" | undefined;
@@ -2716,6 +2952,23 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2716
2952
  };
2717
2953
  connections: ("discord" | "google" | "apple" | "x")[];
2718
2954
  trigger: {
2955
+ kind: "manual";
2956
+ input: "text";
2957
+ constraints: {
2958
+ required: boolean;
2959
+ minLength: number;
2960
+ maxLength: number;
2961
+ };
2962
+ actor?: "member" | "staff" | undefined;
2963
+ } | {
2964
+ kind: "manual";
2965
+ input: "url";
2966
+ constraints: {
2967
+ required: boolean;
2968
+ allowedHosts?: string[] | undefined;
2969
+ };
2970
+ actor?: "member" | "staff" | undefined;
2971
+ } | {
2719
2972
  kind: "manual";
2720
2973
  input: "quiz" | "photo" | "none";
2721
2974
  actor?: "member" | "staff" | undefined;
@@ -2728,7 +2981,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2728
2981
  };
2729
2982
  availability: {
2730
2983
  kind: "available";
2731
- input: "quiz" | "photo" | "none";
2984
+ input: "url" | "text" | "quiz" | "photo" | "none";
2732
2985
  } | {
2733
2986
  kind: "completed";
2734
2987
  } | {
@@ -2811,6 +3064,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2811
3064
  })[] | null;
2812
3065
  createdAt: number;
2813
3066
  input?: {
3067
+ kind: "text";
3068
+ value: string;
3069
+ } | {
3070
+ kind: "url";
3071
+ value: string;
3072
+ } | {
2814
3073
  kind: "quiz";
2815
3074
  answers: {
2816
3075
  [k: string]: string;
@@ -3132,6 +3391,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3132
3391
  })[] | null;
3133
3392
  createdAt: number;
3134
3393
  input?: {
3394
+ kind: "text";
3395
+ value: string;
3396
+ } | {
3397
+ kind: "url";
3398
+ value: string;
3399
+ } | {
3135
3400
  kind: "quiz";
3136
3401
  answers: {
3137
3402
  [k: string]: string;
@@ -3179,6 +3444,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3179
3444
  })[] | null;
3180
3445
  createdAt: number;
3181
3446
  input?: {
3447
+ kind: "text";
3448
+ value: string;
3449
+ } | {
3450
+ kind: "url";
3451
+ value: string;
3452
+ } | {
3182
3453
  kind: "quiz";
3183
3454
  answers: {
3184
3455
  [k: string]: string;
@@ -3231,6 +3502,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3231
3502
  })[] | null;
3232
3503
  createdAt: number;
3233
3504
  input?: {
3505
+ kind: "text";
3506
+ value: string;
3507
+ } | {
3508
+ kind: "url";
3509
+ value: string;
3510
+ } | {
3234
3511
  kind: "quiz";
3235
3512
  answers: {
3236
3513
  [k: string]: string;