@domino-sdk/relay 0.15.0 → 0.17.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.
@@ -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-e0nHA0JA.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-e0nHA0JA.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-e0nHA0JA.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: "quiz" | "text" | "url" | "photo" | "none";
357
374
  } | {
358
375
  kind: "completed";
359
376
  } | {
@@ -441,10 +458,16 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
441
458
  [k: string]: string;
442
459
  };
443
460
  release?: string | undefined;
461
+ } | {
462
+ kind: "text";
463
+ value: string;
464
+ } | {
465
+ kind: "url";
466
+ value: string;
444
467
  } | undefined;
445
468
  } | null;
446
469
  release: string;
447
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
470
+ interaction: "staff" | "quiz" | "text" | "url" | "photo" | "automatic" | "claim";
448
471
  lifecycle: "active" | "paused" | "archived";
449
472
  rewards: {
450
473
  label: string;
@@ -526,6 +549,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
526
549
  [k: string]: string;
527
550
  };
528
551
  release?: string | undefined;
552
+ } | {
553
+ kind: "text";
554
+ value: string;
555
+ } | {
556
+ kind: "url";
557
+ value: string;
529
558
  } | undefined;
530
559
  }>;
531
560
  experience: () => Promise<{
@@ -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: "quiz" | "text" | "url" | "photo" | "none";
571
617
  } | {
572
618
  kind: "completed";
573
619
  } | {
@@ -655,10 +701,16 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
655
701
  [k: string]: string;
656
702
  };
657
703
  release?: string | undefined;
704
+ } | {
705
+ kind: "text";
706
+ value: string;
707
+ } | {
708
+ kind: "url";
709
+ value: string;
658
710
  } | undefined;
659
711
  } | null;
660
712
  release: string;
661
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
713
+ interaction: "staff" | "quiz" | "text" | "url" | "photo" | "automatic" | "claim";
662
714
  lifecycle: "active" | "paused" | "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: "quiz" | "text" | "url" | "photo" | "none";
739
808
  } | {
740
809
  kind: "completed";
741
810
  } | {
@@ -823,10 +892,16 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
823
892
  [k: string]: string;
824
893
  };
825
894
  release?: string | undefined;
895
+ } | {
896
+ kind: "text";
897
+ value: string;
898
+ } | {
899
+ kind: "url";
900
+ value: string;
826
901
  } | undefined;
827
902
  } | null;
828
903
  release: string;
829
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
904
+ interaction: "staff" | "quiz" | "text" | "url" | "photo" | "automatic" | "claim";
830
905
  lifecycle: "active" | "paused" | "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: "quiz" | "text" | "url" | "photo" | "none";
910
1002
  } | {
911
1003
  kind: "completed";
912
1004
  } | {
@@ -994,10 +1086,16 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
994
1086
  [k: string]: string;
995
1087
  };
996
1088
  release?: string | undefined;
1089
+ } | {
1090
+ kind: "text";
1091
+ value: string;
1092
+ } | {
1093
+ kind: "url";
1094
+ value: string;
997
1095
  } | undefined;
998
1096
  } | null;
999
1097
  release: string;
1000
- interaction: "staff" | "quiz" | "photo" | "automatic" | "claim";
1098
+ interaction: "staff" | "quiz" | "text" | "url" | "photo" | "automatic" | "claim";
1001
1099
  lifecycle: "active" | "paused" | "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;
@@ -1226,6 +1330,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1226
1330
  [k: string]: string;
1227
1331
  };
1228
1332
  release?: string | undefined;
1333
+ } | {
1334
+ kind: "text";
1335
+ value: string;
1336
+ } | {
1337
+ kind: "url";
1338
+ value: string;
1229
1339
  } | undefined;
1230
1340
  }>;
1231
1341
  progress: () => Promise<{
@@ -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: "quiz" | "text" | "url" | "photo" | "none";
1271
1398
  } | {
1272
1399
  kind: "completed";
1273
1400
  } | {
@@ -1355,6 +1482,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1355
1482
  [k: string]: string;
1356
1483
  };
1357
1484
  release?: string | undefined;
1485
+ } | {
1486
+ kind: "text";
1487
+ value: string;
1488
+ } | {
1489
+ kind: "url";
1490
+ value: string;
1358
1491
  } | undefined;
1359
1492
  } | null;
1360
1493
  key?: string | undefined;
@@ -1532,6 +1665,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1532
1665
  [k: string]: string;
1533
1666
  };
1534
1667
  release?: string | undefined;
1668
+ } | {
1669
+ kind: "text";
1670
+ value: string;
1671
+ } | {
1672
+ kind: "url";
1673
+ value: string;
1535
1674
  } | undefined;
1536
1675
  }>;
1537
1676
  upload: (file: File) => Promise<{
@@ -1591,6 +1730,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1591
1730
  [k: string]: string;
1592
1731
  };
1593
1732
  release?: string | undefined;
1733
+ } | {
1734
+ kind: "text";
1735
+ value: string;
1736
+ } | {
1737
+ kind: "url";
1738
+ value: string;
1594
1739
  } | undefined;
1595
1740
  };
1596
1741
  title: 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;
@@ -2281,6 +2477,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2281
2477
  [k: string]: string;
2282
2478
  };
2283
2479
  release?: string | undefined;
2480
+ } | {
2481
+ kind: "text";
2482
+ value: string;
2483
+ } | {
2484
+ kind: "url";
2485
+ value: string;
2284
2486
  } | undefined;
2285
2487
  }[];
2286
2488
  balances: {
@@ -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: "quiz" | "text" | "url" | "photo" | "none";
2732
2985
  } | {
2733
2986
  kind: "completed";
2734
2987
  } | {
@@ -2816,6 +3069,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2816
3069
  [k: string]: string;
2817
3070
  };
2818
3071
  release?: string | undefined;
3072
+ } | {
3073
+ kind: "text";
3074
+ value: string;
3075
+ } | {
3076
+ kind: "url";
3077
+ value: string;
2819
3078
  } | undefined;
2820
3079
  } | null;
2821
3080
  key?: string | undefined;
@@ -3137,6 +3396,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3137
3396
  [k: string]: string;
3138
3397
  };
3139
3398
  release?: string | undefined;
3399
+ } | {
3400
+ kind: "text";
3401
+ value: string;
3402
+ } | {
3403
+ kind: "url";
3404
+ value: string;
3140
3405
  } | undefined;
3141
3406
  }>;
3142
3407
  retry: (id: string) => Promise<{
@@ -3184,6 +3449,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3184
3449
  [k: string]: string;
3185
3450
  };
3186
3451
  release?: string | undefined;
3452
+ } | {
3453
+ kind: "text";
3454
+ value: string;
3455
+ } | {
3456
+ kind: "url";
3457
+ value: string;
3187
3458
  } | undefined;
3188
3459
  }>;
3189
3460
  decide: (id: string, input: {
@@ -3236,6 +3507,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3236
3507
  [k: string]: string;
3237
3508
  };
3238
3509
  release?: string | undefined;
3510
+ } | {
3511
+ kind: "text";
3512
+ value: string;
3513
+ } | {
3514
+ kind: "url";
3515
+ value: string;
3239
3516
  } | undefined;
3240
3517
  }>;
3241
3518
  };