@interop/wallet-core 0.101.1 → 0.103.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 (113) hide show
  1. package/README.md +33 -17
  2. package/dist/audiences/audienceGrant.d.ts +49 -0
  3. package/dist/audiences/audienceGrant.d.ts.map +1 -0
  4. package/dist/audiences/audienceGrant.js +46 -0
  5. package/dist/audiences/audienceGrant.js.map +1 -0
  6. package/dist/audiences/index.d.ts +10 -0
  7. package/dist/audiences/index.d.ts.map +1 -0
  8. package/dist/audiences/index.js +10 -0
  9. package/dist/audiences/index.js.map +1 -0
  10. package/dist/clientAnnex/grantRevocation.d.ts +0 -10
  11. package/dist/clientAnnex/grantRevocation.d.ts.map +1 -1
  12. package/dist/clientAnnex/grantRevocation.js +1 -23
  13. package/dist/clientAnnex/grantRevocation.js.map +1 -1
  14. package/dist/clientAnnex/index.d.ts +1 -1
  15. package/dist/clientAnnex/index.d.ts.map +1 -1
  16. package/dist/clientAnnex/index.js +1 -1
  17. package/dist/clientAnnex/index.js.map +1 -1
  18. package/dist/clientAnnex/log.d.ts +2 -1
  19. package/dist/clientAnnex/log.d.ts.map +1 -1
  20. package/dist/clientAnnex/log.js +5 -2
  21. package/dist/clientAnnex/log.js.map +1 -1
  22. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  23. package/dist/clients/rosterPolicy.js +3 -1
  24. package/dist/clients/rosterPolicy.js.map +1 -1
  25. package/dist/connections/didKey.d.ts +27 -0
  26. package/dist/connections/didKey.d.ts.map +1 -1
  27. package/dist/connections/didKey.js +42 -6
  28. package/dist/connections/didKey.js.map +1 -1
  29. package/dist/connections/entry.d.ts +95 -13
  30. package/dist/connections/entry.d.ts.map +1 -1
  31. package/dist/connections/entry.js +102 -16
  32. package/dist/connections/entry.js.map +1 -1
  33. package/dist/connections/grants.d.ts +225 -3
  34. package/dist/connections/grants.d.ts.map +1 -1
  35. package/dist/connections/grants.js +293 -8
  36. package/dist/connections/grants.js.map +1 -1
  37. package/dist/connections/index.d.ts +15 -8
  38. package/dist/connections/index.d.ts.map +1 -1
  39. package/dist/connections/index.js +13 -6
  40. package/dist/connections/index.js.map +1 -1
  41. package/dist/connections/read.d.ts.map +1 -1
  42. package/dist/connections/read.js +2 -1
  43. package/dist/connections/read.js.map +1 -1
  44. package/dist/connections/resourceId.d.ts +33 -0
  45. package/dist/connections/resourceId.d.ts.map +1 -1
  46. package/dist/connections/resourceId.js +88 -8
  47. package/dist/connections/resourceId.js.map +1 -1
  48. package/dist/connections/upsert.d.ts +219 -7
  49. package/dist/connections/upsert.d.ts.map +1 -1
  50. package/dist/connections/upsert.js +628 -41
  51. package/dist/connections/upsert.js.map +1 -1
  52. package/dist/connections/writers.js +2 -1
  53. package/dist/connections/writers.js.map +1 -1
  54. package/dist/descriptors/index.d.ts +5 -0
  55. package/dist/descriptors/index.d.ts.map +1 -1
  56. package/dist/descriptors/index.js +5 -0
  57. package/dist/descriptors/index.js.map +1 -1
  58. package/dist/descriptors/logSource.d.ts +9 -4
  59. package/dist/descriptors/logSource.d.ts.map +1 -1
  60. package/dist/descriptors/logSource.js +13 -6
  61. package/dist/descriptors/logSource.js.map +1 -1
  62. package/dist/jsonObject.d.ts +16 -0
  63. package/dist/jsonObject.d.ts.map +1 -0
  64. package/dist/jsonObject.js +18 -0
  65. package/dist/jsonObject.js.map +1 -0
  66. package/dist/keys/index.d.ts +13 -9
  67. package/dist/keys/index.d.ts.map +1 -1
  68. package/dist/keys/index.js +11 -7
  69. package/dist/keys/index.js.map +1 -1
  70. package/dist/keys/userKeyCascade.d.ts +46 -0
  71. package/dist/keys/userKeyCascade.d.ts.map +1 -1
  72. package/dist/keys/userKeyCascade.js +153 -65
  73. package/dist/keys/userKeyCascade.js.map +1 -1
  74. package/dist/keys/userKeyRoster.d.ts +60 -7
  75. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  76. package/dist/keys/userKeyRoster.js +165 -47
  77. package/dist/keys/userKeyRoster.js.map +1 -1
  78. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  79. package/dist/keys/userKeyRosterCascade.js +1 -0
  80. package/dist/keys/userKeyRosterCascade.js.map +1 -1
  81. package/dist/menders/ids.d.ts +1 -1
  82. package/dist/menders/ids.d.ts.map +1 -1
  83. package/dist/menders/ids.js +20 -4
  84. package/dist/menders/ids.js.map +1 -1
  85. package/dist/space/collections.d.ts +23 -3
  86. package/dist/space/collections.d.ts.map +1 -1
  87. package/dist/space/collections.js +26 -2
  88. package/dist/space/collections.js.map +1 -1
  89. package/dist/space/inboxMessage.d.ts +47 -0
  90. package/dist/space/inboxMessage.d.ts.map +1 -0
  91. package/dist/space/inboxMessage.js +86 -0
  92. package/dist/space/inboxMessage.js.map +1 -0
  93. package/dist/space/index.d.ts +6 -1
  94. package/dist/space/index.d.ts.map +1 -1
  95. package/dist/space/index.js +5 -1
  96. package/dist/space/index.js.map +1 -1
  97. package/dist/sync/contactsConflict.d.ts +23 -10
  98. package/dist/sync/contactsConflict.d.ts.map +1 -1
  99. package/dist/sync/contactsConflict.js +40 -21
  100. package/dist/sync/contactsConflict.js.map +1 -1
  101. package/dist/webvh/didWebProjection.d.ts +38 -5
  102. package/dist/webvh/didWebProjection.d.ts.map +1 -1
  103. package/dist/webvh/didWebProjection.js +35 -22
  104. package/dist/webvh/didWebProjection.js.map +1 -1
  105. package/dist/webvh/index.d.ts +4 -3
  106. package/dist/webvh/index.d.ts.map +1 -1
  107. package/dist/webvh/index.js +4 -3
  108. package/dist/webvh/index.js.map +1 -1
  109. package/dist/webvh/standingZcap.d.ts +19 -2
  110. package/dist/webvh/standingZcap.d.ts.map +1 -1
  111. package/dist/webvh/standingZcap.js +31 -3
  112. package/dist/webvh/standingZcap.js.map +1 -1
  113. package/package.json +11 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3D,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,iBAAiB,EAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3D,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -16,9 +16,16 @@
16
16
  * - The grant index the revocation orchestrators share
17
17
  * (`connectionGrants`, `grantTargets`, `splitGrantsByExpiry`,
18
18
  * `grantRecipientKid`), with the reader checks every reader applies.
19
+ * - The agent-connection readers: the received list (`receivedGrants`,
20
+ * `receivedGrantLapsed`, `liveInboxChannel`), the latest grant per scope
21
+ * (`latestGrantsPerScope`), a consent's renewal scope
22
+ * (`renewalScopeGrants`), the renewal predicate (`agentGrantDue`,
23
+ * `AGENT_GRANT_RENEWAL_WINDOW_MS`), and `agentConnectionsSignedBy`.
19
24
  * - The upsert helpers (`recordGrants`, `removeGrants`, `retireConnection`,
20
25
  * `unretireConnection`, `setConnectionLabel`) and their kind refusal
21
- * (`ConnectionKindMismatchError`).
26
+ * (`ConnectionKindMismatchError`), and the agent-connection helpers
27
+ * (`recordReceivedGrants`, `recordRenewedGrants`, `settleOutboxItem`,
28
+ * `pruneSupersededGrants`, `clearReceivedGrants`, `markDeclined`).
22
29
  * - The writer arm: lazy registration (`registerConnectionWriter`), the
23
30
  * pull-path touch (`touchConnectionWriter`), the per-entry sweep
24
31
  * (`sweepConnectionWriters`), and `resolveWriter` for history views.
@@ -26,14 +33,14 @@
26
33
  * and the account document, and `normalizeDisplayName`, the one name rule
27
34
  * every producer writes `name` through.
28
35
  */
29
- export { CONNECTION_ENTRY_VERSION, CONNECTION_KINDS, CONNECTION_WRITER_POLICY, GRANT_KINDS, connectionKindOf, connectionWriterPolicy, grantKindOf, isWritableConnectionEntry, parseConnectionEntry } from './entry.js';
30
- export { CONNECTIONS_ID_PREFIX, connectionResourceId } from './resourceId.js';
36
+ export { CONNECTION_ENTRY_VERSION, CONNECTION_KINDS, CONNECTION_SEED_BYTES, CONNECTION_WRITER_POLICY, GRANT_KINDS, RECEIVED_GRANT_KINDS, connectionKindOf, decodeConnectionSeed, connectionWriterPolicy, grantKindOf, isWritableConnectionEntry, parseConnectionEntry } from './entry.js';
37
+ export { CONNECTIONS_ID_PREFIX, connectionResourceId, connectionSeedTag, verifyConnectionSeedTag } from './resourceId.js';
31
38
  export { wasConnectionsStore } from './store.js';
32
39
  export { findConnection, readConnections } from './read.js';
33
- export { collectionIdInSpace, connectionGrants, grantRecipientKid, grantTargets, isTargetInSpace, splitGrantsByExpiry } from './grants.js';
34
- export { connectionRecipientKid, signingKeyMultibaseOfDid } from './didKey.js';
40
+ export { AGENT_GRANT_RENEWAL_WINDOW_MS, agentConnectionsSignedBy, agentGrantDue, collectionIdInSpace, connectionGrants, grantRecipientKid, grantTargets, isTargetInSpace, grantScopeKey, latestGrantsPerScope, latestIndexPerScope, liveInboxChannel, receivedGrantLapsed, receivedGrants, renewalScopeGrants, splitGrantsByExpiry } from './grants.js';
41
+ export { connectionDidKey, connectionRecipientKid, signingKeyMultibaseOfDid } from './didKey.js';
35
42
  export { ConnectionKindMismatchError } from './errors.js';
36
- export { recordGrants, removeGrants, retireConnection, setConnectionLabel, unretireConnection } from './upsert.js';
43
+ export { clearReceivedGrants, markDeclined, pruneSupersededGrants, recordGrants, recordReceivedGrants, recordRenewedGrants, removeGrants, retireConnection, setConnectionLabel, settleOutboxItem, unretireConnection } from './upsert.js';
37
44
  export { registerConnectionWriter, resolveWriter, sweepConnectionWriters, touchConnectionWriter } from './writers.js';
38
45
  export { normalizeDisplayName } from '../labelText.js';
39
46
  export { CONNECTIONS_COLLECTION } from '../space/collections.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAUnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,cAAc,CAAA;AASrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAanB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3D,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,cAAc,CAAA;AASrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/connections/read.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,eAAe,CAAA;IACtB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;OAGG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,eAAe,CAAA;CACzB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe9B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,EACpC,KAAK,EACL,OAAO,EACR,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,eAAe,CAAA;CACzB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwCrC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,GAAG,EACJ,EAAE;IACD,OAAO,EAAE,kBAAkB,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,cAAc,GAAG,SAAS,CAE7B"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/connections/read.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,eAAe,CAAA;IACtB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;OAGG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,eAAe,CAAA;CACzB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe9B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,EACpC,KAAK,EACL,OAAO,EACR,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,eAAe,CAAA;CACzB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwCrC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,GAAG,EACJ,EAAE;IACD,OAAO,EAAE,kBAAkB,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,cAAc,GAAG,SAAS,CAE7B"}
@@ -10,7 +10,8 @@
10
10
  * derives to just to look the party up, since the host would then learn which
11
11
  * id belongs to which DID and whether that DID has an entry.
12
12
  */
13
- import { isJsonObject, parseConnectionEntry } from './entry.js';
13
+ import { isJsonObject } from '../jsonObject.js';
14
+ import { parseConnectionEntry } from './entry.js';
14
15
  import { connectionResourceId } from './resourceId.js';
15
16
  /**
16
17
  * The resource id a stored body claims by its own members: its `id`, or its
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/connections/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/connections/read.ts"],"names":[],"mappings":"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"}
@@ -33,4 +33,37 @@ export declare function connectionResourceId(options: {
33
33
  writerId: string;
34
34
  did?: undefined;
35
35
  }): Promise<string>;
36
+ /**
37
+ * The tag an entry stores beside its pairwise `seed`: {@link seedTagBytes}
38
+ * in the seed's own encoding. A seed that is not 32 bytes of base64url is
39
+ * refused with a `TypeError`.
40
+ *
41
+ * @param options {object}
42
+ * @param options.hmacKey {ConnectionIdKey} the collection's blinded-index
43
+ * key
44
+ * @param options.seed {string} the seed, base64url with no padding
45
+ * @returns {Promise<string>}
46
+ */
47
+ export declare function connectionSeedTag({ hmacKey, seed }: {
48
+ hmacKey: ConnectionIdKey;
49
+ seed: string;
50
+ }): Promise<string>;
51
+ /**
52
+ * Whether a stored `seedTag` is the tag of a stored `seed` under this
53
+ * directory's blinded-index key. A malformed seed or tag reads as `false`.
54
+ * Every site that turns a seed into a key asks this first and fails closed
55
+ * on `false`.
56
+ *
57
+ * @param options {object}
58
+ * @param options.hmacKey {ConnectionIdKey} the collection's blinded-index
59
+ * key
60
+ * @param options.seed {string} the stored seed
61
+ * @param options.seedTag {string} the stored tag
62
+ * @returns {Promise<boolean>}
63
+ */
64
+ export declare function verifyConnectionSeedTag({ hmacKey, seed, seedTag }: {
65
+ hmacKey: ConnectionIdKey;
66
+ seed: string;
67
+ seedTag: string;
68
+ }): Promise<boolean>;
36
69
  //# sourceMappingURL=resourceId.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceId.d.ts","sourceRoot":"","sources":["../../src/connections/resourceId.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GACzB,UAAU,GAAG;IAAE,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,CAAA;AAE3E;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EACH;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAC/D;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAClE,OAAO,CAAC,MAAM,CAAC,CAcjB"}
1
+ {"version":3,"file":"resourceId.d.ts","sourceRoot":"","sources":["../../src/connections/resourceId.ts"],"names":[],"mappings":"AAmCA;;GAEG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GACzB,UAAU,GAAG;IAAE,IAAI,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,CAAA;AAsB3E;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EACH;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAC/D;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAClE,OAAO,CAAC,MAAM,CAAC,CAWjB;AAyBD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,IAAI,EACL,EAAE;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,CASlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,IAAI,EACJ,OAAO,EACR,EAAE;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB"}
@@ -2,14 +2,24 @@
2
2
  * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
3
  */
4
4
  /**
5
- * The directory's resource id: where one party's entry lives.
5
+ * The directory's two keyed values: the resource id where one party's entry
6
+ * lives, and the tag over an entry's pairwise seed. Both are HMAC-SHA-256
7
+ * under the collection's blinded-index key, domain-separated by the
8
+ * `connections/v1` prefix and an arm name, so one key signs no two kinds of
9
+ * input under the same bytes.
6
10
  *
7
11
  * The id is the first 16 bytes of
8
12
  * `HMAC-SHA-256(hmacKey, utf8('connections/v1' + '|' + armInput))`, formatted
9
- * with was-client's `edvIdFromBytes`. `hmacKey` is the collection's
10
- * blinded-index key. `armInput` is `'did:' + did` for a party with a DID and
11
- * `'writer:' + writerId` for a keyless writer. The account DID is not an
12
- * input.
13
+ * with was-client's `edvIdFromBytes`. `armInput` is `'did:' + did` for a
14
+ * party with a DID and `'writer:' + writerId` for a keyless writer. The
15
+ * account DID is not an input.
16
+ *
17
+ * The seed tag is the full 32 bytes of
18
+ * `HMAC-SHA-256(hmacKey, utf8('connections/v1' + '|' + 'seed:') || seedBytes)`,
19
+ * base64url with no padding. The blinded-index key is wrapped to the user
20
+ * key's KAK in the descriptor and the descriptor is log-governed, so the host
21
+ * lacks it: a seed the host planted on an entry carries no tag that verifies,
22
+ * and every site that turns a seed into a key checks the tag first.
13
23
  *
14
24
  * Keying the id stops the storage host from computing the id of a guessed
15
25
  * DID and probing for it. The protection lasts only while reads keep it: a
@@ -18,11 +28,27 @@
18
28
  */
19
29
  import { hmac } from '@noble/hashes/hmac.js';
20
30
  import { sha256 } from '@noble/hashes/sha2.js';
31
+ import { equalBytes } from '@noble/ciphers/utils.js';
32
+ import { base64urlnopad } from '@scure/base';
21
33
  import { edvIdFromBytes } from '@interop/was-client/edv/cipher';
34
+ import { decodeConnectionSeed } from './entry.js';
22
35
  /**
23
36
  * The domain prefix of every directory resource id.
24
37
  */
25
38
  export const CONNECTIONS_ID_PREFIX = 'connections/v1';
39
+ /**
40
+ * HMAC-SHA-256 under the blinded-index key, in either form.
41
+ *
42
+ * @param options {object}
43
+ * @param options.hmacKey {ConnectionIdKey}
44
+ * @param options.data {Uint8Array}
45
+ * @returns {Promise<Uint8Array>}
46
+ */
47
+ async function keyedMac({ hmacKey, data }) {
48
+ return hmacKey instanceof Uint8Array
49
+ ? hmac(sha256, hmacKey, data)
50
+ : hmacKey.sign({ data });
51
+ }
26
52
  /**
27
53
  * The resource id of a party's entry (`did`) or of a keyless writer's entry
28
54
  * (`writerId`). Exactly one of the two is given.
@@ -41,9 +67,63 @@ export async function connectionResourceId(options) {
41
67
  }
42
68
  const armInput = did !== undefined ? `did:${did}` : `writer:${writerId}`;
43
69
  const data = new TextEncoder().encode(`${CONNECTIONS_ID_PREFIX}|${armInput}`);
44
- const mac = hmacKey instanceof Uint8Array
45
- ? hmac(sha256, hmacKey, data)
46
- : await hmacKey.sign({ data });
70
+ const mac = await keyedMac({ hmacKey, data });
47
71
  return edvIdFromBytes(mac.subarray(0, 16));
48
72
  }
73
+ /**
74
+ * The tag bytes over a seed: the full MAC over the `seed:` arm's prefix
75
+ * followed by the raw seed bytes.
76
+ *
77
+ * @param options {object}
78
+ * @param options.hmacKey {ConnectionIdKey}
79
+ * @param options.seedBytes {Uint8Array}
80
+ * @returns {Promise<Uint8Array>}
81
+ */
82
+ async function seedTagBytes({ hmacKey, seedBytes }) {
83
+ const prefix = new TextEncoder().encode(`${CONNECTIONS_ID_PREFIX}|seed:`);
84
+ const data = new Uint8Array(prefix.length + seedBytes.length);
85
+ data.set(prefix);
86
+ data.set(seedBytes, prefix.length);
87
+ return keyedMac({ hmacKey, data });
88
+ }
89
+ /**
90
+ * The tag an entry stores beside its pairwise `seed`: {@link seedTagBytes}
91
+ * in the seed's own encoding. A seed that is not 32 bytes of base64url is
92
+ * refused with a `TypeError`.
93
+ *
94
+ * @param options {object}
95
+ * @param options.hmacKey {ConnectionIdKey} the collection's blinded-index
96
+ * key
97
+ * @param options.seed {string} the seed, base64url with no padding
98
+ * @returns {Promise<string>}
99
+ */
100
+ export async function connectionSeedTag({ hmacKey, seed }) {
101
+ const seedBytes = decodeConnectionSeed(seed);
102
+ if (seedBytes === undefined) {
103
+ throw new TypeError('A connection seed is 43 characters of base64url with no padding, ' +
104
+ 'decoding to 32 bytes.');
105
+ }
106
+ return base64urlnopad.encode(await seedTagBytes({ hmacKey, seedBytes }));
107
+ }
108
+ /**
109
+ * Whether a stored `seedTag` is the tag of a stored `seed` under this
110
+ * directory's blinded-index key. A malformed seed or tag reads as `false`.
111
+ * Every site that turns a seed into a key asks this first and fails closed
112
+ * on `false`.
113
+ *
114
+ * @param options {object}
115
+ * @param options.hmacKey {ConnectionIdKey} the collection's blinded-index
116
+ * key
117
+ * @param options.seed {string} the stored seed
118
+ * @param options.seedTag {string} the stored tag
119
+ * @returns {Promise<boolean>}
120
+ */
121
+ export async function verifyConnectionSeedTag({ hmacKey, seed, seedTag }) {
122
+ const seedBytes = decodeConnectionSeed(seed);
123
+ const tagBytes = decodeConnectionSeed(seedTag);
124
+ if (seedBytes === undefined || tagBytes === undefined) {
125
+ return false;
126
+ }
127
+ return equalBytes(await seedTagBytes({ hmacKey, seedBytes }), tagBytes);
128
+ }
49
129
  //# sourceMappingURL=resourceId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceId.js","sourceRoot":"","sources":["../../src/connections/resourceId.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AAWrD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAEmE;IAEnE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC1C,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,SAAS,CACjB,qEAAqE,CACtE,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,QAAQ,EAAE,CAAA;IACxE,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,qBAAqB,IAAI,QAAQ,EAAE,CAAC,CAAA;IAC7E,MAAM,GAAG,GACP,OAAO,YAAY,UAAU;QAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QAC7B,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAClC,OAAO,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5C,CAAC"}
1
+ {"version":3,"file":"resourceId.js","sourceRoot":"","sources":["../../src/connections/resourceId.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import type { ConnectionEntry, ConnectionKind, GrantKind } from './entry.js';
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ import type { ConnectionEntry, ConnectionKind, GrantKind, ReceivedGrantKind } from './entry.js';
2
5
  import type { ConnectionIdKey } from './resourceId.js';
3
6
  import type { ConnectionsStore } from './store.js';
4
7
  /**
@@ -83,9 +86,26 @@ export declare function writeConnection<Stop>({ store, hmacKey, resourceId, chan
83
86
  * it. Each new grant is added by its capability id (one already recorded is
84
87
  * left as stored), `name` is set when it passes the display-name rule (left
85
88
  * as it was otherwise), `origin`, `url`, and `appKey` are set when given,
86
- * `retired` is cleared, and `lastSeen` moves to `now`. `firstSeen` is set
87
- * only on create, and `label` is never touched. A zero-grant consent writes
88
- * too, so an App Connect app with no grants is indexed by its key.
89
+ * `retired` and `declined` are cleared, and `lastSeen` moves to `now`.
90
+ * `firstSeen` is set only on create, and `label` is never touched. Every
91
+ * grant of one call carries the same `grantedAt`. A zero-grant consent
92
+ * writes too, so an App Connect app with no grants is indexed by its key.
93
+ *
94
+ * A `message` (an envelope carrying exactly the grants of this call) is
95
+ * queued on `outbox` in the same write, stamped `now`, so a restore that
96
+ * records fresh grants and owes the party their envelope has no tear between
97
+ * the two. Each zcap of this call is first removed from every pending
98
+ * envelope that carries it (an envelope left with none is dropped), so no
99
+ * two pending envelopes name one zcap id. A consent torn after its write
100
+ * lands and re-run therefore leaves one pending envelope, the re-run's, and
101
+ * a grant recorded earlier with no envelope is told on the first call that
102
+ * brings one.
103
+ *
104
+ * A `seed` and its `seedTag` (both or neither) are written when the entry
105
+ * carries no seed, and left as stored when it carries the same one. An entry
106
+ * carrying a different seed is refused with an `Error`, since the seed is
107
+ * written once. A tag that does not verify under `hmacKey` is refused with a
108
+ * `TypeError` before anything is read.
89
109
  *
90
110
  * Refuses an entry of another kind with {@link ConnectionKindMismatchError},
91
111
  * and a grant delegated to another party or targeting another Space with a
@@ -105,10 +125,15 @@ export declare function writeConnection<Stop>({ store, hmacKey, resourceId, chan
105
125
  * @param [options.origin] {string} the attested Web origin (App Connect)
106
126
  * @param [options.url] {string} the canonical app URL (App Connect)
107
127
  * @param [options.appKey] {string} the app-key Resource id (App Connect)
128
+ * @param [options.seed] {string} the wallet's pairwise seed toward the
129
+ * party, base64url with no padding
130
+ * @param [options.seedTag] {string} the seed's tag (`connectionSeedTag`)
131
+ * @param [options.message] {object} an envelope to queue on `outbox` with
132
+ * the consent, carrying exactly the grants of this call
108
133
  * @param [options.now] {Date}
109
134
  * @returns {Promise<ConnectionWriteResult>}
110
135
  */
111
- export declare function recordGrants({ store, hmacKey, did, kind, spaceUrl, grants, name, origin, url, appKey, now }: {
136
+ export declare function recordGrants({ store, hmacKey, did, kind, spaceUrl, grants, name, origin, url, appKey, seed, seedTag, message, now }: {
112
137
  store: ConnectionsStore;
113
138
  hmacKey: ConnectionIdKey;
114
139
  did: string;
@@ -122,6 +147,9 @@ export declare function recordGrants({ store, hmacKey, did, kind, spaceUrl, gran
122
147
  origin?: string;
123
148
  url?: string;
124
149
  appKey?: string;
150
+ seed?: string;
151
+ seedTag?: string;
152
+ message?: Record<string, unknown>;
125
153
  now?: Date;
126
154
  }): Promise<ConnectionWriteResult>;
127
155
  /**
@@ -145,8 +173,9 @@ export declare function removeGrants({ store, hmacKey, did, zcapIds }: {
145
173
  }): Promise<ConnectionWriteResult>;
146
174
  /**
147
175
  * Retires the party's entry, of any kind, once a revocation has handled its
148
- * grants: empties `grants`, drops `appKey`, and stamps `retired`. `name`,
149
- * `label`, `origin`, `url`, `firstSeen`, `lastSeen`, and `writers` stay, so a
176
+ * grants: empties `grants`, `grantsReceived`, and `outbox`, drops `appKey`,
177
+ * and stamps `retired`. `name`, `label`, `origin`, `url`, `firstSeen`,
178
+ * `lastSeen`, `writers`, `seed`, `seedTag`, and `declined` stay, so a
150
179
  * departed party keeps resolving. An entry already retired with nothing left
151
180
  * to empty writes nothing, and an absent entry writes nothing.
152
181
  *
@@ -241,4 +270,187 @@ export declare function setConnectionLabel({ store, hmacKey, did, kind, label, n
241
270
  enrolledSigningKeys?: ReadonlySet<string>;
242
271
  now?: Date;
243
272
  }): Promise<ConnectionWriteResult>;
273
+ /**
274
+ * Records the capabilities a party handed the wallet on its entry's
275
+ * `grantsReceived`. Each new record is merged in turn: one whose capability
276
+ * id is already held is left as stored, so the drain's re-run is a no-op;
277
+ * one with the `grantKind` and `invocationTarget` of a held record replaces
278
+ * it when its `expires` is strictly later or when the held record has
279
+ * lapsed as of `now` (at the earlier of its `expires` and `receivedAt` plus
280
+ * `channelMaxLifetimeMs`), and leaves the held record otherwise; any other
281
+ * is appended. Every record whose `expires`
282
+ * is past by more than the revocation clock skew is then dropped. A new
283
+ * record carries `receivedAt: now`.
284
+ *
285
+ * Each grant is checked strictly before anything is read, refused with a
286
+ * `TypeError`: its known members well-formed, its `controller` the wallet's
287
+ * pairwise DID toward the party, its `invocationTarget` outside this Space,
288
+ * its kind one of `RECEIVED_GRANT_KINDS`, an `'inbox'` grant allowing POST,
289
+ * and an `expires` in strict ISO 8601 form, with any number of fractional
290
+ * second digits (a format one engine's `Date.parse` accepts and another's
291
+ * refuses would make the entry unparseable there). A retired entry is refused
292
+ * with an `Error`, and an absent entry writes nothing.
293
+ *
294
+ * @param options {object}
295
+ * @param options.store {ConnectionsStore}
296
+ * @param options.hmacKey {ConnectionIdKey}
297
+ * @param options.did {string} the party's DID
298
+ * @param options.pairwiseDid {string} the wallet's pairwise did:key toward
299
+ * the party, every received grant's controller
300
+ * @param options.spaceUrl {string} this Space's container URL, which no
301
+ * received grant may target
302
+ * @param options.grants {Array<object>} `{ zcap, grantKind }` per grant
303
+ * @param options.channelMaxLifetimeMs {number} how long after `receivedAt`
304
+ * a received record lapses at the latest
305
+ * @param [options.now] {Date}
306
+ * @returns {Promise<ConnectionWriteResult>}
307
+ */
308
+ export declare function recordReceivedGrants({ store, hmacKey, did, pairwiseDid, spaceUrl, grants, channelMaxLifetimeMs, now }: {
309
+ store: ConnectionsStore;
310
+ hmacKey: ConnectionIdKey;
311
+ did: string;
312
+ pairwiseDid: string;
313
+ spaceUrl: string;
314
+ grants: Array<{
315
+ zcap: object;
316
+ grantKind: ReceivedGrantKind;
317
+ }>;
318
+ channelMaxLifetimeMs: number;
319
+ now?: Date;
320
+ }): Promise<ConnectionWriteResult>;
321
+ /**
322
+ * The renewal's pivot: appends the renewed grant records and queues the
323
+ * envelope that carries them to the party, in one compare-and-swap. Each
324
+ * renewed record keeps its source's `grantKind` and `grantedAt` and carries
325
+ * `renewedAt: now`; the source record stays as stored. On `outbox`, every
326
+ * zcap sharing a renewed zcap's scope is removed from the envelopes already
327
+ * pending, an envelope left with none is dropped, and `message` is appended
328
+ * with `createdAt: now`.
329
+ *
330
+ * A renewed zcap must copy its source's `invocationTarget` as stored, since
331
+ * the scope compares it verbatim (a trailing `*` marker included).
332
+ *
333
+ * Refuses with an `Error`, writing nothing: a retired entry (whose `retired`
334
+ * stays), an entry with no live inbox channel (`receivedGrants`, then
335
+ * `liveInboxChannel`), a renewal whose source record is gone, a renewal
336
+ * whose source is no longer the latest record of its scope (a concurrent
337
+ * renewal ran), and a renewal whose `expires` is not strictly later than its
338
+ * source's. The last is what keeps a renewal minted under a short-lived parent from
339
+ * being appended at every login. A renewed zcap not delegated to the party,
340
+ * not targeting this Space, or of another scope than its source, and a
341
+ * `message` whose zcap ids are not exactly the renewed zcap ids, are refused
342
+ * with a `TypeError`. An absent entry writes nothing.
343
+ *
344
+ * @param options {object}
345
+ * @param options.store {ConnectionsStore}
346
+ * @param options.hmacKey {ConnectionIdKey}
347
+ * @param options.did {string} the party's DID, every renewed grant's
348
+ * controller
349
+ * @param options.pairwiseDid {string} the wallet's pairwise did:key toward
350
+ * the party, the inbox channel's controller
351
+ * @param options.spaceUrl {string} this Space's container URL
352
+ * @param options.renewals {Array<object>} `{ zcap, sourceZcapId }` per
353
+ * renewed grant: the new capability and the id of the record it renews
354
+ * @param options.message {object} the envelope to queue, verbatim
355
+ * @param options.channelMaxLifetimeMs {number} how long after `receivedAt`
356
+ * an inbox record lapses at the latest
357
+ * @param [options.now] {Date}
358
+ * @returns {Promise<ConnectionWriteResult>}
359
+ */
360
+ export declare function recordRenewedGrants({ store, hmacKey, did, pairwiseDid, spaceUrl, renewals, message, channelMaxLifetimeMs, now }: {
361
+ store: ConnectionsStore;
362
+ hmacKey: ConnectionIdKey;
363
+ did: string;
364
+ pairwiseDid: string;
365
+ spaceUrl: string;
366
+ renewals: Array<{
367
+ zcap: object;
368
+ sourceZcapId: string;
369
+ }>;
370
+ message: Record<string, unknown>;
371
+ channelMaxLifetimeMs: number;
372
+ now?: Date;
373
+ }): Promise<ConnectionWriteResult>;
374
+ /**
375
+ * Removes the outbox item(s) queued at `createdAt`, once a push delivered
376
+ * them. None queued then writes nothing, and an absent entry writes nothing.
377
+ *
378
+ * @param options {object}
379
+ * @param options.store {ConnectionsStore}
380
+ * @param options.hmacKey {ConnectionIdKey}
381
+ * @param options.did {string} the party's DID
382
+ * @param options.createdAt {string} the delivered item's `createdAt`
383
+ * @returns {Promise<ConnectionWriteResult>}
384
+ */
385
+ export declare function settleOutboxItem({ store, hmacKey, did, createdAt }: {
386
+ store: ConnectionsStore;
387
+ hmacKey: ConnectionIdKey;
388
+ did: string;
389
+ createdAt: string;
390
+ }): Promise<ConnectionWriteResult>;
391
+ /**
392
+ * Drops the grant records renewal superseded, and the outbox items no push
393
+ * can still deliver. In each scope holding more than one record, every
394
+ * record but the latest is dropped when its `expires` is past by more than
395
+ * the revocation clock skew, or when its capability id is among
396
+ * `deadChainZcapIds`. The latest record of a scope always stays. An outbox
397
+ * item is discarded when every zcap its envelope carries is past `expires` by
398
+ * more than the skew; an item carrying a zcap this build cannot read stays.
399
+ * Nothing to drop writes nothing, and an absent
400
+ * entry writes nothing.
401
+ *
402
+ * @param options {object}
403
+ * @param options.store {ConnectionsStore}
404
+ * @param options.hmacKey {ConnectionIdKey}
405
+ * @param options.did {string} the party's DID
406
+ * @param [options.deadChainZcapIds] {Iterable<string>} ids of superseded
407
+ * records whose chain revocation reads as dead (the signer gone from the
408
+ * account document, or the parent naming another annex generation) and
409
+ * whose successor's outbox item was settled. A grant `agentGrantDue` reads
410
+ * as due by replacement does not qualify on that alone: a grant under an
411
+ * in-place-renewed delegation stays live until that delegation expires.
412
+ * @param [options.now] {Date}
413
+ * @returns {Promise<ConnectionWriteResult>}
414
+ */
415
+ export declare function pruneSupersededGrants({ store, hmacKey, did, deadChainZcapIds, now }: {
416
+ store: ConnectionsStore;
417
+ hmacKey: ConnectionIdKey;
418
+ did: string;
419
+ deadChainZcapIds?: Iterable<string>;
420
+ now?: Date;
421
+ }): Promise<ConnectionWriteResult>;
422
+ /**
423
+ * Empties the party's `grantsReceived` and `outbox`: the agent revoke's
424
+ * first write, so no client pushes to the party once it starts. Both already
425
+ * empty writes nothing, and an absent entry writes nothing.
426
+ *
427
+ * @param options {object}
428
+ * @param options.store {ConnectionsStore}
429
+ * @param options.hmacKey {ConnectionIdKey}
430
+ * @param options.did {string} the party's DID
431
+ * @returns {Promise<ConnectionWriteResult>}
432
+ */
433
+ export declare function clearReceivedGrants({ store, hmacKey, did }: {
434
+ store: ConnectionsStore;
435
+ hmacKey: ConnectionIdKey;
436
+ did: string;
437
+ }): Promise<ConnectionWriteResult>;
438
+ /**
439
+ * Records the owner's decline of the party's offer: sets `declined` to
440
+ * `now`. An entry already declined keeps its time and writes nothing, and an
441
+ * absent entry writes nothing. A later consent (`recordGrants`) clears it.
442
+ *
443
+ * @param options {object}
444
+ * @param options.store {ConnectionsStore}
445
+ * @param options.hmacKey {ConnectionIdKey}
446
+ * @param options.did {string} the party's DID
447
+ * @param [options.now] {Date}
448
+ * @returns {Promise<ConnectionWriteResult>}
449
+ */
450
+ export declare function markDeclined({ store, hmacKey, did, now }: {
451
+ store: ConnectionsStore;
452
+ hmacKey: ConnectionIdKey;
453
+ did: string;
454
+ now?: Date;
455
+ }): Promise<ConnectionWriteResult>;
244
456
  //# sourceMappingURL=upsert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../src/connections/upsert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../src/connections/upsert.ts"],"names":[],"mappings":"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"}