@domino-sdk/relay 1.54.0 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +1848 -0
  2. package/dist/analytics-URV-mxjH.d.ts +482 -0
  3. package/dist/{attempt-captures-QC4kTA44.d.ts → attempt-captures-CxxO7DeD.d.ts} +1 -1
  4. package/dist/authoring.d.ts +233 -78
  5. package/dist/authoring.js +112 -14
  6. package/dist/{automatic-outcomes-CVyZHxir.d.ts → automatic-outcomes-DxW_v5Wc.d.ts} +5 -2
  7. package/dist/avatar.d.ts +1 -1
  8. package/dist/browser.d.ts +7 -7
  9. package/dist/browser.js +10 -10
  10. package/dist/{capability-error-FQGGb5xS.d.ts → capability-error-DSd8EMQC.d.ts} +76 -2
  11. package/dist/{chunk-53JMTUWG.js → chunk-56DBFNR2.js} +1 -1
  12. package/dist/chunk-C7QZ4UBB.js +937 -0
  13. package/dist/chunk-F6HECAXA.js +661 -0
  14. package/dist/{chunk-JL7J3EQQ.js → chunk-GL43VQ5D.js} +16 -16
  15. package/dist/{chunk-GTQJSDBS.js → chunk-IUF7DW76.js} +27 -16
  16. package/dist/{chunk-QIDQWXSF.js → chunk-IZRITLVV.js} +2 -2
  17. package/dist/{chunk-S2PMKZSX.js → chunk-SABMNPF2.js} +21 -2
  18. package/dist/{chunk-XFAYQFRO.js → chunk-TLK2MD4S.js} +1 -1
  19. package/dist/{chunk-ZJ3FVZRP.js → chunk-UY6KMLQG.js} +10 -3
  20. package/dist/{chunk-RP4LLEON.js → chunk-VFBQVY4X.js} +1 -1
  21. package/dist/{chunk-YVC3B72P.js → chunk-WHG5WE43.js} +1 -1
  22. package/dist/chunk-WHMXXHPX.js +344 -0
  23. package/dist/{chunk-TL5TL5RD.js → chunk-WUEQOKJH.js} +4 -4
  24. package/dist/{chunk-7BNCLWAO.js → chunk-XALIFNMD.js} +1 -1
  25. package/dist/{chunk-IELNFM3V.js → chunk-YCOKTQ4E.js} +96 -7
  26. package/dist/{chunk-LPHXTZDA.js → chunk-YE3XYB2F.js} +2 -2
  27. package/dist/{chunk-K6TVMNU4.js → chunk-YEVD4A5X.js} +1 -1
  28. package/dist/{client-CzNtl8UO.d.ts → client-C4zUZKpj.d.ts} +35 -7
  29. package/dist/{deployments-ovtqtAcx.d.ts → deployments-B32QS1CI.d.ts} +1060 -233
  30. package/dist/{groups-B5R1RCsl.d.ts → groups-O6onGPmC.d.ts} +131 -137
  31. package/dist/index.d.ts +8 -8
  32. package/dist/index.js +9 -9
  33. package/dist/integrations-C6_uUh-s.d.ts +584 -0
  34. package/dist/internal.d.ts +11 -10
  35. package/dist/internal.js +8 -8
  36. package/dist/{offers-CH1RZekg.d.ts → offers-BMDNcvwB.d.ts} +2 -2
  37. package/dist/{pages-BTlOg8sl.d.ts → pages-BFloMpyQ.d.ts} +25 -1
  38. package/dist/portal-proxy.d.ts +11 -1
  39. package/dist/portal-proxy.js +26 -5
  40. package/dist/{profiles-Cdv4BSd_.d.ts → profiles-BoOK03cR.d.ts} +2 -0
  41. package/dist/react/index.d.ts +488 -13
  42. package/dist/react/index.js +50 -15
  43. package/dist/runtime/authoring.js +1 -1
  44. package/dist/runtime/chunks/WKATKZXE.js +1 -0
  45. package/dist/runtime/manifest.json +3 -3
  46. package/dist/runtime/schema.js +1 -1
  47. package/dist/{schema-BJ9bOgpN.d.ts → schema-C4m9RhCR.d.ts} +166 -6
  48. package/dist/schema.d.ts +392 -334
  49. package/dist/schema.js +84 -40
  50. package/dist/server/index.d.ts +11 -10
  51. package/dist/server/index.js +1109 -854
  52. package/dist/{submission-input-BNah53go.d.ts → submission-input-BbdawqVy.d.ts} +2 -2
  53. package/dist/{telegram-browser-C36j_6v-.d.ts → telegram-browser-CwaxROAZ.d.ts} +1 -1
  54. package/dist/testing.d.ts +85 -12
  55. package/dist/testing.js +322 -37
  56. package/dist/{transport-C8BlCzmF.d.ts → transport-CZJOW5Sr.d.ts} +7648 -3529
  57. package/dist/vite.d.ts +54 -1
  58. package/dist/vite.js +35 -0
  59. package/dist/{x-BfQcsDp0.d.ts → x-1czZFVUW.d.ts} +1 -1
  60. package/package.json +3 -2
  61. package/dist/chunk-2NUD237O.js +0 -102
  62. package/dist/chunk-CCE2JWES.js +0 -1083
  63. package/dist/integrations-CllF-kWg.d.ts +0 -314
  64. package/dist/runtime/chunks/AVRVSLHX.js +0 -1
@@ -1,20 +1,20 @@
1
- import { B as Badge, b as MemberBadges, O as Offer, e as Redemption } from '../offers-CH1RZekg.js';
1
+ import { B as Badge, b as MemberBadges, O as Offer, e as Redemption } from '../offers-BMDNcvwB.js';
2
2
  import { b as ParticipantSession, R as RelayEvent, P as ParticipantActivity, M as MemberSummary } from '../participant-activity-iciCEs_8.js';
3
- import { g as RelayError, R as RelayClient, m as SubmissionDraft } from '../client-CzNtl8UO.js';
4
- import { P as Page, D as collectionViewSchema, j as QuestView, g as QuestOutcomeQuery, e as QuestOutcome } from '../pages-BTlOg8sl.js';
3
+ import { g as RelayError, R as RelayClient, m as SubmissionDraft } from '../client-C4zUZKpj.js';
4
+ import { P as Page, D as collectionViewSchema, j as QuestView, g as QuestOutcomeQuery, e as QuestOutcome } from '../pages-BFloMpyQ.js';
5
5
  import * as react from 'react';
6
6
  import { ReactNode } from 'react';
7
7
  import { J as JSONType } from '../util.d-w9f9t3ua.js';
8
8
  import { z } from 'zod';
9
- import { E as Entitlement, a as AttemptStatus, T as TieredRewardReference } from '../schema-BJ9bOgpN.js';
9
+ import { E as Entitlement, a as AttemptStatus, f as PointEntry, e as PointBalances, j as PointLedgerReference, T as TieredRewardReference } from '../schema-C4m9RhCR.js';
10
10
  import { a as AuthProvider, A as AccountConnection } from '../accounts-DRPENuZe.js';
11
11
  export { T as TelegramAccountConnection, b as TelegramSignInMethods } from '../accounts-DRPENuZe.js';
12
- import { c as SignInMethods, C as CosmosChains, d as SignInOption, f as SignInUnavailable, T as TelegramSignInOption, g as SignInWallet, D as DiscoveredWallet } from '../telegram-browser-C36j_6v-.js';
13
- export { a as EmailSignInOption, O as OAuthSignInOption, b as SignInIcon, W as WalletSignInOption, t as telegramMiniAppInitData } from '../telegram-browser-C36j_6v-.js';
12
+ import { c as SignInMethods, C as CosmosChains, d as SignInOption, f as SignInUnavailable, T as TelegramSignInOption, g as SignInWallet, D as DiscoveredWallet } from '../telegram-browser-CwaxROAZ.js';
13
+ export { a as EmailSignInOption, O as OAuthSignInOption, b as SignInIcon, W as WalletSignInOption, t as telegramMiniAppInitData } from '../telegram-browser-CwaxROAZ.js';
14
14
  import { f as WalletSigner, d as WalletSignInNetwork, L as LinkedWallet } from '../wallet-Ac7OFpOr.js';
15
- import { h as LeaderboardPlacement, be as referralSummarySchema, g as LeaderboardPage, l as PointEntry, k as PointBalances, p as PointLedgerReference } from '../groups-B5R1RCsl.js';
16
- import { f as ProfileUpdate, e as ProfileSummary, a as ProfileCompletion, d as ProfileReferral } from '../profiles-Cdv4BSd_.js';
17
- import '../submission-input-BNah53go.js';
15
+ import { h as LeaderboardPlacement, b0 as referralSummarySchema, g as LeaderboardPage } from '../groups-O6onGPmC.js';
16
+ import { f as ProfileUpdate, e as ProfileSummary, a as ProfileCompletion, d as ProfileReferral } from '../profiles-BoOK03cR.js';
17
+ import '../submission-input-BbdawqVy.js';
18
18
  import '../action-DBzILFx9.js';
19
19
 
20
20
  /**
@@ -1241,6 +1241,451 @@ declare function useQuest(observed: QuestView): {
1241
1241
  } | null;
1242
1242
  } | null | undefined;
1243
1243
  retryAt?: number | undefined;
1244
+ nextAvailableAt?: number | undefined;
1245
+ };
1246
+ /** Input recovered after the quest changed. Prefill the form with it. */
1247
+ draft: SubmissionDraft | null;
1248
+ notice: QuestNotice;
1249
+ error: RelayError | null;
1250
+ /** True while `submit`, `resume`, `retry` or `restart` runs. */
1251
+ isPending: boolean;
1252
+ /** @deprecated Use `isPending`. Removed in 2.0.0. */
1253
+ busy: boolean;
1254
+ saved: SavedSubmission;
1255
+ /** Review and explicitly restart this terminally retired saved submission. */
1256
+ retired: boolean;
1257
+ /** The attempt the last "received" notice is about. */
1258
+ receipt: string | null;
1259
+ startingFresh: boolean;
1260
+ };
1261
+ /**
1262
+ * `useQuest()` plus its `questActionState()`: `open`, `counted` and `automatic` next to the
1263
+ * submission state and actions.
1264
+ */
1265
+ declare function useQuestAction(observed: QuestView): {
1266
+ open: boolean;
1267
+ counted: boolean;
1268
+ automatic: boolean;
1269
+ restart: () => Promise<void>;
1270
+ submit: (input: QuestInput) => Promise<void>;
1271
+ /** Finish an interrupted submission, or reopen an outdated draft. */
1272
+ resume: () => Promise<void>;
1273
+ /**
1274
+ * Re-run verification that failed to run. Never creates a new attempt.
1275
+ * Domino refuses this for automatic quests, so never offer it for them.
1276
+ */
1277
+ retry: () => Promise<void>;
1278
+ /** The newest known version of the quest. Render this, not the prop. */
1279
+ view: {
1280
+ quest: string;
1281
+ title: string;
1282
+ presentation: {
1283
+ steps?: {
1284
+ title: string;
1285
+ description?: string | undefined;
1286
+ action?: {
1287
+ kind: "link";
1288
+ url: string;
1289
+ label: string;
1290
+ } | undefined;
1291
+ }[] | undefined;
1292
+ image?: string | undefined;
1293
+ imageAlt?: string | undefined;
1294
+ requirements?: ({
1295
+ kind: "account";
1296
+ provider: "discord" | "x" | "google" | "apple";
1297
+ } | {
1298
+ kind: "wallet";
1299
+ chain?: "solana" | "eip155" | "cosmos" | undefined;
1300
+ })[] | undefined;
1301
+ quiz?: {
1302
+ id: string;
1303
+ prompt: string;
1304
+ choices: {
1305
+ id: string;
1306
+ label: string;
1307
+ }[];
1308
+ }[] | undefined;
1309
+ instructions?: string | undefined;
1310
+ video?: {
1311
+ url: string;
1312
+ poster?: string | undefined;
1313
+ captions?: {
1314
+ url: string;
1315
+ language: string;
1316
+ label: string;
1317
+ } | undefined;
1318
+ } | undefined;
1319
+ };
1320
+ connections: ("discord" | "x" | "google" | "apple")[];
1321
+ trigger: {
1322
+ kind: "manual";
1323
+ input: "text";
1324
+ constraints: {
1325
+ required: boolean;
1326
+ minLength: number;
1327
+ maxLength: number;
1328
+ };
1329
+ actor?: "member" | "staff" | undefined;
1330
+ } | {
1331
+ kind: "manual";
1332
+ input: "url";
1333
+ constraints: {
1334
+ required: boolean;
1335
+ allowedHosts?: string[] | undefined;
1336
+ };
1337
+ actor?: "member" | "staff" | undefined;
1338
+ } | {
1339
+ kind: "manual";
1340
+ input: "none" | "quiz" | "photo";
1341
+ actor?: "member" | "staff" | undefined;
1342
+ } | {
1343
+ kind: "automatic";
1344
+ tracker?: {
1345
+ tracker: string;
1346
+ source: string;
1347
+ on: "new-record" | "new-observation" | "data-changed";
1348
+ beneficiary: string;
1349
+ where?: {
1350
+ path: string;
1351
+ gt?: number | {
1352
+ setting: string;
1353
+ } | undefined;
1354
+ gte?: number | {
1355
+ setting: string;
1356
+ } | undefined;
1357
+ lt?: number | {
1358
+ setting: string;
1359
+ } | undefined;
1360
+ lte?: number | {
1361
+ setting: string;
1362
+ } | undefined;
1363
+ } | {
1364
+ path: string;
1365
+ equals: string | number | boolean;
1366
+ } | ({
1367
+ path: string;
1368
+ gt?: number | {
1369
+ setting: string;
1370
+ } | undefined;
1371
+ gte?: number | {
1372
+ setting: string;
1373
+ } | undefined;
1374
+ lt?: number | {
1375
+ setting: string;
1376
+ } | undefined;
1377
+ lte?: number | {
1378
+ setting: string;
1379
+ } | undefined;
1380
+ } | {
1381
+ path: string;
1382
+ equals: string | number | boolean;
1383
+ })[] | undefined;
1384
+ enrollment?: "none" | "required" | undefined;
1385
+ since?: "activation" | "window" | "enrollment" | undefined;
1386
+ historical?: "staff" | "claim" | "automatic" | undefined;
1387
+ content?: true | undefined;
1388
+ } | undefined;
1389
+ };
1390
+ availability: {
1391
+ kind: "available";
1392
+ input: "url" | "text" | "none" | "quiz" | "photo";
1393
+ } | {
1394
+ kind: "completed";
1395
+ } | {
1396
+ kind: "locked";
1397
+ missing: ({
1398
+ kind: "completion";
1399
+ quest: string;
1400
+ title: string;
1401
+ scope: "ever";
1402
+ } | {
1403
+ kind: "completion";
1404
+ quest: string;
1405
+ title: string;
1406
+ scope: "period";
1407
+ period: "day" | "week" | "month";
1408
+ resetsAt: number;
1409
+ } | {
1410
+ kind: "balance";
1411
+ balance: string;
1412
+ title: string;
1413
+ minimum: number;
1414
+ current: number;
1415
+ } | {
1416
+ kind: "group";
1417
+ group: string;
1418
+ title: string;
1419
+ })[];
1420
+ } | {
1421
+ kind: "blocked";
1422
+ reason: "paused" | "outside-window" | "budget-exhausted" | "enrollment-required" | "connection-required" | "wallet-required";
1423
+ window?: "quest" | "tracker" | undefined;
1424
+ resetsAt?: number | undefined;
1425
+ } | {
1426
+ kind: "staff-required";
1427
+ } | {
1428
+ kind: "automatic";
1429
+ } | {
1430
+ kind: "checking";
1431
+ attempt: string;
1432
+ } | {
1433
+ kind: "needs-review";
1434
+ attempt: string;
1435
+ } | {
1436
+ kind: "retryable";
1437
+ attempt: string;
1438
+ };
1439
+ completed: boolean;
1440
+ completion: {
1441
+ kind: "progress";
1442
+ goal: {
1443
+ kind: "count";
1444
+ count: number;
1445
+ };
1446
+ window: {
1447
+ kind: "lifetime";
1448
+ } | {
1449
+ kind: "calendar";
1450
+ period: "day" | "week" | "month";
1451
+ latenessMs: number;
1452
+ } | {
1453
+ kind: "rolling";
1454
+ durationMs: number;
1455
+ };
1456
+ repeat: "repeat" | "once";
1457
+ } | {
1458
+ kind: "streak";
1459
+ days: number;
1460
+ } | {
1461
+ kind: "once";
1462
+ } | {
1463
+ kind: "keyed";
1464
+ };
1465
+ progress: {
1466
+ current: number;
1467
+ target: number;
1468
+ reason: string;
1469
+ } | null;
1470
+ completionCount: number;
1471
+ visibility: "visible" | "hidden";
1472
+ missing: ({
1473
+ kind: "completion";
1474
+ quest: string;
1475
+ title: string;
1476
+ scope: "ever";
1477
+ } | {
1478
+ kind: "completion";
1479
+ quest: string;
1480
+ title: string;
1481
+ scope: "period";
1482
+ period: "day" | "week" | "month";
1483
+ resetsAt: number;
1484
+ } | {
1485
+ kind: "balance";
1486
+ balance: string;
1487
+ title: string;
1488
+ minimum: number;
1489
+ current: number;
1490
+ } | {
1491
+ kind: "group";
1492
+ group: string;
1493
+ title: string;
1494
+ })[];
1495
+ campaign: {
1496
+ key: string;
1497
+ title: string;
1498
+ enrollment: "none" | "required";
1499
+ enrolledAt: number | null;
1500
+ withdrawnAt: number | null;
1501
+ withdrawalReason: string | null;
1502
+ window?: {
1503
+ from: number;
1504
+ until: number;
1505
+ } | undefined;
1506
+ } | null;
1507
+ window: {
1508
+ from: number;
1509
+ until: number;
1510
+ } | null;
1511
+ budgets: {
1512
+ id: string;
1513
+ scope: "member" | "project";
1514
+ period: "lifetime" | "day" | "week" | "month";
1515
+ remaining: number;
1516
+ resetsAt: number | null;
1517
+ }[];
1518
+ attempt: {
1519
+ id: string;
1520
+ release: string;
1521
+ quest: string;
1522
+ member: string;
1523
+ evidence: string | null;
1524
+ status: AttemptStatus;
1525
+ reason: string | null;
1526
+ retries: number;
1527
+ generation: number;
1528
+ completion: string | null;
1529
+ reviewRewards: ({
1530
+ kind: "tier";
1531
+ reward: {
1532
+ id: string;
1533
+ title: string;
1534
+ tiers: {
1535
+ id: string;
1536
+ title: string;
1537
+ }[];
1538
+ inventory: {
1539
+ kind: "untracked";
1540
+ };
1541
+ fulfillment: {
1542
+ kind: "staff-handover";
1543
+ } | {
1544
+ kind: "automatic";
1545
+ };
1546
+ badge?: string | undefined;
1547
+ group?: string | undefined;
1548
+ };
1549
+ tier: string;
1550
+ } | {
1551
+ kind: "integration";
1552
+ provider: "discord";
1553
+ action: "grant-role";
1554
+ roleId: string;
1555
+ } | {
1556
+ kind: "points";
1557
+ balance: string;
1558
+ amount: number;
1559
+ })[] | null;
1560
+ evaluationRun: number;
1561
+ deferCount: number;
1562
+ deferUntil: number | null;
1563
+ nextEvaluationAt: number | null;
1564
+ code: string | null;
1565
+ progress: {
1566
+ current: number;
1567
+ target: number;
1568
+ reason: string;
1569
+ } | null;
1570
+ requestedReview: boolean;
1571
+ createdAt: number;
1572
+ input?: {
1573
+ kind: "text";
1574
+ value: string;
1575
+ } | {
1576
+ kind: "url";
1577
+ value: string;
1578
+ } | {
1579
+ kind: "quiz";
1580
+ answers: {
1581
+ [k: string]: string;
1582
+ };
1583
+ release?: string | undefined;
1584
+ } | undefined;
1585
+ } | null;
1586
+ release: string;
1587
+ interaction: "url" | "text" | "staff" | "claim" | "automatic" | "quiz" | "photo";
1588
+ lifecycle: "paused" | "active" | "archived";
1589
+ rewards: ({
1590
+ kind: "points";
1591
+ label: string;
1592
+ amount: number;
1593
+ ledger: {
1594
+ id: string;
1595
+ key: string | null;
1596
+ name: string;
1597
+ };
1598
+ } | {
1599
+ kind: "tier";
1600
+ label: string;
1601
+ reward: {
1602
+ id: string;
1603
+ key: string | null;
1604
+ title: string;
1605
+ badge?: {
1606
+ name: string;
1607
+ description: string;
1608
+ image: string;
1609
+ id: string;
1610
+ key: string | null;
1611
+ } | undefined;
1612
+ group?: {
1613
+ key: string;
1614
+ title: string;
1615
+ } | undefined;
1616
+ };
1617
+ tier: string;
1618
+ } | {
1619
+ kind: "integration";
1620
+ label: string;
1621
+ })[];
1622
+ key?: string | undefined;
1623
+ streak?: {
1624
+ goal: number;
1625
+ current: number;
1626
+ best: number;
1627
+ today: string;
1628
+ todayQualified: boolean;
1629
+ timeZone: string;
1630
+ nextBoundary: number;
1631
+ pendingTimeZone: {
1632
+ timeZone: string;
1633
+ effectiveAt: number;
1634
+ } | null;
1635
+ days: {
1636
+ day: number;
1637
+ date: string;
1638
+ timeZone: string;
1639
+ occurredAt: number;
1640
+ }[];
1641
+ milestone: {
1642
+ status: "pending";
1643
+ } | {
1644
+ status: "awarded";
1645
+ completion: string;
1646
+ achievedAt: number;
1647
+ } | {
1648
+ status: "budget-exhausted";
1649
+ budget: string;
1650
+ achievedAt: number;
1651
+ };
1652
+ } | null | undefined;
1653
+ counter?: {
1654
+ goal: number;
1655
+ current: number;
1656
+ window: {
1657
+ key: string;
1658
+ start: number | null;
1659
+ end: number | null;
1660
+ };
1661
+ repeat: "repeat" | "once";
1662
+ settled: number;
1663
+ latest: {
1664
+ id: string;
1665
+ ordinal: number;
1666
+ achievedAt: number;
1667
+ window: string;
1668
+ status: "revoked";
1669
+ completion: string;
1670
+ revokedAt: number;
1671
+ } | {
1672
+ id: string;
1673
+ ordinal: number;
1674
+ achievedAt: number;
1675
+ window: string;
1676
+ status: "awarded";
1677
+ completion: string;
1678
+ } | {
1679
+ id: string;
1680
+ ordinal: number;
1681
+ achievedAt: number;
1682
+ window: string;
1683
+ status: "budget-exhausted";
1684
+ budget: string;
1685
+ } | null;
1686
+ } | null | undefined;
1687
+ retryAt?: number | undefined;
1688
+ nextAvailableAt?: number | undefined;
1244
1689
  };
1245
1690
  /** Input recovered after the quest changed. Prefill the form with it. */
1246
1691
  draft: SubmissionDraft | null;
@@ -1278,11 +1723,13 @@ type QuestTone = "open" | "done" | "waiting" | "attention" | "locked" | "off";
1278
1723
  * - `rejected`: the last submission was not accepted; the participant can try again.
1279
1724
  * - `retry-cooldown`: the last submission was not accepted, and the quest's retry cooldown runs
1280
1725
  * until `retryAt`.
1726
+ * - `completion-cooldown`: the last completion was accepted, and the quest's completion cooldown
1727
+ * runs until `retryAt`.
1281
1728
  * - `ready`: the participant can act now.
1282
1729
  *
1283
1730
  * @compat open
1284
1731
  */
1285
- type KnownQuestStatusCode = "completed" | "paused" | "closed" | "counter" | "counter-budget-exhausted" | "counter-revoked" | "streak" | "streak-budget-exhausted" | "automatic" | "in-progress" | "locked" | "budget-exhausted" | "connection-required" | "wallet-required" | "outside-window" | "enrollment-required" | "checking" | "evaluator-deferred" | "evaluator-progress" | "in-review" | "retryable" | "staff-required" | "rejected" | "retry-cooldown" | "ready";
1732
+ type KnownQuestStatusCode = "completed" | "paused" | "closed" | "counter" | "counter-budget-exhausted" | "counter-revoked" | "streak" | "streak-budget-exhausted" | "automatic" | "in-progress" | "locked" | "budget-exhausted" | "connection-required" | "wallet-required" | "outside-window" | "enrollment-required" | "checking" | "evaluator-deferred" | "evaluator-progress" | "in-review" | "retryable" | "staff-required" | "rejected" | "retry-cooldown" | "completion-cooldown" | "ready";
1286
1733
  /** A known code, or one a newer SDK adds: render unknown codes with a neutral fallback. */
1287
1734
  type QuestStatusCode = KnownQuestStatusCode | (string & {});
1288
1735
  type QuestStatus = {
@@ -1295,7 +1742,10 @@ type QuestStatus = {
1295
1742
  * string when it gave none.
1296
1743
  */
1297
1744
  reason?: string;
1298
- /** Unix milliseconds when the participant may submit again, when `code` is `retry-cooldown`. */
1745
+ /**
1746
+ * Unix milliseconds when the participant may submit again, when `code` is `retry-cooldown` or
1747
+ * `completion-cooldown`.
1748
+ */
1299
1749
  retryAt?: number;
1300
1750
  };
1301
1751
  /** `QuestStatus` in English: a short `label`, and a sentence of `detail` when there is more. */
@@ -1342,9 +1792,33 @@ declare function isCoolingDown(view: QuestView, now?: number): boolean;
1342
1792
  declare function questStatusText(view: QuestView, now?: number): QuestStatusText;
1343
1793
  /**
1344
1794
  * True when the participant can submit something right now (`now`, Unix milliseconds, the current
1345
- * time by default): not while a retry cooldown runs.
1795
+ * time by default): not while a retry or completion cooldown runs.
1346
1796
  */
1347
1797
  declare function canSubmit(view: QuestView, now?: number): boolean;
1798
+ /** What a quest page shows for one quest; see `questActionState`. */
1799
+ type QuestActionState = {
1800
+ /**
1801
+ * True when the page shows the quest's input: the participant can submit now, or has just
1802
+ * discarded a failed attempt on an active quest and starts a new submission.
1803
+ */
1804
+ open: boolean;
1805
+ /**
1806
+ * True once the submission just sent was accepted on a repeatable quest. Show "accepted" rather
1807
+ * than "received", and clear the form for the next round.
1808
+ */
1809
+ counted: boolean;
1810
+ /** The server owns every automatic run: offer no input, resume, retry, or restart. */
1811
+ automatic: boolean;
1812
+ };
1813
+ /**
1814
+ * What a quest page shows for a `useQuest()` result (`now`, Unix milliseconds, the current time by
1815
+ * default). The same rules every starter's quest component follows.
1816
+ */
1817
+ declare function questActionState(quest: {
1818
+ view: QuestView;
1819
+ startingFresh: boolean;
1820
+ receipt: string | null;
1821
+ }, now?: number): QuestActionState;
1348
1822
  /**
1349
1823
  * "x of y completed" for a list of quests: `total` counts every quest that is not archived or
1350
1824
  * repeatable, including locked and paused ones, because they are still part of what the
@@ -1800,6 +2274,7 @@ declare function useMyProfile(): {
1800
2274
  options: {
1801
2275
  provider: "discord" | "x" | "google";
1802
2276
  name: string | null;
2277
+ givenName: string | null;
1803
2278
  imageUrl: string | null;
1804
2279
  }[];
1805
2280
  };
@@ -1976,4 +2451,4 @@ declare function usePointLedgers(): Query<PointLedgerReference[]>;
1976
2451
  */
1977
2452
  declare function useTieredRewards(): Query<TieredRewardReference[]>;
1978
2453
 
1979
- export { type Collection, CosmosChains, DiscoveredWallet, type ExperienceData, type Invitation, type KnownQuestStatusCode, type KnownRoleDeliveryStatus, type MemberPagedQuery, type MemberQuery, type MemberQueryOptions, type MemberSnapshot, type Mutation, type MutationContext, type MutationOptions, type MutationStatus, type OAuthProvider, Page, type PageLoader, type PageRead, type PagedQuery, type Query, type QueryContext, type QueryKey, type QueryOptions, type QueryRead, type QuerySnapshot, type QuestInput, type QuestNotice, type QuestStatus, type QuestStatusCode, type QuestStatusText, type QuestTone, type ReferralSummary, type RelayActionResult, RelayClient, type RelayPolling, RelayProvider, type RelayQueryOptions, type RoleDelivery, type RoleDeliveryStatus, type SavedSubmission, SignInMethods, SignInOption, SignInUnavailable, SignInWallet, TelegramSignInOption, canRepeat, canSubmit, captureReferralCode, completionCountText, isAutomatic, isConnected, isCoolingDown, isFinished, progressOf, questGroups, questStatus, questStatusText, relayKeys, roleDeliveryLabel, roleDeliveryStatus, useAccounts, useActivity, useBadgeCatalog, useBadges, useBalances, useDeliveries, useEntitlements, useExperience, useInvalidate, useInvitation, useLeaderboard, useLeaderboardHistory, useLeaderboardPlacement, useMe, useMemberPages, useMemberQuery, useMyProfile, useOffers, usePointHistory, usePointLedgers, useProfile, useProfileBadges, useProfileCompletions, useProfileReferral, useQuest, useQuestOutcomes, useRedeemOffer, useReferralSummary, useRelay, useRelayAction, useRelayMutation, useRelayPages, useRelayQuery, useSession, useSetQueryData, useSignIn, useSignInMethods, useSignInOptions, useSignInWallets, useSignOut, useTelegramAccount, useTieredRewards, useWalletDiscovery, useWallets };
2454
+ export { type Collection, CosmosChains, DiscoveredWallet, type ExperienceData, type Invitation, type KnownQuestStatusCode, type KnownRoleDeliveryStatus, type MemberPagedQuery, type MemberQuery, type MemberQueryOptions, type MemberSnapshot, type Mutation, type MutationContext, type MutationOptions, type MutationStatus, type OAuthProvider, Page, type PageLoader, type PageRead, type PagedQuery, type Query, type QueryContext, type QueryKey, type QueryOptions, type QueryRead, type QuerySnapshot, type QuestActionState, type QuestInput, type QuestNotice, type QuestStatus, type QuestStatusCode, type QuestStatusText, type QuestTone, type ReferralSummary, type RelayActionResult, RelayClient, type RelayPolling, RelayProvider, type RelayQueryOptions, type RoleDelivery, type RoleDeliveryStatus, type SavedSubmission, SignInMethods, SignInOption, SignInUnavailable, SignInWallet, TelegramSignInOption, canRepeat, canSubmit, captureReferralCode, completionCountText, isAutomatic, isConnected, isCoolingDown, isFinished, progressOf, questActionState, questGroups, questStatus, questStatusText, relayKeys, roleDeliveryLabel, roleDeliveryStatus, useAccounts, useActivity, useBadgeCatalog, useBadges, useBalances, useDeliveries, useEntitlements, useExperience, useInvalidate, useInvitation, useLeaderboard, useLeaderboardHistory, useLeaderboardPlacement, useMe, useMemberPages, useMemberQuery, useMyProfile, useOffers, usePointHistory, usePointLedgers, useProfile, useProfileBadges, useProfileCompletions, useProfileReferral, useQuest, useQuestAction, useQuestOutcomes, useRedeemOffer, useReferralSummary, useRelay, useRelayAction, useRelayMutation, useRelayPages, useRelayQuery, useSession, useSetQueryData, useSignIn, useSignInMethods, useSignInOptions, useSignInWallets, useSignOut, useTelegramAccount, useTieredRewards, useWalletDiscovery, useWallets };