@interop/wallet-core 0.66.0 → 0.68.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 (257) hide show
  1. package/README.md +12 -8
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +6 -10
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +34 -56
  5. package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
  6. package/dist/clientAnnex/establish.d.ts +46 -29
  7. package/dist/clientAnnex/establish.d.ts.map +1 -1
  8. package/dist/clientAnnex/establish.js +111 -86
  9. package/dist/clientAnnex/establish.js.map +1 -1
  10. package/dist/clientAnnex/forget.d.ts +7 -16
  11. package/dist/clientAnnex/forget.d.ts.map +1 -1
  12. package/dist/clientAnnex/forget.js +13 -24
  13. package/dist/clientAnnex/forget.js.map +1 -1
  14. package/dist/clientAnnex/forgetLast.d.ts +33 -129
  15. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  16. package/dist/clientAnnex/forgetLast.js +43 -182
  17. package/dist/clientAnnex/forgetLast.js.map +1 -1
  18. package/dist/clientAnnex/gc.d.ts +26 -12
  19. package/dist/clientAnnex/gc.d.ts.map +1 -1
  20. package/dist/clientAnnex/gc.js +60 -57
  21. package/dist/clientAnnex/gc.js.map +1 -1
  22. package/dist/clientAnnex/heal.d.ts +75 -18
  23. package/dist/clientAnnex/heal.d.ts.map +1 -1
  24. package/dist/clientAnnex/heal.js +79 -147
  25. package/dist/clientAnnex/heal.js.map +1 -1
  26. package/dist/clientAnnex/index.d.ts +8 -8
  27. package/dist/clientAnnex/index.d.ts.map +1 -1
  28. package/dist/clientAnnex/index.js +5 -5
  29. package/dist/clientAnnex/index.js.map +1 -1
  30. package/dist/clientAnnex/ladder.d.ts +51 -4
  31. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  32. package/dist/clientAnnex/ladder.js +283 -47
  33. package/dist/clientAnnex/ladder.js.map +1 -1
  34. package/dist/clientAnnex/ladderAnchored.d.ts +62 -73
  35. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  36. package/dist/clientAnnex/ladderAnchored.js +103 -117
  37. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  38. package/dist/clientAnnex/log.d.ts +123 -125
  39. package/dist/clientAnnex/log.d.ts.map +1 -1
  40. package/dist/clientAnnex/log.js +174 -233
  41. package/dist/clientAnnex/log.js.map +1 -1
  42. package/dist/clientAnnex/mend.d.ts +0 -4
  43. package/dist/clientAnnex/mend.d.ts.map +1 -1
  44. package/dist/clientAnnex/mend.js +50 -51
  45. package/dist/clientAnnex/mend.js.map +1 -1
  46. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +25 -13
  47. package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
  48. package/dist/clientAnnex/recoveryLadderAnchored.js +80 -303
  49. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  50. package/dist/clientAnnex/rosterDeliveredEpochs.d.ts +13 -5
  51. package/dist/clientAnnex/rosterDeliveredEpochs.d.ts.map +1 -1
  52. package/dist/clientAnnex/rosterDeliveredEpochs.js +18 -9
  53. package/dist/clientAnnex/rosterDeliveredEpochs.js.map +1 -1
  54. package/dist/clientAnnex/selfEnroll.d.ts +6 -10
  55. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  56. package/dist/clientAnnex/selfEnroll.js +13 -18
  57. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  58. package/dist/clientAnnex/zcap.d.ts +19 -0
  59. package/dist/clientAnnex/zcap.d.ts.map +1 -1
  60. package/dist/clientAnnex/zcap.js +80 -12
  61. package/dist/clientAnnex/zcap.js.map +1 -1
  62. package/dist/clients/index.d.ts +3 -2
  63. package/dist/clients/index.d.ts.map +1 -1
  64. package/dist/clients/index.js +3 -2
  65. package/dist/clients/index.js.map +1 -1
  66. package/dist/clients/listing.d.ts.map +1 -1
  67. package/dist/clients/listing.js +33 -15
  68. package/dist/clients/listing.js.map +1 -1
  69. package/dist/clients/policy.d.ts +18 -0
  70. package/dist/clients/policy.d.ts.map +1 -1
  71. package/dist/clients/policy.js +22 -8
  72. package/dist/clients/policy.js.map +1 -1
  73. package/dist/clients/revocation.d.ts +18 -30
  74. package/dist/clients/revocation.d.ts.map +1 -1
  75. package/dist/clients/revocation.js +12 -27
  76. package/dist/clients/revocation.js.map +1 -1
  77. package/dist/clients/rosterPolicy.d.ts +6 -1
  78. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  79. package/dist/clients/rosterPolicy.js +27 -30
  80. package/dist/clients/rosterPolicy.js.map +1 -1
  81. package/dist/descriptors/errors.d.ts +6 -5
  82. package/dist/descriptors/errors.d.ts.map +1 -1
  83. package/dist/descriptors/errors.js +6 -5
  84. package/dist/descriptors/errors.js.map +1 -1
  85. package/dist/descriptors/index.d.ts +7 -3
  86. package/dist/descriptors/index.d.ts.map +1 -1
  87. package/dist/descriptors/index.js +7 -3
  88. package/dist/descriptors/index.js.map +1 -1
  89. package/dist/descriptors/logSource.d.ts +28 -6
  90. package/dist/descriptors/logSource.d.ts.map +1 -1
  91. package/dist/descriptors/logSource.js +33 -7
  92. package/dist/descriptors/logSource.js.map +1 -1
  93. package/dist/enrollment/enrollment.d.ts.map +1 -1
  94. package/dist/enrollment/enrollment.js +3 -7
  95. package/dist/enrollment/enrollment.js.map +1 -1
  96. package/dist/genesis/accountGenesis.d.ts +11 -16
  97. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  98. package/dist/genesis/accountGenesis.js +43 -47
  99. package/dist/genesis/accountGenesis.js.map +1 -1
  100. package/dist/genesis/kmsAuthentication.d.ts +50 -0
  101. package/dist/genesis/kmsAuthentication.d.ts.map +1 -0
  102. package/dist/genesis/kmsAuthentication.js +49 -0
  103. package/dist/genesis/kmsAuthentication.js.map +1 -0
  104. package/dist/keyring/kdf.d.ts +16 -20
  105. package/dist/keyring/kdf.d.ts.map +1 -1
  106. package/dist/keyring/kdf.js +2 -2
  107. package/dist/keyring/kdf.js.map +1 -1
  108. package/dist/keyring/unlockSpace.d.ts +8 -30
  109. package/dist/keyring/unlockSpace.d.ts.map +1 -1
  110. package/dist/keyring/unlockSpace.js +8 -31
  111. package/dist/keyring/unlockSpace.js.map +1 -1
  112. package/dist/keys/clientKeyRecord.d.ts +2 -1
  113. package/dist/keys/clientKeyRecord.d.ts.map +1 -1
  114. package/dist/keys/clientKeyRecord.js +28 -11
  115. package/dist/keys/clientKeyRecord.js.map +1 -1
  116. package/dist/keys/index.d.ts +6 -2
  117. package/dist/keys/index.d.ts.map +1 -1
  118. package/dist/keys/index.js +5 -1
  119. package/dist/keys/index.js.map +1 -1
  120. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  121. package/dist/keys/rosterLogStore.js +14 -5
  122. package/dist/keys/rosterLogStore.js.map +1 -1
  123. package/dist/keys/spaceEpochs.d.ts +92 -3
  124. package/dist/keys/spaceEpochs.d.ts.map +1 -1
  125. package/dist/keys/spaceEpochs.js +110 -4
  126. package/dist/keys/spaceEpochs.js.map +1 -1
  127. package/dist/keys/userKeyRoster.d.ts +30 -3
  128. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  129. package/dist/keys/userKeyRoster.js +90 -15
  130. package/dist/keys/userKeyRoster.js.map +1 -1
  131. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  132. package/dist/keys/userKeyRosterCascade.js +5 -1
  133. package/dist/keys/userKeyRosterCascade.js.map +1 -1
  134. package/dist/recovery/continuation.d.ts +250 -0
  135. package/dist/recovery/continuation.d.ts.map +1 -0
  136. package/dist/recovery/continuation.js +467 -0
  137. package/dist/recovery/continuation.js.map +1 -0
  138. package/dist/recovery/index.d.ts +12 -8
  139. package/dist/recovery/index.d.ts.map +1 -1
  140. package/dist/recovery/index.js +11 -7
  141. package/dist/recovery/index.js.map +1 -1
  142. package/dist/recovery/recoveryDelegation.d.ts +23 -126
  143. package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
  144. package/dist/recovery/recoveryDelegation.js +1 -266
  145. package/dist/recovery/recoveryDelegation.js.map +1 -1
  146. package/dist/recovery/recoveryWebvh.d.ts +52 -107
  147. package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
  148. package/dist/recovery/recoveryWebvh.js +54 -403
  149. package/dist/recovery/recoveryWebvh.js.map +1 -1
  150. package/dist/request/classify.d.ts +3 -14
  151. package/dist/request/classify.d.ts.map +1 -1
  152. package/dist/request/classify.js +19 -40
  153. package/dist/request/classify.js.map +1 -1
  154. package/dist/request/index.d.ts +1 -0
  155. package/dist/request/index.d.ts.map +1 -1
  156. package/dist/request/index.js +1 -0
  157. package/dist/request/index.js.map +1 -1
  158. package/dist/request/onboarding.d.ts.map +1 -1
  159. package/dist/request/onboarding.js +19 -27
  160. package/dist/request/onboarding.js.map +1 -1
  161. package/dist/request/parse.d.ts +5 -3
  162. package/dist/request/parse.d.ts.map +1 -1
  163. package/dist/request/parse.js +7 -6
  164. package/dist/request/parse.js.map +1 -1
  165. package/dist/request/processRequest.d.ts.map +1 -1
  166. package/dist/request/processRequest.js +2 -1
  167. package/dist/request/processRequest.js.map +1 -1
  168. package/dist/request/queryPredicates.d.ts +98 -0
  169. package/dist/request/queryPredicates.d.ts.map +1 -0
  170. package/dist/request/queryPredicates.js +107 -0
  171. package/dist/request/queryPredicates.js.map +1 -0
  172. package/dist/resourceLog/document.d.ts +39 -0
  173. package/dist/resourceLog/document.d.ts.map +1 -1
  174. package/dist/resourceLog/document.js +41 -0
  175. package/dist/resourceLog/document.js.map +1 -1
  176. package/dist/resourceLog/index.d.ts +2 -2
  177. package/dist/resourceLog/index.js +2 -2
  178. package/dist/resourceLog/ladderRungs.d.ts.map +1 -1
  179. package/dist/resourceLog/ladderRungs.js +3 -2
  180. package/dist/resourceLog/ladderRungs.js.map +1 -1
  181. package/dist/sync/contactsConflict.d.ts.map +1 -1
  182. package/dist/sync/contactsConflict.js +8 -2
  183. package/dist/sync/contactsConflict.js.map +1 -1
  184. package/dist/sync/engine.d.ts +38 -23
  185. package/dist/sync/engine.d.ts.map +1 -1
  186. package/dist/sync/engine.js +36 -5
  187. package/dist/sync/engine.js.map +1 -1
  188. package/dist/sync/index.d.ts +9 -12
  189. package/dist/sync/index.d.ts.map +1 -1
  190. package/dist/sync/index.js +8 -11
  191. package/dist/sync/index.js.map +1 -1
  192. package/dist/sync/push.d.ts.map +1 -1
  193. package/dist/sync/push.js +1 -2
  194. package/dist/sync/push.js.map +1 -1
  195. package/dist/sync/remint.d.ts +0 -31
  196. package/dist/sync/remint.d.ts.map +1 -1
  197. package/dist/sync/remint.js +32 -1
  198. package/dist/sync/remint.js.map +1 -1
  199. package/dist/sync/types.d.ts +4 -41
  200. package/dist/sync/types.d.ts.map +1 -1
  201. package/dist/sync/types.js +4 -47
  202. package/dist/sync/types.js.map +1 -1
  203. package/dist/unlock/index.d.ts +1 -1
  204. package/dist/unlock/index.d.ts.map +1 -1
  205. package/dist/unlock/index.js +1 -1
  206. package/dist/unlock/index.js.map +1 -1
  207. package/dist/unlock/retire.d.ts +16 -64
  208. package/dist/unlock/retire.d.ts.map +1 -1
  209. package/dist/unlock/retire.js +7 -86
  210. package/dist/unlock/retire.js.map +1 -1
  211. package/dist/unlock/standingWebvh.d.ts +27 -61
  212. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  213. package/dist/unlock/standingWebvh.js +40 -92
  214. package/dist/unlock/standingWebvh.js.map +1 -1
  215. package/dist/unlock/unlockRecord.d.ts.map +1 -1
  216. package/dist/unlock/unlockRecord.js +69 -44
  217. package/dist/unlock/unlockRecord.js.map +1 -1
  218. package/dist/webvh/accountEntry.d.ts +68 -19
  219. package/dist/webvh/accountEntry.d.ts.map +1 -1
  220. package/dist/webvh/accountEntry.js +117 -37
  221. package/dist/webvh/accountEntry.js.map +1 -1
  222. package/dist/webvh/delegatedLogStore.d.ts +24 -13
  223. package/dist/webvh/delegatedLogStore.d.ts.map +1 -1
  224. package/dist/webvh/delegatedLogStore.js +40 -11
  225. package/dist/webvh/delegatedLogStore.js.map +1 -1
  226. package/dist/webvh/didWebvh.d.ts +91 -86
  227. package/dist/webvh/didWebvh.d.ts.map +1 -1
  228. package/dist/webvh/didWebvh.js +117 -142
  229. package/dist/webvh/didWebvh.js.map +1 -1
  230. package/dist/webvh/enrollClient.d.ts +2 -8
  231. package/dist/webvh/enrollClient.d.ts.map +1 -1
  232. package/dist/webvh/enrollClient.js +22 -31
  233. package/dist/webvh/enrollClient.js.map +1 -1
  234. package/dist/webvh/index.d.ts +12 -8
  235. package/dist/webvh/index.d.ts.map +1 -1
  236. package/dist/webvh/index.js +10 -7
  237. package/dist/webvh/index.js.map +1 -1
  238. package/dist/webvh/listClients.d.ts.map +1 -1
  239. package/dist/webvh/listClients.js +102 -65
  240. package/dist/webvh/listClients.js.map +1 -1
  241. package/dist/webvh/mergeMethods.d.ts +84 -0
  242. package/dist/webvh/mergeMethods.d.ts.map +1 -0
  243. package/dist/webvh/mergeMethods.js +46 -0
  244. package/dist/webvh/mergeMethods.js.map +1 -0
  245. package/dist/webvh/revokeClient.d.ts +15 -11
  246. package/dist/webvh/revokeClient.d.ts.map +1 -1
  247. package/dist/webvh/revokeClient.js +130 -57
  248. package/dist/webvh/revokeClient.js.map +1 -1
  249. package/dist/webvh/verifyLog.d.ts +45 -4
  250. package/dist/webvh/verifyLog.d.ts.map +1 -1
  251. package/dist/webvh/verifyLog.js +62 -21
  252. package/dist/webvh/verifyLog.js.map +1 -1
  253. package/dist/webvh/wasIdStore.d.ts +16 -3
  254. package/dist/webvh/wasIdStore.d.ts.map +1 -1
  255. package/dist/webvh/wasIdStore.js +18 -3
  256. package/dist/webvh/wasIdStore.js.map +1 -1
  257. package/package.json +11 -11
@@ -0,0 +1,250 @@
1
+ import type { DIDDoc, DIDLog, ServiceEndpoint, VerificationMethod } from '@interop/did-method-webvh';
2
+ import type { WebvhIdStore } from '../webvh/didWebvh.js';
3
+ import type { RelationMembership } from '../webvh/mergeMethods.js';
4
+ /**
5
+ * What the add-and-retire entry retired, read back OFF THE LOG -- the resumed
6
+ * spend's answer to the same question the live run answers from the document
7
+ * it is editing. A run torn after that entry but before the caller's registry
8
+ * and unlock-Space teardown resumes into the already-complete branch, and
9
+ * without this it would be told nothing was retired and leave every other
10
+ * credential's registry entry standing.
11
+ *
12
+ * The entry is located by its own signature on the log: it is the first entry
13
+ * whose effective `updateKeys` authorize the successor key (the fresh
14
+ * ladder's rung 0 on the transient continuation, the new client's update key
15
+ * on the remembered one), which only that entry writes. What it retired is
16
+ * then the credential-class `keyAgreement` ids its predecessor published and
17
+ * it does not, less the spent code's own id -- the same exclusion the live
18
+ * branch makes, since the caller retires that one by name.
19
+ *
20
+ * @param options {object}
21
+ * @param options.log {DIDLog} the verified account log
22
+ * @param options.did {string} the account DID the log resolves to
23
+ * @param options.successorKeyMultibase {string} the update key only the
24
+ * add-and-retire entry authorizes
25
+ * @param options.spentVmId {string} the spent code's key-agreement
26
+ * verification-method id, excluded from the result
27
+ * @returns {string[]} the retired credentials' key-agreement ids, empty
28
+ * when no entry authorizes the successor key or it is the genesis entry
29
+ */
30
+ export declare function retiredCredentialVmIdsFromLog({ log, did, successorKeyMultibase, spentVmId }: {
31
+ log: DIDLog;
32
+ did: string;
33
+ successorKeyMultibase: string;
34
+ spentVmId: string;
35
+ }): string[];
36
+ /**
37
+ * What a recovery spend retired, the three members both continuations
38
+ * report: the credential-class `keyAgreement` ids the add-and-retire entry
39
+ * struck for pre-recovery credentials OTHER than the spent code (what a
40
+ * caller drops registry entries and deletes unlock Spaces for), the rung
41
+ * hashes the entry struck, and the retired credentials whose rungs the log
42
+ * could not attribute -- each of which keeps a committed rung it could still
43
+ * reveal, and is left for the caller to report rather than struck.
44
+ */
45
+ export interface RecoverySpendRetirement {
46
+ retiredCredentialVmIds: string[];
47
+ struckRungHashes: string[];
48
+ unclaimedCredentialVmIds: string[];
49
+ }
50
+ /**
51
+ * The retirement report of a spend whose add-and-retire entry already
52
+ * stands, read back off the log: the same three members the continuation
53
+ * returns, derived the way its completed branch derives them, so a resume
54
+ * that holds only the successor's public halves (a remembered spend's pending
55
+ * client-key record, say) reports exactly what the first run reported rather
56
+ * than a second definition of the same question.
57
+ *
58
+ * The entry is located by the successor key it authorized
59
+ * ({@link retiredCredentialVmIdsFromLog}), and the strike is recomputed over
60
+ * the log as it stood just before that entry with the same protected sets the
61
+ * first run used: the successor key and its staged partner, and the
62
+ * replacement code's rung 0. A log that does not authorize the successor key
63
+ * (the entry never landed) reports nothing retired, since there is no entry to
64
+ * read back.
65
+ *
66
+ * @param options {object}
67
+ * @param options.log {DIDLog} the verified account log
68
+ * @param options.did {string} the account DID the log resolves to
69
+ * @param options.successor {object} the public halves of the key the entry
70
+ * authorized (`updateKeyMultibase`) and the staged partner whose hash the
71
+ * reveal entry committed after it (`stagedKeyMultibase`)
72
+ * @param options.replacementUpdateKeyMultibase {string} the replacement
73
+ * code's rung-0 update key
74
+ * @param options.spentKeyAgreementKeyMultibase {string} the spent code's
75
+ * key-agreement key, excluded from the retired set
76
+ * @returns {Promise<RecoverySpendRetirement>}
77
+ */
78
+ export declare function recoverySpendRetirementFromLog({ log, did, successor, replacementUpdateKeyMultibase, spentKeyAgreementKeyMultibase }: {
79
+ log: DIDLog;
80
+ did: string;
81
+ successor: {
82
+ updateKeyMultibase: string;
83
+ stagedKeyMultibase: string;
84
+ };
85
+ replacementUpdateKeyMultibase: string;
86
+ spentKeyAgreementKeyMultibase: string;
87
+ }): Promise<RecoverySpendRetirement>;
88
+ /**
89
+ * The verification-method id a code's key-agreement key publishes under --
90
+ * the ordinary `<did>#<multibase>` form, indistinguishable by id from any
91
+ * other keyAgreement entry. Consumers that must exclude recovery entries do
92
+ * it structurally (an enrolled client is a `capabilityInvocation` entry; a
93
+ * recovery key never has one) or by the registry's recorded multibase.
94
+ *
95
+ * @param options {object}
96
+ * @param options.did {string} the account's did:webvh
97
+ * @param options.keyAgreementKeyMultibase {string}
98
+ * @returns {string}
99
+ */
100
+ export declare function recoveryVmId({ did, keyAgreementKeyMultibase }: {
101
+ did: string;
102
+ keyAgreementKeyMultibase: string;
103
+ }): string;
104
+ /**
105
+ * The public halves of a recovery code as the document and log carry them:
106
+ * the X25519 key-agreement key published as the recovery VM, and the update
107
+ * key whose hash stands in `nextKeyHashes`.
108
+ */
109
+ export interface RecoveryPublicKeys {
110
+ keyAgreementKeyMultibase: string;
111
+ updateKeyMultibase: string;
112
+ }
113
+ /**
114
+ * The public halves a SPEND needs of the replacement code it publishes: the
115
+ * two above plus the code's ladder VM key, which the add-and-retire entry
116
+ * installs under `assertionMethod` and `capabilityDelegation`. A code is a
117
+ * standing unlock credential with a ladder (`decisions/0020`) and its bridge
118
+ * delegation is signed by that ladder's VM (`decisions/0019`), so a
119
+ * replacement published without the VM could neither sign its own bridge nor
120
+ * spend. `recoveryClientFromCode` produces all three.
121
+ */
122
+ export interface ReplacementRecoveryPublicKeys extends RecoveryPublicKeys {
123
+ ladderVmKeyMultibase: string;
124
+ }
125
+ /**
126
+ * Thrown by the recovery continuation when the log carries neither the code's
127
+ * update key nor its committed hash -- the code was revoked (or never
128
+ * issued), so no continuation can verify.
129
+ */
130
+ export declare class RecoveryKeyNotCommittedError extends Error {
131
+ constructor(message?: string);
132
+ }
133
+ /**
134
+ * Thrown by the recovery continuation, before its reveal entry, when a
135
+ * credential-class `keyAgreement` id the add-and-retire entry would introduce
136
+ * already stands in the document -- the user re-typed a passphrase the
137
+ * account already stands on. The recovery exists to retire that credential,
138
+ * and an entry that re-binds it would strike its old ladder VM while leaving
139
+ * its old rung commitments standing, one member backed by two ladders. The
140
+ * app maps the refusal to "choose a passphrase you have not used". Nothing
141
+ * is published.
142
+ */
143
+ export declare class RecoveryCredentialStandingError extends Error {
144
+ readonly credentialVmIds: string[];
145
+ constructor({ credentialVmIds }: {
146
+ credentialVmIds: string[];
147
+ });
148
+ }
149
+ /**
150
+ * The narrow store seam the recovery continuation writes through: a public
151
+ * read of the log and the delegated `did.jsonl` PUT. A subset of
152
+ * {@link WebvhIdStore}, so an app's remote-store class satisfies it too.
153
+ */
154
+ export type RecoveryLogStore = Pick<WebvhIdStore, 'getIdResourceRaw' | 'putIdResource' | 'pin'>;
155
+ /**
156
+ * What a variant adds to the add-and-retire entry beyond the replacement
157
+ * code's own inventory, which the core appends after it: the verification
158
+ * methods, and the ids each relation gains. Order is load-bearing on the wire
159
+ * -- the methods land in `verificationMethod` and each relation in the order
160
+ * given, with the replacement code's after them.
161
+ */
162
+ export interface RecoveryAddedInventory extends RelationMembership {
163
+ methods: VerificationMethod[];
164
+ services?: ServiceEndpoint[];
165
+ }
166
+ /**
167
+ * What one attempt of a recovery continuation returns: the superset both
168
+ * variants pick their public outcome from.
169
+ */
170
+ export interface RecoveryContinuationOutcome extends RecoverySpendRetirement {
171
+ did: string;
172
+ doc: DIDDoc;
173
+ log: DIDLog;
174
+ webDoc?: object;
175
+ committed: boolean;
176
+ }
177
+ /**
178
+ * One attempt of a recovery continuation, the shared control flow of
179
+ * `recoverWebvhClient` and `recoverWebvhLadderAnchored`; each wraps it in the
180
+ * conflict retry under its own preconditions. Both entries go through the
181
+ * account-entry seam ({@link signAccountEntry}) on its committed-key arm: the
182
+ * spent code's rung 0 signs the reveal-and-commit entry, and the successor
183
+ * key that entry committed signs the add-and-retire entry, so the pinned
184
+ * read, the carry-over precondition, the self-reveal union, the conditional
185
+ * publish, and the pin advance are the seam's. The body detects a completed
186
+ * run by the successor key standing authorized (reporting what the entry
187
+ * retired off the log), publishes the reveal-and-commit entry unless a torn
188
+ * earlier run left it standing, enters the `onCommitted` seam, and builds the
189
+ * add-and-retire entry from what the variant's `added` callback hands in.
190
+ *
191
+ * The reveal-and-commit entry commits, in this order, the successor key's
192
+ * hash, its staged partner's hash, and the replacement code's rung-0 hash --
193
+ * the ratified append order of `decisions/0007` (the replacement's comes
194
+ * LAST) and the anchor rule of `decisions/0014` both read that order. The
195
+ * add-and-retire entry is built on the head the reveal entry's own publish
196
+ * leaves standing, with no read in between; against a store whose PUT serves
197
+ * no ETag it is re-read under the same pin instead, so its compare-and-swap
198
+ * never degrades to an unconditional write.
199
+ *
200
+ * @param options {object}
201
+ * @param options.store {RecoveryLogStore}
202
+ * @param options.recovery {object} the spent code's update seed and public
203
+ * halves
204
+ * @param options.successor {object} the key the add-and-retire entry
205
+ * authorizes and signs with (`updateKeyMultibase`, from `updateSeed`) and
206
+ * the staged partner whose hash the reveal entry commits right after it
207
+ * (`stagedKeyMultibase`: the new client's staged key, or the fresh ladder's
208
+ * rung 1)
209
+ * @param options.replacement {ReplacementRecoveryPublicKeys}
210
+ * @param options.onCommitted {function} the persist-before-publish seam,
211
+ * entered once per attempt after the reveal entry stands and before the
212
+ * pivot is built; what it resolves to is handed to `added`
213
+ * @param options.added {function} builds the variant's additions to the
214
+ * add-and-retire entry from the account DID, the document the entry edits,
215
+ * and what the seam persisted
216
+ * @param [options.credentialVmIds] {function} `(did) => string[]` -- the
217
+ * credential-class `keyAgreement` ids `added` will introduce, checked
218
+ * against the read document before the reveal entry: one already standing
219
+ * is refused with {@link RecoveryCredentialStandingError}. The transient
220
+ * variant supplies its fresh credential's; the remembered variant's new
221
+ * client publishes a marked pair, which is never credential-class
222
+ * @param [options.expectedDid] {string}
223
+ * @returns {Promise<RecoveryContinuationOutcome>}
224
+ */
225
+ export declare function recoveryContinuationOnce<Persisted>({ store, recovery, successor, replacement, onCommitted, added, credentialVmIds, expectedDid }: {
226
+ store: RecoveryLogStore;
227
+ recovery: RecoveryPublicKeys & {
228
+ updateSeed: Uint8Array;
229
+ };
230
+ successor: {
231
+ updateKeyMultibase: string;
232
+ updateSeed: Uint8Array;
233
+ stagedKeyMultibase: string;
234
+ };
235
+ replacement: ReplacementRecoveryPublicKeys;
236
+ onCommitted: (committed: {
237
+ builtOnHead: {
238
+ scid: string;
239
+ versionId: string;
240
+ };
241
+ }) => Promise<Persisted>;
242
+ added: (context: {
243
+ did: string;
244
+ doc: DIDDoc;
245
+ persisted: Persisted;
246
+ }) => RecoveryAddedInventory;
247
+ credentialVmIds?: (did: string) => string[];
248
+ expectedDid?: string;
249
+ }): Promise<RecoveryContinuationOutcome>;
250
+ //# sourceMappingURL=continuation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/recovery/continuation.ts"],"names":[],"mappings":"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"}