@openvtc/trust-tasks 0.26.24 → 0.26.26

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 (148) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/dist/_shared/components.d.ts +248 -5
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/device/list/0.1/payload.d.ts +4 -4
  5. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  6. package/dist/device/list/0.1/payload.js +4 -2
  7. package/dist/device/list/0.1/payload.js.map +1 -1
  8. package/dist/device/list/0.2/payload.d.ts +4 -4
  9. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  10. package/dist/device/list/0.2/payload.js +4 -2
  11. package/dist/device/list/0.2/payload.js.map +1 -1
  12. package/dist/device/register/0.1/payload.d.ts +4 -4
  13. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  14. package/dist/device/register/0.1/payload.js +4 -2
  15. package/dist/device/register/0.1/payload.js.map +1 -1
  16. package/dist/device/register/0.2/payload.d.ts +4 -4
  17. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  18. package/dist/device/register/0.2/payload.js +4 -2
  19. package/dist/device/register/0.2/payload.js.map +1 -1
  20. package/dist/index.d.ts +15 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +15 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/rooms/keys/act/0.6/payload.d.ts +546 -0
  25. package/dist/rooms/keys/act/0.6/payload.d.ts.map +1 -0
  26. package/dist/rooms/keys/act/0.6/payload.js +305 -0
  27. package/dist/rooms/keys/act/0.6/payload.js.map +1 -0
  28. package/dist/voting/_shared/0.1/voting.d.ts +1 -1
  29. package/dist/voting/_shared/0.1/voting.d.ts.map +1 -1
  30. package/dist/voting/ballot/cast-encrypted/0.1/payload.d.ts +1166 -0
  31. package/dist/voting/ballot/cast-encrypted/0.1/payload.d.ts.map +1 -0
  32. package/dist/voting/ballot/cast-encrypted/0.1/payload.js +690 -0
  33. package/dist/voting/ballot/cast-encrypted/0.1/payload.js.map +1 -0
  34. package/dist/voting/board/read/0.1/payload.d.ts +2555 -719
  35. package/dist/voting/board/read/0.1/payload.d.ts.map +1 -1
  36. package/dist/voting/board/read/0.1/payload.js +1517 -391
  37. package/dist/voting/board/read/0.1/payload.js.map +1 -1
  38. package/dist/voting/election/register/0.1/payload.d.ts +4 -4
  39. package/dist/voting/election/register/0.1/payload.js +2 -2
  40. package/dist/voting/election/register/0.1/payload.js.map +1 -1
  41. package/dist/voting/election/show/0.1/payload.d.ts +4 -4
  42. package/dist/voting/election/show/0.1/payload.js +2 -2
  43. package/dist/voting/election/show/0.1/payload.js.map +1 -1
  44. package/dist/voting/trustees/confirm/0.1/payload.d.ts +620 -0
  45. package/dist/voting/trustees/confirm/0.1/payload.d.ts.map +1 -0
  46. package/dist/voting/trustees/confirm/0.1/payload.js +388 -0
  47. package/dist/voting/trustees/confirm/0.1/payload.js.map +1 -0
  48. package/dist/voting/trustees/deal/0.1/payload.d.ts +1032 -0
  49. package/dist/voting/trustees/deal/0.1/payload.d.ts.map +1 -0
  50. package/dist/voting/trustees/deal/0.1/payload.js +630 -0
  51. package/dist/voting/trustees/deal/0.1/payload.js.map +1 -0
  52. package/dist/voting/trustees/decrypt/0.1/payload.d.ts +1009 -0
  53. package/dist/voting/trustees/decrypt/0.1/payload.d.ts.map +1 -0
  54. package/dist/voting/trustees/decrypt/0.1/payload.js +623 -0
  55. package/dist/voting/trustees/decrypt/0.1/payload.js.map +1 -0
  56. package/dist/voting/trustees/enrol/0.1/payload.d.ts +792 -0
  57. package/dist/voting/trustees/enrol/0.1/payload.d.ts.map +1 -0
  58. package/dist/voting/trustees/enrol/0.1/payload.js +490 -0
  59. package/dist/voting/trustees/enrol/0.1/payload.js.map +1 -0
  60. package/dist/voting/trustees/justify/0.1/payload.d.ts +642 -0
  61. package/dist/voting/trustees/justify/0.1/payload.d.ts.map +1 -0
  62. package/dist/voting/trustees/justify/0.1/payload.js +402 -0
  63. package/dist/voting/trustees/justify/0.1/payload.js.map +1 -0
  64. package/dist/voting/trustees/status/0.1/payload.d.ts +1411 -0
  65. package/dist/voting/trustees/status/0.1/payload.d.ts.map +1 -0
  66. package/dist/voting/trustees/status/0.1/payload.js +822 -0
  67. package/dist/voting/trustees/status/0.1/payload.js.map +1 -0
  68. package/dist/vta/pcs/trustee/deal/0.1/payload.d.ts +2005 -0
  69. package/dist/vta/pcs/trustee/deal/0.1/payload.d.ts.map +1 -0
  70. package/dist/vta/pcs/trustee/deal/0.1/payload.js +1176 -0
  71. package/dist/vta/pcs/trustee/deal/0.1/payload.js.map +1 -0
  72. package/dist/vta/pcs/trustee/decrypt/0.1/payload.d.ts +736 -0
  73. package/dist/vta/pcs/trustee/decrypt/0.1/payload.d.ts.map +1 -0
  74. package/dist/vta/pcs/trustee/decrypt/0.1/payload.js +412 -0
  75. package/dist/vta/pcs/trustee/decrypt/0.1/payload.js.map +1 -0
  76. package/dist/vta/pcs/trustee/enrol/0.1/payload.d.ts +1756 -0
  77. package/dist/vta/pcs/trustee/enrol/0.1/payload.d.ts.map +1 -0
  78. package/dist/vta/pcs/trustee/enrol/0.1/payload.js +1040 -0
  79. package/dist/vta/pcs/trustee/enrol/0.1/payload.js.map +1 -0
  80. package/dist/vta/pcs/trustee/justify/0.1/payload.d.ts +504 -0
  81. package/dist/vta/pcs/trustee/justify/0.1/payload.d.ts.map +1 -0
  82. package/dist/vta/pcs/trustee/justify/0.1/payload.js +274 -0
  83. package/dist/vta/pcs/trustee/justify/0.1/payload.js.map +1 -0
  84. package/dist/vta/pcs/trustee/keys/0.1/payload.d.ts +2501 -0
  85. package/dist/vta/pcs/trustee/keys/0.1/payload.d.ts.map +1 -0
  86. package/dist/vta/pcs/trustee/keys/0.1/payload.js +1455 -0
  87. package/dist/vta/pcs/trustee/keys/0.1/payload.js.map +1 -0
  88. package/dist/vta/pcs/vote/0.1/payload.d.ts +4 -4
  89. package/dist/vta/pcs/vote/0.1/payload.js +2 -2
  90. package/dist/vta/pcs/vote/0.1/payload.js.map +1 -1
  91. package/dist/vta/pcs/vote-encrypted/0.1/payload.d.ts +2375 -0
  92. package/dist/vta/pcs/vote-encrypted/0.1/payload.d.ts.map +1 -0
  93. package/dist/vta/pcs/vote-encrypted/0.1/payload.js +1389 -0
  94. package/dist/vta/pcs/vote-encrypted/0.1/payload.js.map +1 -0
  95. package/dist/vta/pcs/voter/register/0.1/payload.d.ts +4 -4
  96. package/dist/vta/pcs/voter/register/0.1/payload.js +2 -2
  97. package/dist/vta/pcs/voter/register/0.1/payload.js.map +1 -1
  98. package/dist/vtc/_shared/0.1/community-room.d.ts +1 -1
  99. package/dist/vtc/_shared/0.1/community-room.d.ts.map +1 -1
  100. package/dist/vtc/elections/create/0.1/payload.d.ts +4 -4
  101. package/dist/vtc/elections/create/0.1/payload.js +2 -2
  102. package/dist/vtc/elections/create/0.1/payload.js.map +1 -1
  103. package/dist/vtc/elections/show/0.1/payload.d.ts +4 -4
  104. package/dist/vtc/elections/show/0.1/payload.js +2 -2
  105. package/dist/vtc/elections/show/0.1/payload.js.map +1 -1
  106. package/dist/vtc/groups/bindings/add/0.1/payload.d.ts +4 -4
  107. package/dist/vtc/groups/bindings/add/0.1/payload.js +2 -2
  108. package/dist/vtc/groups/bindings/add/0.1/payload.js.map +1 -1
  109. package/dist/vtc/groups/bindings/list/0.1/payload.d.ts +4 -4
  110. package/dist/vtc/groups/bindings/list/0.1/payload.js +2 -2
  111. package/dist/vtc/groups/bindings/list/0.1/payload.js.map +1 -1
  112. package/dist/vtc/rooms/offers/list/0.3/payload.d.ts +1058 -0
  113. package/dist/vtc/rooms/offers/list/0.3/payload.d.ts.map +1 -0
  114. package/dist/vtc/rooms/offers/list/0.3/payload.js +614 -0
  115. package/dist/vtc/rooms/offers/list/0.3/payload.js.map +1 -0
  116. package/package.json +1 -1
  117. package/src/_shared/components.ts +263 -5
  118. package/src/device/list/0.1/payload.ts +4 -2
  119. package/src/device/list/0.2/payload.ts +4 -2
  120. package/src/device/register/0.1/payload.ts +4 -2
  121. package/src/device/register/0.2/payload.ts +4 -2
  122. package/src/index.ts +15 -0
  123. package/src/rooms/keys/act/0.6/payload.ts +380 -0
  124. package/src/voting/_shared/0.1/voting.ts +1 -1
  125. package/src/voting/ballot/cast-encrypted/0.1/payload.ts +735 -0
  126. package/src/voting/board/read/0.1/payload.ts +1519 -393
  127. package/src/voting/election/register/0.1/payload.ts +2 -2
  128. package/src/voting/election/show/0.1/payload.ts +2 -2
  129. package/src/voting/trustees/confirm/0.1/payload.ts +429 -0
  130. package/src/voting/trustees/deal/0.1/payload.ts +665 -0
  131. package/src/voting/trustees/decrypt/0.1/payload.ts +663 -0
  132. package/src/voting/trustees/enrol/0.1/payload.ts +525 -0
  133. package/src/voting/trustees/justify/0.1/payload.ts +439 -0
  134. package/src/voting/trustees/status/0.1/payload.ts +890 -0
  135. package/src/vta/pcs/trustee/deal/0.1/payload.ts +1250 -0
  136. package/src/vta/pcs/trustee/decrypt/0.1/payload.ts +489 -0
  137. package/src/vta/pcs/trustee/enrol/0.1/payload.ts +1107 -0
  138. package/src/vta/pcs/trustee/justify/0.1/payload.ts +341 -0
  139. package/src/vta/pcs/trustee/keys/0.1/payload.ts +1545 -0
  140. package/src/vta/pcs/vote/0.1/payload.ts +2 -2
  141. package/src/vta/pcs/vote-encrypted/0.1/payload.ts +1455 -0
  142. package/src/vta/pcs/voter/register/0.1/payload.ts +2 -2
  143. package/src/vtc/_shared/0.1/community-room.ts +1 -1
  144. package/src/vtc/elections/create/0.1/payload.ts +2 -2
  145. package/src/vtc/elections/show/0.1/payload.ts +2 -2
  146. package/src/vtc/groups/bindings/add/0.1/payload.ts +2 -2
  147. package/src/vtc/groups/bindings/list/0.1/payload.ts +2 -2
  148. package/src/vtc/rooms/offers/list/0.3/payload.ts +663 -0
@@ -422,7 +422,20 @@ export type BlobRef = DigestMultibase;
422
422
  /**
423
423
  * One leaf of a board. A leaf's hash is the RFC 9162 leaf hash of the JCS canonicalization of this object. Entries carry no time of arrival: the order is the board's, and a timestamp would hand anyone who reads the board the timing the registrar's log would need to pair a ticket with its cast.
424
424
  */
425
- export type BoardEntry = CastEntry | ReplacementEntry | LifecycleEntry | ResultEntry;
425
+ export type BoardEntry =
426
+ | CastEntry
427
+ | ReplacementEntry
428
+ | LifecycleEntry
429
+ | ResultEntry
430
+ | EncryptedCastEntry
431
+ | TransportKeyEntry
432
+ | DealingEntry
433
+ | ConfirmationEntry
434
+ | JustificationEntry
435
+ | ElectionKeyEntry
436
+ | PartialDecryptionsEntry
437
+ | UnsealedEntry
438
+ | SpoiledEntry;
426
439
  /**
427
440
  * `public`: anyone reads the board. `private`: the community, the auditors the manifest names and, for one cast's inclusion, the holder of its receipt (VTI-VOT-052).
428
441
  */
@@ -475,7 +488,8 @@ export type Capability_DeviceV0_1 =
475
488
  | "pcs-vetter"
476
489
  | "pcs-applicant"
477
490
  | "witness-request"
478
- | "pcs-voter";
491
+ | "pcs-voter"
492
+ | "pcs-trustee";
479
493
  /**
480
494
  * Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything.
481
495
  */
@@ -504,7 +518,8 @@ export type Capability_DeviceV0_2 =
504
518
  | "pcsVetter"
505
519
  | "pcsApplicant"
506
520
  | "witnessRequest"
507
- | "pcsVoter";
521
+ | "pcsVoter"
522
+ | "pcsTrustee";
508
523
  /**
509
524
  * Number of chunks in the bundle, equal to ceil(expectedSizeBytes / chunkSize). Bounded at 4096 so that the manifest itself — one digest per chunk — fits in the single document that carries it under the same message-size reasoning as a chunk.
510
525
  */
@@ -598,6 +613,12 @@ export type DataCommitment = DigestMultibase;
598
613
  * The approver's answer. `deny` aborts the pending request; a subsequent submit of the same task starts a fresh one.
599
614
  */
600
615
  export type Decision = "approve" | "deny";
616
+ /**
617
+ * What a partial decryption decrypts: the sealed cast at a board leaf, or the total of one option of one question.
618
+ */
619
+ export type DecryptionTarget = {
620
+ [k: string]: unknown | undefined;
621
+ };
601
622
  /**
602
623
  * `queued`: stored and not yet handed to the recipient. `delivered`: handed to the recipient (pickup or live stream) but not yet deleted by it — the recipient has not acknowledged it.
603
624
  */
@@ -657,6 +678,13 @@ export type DigestMultibase = string;
657
678
  * A community directory entry's identifier, exactly as that community's directory returned it. Opaque and community-scoped: the agent stores and compares it as a string, never parses it, and never treats the same value under two communities as the same entry.
658
679
  */
659
680
  export type DirectoryEntryId = string;
681
+ /**
682
+ * A disjunctive proof that a ciphertext encrypts one value of a public list: one `(c, z)` per value, in the list's order (CONVENTIONS §9.3).
683
+ *
684
+ * @minItems 1
685
+ * @maxItems 65
686
+ */
687
+ export type DisjunctiveProof = [SigmaProof, ...SigmaProof[]];
660
688
  /**
661
689
  * The kinds of drift, named so that a task can select a drift item by kind. The same values, with the same meanings, as `DriftItem`'s `type`, which keeps its own inline list so that `DriftItem` stays textually identical to 0.1; the two lists change together. `roleAdded` — someone holds a forge role the projection does not give them. `roleRemoved` — a projected role is missing. `roleChanged` — a projected role is present at another level. `requiredCheckMissing` — the verify-trust check is no longer required. `protectionWeakened` — branch protection or a ruleset is weaker than the projection in another way (force-push allowed, bypass actors added). `bootstrapMissing` — a bootstrap file or variable is gone.
662
690
  */
@@ -688,6 +716,12 @@ export type ElectionState = "registered" | "registration" | "voting" | "closed"
688
716
  * The three rights that carry authority over other people's rights: `git.ns.admin`, `git.repo.create` (which makes its holder the owner of every repository they create) and `git.repo.own`. Separation of duties applies to these: nobody grants one to themselves through git-ns/right/grant, or records one for themselves through any other task that grants on the actor's own authority. The explicit self-grant is git-ns/right/break-glass. `git.repo.maintain` and `git.commit.sign` are not elevated.
689
717
  */
690
718
  export type ElevatedRight = "git.ns.admin" | "git.repo.create" | "git.repo.own";
719
+ /**
720
+ * A cast of a sealed or tallied-encrypted election: exactly one of `sealed` (the Ballot's JCS bytes sealed to the election key) or `encrypted`, with the tag and the attestation over the JCS bytes of whichever is present (CONVENTIONS §3.6, §9.5).
721
+ */
722
+ export type EncryptedCast = {
723
+ [k: string]: unknown | undefined;
724
+ };
691
725
  /**
692
726
  * The anchor the binding rested on, recorded so an incident review can see how each factor came to exist. `install`: claimed with the community's install token (vtc/install/claim/finish/0.3). `invite`: redeemed from an administrator's invite (auth/step-up/approver/redeem/finish/0.1). `selfService`: added by the subject behind a factor they already held (auth/step-up/approver/enroll/0.1). `offline`: redeemed from an invite minted by the operator with host access while the service was stopped — an `invite`-shaped redemption whose issuer was the host rather than an administrator.
693
727
  */
@@ -825,6 +859,10 @@ export type GroupCredentialId = string;
825
859
  * What the group is for. Plain text; a reader MUST NOT treat it as instructions. Same placement rules as `GroupName`.
826
860
  */
827
861
  export type GroupDescription = string;
862
+ /**
863
+ * A Ristretto group element: its 32-byte compression, multibase base58btc. Never the identity (CONVENTIONS §9.1).
864
+ */
865
+ export type GroupElement = string;
828
866
  /**
829
867
  * Opaque identifier of a community group: `grp_` followed by 16 to 64 base64url characters. Random and community-scoped; not the group's DID.
830
868
  */
@@ -837,6 +875,10 @@ export type GroupKind = "static" | "dynamic";
837
875
  * The group's name, shown to those who may see the group. The community's own record: never in the group's DID document or its credentials' subject beyond the group's DID. Plain text.
838
876
  */
839
877
  export type GroupName = string;
878
+ /**
879
+ * A scalar mod the Ristretto group order: 32 canonical little-endian bytes, multibase base58btc (CONVENTIONS §9.1).
880
+ */
881
+ export type GroupScalar = string;
840
882
  /**
841
883
  * The Farm-generated handle of one reservation: 16 to 32 bytes from a cryptographically secure random source, written as unpadded base64url (22 to 43 characters; 16 bytes, 22 characters, is what VTI-LNK-116 recommends). It is the `_id` of the trigger link (VTI-LNK-033) and is compared as a string. In a claim it MUST equal the document's `parentThreadId`. It confers no authority on its holder beyond the right to make one claim.
842
884
  */
@@ -1539,7 +1581,7 @@ export type SealedEnvelope_VaultV0_2 =
1539
1581
  */
1540
1582
  export type SealedTransferBundle = string;
1541
1583
  /**
1542
- * `open`: ballots are recorded on the board as cast. `sealed`: ballots are encrypted to a jointly generated election key and decrypted after voting closes. `talliedEncrypted`: ballots are encrypted and only the totals are ever decrypted (VTI-VOT-060). Version 0.1 of the voting tasks carries open ballots only; a ballot box refuses to register any other level with `voting/election/register:unsupportedSecrecy` until the trustee tasks are specified.
1584
+ * `open`: ballots are recorded on the board as cast. `sealed`: ballots are encrypted to a jointly generated election key and decrypted after voting closes. `talliedEncrypted`: ballots are encrypted and only the totals are ever decrypted (VTI-VOT-060). The encrypted levels are cast with `voting/ballot/cast-encrypted/0.1`, under an election key the trustees generate with `voting/trustees/*` (CONVENTIONS §9).
1543
1585
  */
1544
1586
  export type SecrecyLevel = "open" | "sealed" | "talliedEncrypted";
1545
1587
  /**
@@ -1770,6 +1812,14 @@ export type TransferId = string;
1770
1812
  * How a blob's bytes move. `proxied`: through the host, as chunk documents (rooms/blobs/upload/chunk, rooms/blobs/chunk). `direct`: straight between the member and the storage the room is assigned to, over time-limited URLs the host issues for one object and one method each; the host authorizes every object and verifies every upload, and never carries a byte. Which mode applies is the host's answer, from what the producer accepts, what the room's storage can do, and the room's tier.
1771
1813
  */
1772
1814
  export type TransferMode = "direct" | "proxied";
1815
+ /**
1816
+ * A trustee's index: its position in the manifest's `trustees.dids`, counting from 1.
1817
+ */
1818
+ export type TrusteeIndex = number;
1819
+ /**
1820
+ * `enrolling`: transport keys are being published. `dealing`: dealings are. `confirming`: each trustee confirms or complains. `keyed`: the election key is formed. `decrypting`: voting has closed and partial decryptions are being published. `done`: every target is decrypted. `failed`: the key could not be formed in time.
1821
+ */
1822
+ export type TrusteePhase = "enrolling" | "dealing" | "confirming" | "keyed" | "decrypting" | "done" | "failed";
1773
1823
  /**
1774
1824
  * A ULID in Crockford base32, uppercase. Used for `attributeId` and `profileId`. Chosen over a UUID because the leading 48 bits are a timestamp, so a key-ordered scan of the store is also creation-ordered and a `list` needs no secondary sort. Server-assigned on create; a producer MAY supply one to make a create idempotent, and a maintainer MUST reject a supplied value that already exists rather than silently overwriting.
1775
1825
  */
@@ -4846,6 +4896,57 @@ export interface ResultEntry {
4846
4896
  kind: "result";
4847
4897
  result: ElectionResult;
4848
4898
  }
4899
+ export interface EncryptedCastEntry {
4900
+ kind: "encryptedCast";
4901
+ cast: EncryptedCast;
4902
+ }
4903
+ export interface TransportKeyEntry {
4904
+ kind: "transportKey";
4905
+ transportKey: TransportKey;
4906
+ }
4907
+ export interface DealingEntry {
4908
+ kind: "dealing";
4909
+ dealing: Dealing;
4910
+ }
4911
+ export interface ConfirmationEntry {
4912
+ kind: "confirmation";
4913
+ trustee: TrusteeIndex;
4914
+ /**
4915
+ * @maxItems 64
4916
+ */
4917
+ complaints: TrusteeIndex[];
4918
+ }
4919
+ export interface JustificationEntry {
4920
+ kind: "justification";
4921
+ dealer: TrusteeIndex;
4922
+ recipient: TrusteeIndex;
4923
+ share: GroupScalar;
4924
+ }
4925
+ export interface ElectionKeyEntry {
4926
+ kind: "electionKey";
4927
+ electionKey: ElectionKey;
4928
+ }
4929
+ export interface PartialDecryptionsEntry {
4930
+ kind: "partials";
4931
+ trustee: TrusteeIndex;
4932
+ /**
4933
+ * @minItems 1
4934
+ * @maxItems 100000
4935
+ */
4936
+ partials: [PartialDecryption, ...PartialDecryption[]];
4937
+ }
4938
+ export interface UnsealedEntry {
4939
+ kind: "unsealed";
4940
+ leafIndex: number;
4941
+ ballot: Ballot;
4942
+ }
4943
+ /**
4944
+ * A sealed cast that did not open, or opened to no valid ballot: not counted (CONVENTIONS §9.7).
4945
+ */
4946
+ export interface SpoiledEntry {
4947
+ kind: "spoiled";
4948
+ leafIndex: number;
4949
+ }
4849
4950
  /**
4850
4951
  * A board's tree head (RFC 9162 §2.1). A head is signed by being carried in a document the ballot box signs; whoever keeps a head keeps that whole document.
4851
4952
  */
@@ -5695,6 +5796,23 @@ export interface DataIntegrityProof {
5695
5796
  export interface DcqlQuery {
5696
5797
  [k: string]: unknown | undefined;
5697
5798
  }
5799
+ /**
5800
+ * A trustee's contribution to the election key: Feldman commitments to its polynomial, a proof of knowledge of the constant term, and one share per trustee sealed to that trustee's transport key (CONVENTIONS §9.6).
5801
+ */
5802
+ export interface Dealing {
5803
+ dealer: TrusteeIndex;
5804
+ /**
5805
+ * @minItems 2
5806
+ * @maxItems 64
5807
+ */
5808
+ commitments: [GroupElement, GroupElement, ...GroupElement[]];
5809
+ pok: SigmaProof;
5810
+ /**
5811
+ * @minItems 2
5812
+ * @maxItems 64
5813
+ */
5814
+ shares: [SealedShare, SealedShare, ...SealedShare[]];
5815
+ }
5698
5816
  /**
5699
5817
  * One presentation request awaiting the holder's decision, as the approver sees it.
5700
5818
  *
@@ -6646,6 +6764,44 @@ export interface EffectiveLimits {
6646
6764
  */
6647
6765
  hostCeilingBytes?: number;
6648
6766
  }
6767
+ /**
6768
+ * `(a, b) = (r·G, M + r·Y)` under the election key `Y` (CONVENTIONS §9.2).
6769
+ */
6770
+ export interface ElGamalCiphertext {
6771
+ a: GroupElement;
6772
+ b: GroupElement;
6773
+ }
6774
+ /**
6775
+ * The election key and each trustee's public verification key, computed from the qualified dealings (CONVENTIONS §9.6). Anyone can recompute it from the board.
6776
+ */
6777
+ export interface ElectionKey {
6778
+ key: GroupElement;
6779
+ /**
6780
+ * The dealers whose dealings the key is formed from.
6781
+ *
6782
+ * @minItems 1
6783
+ * @maxItems 64
6784
+ */
6785
+ qualified: [TrusteeIndex, ...TrusteeIndex[]];
6786
+ /**
6787
+ * @minItems 2
6788
+ * @maxItems 64
6789
+ */
6790
+ verification: [
6791
+ {
6792
+ trustee: TrusteeIndex;
6793
+ key: GroupElement;
6794
+ },
6795
+ {
6796
+ trustee: TrusteeIndex;
6797
+ key: GroupElement;
6798
+ },
6799
+ ...{
6800
+ trustee: TrusteeIndex;
6801
+ key: GroupElement;
6802
+ }[]
6803
+ ];
6804
+ }
6649
6805
  /**
6650
6806
  * An election's result, computable by anyone who can read its board from the board and the registration alone (VTI-VOT-070).
6651
6807
  */
@@ -6673,6 +6829,34 @@ export interface ElectionSummary {
6673
6829
  ballotsAdmitted: number;
6674
6830
  head: BoardHead;
6675
6831
  }
6832
+ /**
6833
+ * A tallied-encrypted ballot: one EncryptedQuestion per manifest question, in the manifest's order. Never decrypted (VTI-VOT-064).
6834
+ */
6835
+ export interface EncryptedBallot {
6836
+ electionId: ElectionId;
6837
+ manifestDigest: DigestMultibase;
6838
+ /**
6839
+ * @minItems 1
6840
+ * @maxItems 64
6841
+ */
6842
+ questions: [EncryptedQuestion, ...EncryptedQuestion[]];
6843
+ }
6844
+ export interface EncryptedOption {
6845
+ ciphertext: ElGamalCiphertext;
6846
+ proof: DisjunctiveProof;
6847
+ }
6848
+ /**
6849
+ * One choice question of a tallied-encrypted ballot: per option, in the manifest's order, an encryption of 0 or 1 with its proof; and a proof that the selections sum to a count the question admits (CONVENTIONS §9.5).
6850
+ */
6851
+ export interface EncryptedQuestion {
6852
+ question: Key_VotingV0_1;
6853
+ /**
6854
+ * @minItems 1
6855
+ * @maxItems 64
6856
+ */
6857
+ options: [EncryptedOption, ...EncryptedOption[]];
6858
+ sumProof: DisjunctiveProof;
6859
+ }
6676
6860
  export interface EncryptionParams {
6677
6861
  /**
6678
6862
  * AEAD identifier, e.g. `aes-256-gcm`.
@@ -8277,6 +8461,14 @@ export interface PartPlan {
8277
8461
  */
8278
8462
  partDigests: [DigestMultibase, ...DigestMultibase[]];
8279
8463
  }
8464
+ /**
8465
+ * Trustee `trustee`'s share of one decryption, `d = x_j·a`, with a Chaum–Pedersen proof against its verification key (CONVENTIONS §9.7).
8466
+ */
8467
+ export interface PartialDecryption {
8468
+ target: DecryptionTarget;
8469
+ d: GroupElement;
8470
+ proof: SigmaProof;
8471
+ }
8280
8472
  export interface PasskeyVerificationMethod {
8281
8473
  /**
8282
8474
  * The verificationMethod id as it appears in the DID document: `<did>#passkey-<base64url(sha256(credentialId))>`. The fragment is content-derived so a verifier can locate this VM by recomputing `sha256(credential.id)`.
@@ -9098,6 +9290,46 @@ export interface RejectedKey {
9098
9290
  */
9099
9291
  reason: string;
9100
9292
  }
9293
+ /**
9294
+ * What vtc/rooms/offers/list/0.3 returns in `renewals`: a renewal of an admission the member already holds, as the member it is addressed to sees it. `label` and `description` are the room's as they stand when it is read.
9295
+ */
9296
+ export interface Renewal {
9297
+ roomId: string;
9298
+ /**
9299
+ * The room's host: this community.
9300
+ */
9301
+ host: string;
9302
+ label: RoomLabel;
9303
+ /**
9304
+ * Absent when the room has none.
9305
+ */
9306
+ description?: RoomDescription;
9307
+ visibility: Visibility;
9308
+ actions: MemberActions;
9309
+ /**
9310
+ * When the renewed authority expires.
9311
+ */
9312
+ validUntil: string;
9313
+ /**
9314
+ * When the authority it replaces expires: the renewal is listed until then, or until a later renewal or the member's removal supersedes it.
9315
+ */
9316
+ renews: string;
9317
+ issuedAt: string;
9318
+ credentials: RenewalCredentials;
9319
+ }
9320
+ /**
9321
+ * The two credentials a renewal replaces, serialized as rooms/owner/{issue-membership,issue-authority} return them: a membership and an authority granting the same actions until the renewal's `validUntil`. No invitation: the member is already admitted, and a renewal never opens a second way in. The member's surface stores each with the member's key holder **in place of** the one it renews, never beside it.
9322
+ */
9323
+ export interface RenewalCredentials {
9324
+ /**
9325
+ * The renewed Verifiable Membership Credential.
9326
+ */
9327
+ membership: string;
9328
+ /**
9329
+ * The renewed Verifiable Authority Credential granting `actions` until `validUntil`.
9330
+ */
9331
+ authority: string;
9332
+ }
9101
9333
  /**
9102
9334
  * One repository as the VTC records it.
9103
9335
  */
@@ -9572,7 +9804,7 @@ export interface RollbackResult {
9572
9804
  ext?: Ext;
9573
9805
  }
9574
9806
  /**
9575
- * Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`; leaving removes them unless another source still covers them.
9807
+ * Links a room the community owns to the group: joining the group offers the member admission to the room with `actions`, valid for `validFor`, renewed while they stay in the group (collected with vtc/rooms/offers/list at 0.3 or later); leaving removes them unless another source still covers them.
9576
9808
  */
9577
9809
  export interface RoomBindingSpec {
9578
9810
  kind: "room";
@@ -9865,6 +10097,13 @@ export interface Context_VtaV0_1 {
9865
10097
  type: "context";
9866
10098
  contextId: string;
9867
10099
  }
10100
+ /**
10101
+ * Bytes sealed to a key: a random group element encrypted as `kem`, and the bytes under ChaCha20-Poly1305 with a key derived from it, multibase base58btc (CONVENTIONS §9.4).
10102
+ */
10103
+ export interface SealedPayload {
10104
+ kem: ElGamalCiphertext;
10105
+ body: string;
10106
+ }
9868
10107
  /**
9869
10108
  * A record as a host stores it on an `attributed` or `private` room. Title, description, body, author and tags are sealed together in one blob rather than separately: splitting them would let a host learn the shape of the material from ciphertext lengths, for no benefit, since a reader decrypts the whole record either way.
9870
10109
  */
@@ -9890,6 +10129,10 @@ export interface SealedRecord {
9890
10129
  */
9891
10130
  version?: number;
9892
10131
  }
10132
+ export interface SealedShare {
10133
+ recipient: TrusteeIndex;
10134
+ share: SealedPayload;
10135
+ }
9893
10136
  /**
9894
10137
  * Who the service says it is.
9895
10138
  */
@@ -10151,6 +10394,13 @@ export interface Session_AuthV0_3 {
10151
10394
  */
10152
10395
  ext?: Ext;
10153
10396
  }
10397
+ /**
10398
+ * A non-interactive sigma proof as its challenge and response `(c, z)` (Schnorr or Chaum–Pedersen; CONVENTIONS §9.3).
10399
+ */
10400
+ export interface SigmaProof {
10401
+ c: GroupScalar;
10402
+ z: GroupScalar;
10403
+ }
10154
10404
  /**
10155
10405
  * One signing-key delegation, as its holder sees it. A delegation confers nothing of its own: it names an identity that already holds whatever standing it holds, and a document signed by the key is authorized by that identity's standing read at execution time.
10156
10406
  */
@@ -10671,6 +10921,14 @@ export interface TransferTarget {
10671
10921
  */
10672
10922
  expiresAt: string;
10673
10923
  }
10924
+ /**
10925
+ * The group element a trustee's shares are sealed to, with a Schnorr proof of knowledge of its discrete log (CONVENTIONS §9.6).
10926
+ */
10927
+ export interface TransportKey {
10928
+ trustee: TrusteeIndex;
10929
+ key: GroupElement;
10930
+ pok: SigmaProof;
10931
+ }
10674
10932
  export interface TransportObservation {
10675
10933
  /**
10676
10934
  * The binding the document actually travelled on.
@@ -258,7 +258,8 @@ export const PAYLOAD_SCHEMA = {
258
258
  "pcs-vetter",
259
259
  "pcs-applicant",
260
260
  "witness-request",
261
- "pcs-voter"
261
+ "pcs-voter",
262
+ "pcs-trustee"
262
263
  ],
263
264
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
264
265
  },
@@ -607,7 +608,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
607
608
  "pcs-vetter",
608
609
  "pcs-applicant",
609
610
  "witness-request",
610
- "pcs-voter"
611
+ "pcs-voter",
612
+ "pcs-trustee"
611
613
  ],
612
614
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
613
615
  },
@@ -258,7 +258,8 @@ export const PAYLOAD_SCHEMA = {
258
258
  "pcsVetter",
259
259
  "pcsApplicant",
260
260
  "witnessRequest",
261
- "pcsVoter"
261
+ "pcsVoter",
262
+ "pcsTrustee"
262
263
  ],
263
264
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
264
265
  },
@@ -607,7 +608,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
607
608
  "pcsVetter",
608
609
  "pcsApplicant",
609
610
  "witnessRequest",
610
- "pcsVoter"
611
+ "pcsVoter",
612
+ "pcsTrustee"
611
613
  ],
612
614
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
613
615
  },
@@ -226,7 +226,8 @@ export const PAYLOAD_SCHEMA = {
226
226
  "pcs-vetter",
227
227
  "pcs-applicant",
228
228
  "witness-request",
229
- "pcs-voter"
229
+ "pcs-voter",
230
+ "pcs-trustee"
230
231
  ],
231
232
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
232
233
  },
@@ -565,7 +566,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
565
566
  "pcs-vetter",
566
567
  "pcs-applicant",
567
568
  "witness-request",
568
- "pcs-voter"
569
+ "pcs-voter",
570
+ "pcs-trustee"
569
571
  ],
570
572
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
571
573
  },
@@ -226,7 +226,8 @@ export const PAYLOAD_SCHEMA = {
226
226
  "pcsVetter",
227
227
  "pcsApplicant",
228
228
  "witnessRequest",
229
- "pcsVoter"
229
+ "pcsVoter",
230
+ "pcsTrustee"
230
231
  ],
231
232
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
232
233
  },
@@ -565,7 +566,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
565
566
  "pcsVetter",
566
567
  "pcsApplicant",
567
568
  "witnessRequest",
568
- "pcsVoter"
569
+ "pcsVoter",
570
+ "pcsTrustee"
569
571
  ],
570
572
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
571
573
  },
package/src/index.ts CHANGED
@@ -462,6 +462,7 @@ export * as RoomsKeysAct_v0_2 from "./rooms/keys/act/0.2/payload.js";
462
462
  export * as RoomsKeysAct_v0_3 from "./rooms/keys/act/0.3/payload.js";
463
463
  export * as RoomsKeysAct_v0_4 from "./rooms/keys/act/0.4/payload.js";
464
464
  export * as RoomsKeysAct_v0_5 from "./rooms/keys/act/0.5/payload.js";
465
+ export * as RoomsKeysAct_v0_6 from "./rooms/keys/act/0.6/payload.js";
465
466
  export * as RoomsKeysBackfill_v0_1 from "./rooms/keys/backfill/0.1/payload.js";
466
467
  export * as RoomsKeysBrowse_v0_1 from "./rooms/keys/browse/0.1/payload.js";
467
468
  export * as RoomsKeysChain_v0_1 from "./rooms/keys/chain/0.1/payload.js";
@@ -585,6 +586,7 @@ export * as VettingDecline_v0_1 from "./vetting/decline/0.1/payload.js";
585
586
  export * as VettingRequest_v0_1 from "./vetting/request/0.1/payload.js";
586
587
  export * as VettingSession_v0_1 from "./vetting/session/0.1/payload.js";
587
588
  export * as VotingShared_v0_1 from "./voting/_shared/0.1/voting.js";
589
+ export * as VotingBallotCastEncrypted_v0_1 from "./voting/ballot/cast-encrypted/0.1/payload.js";
588
590
  export * as VotingBallotCast_v0_1 from "./voting/ballot/cast/0.1/payload.js";
589
591
  export * as VotingBoardConsistency_v0_1 from "./voting/board/consistency/0.1/payload.js";
590
592
  export * as VotingBoardHead_v0_1 from "./voting/board/head/0.1/payload.js";
@@ -595,6 +597,12 @@ export * as VotingElectionClose_v0_1 from "./voting/election/close/0.1/payload.j
595
597
  export * as VotingElectionRegister_v0_1 from "./voting/election/register/0.1/payload.js";
596
598
  export * as VotingElectionShow_v0_1 from "./voting/election/show/0.1/payload.js";
597
599
  export * as VotingResultShow_v0_1 from "./voting/result/show/0.1/payload.js";
600
+ export * as VotingTrusteesConfirm_v0_1 from "./voting/trustees/confirm/0.1/payload.js";
601
+ export * as VotingTrusteesDeal_v0_1 from "./voting/trustees/deal/0.1/payload.js";
602
+ export * as VotingTrusteesDecrypt_v0_1 from "./voting/trustees/decrypt/0.1/payload.js";
603
+ export * as VotingTrusteesEnrol_v0_1 from "./voting/trustees/enrol/0.1/payload.js";
604
+ export * as VotingTrusteesJustify_v0_1 from "./voting/trustees/justify/0.1/payload.js";
605
+ export * as VotingTrusteesStatus_v0_1 from "./voting/trustees/status/0.1/payload.js";
598
606
  export * as VrcRelationshipsIssue_v0_1 from "./vrc/relationships/issue/0.1/payload.js";
599
607
  export * as VrcRelationshipsPropose_v0_1 from "./vrc/relationships/propose/0.1/payload.js";
600
608
  export * as AppStateRecordShared_v0_1 from "./vta/_shared/0.1/app-state-record.js";
@@ -685,8 +693,14 @@ export * as VtaPcsRootRequest_v0_1 from "./vta/pcs/root-request/0.1/payload.js";
685
693
  export * as VtaPcsTokensAbandon_v0_1 from "./vta/pcs/tokens/abandon/0.1/payload.js";
686
694
  export * as VtaPcsTokensAccept_v0_1 from "./vta/pcs/tokens/accept/0.1/payload.js";
687
695
  export * as VtaPcsTokensRequest_v0_1 from "./vta/pcs/tokens/request/0.1/payload.js";
696
+ export * as VtaPcsTrusteeDeal_v0_1 from "./vta/pcs/trustee/deal/0.1/payload.js";
697
+ export * as VtaPcsTrusteeDecrypt_v0_1 from "./vta/pcs/trustee/decrypt/0.1/payload.js";
698
+ export * as VtaPcsTrusteeEnrol_v0_1 from "./vta/pcs/trustee/enrol/0.1/payload.js";
699
+ export * as VtaPcsTrusteeJustify_v0_1 from "./vta/pcs/trustee/justify/0.1/payload.js";
700
+ export * as VtaPcsTrusteeKeys_v0_1 from "./vta/pcs/trustee/keys/0.1/payload.js";
688
701
  export * as VtaPcsVerifyAttestation_v0_1 from "./vta/pcs/verify-attestation/0.1/payload.js";
689
702
  export * as VtaPcsVetterShow_v0_1 from "./vta/pcs/vetter/show/0.1/payload.js";
703
+ export * as VtaPcsVoteEncrypted_v0_1 from "./vta/pcs/vote-encrypted/0.1/payload.js";
690
704
  export * as VtaPcsVote_v0_1 from "./vta/pcs/vote/0.1/payload.js";
691
705
  export * as VtaPcsVoterAccept_v0_1 from "./vta/pcs/voter/accept/0.1/payload.js";
692
706
  export * as VtaPcsVoterRead_v0_1 from "./vta/pcs/voter/read/0.1/payload.js";
@@ -964,6 +978,7 @@ export * as VtcRoomsMembershipsList_v0_1 from "./vtc/rooms/memberships/list/0.1/
964
978
  export * as VtcRoomsOffersAccept_v0_1 from "./vtc/rooms/offers/accept/0.1/payload.js";
965
979
  export * as VtcRoomsOffersList_v0_1 from "./vtc/rooms/offers/list/0.1/payload.js";
966
980
  export * as VtcRoomsOffersList_v0_2 from "./vtc/rooms/offers/list/0.2/payload.js";
981
+ export * as VtcRoomsOffersList_v0_3 from "./vtc/rooms/offers/list/0.3/payload.js";
967
982
  export * as VtcRoomsStorageAssign_v0_1 from "./vtc/rooms/storage/assign/0.1/payload.js";
968
983
  export * as VtcRoomsStorageMigrate_v0_1 from "./vtc/rooms/storage/migrate/0.1/payload.js";
969
984
  export * as VtcRoomsUsage_v0_1 from "./vtc/rooms/usage/0.1/payload.js";