@domino-sdk/relay 0.26.0 → 0.27.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,4 +1,4 @@
1
- import { N as WalletSigner, a3 as CosmosNetwork, H as referralAcceptSchema, J as LeaderboardQuery, K as WalletAddressInput, M as walletSignatureSchema, L as LinkedWallet, P as walletChallengeInputSchema, Q as walletProofSchema, R as AuthProvider, V as WalletSignature, Y as engagementPageQuerySchema, Z as contentQualificationQuerySchema, _ as contentAdmissionQuerySchema, $ as contentEnrollmentInputSchema, a0 as contentReleaseInputSchema } from './submission-input-Ckpb4sBv.js';
1
+ import { N as WalletSigner, a3 as CosmosChain, a4 as CosmosNetwork, H as referralAcceptSchema, J as LeaderboardQuery, K as WalletAddressInput, M as walletSignatureSchema, L as LinkedWallet, P as walletChallengeInputSchema, Q as walletProofSchema, R as AuthProvider, V as WalletSignature, Y as engagementPageQuerySchema, Z as contentQualificationQuerySchema, _ as contentAdmissionQuerySchema, $ as contentEnrollmentInputSchema, a0 as contentReleaseInputSchema } from './submission-input-CYyH_25w.js';
2
2
  import { SubmitInput, ReleaseInput, beginHandoverSchema, contentPerformanceQuerySchema } from './schema.js';
3
3
  import { SubmissionStore, createRelayClient, ProfileUpdate, QuestView, QuestController, ProgressObservation, questExperienceSchema, ProgressObserver, ExchangeInput, PhotoSubmission, QuizSubmission, ClaimSubmission, ValueSubmission } from './index.js';
4
4
  import * as zod from 'zod';
@@ -46,6 +46,8 @@ type KeplrLike = {
46
46
  value: string;
47
47
  };
48
48
  }>;
49
+ /** Adds a chain the wallet does not know, after the user approves it. */
50
+ experimentalSuggestChain?(chainInfo: CosmosChain["chainInfo"]): Promise<void>;
49
51
  };
50
52
  /** A wallet found in the page, ready to pass to `relay.wallets.link`. */
51
53
  type DiscoveredWallet = {
@@ -64,16 +66,25 @@ declare function solanaSigner(provider: SolanaInjectedProvider, info?: {
64
66
  }): WalletSigner;
65
67
  /** Signs with a Wallet Standard wallet's `solana:signMessage` feature. */
66
68
  declare function walletStandardSolanaSigner(wallet: StandardWallet): WalletSigner;
67
- /** Signs an ADR-36 message with Keplr or a wallet that implements its API. */
68
- declare function cosmosSigner(provider: KeplrLike, network: CosmosNetwork, info?: {
69
+ /**
70
+ * Signs an ADR-36 message with Keplr or a wallet that implements its API, on the app's chain:
71
+ * `{ chainId, chainInfo? }` or `"cosmos:<chain ID>"`. When the wallet does not know the chain and
72
+ * `chainInfo` is given, it suggests the chain to the wallet (`experimentalSuggestChain`) and tries
73
+ * again; without `chainInfo`, or with a wallet that cannot add chains, it throws an error that
74
+ * names the chain. Other failures, such as a rejected request, pass through.
75
+ */
76
+ declare function cosmosSigner(provider: KeplrLike, chain: CosmosChain | CosmosNetwork, info?: {
69
77
  name?: string;
70
78
  }): WalletSigner;
71
79
  /** EIP-6963 wallets, or `window.ethereum` when none announce themselves within `timeoutMs`. */
72
80
  declare function discoverEvmWallets(timeoutMs?: number): Promise<DiscoveredWallet[]>;
73
81
  /** Wallet Standard wallets that can sign Solana messages, then legacy injected providers. */
74
82
  declare function discoverSolanaWallets(): DiscoveredWallet[];
75
- /** Keplr, Leap and Cosmostation, each signing on `network`. IDs end with the network's chain ID. */
76
- declare function discoverCosmosWallets(network: CosmosNetwork): DiscoveredWallet[];
83
+ /**
84
+ * Keplr, Leap and Cosmostation, each signing on the app's chain (see `cosmosSigner`). IDs end with
85
+ * the chain ID.
86
+ */
87
+ declare function discoverCosmosWallets(chain: CosmosChain | CosmosNetwork): DiscoveredWallet[];
77
88
 
78
89
  /** Browser client with durable submission recovery; safe to construct during SSR. */
79
90
  declare function createBrowserRelayClient(options: Parameters<typeof createRelayClient>[0]): {
@@ -284,7 +295,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
284
295
  accounts: {
285
296
  id: string;
286
297
  program: string;
287
- kind: "fixed" | "milestone" | "bonus";
298
+ kind: "milestone" | "fixed" | "bonus";
288
299
  balance: string;
289
300
  earned: number;
290
301
  settled: number;
@@ -626,7 +637,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
626
637
  start: number;
627
638
  end?: number | undefined;
628
639
  };
629
- enrollment: "none" | "required";
640
+ enrollment: "required" | "none";
630
641
  posts: "after-enrollment" | "since-start";
631
642
  historical: "staff" | "automatic" | "claim";
632
643
  } | undefined;
@@ -654,12 +665,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
654
665
  actor?: "member" | "staff" | undefined;
655
666
  } | {
656
667
  kind: "manual";
657
- input: "none" | "quiz" | "photo";
668
+ input: "quiz" | "photo" | "none";
658
669
  actor?: "member" | "staff" | undefined;
659
670
  };
660
671
  availability: {
661
672
  kind: "available";
662
- input: "text" | "url" | "none" | "quiz" | "photo";
673
+ input: "quiz" | "url" | "text" | "photo" | "none";
663
674
  } | {
664
675
  kind: "completed";
665
676
  } | {
@@ -697,7 +708,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
697
708
  kind: "keyed";
698
709
  };
699
710
  completionCount: number;
700
- visibility: "visible" | "hidden";
711
+ visibility: "hidden" | "visible";
701
712
  missing: {
702
713
  quest: string;
703
714
  title: string;
@@ -708,7 +719,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
708
719
  quest: string;
709
720
  member: string;
710
721
  evidence: string | null;
711
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
722
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
712
723
  reason: string | null;
713
724
  retries: number;
714
725
  generation: number;
@@ -742,22 +753,22 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
742
753
  })[] | null;
743
754
  createdAt: number;
744
755
  input?: {
745
- kind: "text";
746
- value: string;
747
- } | {
748
- kind: "url";
749
- value: string;
750
- } | {
751
756
  kind: "quiz";
752
757
  answers: {
753
758
  [k: string]: string;
754
759
  };
755
760
  release?: string | undefined;
761
+ } | {
762
+ kind: "text";
763
+ value: string;
764
+ } | {
765
+ kind: "url";
766
+ value: string;
756
767
  } | undefined;
757
768
  } | null;
758
769
  release: string;
759
- interaction: "staff" | "text" | "url" | "automatic" | "claim" | "quiz" | "photo";
760
- lifecycle: "paused" | "active" | "archived";
770
+ interaction: "quiz" | "url" | "text" | "staff" | "photo" | "automatic" | "claim";
771
+ lifecycle: "active" | "paused" | "archived";
761
772
  rewards: ({
762
773
  kind: "points";
763
774
  label: string;
@@ -818,7 +829,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
818
829
  quest: string;
819
830
  member: string;
820
831
  evidence: string | null;
821
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
832
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
822
833
  reason: string | null;
823
834
  retries: number;
824
835
  generation: number;
@@ -852,17 +863,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
852
863
  })[] | null;
853
864
  createdAt: number;
854
865
  input?: {
855
- kind: "text";
856
- value: string;
857
- } | {
858
- kind: "url";
859
- value: string;
860
- } | {
861
866
  kind: "quiz";
862
867
  answers: {
863
868
  [k: string]: string;
864
869
  };
865
870
  release?: string | undefined;
871
+ } | {
872
+ kind: "text";
873
+ value: string;
874
+ } | {
875
+ kind: "url";
876
+ value: string;
866
877
  } | undefined;
867
878
  }>;
868
879
  experience: () => Promise<{
@@ -903,7 +914,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
903
914
  start: number;
904
915
  end?: number | undefined;
905
916
  };
906
- enrollment: "none" | "required";
917
+ enrollment: "required" | "none";
907
918
  posts: "after-enrollment" | "since-start";
908
919
  historical: "staff" | "automatic" | "claim";
909
920
  } | undefined;
@@ -931,12 +942,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
931
942
  actor?: "member" | "staff" | undefined;
932
943
  } | {
933
944
  kind: "manual";
934
- input: "none" | "quiz" | "photo";
945
+ input: "quiz" | "photo" | "none";
935
946
  actor?: "member" | "staff" | undefined;
936
947
  };
937
948
  availability: {
938
949
  kind: "available";
939
- input: "text" | "url" | "none" | "quiz" | "photo";
950
+ input: "quiz" | "url" | "text" | "photo" | "none";
940
951
  } | {
941
952
  kind: "completed";
942
953
  } | {
@@ -974,7 +985,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
974
985
  kind: "keyed";
975
986
  };
976
987
  completionCount: number;
977
- visibility: "visible" | "hidden";
988
+ visibility: "hidden" | "visible";
978
989
  missing: {
979
990
  quest: string;
980
991
  title: string;
@@ -985,7 +996,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
985
996
  quest: string;
986
997
  member: string;
987
998
  evidence: string | null;
988
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
999
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
989
1000
  reason: string | null;
990
1001
  retries: number;
991
1002
  generation: number;
@@ -1019,22 +1030,22 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1019
1030
  })[] | null;
1020
1031
  createdAt: number;
1021
1032
  input?: {
1022
- kind: "text";
1023
- value: string;
1024
- } | {
1025
- kind: "url";
1026
- value: string;
1027
- } | {
1028
1033
  kind: "quiz";
1029
1034
  answers: {
1030
1035
  [k: string]: string;
1031
1036
  };
1032
1037
  release?: string | undefined;
1038
+ } | {
1039
+ kind: "text";
1040
+ value: string;
1041
+ } | {
1042
+ kind: "url";
1043
+ value: string;
1033
1044
  } | undefined;
1034
1045
  } | null;
1035
1046
  release: string;
1036
- interaction: "staff" | "text" | "url" | "automatic" | "claim" | "quiz" | "photo";
1037
- lifecycle: "paused" | "active" | "archived";
1047
+ interaction: "quiz" | "url" | "text" | "staff" | "photo" | "automatic" | "claim";
1048
+ lifecycle: "active" | "paused" | "archived";
1038
1049
  rewards: ({
1039
1050
  kind: "points";
1040
1051
  label: string;
@@ -1128,7 +1139,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1128
1139
  start: number;
1129
1140
  end?: number | undefined;
1130
1141
  };
1131
- enrollment: "none" | "required";
1142
+ enrollment: "required" | "none";
1132
1143
  posts: "after-enrollment" | "since-start";
1133
1144
  historical: "staff" | "automatic" | "claim";
1134
1145
  } | undefined;
@@ -1156,12 +1167,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1156
1167
  actor?: "member" | "staff" | undefined;
1157
1168
  } | {
1158
1169
  kind: "manual";
1159
- input: "none" | "quiz" | "photo";
1170
+ input: "quiz" | "photo" | "none";
1160
1171
  actor?: "member" | "staff" | undefined;
1161
1172
  };
1162
1173
  availability: {
1163
1174
  kind: "available";
1164
- input: "text" | "url" | "none" | "quiz" | "photo";
1175
+ input: "quiz" | "url" | "text" | "photo" | "none";
1165
1176
  } | {
1166
1177
  kind: "completed";
1167
1178
  } | {
@@ -1199,7 +1210,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1199
1210
  kind: "keyed";
1200
1211
  };
1201
1212
  completionCount: number;
1202
- visibility: "visible" | "hidden";
1213
+ visibility: "hidden" | "visible";
1203
1214
  missing: {
1204
1215
  quest: string;
1205
1216
  title: string;
@@ -1210,7 +1221,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1210
1221
  quest: string;
1211
1222
  member: string;
1212
1223
  evidence: string | null;
1213
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
1224
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
1214
1225
  reason: string | null;
1215
1226
  retries: number;
1216
1227
  generation: number;
@@ -1244,22 +1255,22 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1244
1255
  })[] | null;
1245
1256
  createdAt: number;
1246
1257
  input?: {
1247
- kind: "text";
1248
- value: string;
1249
- } | {
1250
- kind: "url";
1251
- value: string;
1252
- } | {
1253
1258
  kind: "quiz";
1254
1259
  answers: {
1255
1260
  [k: string]: string;
1256
1261
  };
1257
1262
  release?: string | undefined;
1263
+ } | {
1264
+ kind: "text";
1265
+ value: string;
1266
+ } | {
1267
+ kind: "url";
1268
+ value: string;
1258
1269
  } | undefined;
1259
1270
  } | null;
1260
1271
  release: string;
1261
- interaction: "staff" | "text" | "url" | "automatic" | "claim" | "quiz" | "photo";
1262
- lifecycle: "paused" | "active" | "archived";
1272
+ interaction: "quiz" | "url" | "text" | "staff" | "photo" | "automatic" | "claim";
1273
+ lifecycle: "active" | "paused" | "archived";
1263
1274
  rewards: ({
1264
1275
  kind: "points";
1265
1276
  label: string;
@@ -1356,7 +1367,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1356
1367
  start: number;
1357
1368
  end?: number | undefined;
1358
1369
  };
1359
- enrollment: "none" | "required";
1370
+ enrollment: "required" | "none";
1360
1371
  posts: "after-enrollment" | "since-start";
1361
1372
  historical: "staff" | "automatic" | "claim";
1362
1373
  } | undefined;
@@ -1384,12 +1395,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1384
1395
  actor?: "member" | "staff" | undefined;
1385
1396
  } | {
1386
1397
  kind: "manual";
1387
- input: "none" | "quiz" | "photo";
1398
+ input: "quiz" | "photo" | "none";
1388
1399
  actor?: "member" | "staff" | undefined;
1389
1400
  };
1390
1401
  availability: {
1391
1402
  kind: "available";
1392
- input: "text" | "url" | "none" | "quiz" | "photo";
1403
+ input: "quiz" | "url" | "text" | "photo" | "none";
1393
1404
  } | {
1394
1405
  kind: "completed";
1395
1406
  } | {
@@ -1427,7 +1438,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1427
1438
  kind: "keyed";
1428
1439
  };
1429
1440
  completionCount: number;
1430
- visibility: "visible" | "hidden";
1441
+ visibility: "hidden" | "visible";
1431
1442
  missing: {
1432
1443
  quest: string;
1433
1444
  title: string;
@@ -1438,7 +1449,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1438
1449
  quest: string;
1439
1450
  member: string;
1440
1451
  evidence: string | null;
1441
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
1452
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
1442
1453
  reason: string | null;
1443
1454
  retries: number;
1444
1455
  generation: number;
@@ -1472,22 +1483,22 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1472
1483
  })[] | null;
1473
1484
  createdAt: number;
1474
1485
  input?: {
1475
- kind: "text";
1476
- value: string;
1477
- } | {
1478
- kind: "url";
1479
- value: string;
1480
- } | {
1481
1486
  kind: "quiz";
1482
1487
  answers: {
1483
1488
  [k: string]: string;
1484
1489
  };
1485
1490
  release?: string | undefined;
1491
+ } | {
1492
+ kind: "text";
1493
+ value: string;
1494
+ } | {
1495
+ kind: "url";
1496
+ value: string;
1486
1497
  } | undefined;
1487
1498
  } | null;
1488
1499
  release: string;
1489
- interaction: "staff" | "text" | "url" | "automatic" | "claim" | "quiz" | "photo";
1490
- lifecycle: "paused" | "active" | "archived";
1500
+ interaction: "quiz" | "url" | "text" | "staff" | "photo" | "automatic" | "claim";
1501
+ lifecycle: "active" | "paused" | "archived";
1491
1502
  rewards: ({
1492
1503
  kind: "points";
1493
1504
  label: string;
@@ -1553,7 +1564,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1553
1564
  wallets: {
1554
1565
  list: () => Promise<{
1555
1566
  chain: "solana" | "eip155" | "cosmos";
1556
- network: "cosmos:pio-mainnet-1" | "cosmos:pio-testnet-1" | null;
1567
+ network: `cosmos:${string}` | null;
1557
1568
  address: string;
1558
1569
  verifiedAt: number;
1559
1570
  revision: number;
@@ -1563,14 +1574,14 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1563
1574
  id: string;
1564
1575
  purpose: "link" | "sign-in";
1565
1576
  chain: "solana" | "eip155" | "cosmos";
1566
- network: "cosmos:pio-mainnet-1" | "cosmos:pio-testnet-1" | null;
1577
+ network: `cosmos:${string}` | null;
1567
1578
  address: string;
1568
1579
  message: string;
1569
1580
  expiresAt: number;
1570
1581
  }>;
1571
1582
  verify: (input: zod.input<typeof walletSignatureSchema>, session: string) => Promise<{
1572
1583
  chain: "solana" | "eip155" | "cosmos";
1573
- network: "cosmos:pio-mainnet-1" | "cosmos:pio-testnet-1" | null;
1584
+ network: `cosmos:${string}` | null;
1574
1585
  address: string;
1575
1586
  verifiedAt: number;
1576
1587
  revision: number;
@@ -1581,7 +1592,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1581
1592
  }>;
1582
1593
  link: (signer: WalletSigner) => Promise<{
1583
1594
  chain: "solana" | "eip155" | "cosmos";
1584
- network: "cosmos:pio-mainnet-1" | "cosmos:pio-testnet-1" | null;
1595
+ network: `cosmos:${string}` | null;
1585
1596
  address: string;
1586
1597
  verifiedAt: number;
1587
1598
  revision: number;
@@ -1616,7 +1627,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1616
1627
  configured: boolean;
1617
1628
  }[];
1618
1629
  email: boolean;
1619
- wallets: ("solana" | "eip155" | "cosmos:pio-mainnet-1" | "cosmos:pio-testnet-1")[];
1630
+ wallets: ("solana" | "eip155" | "cosmos")[];
1620
1631
  demo: boolean;
1621
1632
  }>;
1622
1633
  start: (provider: AuthProvider, mode: "sign-in" | "connect") => Promise<{
@@ -1647,7 +1658,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1647
1658
  id: string;
1648
1659
  purpose: "link" | "sign-in";
1649
1660
  chain: "solana" | "eip155" | "cosmos";
1650
- network: "cosmos:pio-mainnet-1" | "cosmos:pio-testnet-1" | null;
1661
+ network: `cosmos:${string}` | null;
1651
1662
  address: string;
1652
1663
  message: string;
1653
1664
  expiresAt: number;
@@ -1789,7 +1800,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1789
1800
  quest: string;
1790
1801
  member: string;
1791
1802
  evidence: string | null;
1792
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
1803
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
1793
1804
  reason: string | null;
1794
1805
  retries: number;
1795
1806
  generation: number;
@@ -1823,17 +1834,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1823
1834
  })[] | null;
1824
1835
  createdAt: number;
1825
1836
  input?: {
1826
- kind: "text";
1827
- value: string;
1828
- } | {
1829
- kind: "url";
1830
- value: string;
1831
- } | {
1832
1837
  kind: "quiz";
1833
1838
  answers: {
1834
1839
  [k: string]: string;
1835
1840
  };
1836
1841
  release?: string | undefined;
1842
+ } | {
1843
+ kind: "text";
1844
+ value: string;
1845
+ } | {
1846
+ kind: "url";
1847
+ value: string;
1837
1848
  } | undefined;
1838
1849
  }>;
1839
1850
  progress: () => Promise<{
@@ -1874,7 +1885,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1874
1885
  start: number;
1875
1886
  end?: number | undefined;
1876
1887
  };
1877
- enrollment: "none" | "required";
1888
+ enrollment: "required" | "none";
1878
1889
  posts: "after-enrollment" | "since-start";
1879
1890
  historical: "staff" | "automatic" | "claim";
1880
1891
  } | undefined;
@@ -1902,12 +1913,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1902
1913
  actor?: "member" | "staff" | undefined;
1903
1914
  } | {
1904
1915
  kind: "manual";
1905
- input: "none" | "quiz" | "photo";
1916
+ input: "quiz" | "photo" | "none";
1906
1917
  actor?: "member" | "staff" | undefined;
1907
1918
  };
1908
1919
  availability: {
1909
1920
  kind: "available";
1910
- input: "text" | "url" | "none" | "quiz" | "photo";
1921
+ input: "quiz" | "url" | "text" | "photo" | "none";
1911
1922
  } | {
1912
1923
  kind: "completed";
1913
1924
  } | {
@@ -1945,7 +1956,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1945
1956
  kind: "keyed";
1946
1957
  };
1947
1958
  completionCount: number;
1948
- visibility: "visible" | "hidden";
1959
+ visibility: "hidden" | "visible";
1949
1960
  missing: {
1950
1961
  quest: string;
1951
1962
  title: string;
@@ -1956,7 +1967,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1956
1967
  quest: string;
1957
1968
  member: string;
1958
1969
  evidence: string | null;
1959
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
1970
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
1960
1971
  reason: string | null;
1961
1972
  retries: number;
1962
1973
  generation: number;
@@ -1990,17 +2001,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1990
2001
  })[] | null;
1991
2002
  createdAt: number;
1992
2003
  input?: {
1993
- kind: "text";
1994
- value: string;
1995
- } | {
1996
- kind: "url";
1997
- value: string;
1998
- } | {
1999
2004
  kind: "quiz";
2000
2005
  answers: {
2001
2006
  [k: string]: string;
2002
2007
  };
2003
2008
  release?: string | undefined;
2009
+ } | {
2010
+ kind: "text";
2011
+ value: string;
2012
+ } | {
2013
+ kind: "url";
2014
+ value: string;
2004
2015
  } | undefined;
2005
2016
  } | null;
2006
2017
  key?: string | undefined;
@@ -2139,7 +2150,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2139
2150
  quest: string;
2140
2151
  member: string;
2141
2152
  evidence: string | null;
2142
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
2153
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
2143
2154
  reason: string | null;
2144
2155
  retries: number;
2145
2156
  generation: number;
@@ -2173,17 +2184,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2173
2184
  })[] | null;
2174
2185
  createdAt: number;
2175
2186
  input?: {
2176
- kind: "text";
2177
- value: string;
2178
- } | {
2179
- kind: "url";
2180
- value: string;
2181
- } | {
2182
2187
  kind: "quiz";
2183
2188
  answers: {
2184
2189
  [k: string]: string;
2185
2190
  };
2186
2191
  release?: string | undefined;
2192
+ } | {
2193
+ kind: "text";
2194
+ value: string;
2195
+ } | {
2196
+ kind: "url";
2197
+ value: string;
2187
2198
  } | undefined;
2188
2199
  }>;
2189
2200
  upload: (file: File) => Promise<{
@@ -2205,7 +2216,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2205
2216
  code: string;
2206
2217
  definition: {
2207
2218
  quest: string;
2208
- runtimeVersion: 2 | 1;
2219
+ runtimeVersion: 1 | 2;
2209
2220
  title: string;
2210
2221
  presentation: {
2211
2222
  quiz?: {
@@ -2344,7 +2355,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2344
2355
  start: number;
2345
2356
  end?: number | undefined;
2346
2357
  };
2347
- enrollment: "none" | "required";
2358
+ enrollment: "required" | "none";
2348
2359
  posts: "after-enrollment" | "since-start";
2349
2360
  historical: "staff" | "automatic" | "claim";
2350
2361
  } | undefined;
@@ -2372,7 +2383,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2372
2383
  actor?: "member" | "staff" | undefined;
2373
2384
  } | {
2374
2385
  kind: "manual";
2375
- input: "none" | "quiz" | "photo";
2386
+ input: "quiz" | "photo" | "none";
2376
2387
  actor?: "member" | "staff" | undefined;
2377
2388
  };
2378
2389
  requires: {
@@ -2388,10 +2399,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2388
2399
  } | {
2389
2400
  kind: "keyed";
2390
2401
  };
2391
- visibility: "visible" | "hidden";
2402
+ visibility: "hidden" | "visible";
2392
2403
  budgets: {
2393
2404
  id: string;
2394
- scope: "project" | "member";
2405
+ scope: "member" | "project";
2395
2406
  period: "day" | "lifetime" | "week";
2396
2407
  limit: number;
2397
2408
  cost: number | {
@@ -2408,7 +2419,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2408
2419
  code: string;
2409
2420
  definition: {
2410
2421
  quest: string;
2411
- runtimeVersion: 2 | 1;
2422
+ runtimeVersion: 1 | 2;
2412
2423
  title: string;
2413
2424
  presentation: {
2414
2425
  quiz?: {
@@ -2547,7 +2558,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2547
2558
  start: number;
2548
2559
  end?: number | undefined;
2549
2560
  };
2550
- enrollment: "none" | "required";
2561
+ enrollment: "required" | "none";
2551
2562
  posts: "after-enrollment" | "since-start";
2552
2563
  historical: "staff" | "automatic" | "claim";
2553
2564
  } | undefined;
@@ -2575,7 +2586,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2575
2586
  actor?: "member" | "staff" | undefined;
2576
2587
  } | {
2577
2588
  kind: "manual";
2578
- input: "none" | "quiz" | "photo";
2589
+ input: "quiz" | "photo" | "none";
2579
2590
  actor?: "member" | "staff" | undefined;
2580
2591
  };
2581
2592
  requires: {
@@ -2591,10 +2602,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2591
2602
  } | {
2592
2603
  kind: "keyed";
2593
2604
  };
2594
- visibility: "visible" | "hidden";
2605
+ visibility: "hidden" | "visible";
2595
2606
  budgets: {
2596
2607
  id: string;
2597
- scope: "project" | "member";
2608
+ scope: "member" | "project";
2598
2609
  period: "day" | "lifetime" | "week";
2599
2610
  limit: number;
2600
2611
  cost: number | {
@@ -2610,7 +2621,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2610
2621
  snapshot: () => Promise<{
2611
2622
  releases: {
2612
2623
  quest: string;
2613
- runtimeVersion: 2 | 1;
2624
+ runtimeVersion: 1 | 2;
2614
2625
  title: string;
2615
2626
  presentation: {
2616
2627
  quiz?: {
@@ -2749,7 +2760,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2749
2760
  start: number;
2750
2761
  end?: number | undefined;
2751
2762
  };
2752
- enrollment: "none" | "required";
2763
+ enrollment: "required" | "none";
2753
2764
  posts: "after-enrollment" | "since-start";
2754
2765
  historical: "staff" | "automatic" | "claim";
2755
2766
  } | undefined;
@@ -2777,7 +2788,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2777
2788
  actor?: "member" | "staff" | undefined;
2778
2789
  } | {
2779
2790
  kind: "manual";
2780
- input: "none" | "quiz" | "photo";
2791
+ input: "quiz" | "photo" | "none";
2781
2792
  actor?: "member" | "staff" | undefined;
2782
2793
  };
2783
2794
  requires: {
@@ -2793,10 +2804,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2793
2804
  } | {
2794
2805
  kind: "keyed";
2795
2806
  };
2796
- visibility: "visible" | "hidden";
2807
+ visibility: "hidden" | "visible";
2797
2808
  budgets: {
2798
2809
  id: string;
2799
- scope: "project" | "member";
2810
+ scope: "member" | "project";
2800
2811
  period: "day" | "lifetime" | "week";
2801
2812
  limit: number;
2802
2813
  cost: number | {
@@ -2808,7 +2819,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2808
2819
  id: string;
2809
2820
  createdAt: number;
2810
2821
  legacy: boolean;
2811
- lifecycle: "paused" | "active" | "archived";
2822
+ lifecycle: "active" | "paused" | "archived";
2812
2823
  performance?: {
2813
2824
  metrics: ("likes" | "replies" | "reposts" | "quotes" | "views" | "bookmarks")[];
2814
2825
  maxAgeMs: number;
@@ -2928,7 +2939,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2928
2939
  quest: string;
2929
2940
  member: string;
2930
2941
  evidence: string | null;
2931
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
2942
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
2932
2943
  reason: string | null;
2933
2944
  retries: number;
2934
2945
  generation: number;
@@ -2962,17 +2973,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2962
2973
  })[] | null;
2963
2974
  createdAt: number;
2964
2975
  input?: {
2965
- kind: "text";
2966
- value: string;
2967
- } | {
2968
- kind: "url";
2969
- value: string;
2970
- } | {
2971
2976
  kind: "quiz";
2972
2977
  answers: {
2973
2978
  [k: string]: string;
2974
2979
  };
2975
2980
  release?: string | undefined;
2981
+ } | {
2982
+ kind: "text";
2983
+ value: string;
2984
+ } | {
2985
+ kind: "url";
2986
+ value: string;
2976
2987
  } | undefined;
2977
2988
  }[];
2978
2989
  balances: {
@@ -2993,7 +3004,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2993
3004
  }>;
2994
3005
  publish: (release: ReleaseInput) => Promise<{
2995
3006
  quest: string;
2996
- runtimeVersion: 2 | 1;
3007
+ runtimeVersion: 1 | 2;
2997
3008
  title: string;
2998
3009
  presentation: {
2999
3010
  quiz?: {
@@ -3132,7 +3143,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3132
3143
  start: number;
3133
3144
  end?: number | undefined;
3134
3145
  };
3135
- enrollment: "none" | "required";
3146
+ enrollment: "required" | "none";
3136
3147
  posts: "after-enrollment" | "since-start";
3137
3148
  historical: "staff" | "automatic" | "claim";
3138
3149
  } | undefined;
@@ -3160,7 +3171,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3160
3171
  actor?: "member" | "staff" | undefined;
3161
3172
  } | {
3162
3173
  kind: "manual";
3163
- input: "none" | "quiz" | "photo";
3174
+ input: "quiz" | "photo" | "none";
3164
3175
  actor?: "member" | "staff" | undefined;
3165
3176
  };
3166
3177
  requires: {
@@ -3176,10 +3187,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3176
3187
  } | {
3177
3188
  kind: "keyed";
3178
3189
  };
3179
- visibility: "visible" | "hidden";
3190
+ visibility: "hidden" | "visible";
3180
3191
  budgets: {
3181
3192
  id: string;
3182
- scope: "project" | "member";
3193
+ scope: "member" | "project";
3183
3194
  period: "day" | "lifetime" | "week";
3184
3195
  limit: number;
3185
3196
  cost: number | {
@@ -3191,7 +3202,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3191
3202
  id: string;
3192
3203
  createdAt: number;
3193
3204
  legacy: boolean;
3194
- lifecycle: "paused" | "active" | "archived";
3205
+ lifecycle: "active" | "paused" | "archived";
3195
3206
  performance?: {
3196
3207
  metrics: ("likes" | "replies" | "reposts" | "quotes" | "views" | "bookmarks")[];
3197
3208
  maxAgeMs: number;
@@ -3224,7 +3235,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3224
3235
  }>;
3225
3236
  publishBatch: (releases: ReleaseInput[]) => Promise<{
3226
3237
  quest: string;
3227
- runtimeVersion: 2 | 1;
3238
+ runtimeVersion: 1 | 2;
3228
3239
  title: string;
3229
3240
  presentation: {
3230
3241
  quiz?: {
@@ -3363,7 +3374,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3363
3374
  start: number;
3364
3375
  end?: number | undefined;
3365
3376
  };
3366
- enrollment: "none" | "required";
3377
+ enrollment: "required" | "none";
3367
3378
  posts: "after-enrollment" | "since-start";
3368
3379
  historical: "staff" | "automatic" | "claim";
3369
3380
  } | undefined;
@@ -3391,7 +3402,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3391
3402
  actor?: "member" | "staff" | undefined;
3392
3403
  } | {
3393
3404
  kind: "manual";
3394
- input: "none" | "quiz" | "photo";
3405
+ input: "quiz" | "photo" | "none";
3395
3406
  actor?: "member" | "staff" | undefined;
3396
3407
  };
3397
3408
  requires: {
@@ -3407,10 +3418,10 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3407
3418
  } | {
3408
3419
  kind: "keyed";
3409
3420
  };
3410
- visibility: "visible" | "hidden";
3421
+ visibility: "hidden" | "visible";
3411
3422
  budgets: {
3412
3423
  id: string;
3413
- scope: "project" | "member";
3424
+ scope: "member" | "project";
3414
3425
  period: "day" | "lifetime" | "week";
3415
3426
  limit: number;
3416
3427
  cost: number | {
@@ -3422,7 +3433,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3422
3433
  id: string;
3423
3434
  createdAt: number;
3424
3435
  legacy: boolean;
3425
- lifecycle: "paused" | "active" | "archived";
3436
+ lifecycle: "active" | "paused" | "archived";
3426
3437
  performance?: {
3427
3438
  metrics: ("likes" | "replies" | "reposts" | "quotes" | "views" | "bookmarks")[];
3428
3439
  maxAgeMs: number;
@@ -3491,7 +3502,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3491
3502
  start: number;
3492
3503
  end?: number | undefined;
3493
3504
  };
3494
- enrollment: "none" | "required";
3505
+ enrollment: "required" | "none";
3495
3506
  posts: "after-enrollment" | "since-start";
3496
3507
  historical: "staff" | "automatic" | "claim";
3497
3508
  } | undefined;
@@ -3519,12 +3530,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3519
3530
  actor?: "member" | "staff" | undefined;
3520
3531
  } | {
3521
3532
  kind: "manual";
3522
- input: "none" | "quiz" | "photo";
3533
+ input: "quiz" | "photo" | "none";
3523
3534
  actor?: "member" | "staff" | undefined;
3524
3535
  };
3525
3536
  availability: {
3526
3537
  kind: "available";
3527
- input: "text" | "url" | "none" | "quiz" | "photo";
3538
+ input: "quiz" | "url" | "text" | "photo" | "none";
3528
3539
  } | {
3529
3540
  kind: "completed";
3530
3541
  } | {
@@ -3562,7 +3573,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3562
3573
  kind: "keyed";
3563
3574
  };
3564
3575
  completionCount: number;
3565
- visibility: "visible" | "hidden";
3576
+ visibility: "hidden" | "visible";
3566
3577
  missing: {
3567
3578
  quest: string;
3568
3579
  title: string;
@@ -3573,7 +3584,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3573
3584
  quest: string;
3574
3585
  member: string;
3575
3586
  evidence: string | null;
3576
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
3587
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
3577
3588
  reason: string | null;
3578
3589
  retries: number;
3579
3590
  generation: number;
@@ -3607,17 +3618,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3607
3618
  })[] | null;
3608
3619
  createdAt: number;
3609
3620
  input?: {
3610
- kind: "text";
3611
- value: string;
3612
- } | {
3613
- kind: "url";
3614
- value: string;
3615
- } | {
3616
3621
  kind: "quiz";
3617
3622
  answers: {
3618
3623
  [k: string]: string;
3619
3624
  };
3620
3625
  release?: string | undefined;
3626
+ } | {
3627
+ kind: "text";
3628
+ value: string;
3629
+ } | {
3630
+ kind: "url";
3631
+ value: string;
3621
3632
  } | undefined;
3622
3633
  } | null;
3623
3634
  key?: string | undefined;
@@ -3999,14 +4010,14 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
3999
4010
  content: {
4000
4011
  performance: (input: zod.infer<typeof contentPerformanceQuerySchema>) => Promise<{
4001
4012
  current: {
4002
- state: "pending" | "superseded" | "qualified" | "unqualified" | "needs-review" | "failed" | "content-pending" | "content-unqualified" | "waiting";
4013
+ state: "needs-review" | "pending" | "failed" | "superseded" | "qualified" | "unqualified" | "content-pending" | "content-unqualified" | "waiting";
4003
4014
  reason: string | null;
4004
4015
  contentAttempt: string;
4005
4016
  attempt: string | null;
4006
4017
  reward: {
4007
4018
  attempt: string | null;
4008
4019
  completion: string | null;
4009
- state: "excluded" | "unresolved" | "awarded";
4020
+ state: "awarded" | "excluded" | "unresolved";
4010
4021
  };
4011
4022
  };
4012
4023
  items: {
@@ -4015,7 +4026,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4015
4026
  observation: string;
4016
4027
  observedAt: number;
4017
4028
  metrics: Partial<Record<"likes" | "replies" | "reposts" | "quotes" | "views" | "bookmarks", number>>;
4018
- state: "pending" | "superseded" | "qualified" | "unqualified" | "needs-review" | "failed";
4029
+ state: "needs-review" | "pending" | "failed" | "superseded" | "qualified" | "unqualified";
4019
4030
  reason: string | null;
4020
4031
  }[];
4021
4032
  next: number | null;
@@ -4030,12 +4041,12 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4030
4041
  revision: string;
4031
4042
  observation: string;
4032
4043
  current: boolean;
4033
- state: "pending" | "superseded" | "qualified" | "unqualified" | "needs-review" | "failed" | "stale" | "blocked" | "unavailable";
4044
+ state: "needs-review" | "pending" | "failed" | "superseded" | "qualified" | "unqualified" | "stale" | "blocked" | "unavailable";
4034
4045
  reason: string | null;
4035
4046
  reward: {
4036
4047
  attempt: string | null;
4037
4048
  completion: string | null;
4038
- state: "excluded" | "unresolved" | "awarded";
4049
+ state: "awarded" | "excluded" | "unresolved";
4039
4050
  };
4040
4051
  }[];
4041
4052
  next: number | null;
@@ -4045,7 +4056,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4045
4056
  quest: string;
4046
4057
  content: string;
4047
4058
  release: string;
4048
- state: "admitted" | "pending" | "excluded";
4059
+ state: "pending" | "admitted" | "excluded";
4049
4060
  reason: string | null;
4050
4061
  attempt: string | null;
4051
4062
  }[];
@@ -4060,7 +4071,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4060
4071
  quest: string;
4061
4072
  content: string;
4062
4073
  release: string;
4063
- state: "admitted" | "pending" | "excluded";
4074
+ state: "pending" | "admitted" | "excluded";
4064
4075
  reason: string | null;
4065
4076
  attempt: string | null;
4066
4077
  }>;
@@ -4071,7 +4082,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4071
4082
  quest: string;
4072
4083
  member: string;
4073
4084
  evidence: string | null;
4074
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
4085
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
4075
4086
  reason: string | null;
4076
4087
  retries: number;
4077
4088
  generation: number;
@@ -4105,17 +4116,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4105
4116
  })[] | null;
4106
4117
  createdAt: number;
4107
4118
  input?: {
4108
- kind: "text";
4109
- value: string;
4110
- } | {
4111
- kind: "url";
4112
- value: string;
4113
- } | {
4114
4119
  kind: "quiz";
4115
4120
  answers: {
4116
4121
  [k: string]: string;
4117
4122
  };
4118
4123
  release?: string | undefined;
4124
+ } | {
4125
+ kind: "text";
4126
+ value: string;
4127
+ } | {
4128
+ kind: "url";
4129
+ value: string;
4119
4130
  } | undefined;
4120
4131
  }>;
4121
4132
  retry: (id: string) => Promise<{
@@ -4124,7 +4135,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4124
4135
  quest: string;
4125
4136
  member: string;
4126
4137
  evidence: string | null;
4127
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
4138
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
4128
4139
  reason: string | null;
4129
4140
  retries: number;
4130
4141
  generation: number;
@@ -4158,17 +4169,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4158
4169
  })[] | null;
4159
4170
  createdAt: number;
4160
4171
  input?: {
4161
- kind: "text";
4162
- value: string;
4163
- } | {
4164
- kind: "url";
4165
- value: string;
4166
- } | {
4167
4172
  kind: "quiz";
4168
4173
  answers: {
4169
4174
  [k: string]: string;
4170
4175
  };
4171
4176
  release?: string | undefined;
4177
+ } | {
4178
+ kind: "text";
4179
+ value: string;
4180
+ } | {
4181
+ kind: "url";
4182
+ value: string;
4172
4183
  } | undefined;
4173
4184
  }>;
4174
4185
  decide: (id: string, input: {
@@ -4182,7 +4193,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4182
4193
  quest: string;
4183
4194
  member: string;
4184
4195
  evidence: string | null;
4185
- status: "needs-review" | "failed" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected";
4196
+ status: "needs-review" | "queued" | "evaluating" | "accepted" | "progressed" | "rejected" | "failed";
4186
4197
  reason: string | null;
4187
4198
  retries: number;
4188
4199
  generation: number;
@@ -4216,17 +4227,17 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
4216
4227
  })[] | null;
4217
4228
  createdAt: number;
4218
4229
  input?: {
4219
- kind: "text";
4220
- value: string;
4221
- } | {
4222
- kind: "url";
4223
- value: string;
4224
- } | {
4225
4230
  kind: "quiz";
4226
4231
  answers: {
4227
4232
  [k: string]: string;
4228
4233
  };
4229
4234
  release?: string | undefined;
4235
+ } | {
4236
+ kind: "text";
4237
+ value: string;
4238
+ } | {
4239
+ kind: "url";
4240
+ value: string;
4230
4241
  } | undefined;
4231
4242
  }>;
4232
4243
  };