@metamask-previews/passkey-controller 2.1.0-preview-b47b10d1b → 2.1.0-preview-1ed087802
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +83 -20
- package/dist/PasskeyController-method-action-types.cjs.map +1 -1
- package/dist/PasskeyController-method-action-types.d.cts +85 -7
- package/dist/PasskeyController-method-action-types.d.cts.map +1 -1
- package/dist/PasskeyController-method-action-types.d.mts +85 -7
- package/dist/PasskeyController-method-action-types.d.mts.map +1 -1
- package/dist/PasskeyController-method-action-types.mjs.map +1 -1
- package/dist/PasskeyController.cjs +328 -164
- package/dist/PasskeyController.cjs.map +1 -1
- package/dist/PasskeyController.d.cts +88 -50
- package/dist/PasskeyController.d.cts.map +1 -1
- package/dist/PasskeyController.d.mts +88 -50
- package/dist/PasskeyController.d.mts.map +1 -1
- package/dist/PasskeyController.mjs +328 -164
- package/dist/PasskeyController.mjs.map +1 -1
- package/dist/constants.cjs +4 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +5 -1
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +5 -1
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +4 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +38 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +38 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Orchestrated passkey product flows on `PasskeyController` and their messenger actions. ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
13
|
+
- `unlockWithPasskey`
|
|
14
|
+
- `removePasskeyWithPasskeyVerification`
|
|
15
|
+
- `removePasskeyWithPasswordVerification`
|
|
16
|
+
- `changePasswordWithPasskeyVerification`
|
|
17
|
+
- `exportSeedPhraseWithPasskey`
|
|
18
|
+
- `exportAccountsWithPasskey`
|
|
19
|
+
- `PasskeyControllerOptions` with required `getIsOnboardingCompleted` constructor callback for enrollment step-up gating. ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
20
|
+
- Added new error constants, `PasskeyControllerErrorCode.VaultKeyRenewalFailed`, `PasskeyControllerErrorCode.EnrollmentPasswordRequired`, `PasskeyControllerErrorMessage.VaultKeyRenewalFailed` and `PasskeyControllerErrorMessage.EnrollmentPasswordRequired`. ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
21
|
+
- `@metamask/keyring-controller` dependency for KeyringController messenger action types used during orchestration. ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **BREAKING:** `protectVaultKeyWithPasskey` no longer accepts `vaultKey`; the controller fetches the current encryption key via `KeyringController:exportEncryptionKey` and optionally verifies the wallet password when onboarding is complete. (([#9548](https://github.com/MetaMask/core/pull/9548)))
|
|
26
|
+
- **BREAKING:** `PasskeyController` constructor requires `getIsOnboardingCompleted`. (([#9548](https://github.com/MetaMask/core/pull/9548)))
|
|
27
|
+
- **BREAKING:** `removePasskey` and `PasskeyController:removePasskey` are no longer public; use `removePasskeyWithPasskeyVerification`, `removePasskeyWithPasswordVerification`, or `clearState`. ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
28
|
+
- `PasskeyControllerMessenger` may call a fixed set of KeyringController actions during orchestrated flows ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
29
|
+
- Orchestrated async passkey operations are serialized with an internal mutex to prevent concurrent vault/keyring races. ([#9548](https://github.com/MetaMask/core/pull/9548))
|
|
30
|
+
|
|
10
31
|
## [2.1.0]
|
|
11
32
|
|
|
12
33
|
### Added
|
package/README.md
CHANGED
|
@@ -34,6 +34,8 @@ Both strategies feed the input key material through **HKDF-SHA256** with the cre
|
|
|
34
34
|
|
|
35
35
|
### Setting up the controller
|
|
36
36
|
|
|
37
|
+
The restricted messenger must allow the KeyringController actions listed in [Keyring integration](#keyring-integration). Onboarding completion is supplied via constructor callback (not via messenger).
|
|
38
|
+
|
|
37
39
|
```typescript
|
|
38
40
|
import { PasskeyController } from '@metamask/passkey-controller';
|
|
39
41
|
import type { PasskeyControllerMessenger } from '@metamask/passkey-controller';
|
|
@@ -50,6 +52,7 @@ const controller = new PasskeyController({
|
|
|
50
52
|
// Optional — both default to `rpName` when omitted.
|
|
51
53
|
userName: 'My Wallet',
|
|
52
54
|
userDisplayName: 'My Wallet',
|
|
55
|
+
getIsOnboardingCompleted: () => onboardingController.state.completedOnboarding,
|
|
53
56
|
});
|
|
54
57
|
```
|
|
55
58
|
|
|
@@ -57,6 +60,8 @@ const controller = new PasskeyController({
|
|
|
57
60
|
|
|
58
61
|
### Passkey enrollment (registration)
|
|
59
62
|
|
|
63
|
+
`protectVaultKeyWithPasskey` fetches the current vault encryption key from KeyringController. When onboarding is complete, pass the wallet `password` for step-up verification first.
|
|
64
|
+
|
|
60
65
|
```typescript
|
|
61
66
|
// 1. Generate registration options (synchronous)
|
|
62
67
|
const regOptions = controller.generateRegistrationOptions();
|
|
@@ -74,48 +79,72 @@ const authResponse = await navigator.credentials.get({
|
|
|
74
79
|
publicKey: authOptions,
|
|
75
80
|
});
|
|
76
81
|
|
|
77
|
-
// 4. Verify registration + post-registration auth
|
|
82
|
+
// 4. Verify registration + post-registration auth, then persist
|
|
78
83
|
await controller.protectVaultKeyWithPasskey({
|
|
79
84
|
registrationResponse: regResponse,
|
|
80
85
|
authenticationResponse: authResponse,
|
|
81
|
-
|
|
86
|
+
password: settingsEnroll ? walletPassword : undefined,
|
|
82
87
|
});
|
|
83
88
|
```
|
|
84
89
|
|
|
85
90
|
### Passkey unlock (authentication)
|
|
86
91
|
|
|
92
|
+
Prefer `unlockWithPasskey`, which verifies the assertion and submits the vault key to KeyringController.
|
|
93
|
+
|
|
87
94
|
```typescript
|
|
88
|
-
// 1. Generate authentication options (synchronous)
|
|
89
95
|
const options = controller.generateAuthenticationOptions();
|
|
90
|
-
|
|
91
|
-
// 2. Pass options to the browser WebAuthn API
|
|
92
96
|
const response = await navigator.credentials.get({ publicKey: options });
|
|
93
97
|
|
|
94
|
-
|
|
95
|
-
const vaultKey = await controller.retrieveVaultKeyWithPasskey(response);
|
|
98
|
+
await controller.unlockWithPasskey(response);
|
|
96
99
|
```
|
|
97
100
|
|
|
98
|
-
###
|
|
101
|
+
### Orchestrated product flows
|
|
99
102
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
+
These methods combine passkey verification with KeyringController calls. Use them from UI layers that already performed `navigator.credentials.get()`.
|
|
104
|
+
|
|
105
|
+
| Method | Purpose |
|
|
106
|
+
| --------------------------------------- | --------------------------------------------------------- |
|
|
107
|
+
| `unlockWithPasskey` | Unlock keyring after passkey assertion |
|
|
108
|
+
| `removePasskeyWithPasskeyVerification` | Remove passkey after assertion step-up |
|
|
109
|
+
| `removePasskeyWithPasswordVerification` | Remove passkey after password step-up |
|
|
110
|
+
| `changePasswordWithPasskeyVerification` | Change password; re-wrap vault key by default |
|
|
111
|
+
| `exportSeedPhraseWithPasskey` | Export SRP bytes after assertion step-up |
|
|
112
|
+
| `exportAccountsWithPasskey` | Export private keys for addresses after assertion step-up |
|
|
103
113
|
|
|
104
|
-
|
|
114
|
+
```typescript
|
|
115
|
+
// Change password (re-wraps passkey protection by default)
|
|
116
|
+
await controller.changePasswordWithPasskeyVerification({
|
|
117
|
+
newPassword: 'new-secret',
|
|
105
118
|
authenticationResponse: response,
|
|
106
|
-
|
|
107
|
-
newVaultKey: newVaultKey,
|
|
119
|
+
options: { renewVaultKeyProtection: true },
|
|
108
120
|
});
|
|
121
|
+
|
|
122
|
+
// Export seed phrase (raw Uint8Array; format in your app layer)
|
|
123
|
+
const seedPhrase = await controller.exportSeedPhraseWithPasskey(
|
|
124
|
+
response,
|
|
125
|
+
keyringId,
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// Export private keys for multiple addresses (one assertion)
|
|
129
|
+
const privateKeys = await controller.exportAccountsWithPasskey(response, [
|
|
130
|
+
'0xabc…',
|
|
131
|
+
'0xdef…',
|
|
132
|
+
]);
|
|
109
133
|
```
|
|
110
134
|
|
|
135
|
+
### Low-level methods
|
|
136
|
+
|
|
137
|
+
`retrieveVaultKeyWithPasskey` and `renewVaultKeyProtection` remain available for advanced composition. Prefer the orchestrated methods above for standard product flows. Use `clearState` for wallet reset lifecycle.
|
|
138
|
+
|
|
111
139
|
### Checking enrollment and removing a passkey
|
|
112
140
|
|
|
113
141
|
```typescript
|
|
114
142
|
controller.isPasskeyEnrolled(); // boolean
|
|
115
143
|
|
|
116
|
-
controller.
|
|
144
|
+
await controller.removePasskeyWithPasskeyVerification(response);
|
|
145
|
+
await controller.removePasskeyWithPasswordVerification(password);
|
|
117
146
|
|
|
118
|
-
controller.clearState(); //
|
|
147
|
+
controller.clearState(); // persisted reset + clears in-flight ceremony state; use for app lifecycle (e.g. wallet reset)
|
|
119
148
|
```
|
|
120
149
|
|
|
121
150
|
### Selectors
|
|
@@ -134,7 +163,8 @@ passkeyControllerSelectors.selectIsPasskeyEnrolled(state); // boolean
|
|
|
134
163
|
`PasskeyControllerError` is thrown for controller failures. Expected operational
|
|
135
164
|
cases use a stable `code` from `PasskeyControllerErrorCode` (for example:
|
|
136
165
|
`not_enrolled`, `already_enrolled`, `no_registration_ceremony`,
|
|
137
|
-
`authentication_verification_failed`, `missing_key_material`, `vault_key_decryption_failed
|
|
166
|
+
`authentication_verification_failed`, `missing_key_material`, `vault_key_decryption_failed`,
|
|
167
|
+
`vault_key_mismatch`, `vault_key_renewal_failed`, `enrollment_password_required`). Human-readable strings
|
|
138
168
|
live on `PasskeyControllerErrorMessage`. Use `instanceof PasskeyControllerError`
|
|
139
169
|
and a defined `error.code` to tell these apart from malformed WebAuthn payloads
|
|
140
170
|
and other `Error` values. Thrown errors from the internal WebAuthn verify helpers
|
|
@@ -153,9 +183,27 @@ those controller errors (with `code`) and rethrows everything else.
|
|
|
153
183
|
|
|
154
184
|
### Messenger actions
|
|
155
185
|
|
|
156
|
-
| Action
|
|
157
|
-
|
|
|
158
|
-
| `PasskeyController:getState`
|
|
186
|
+
| Action | Purpose |
|
|
187
|
+
| ----------------------------------------------------------------- | ------------------------------------------ |
|
|
188
|
+
| `PasskeyController:getState` | Persisted `passkeyRecord` |
|
|
189
|
+
| `PasskeyController:isPasskeyEnrolled` | Enrollment boolean |
|
|
190
|
+
| `PasskeyController:generateRegistrationOptions` | WebAuthn `create()` options |
|
|
191
|
+
| `PasskeyController:generatePostRegistrationAuthenticationOptions` | WebAuthn `get()` after `create()` |
|
|
192
|
+
| `PasskeyController:generateAuthenticationOptions` | WebAuthn `get()` for unlock / step-up |
|
|
193
|
+
| `PasskeyController:protectVaultKeyWithPasskey` | Enroll: verify ceremonies + wrap vault key |
|
|
194
|
+
| `PasskeyController:retrieveVaultKeyWithPasskey` | Verify assertion + return vault key |
|
|
195
|
+
| `PasskeyController:unlockWithPasskey` | Unlock keyring via passkey |
|
|
196
|
+
| `PasskeyController:exportSeedPhraseWithPasskey` | Export SRP after passkey step-up |
|
|
197
|
+
| `PasskeyController:exportAccountsWithPasskey` | Export private keys after passkey step-up |
|
|
198
|
+
| `PasskeyController:verifyPasskeyAuthentication` | Boolean assertion verification |
|
|
199
|
+
| `PasskeyController:renewVaultKeyProtection` | Re-wrap vault key after rotation |
|
|
200
|
+
| `PasskeyController:changePasswordWithPasskeyVerification` | Change password with passkey step-up |
|
|
201
|
+
| `PasskeyController:removePasskeyWithPasskeyVerification` | Remove passkey after assertion step-up |
|
|
202
|
+
| `PasskeyController:removePasskeyWithPasswordVerification` | Remove passkey after password step-up |
|
|
203
|
+
| `PasskeyController:clearState` | Reset state |
|
|
204
|
+
| `PasskeyController:destroy` | Tear down messenger + ceremony state |
|
|
205
|
+
|
|
206
|
+
Corresponding `PasskeyController*Action` types are exported from the package entry point.
|
|
159
207
|
|
|
160
208
|
For derived enrollment status outside of components that hold a controller
|
|
161
209
|
reference, use `passkeyControllerSelectors.selectIsPasskeyEnrolled` (see
|
|
@@ -167,6 +215,21 @@ reference, use `passkeyControllerSelectors.selectIsPasskeyEnrolled` (see
|
|
|
167
215
|
| -------------------------------- | ------------------------------------------------------------ |
|
|
168
216
|
| `PasskeyController:stateChanged` | Emitted when state changes (standard `BaseController` event) |
|
|
169
217
|
|
|
218
|
+
### Keyring integration
|
|
219
|
+
|
|
220
|
+
`PasskeyController` calls these KeyringController actions during orchestrated flows. Allow them on the restricted messenger at init:
|
|
221
|
+
|
|
222
|
+
| Messenger action |
|
|
223
|
+
| --------------------------------------- |
|
|
224
|
+
| `KeyringController:verifyPassword` |
|
|
225
|
+
| `KeyringController:exportEncryptionKey` |
|
|
226
|
+
| `KeyringController:submitEncryptionKey` |
|
|
227
|
+
| `KeyringController:changePassword` |
|
|
228
|
+
| `KeyringController:exportSeedPhrase` |
|
|
229
|
+
| `KeyringController:exportAccount` |
|
|
230
|
+
|
|
231
|
+
Onboarding completion is **not** read via messenger. Pass `getIsOnboardingCompleted` in the constructor (see [Setting up the controller](#setting-up-the-controller)).
|
|
232
|
+
|
|
170
233
|
## Contributing
|
|
171
234
|
|
|
172
235
|
This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/core#readme).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasskeyController-method-action-types.cjs","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { PasskeyController } from './PasskeyController';\n\n/**\n * Whether a passkey is enrolled and vault key material is stored.\n *\n * @returns `true` if enrolled, otherwise `false`.\n */\nexport type PasskeyControllerIsPasskeyEnrolledAction = {\n type: `PasskeyController:isPasskeyEnrolled`;\n handler: PasskeyController['isPasskeyEnrolled'];\n};\n\n/**\n * Builds WebAuthn credential creation options for passkey enrollment.\n *\n * @param creationOptionsConfig - Optional creation behavior.\n * @param creationOptionsConfig.prfAvailable - Request the PRF extension unless `false`. Defaults to `true`.\n * @returns Public key credential creation options for `navigator.credentials.create()`.\n */\nexport type PasskeyControllerGenerateRegistrationOptionsAction = {\n type: `PasskeyController:generateRegistrationOptions`;\n handler: PasskeyController['generateRegistrationOptions'];\n};\n\n/**\n * Builds WebAuthn credential request options for the post-registration\n * authentication step (between `create` and {@link protectVaultKeyWithPasskey}).\n *\n * @param params - Input for the pending registration ceremony.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction =\n {\n type: `PasskeyController:generatePostRegistrationAuthenticationOptions`;\n handler: PasskeyController['generatePostRegistrationAuthenticationOptions'];\n };\n\n/**\n * Builds WebAuthn credential request options for the enrolled passkey.\n *\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGenerateAuthenticationOptionsAction = {\n type: `PasskeyController:generateAuthenticationOptions`;\n handler: PasskeyController['generateAuthenticationOptions'];\n};\n\n/**\n * Verifies registration and post-registration authentication, then stores the\n * vault key encrypted under the new passkey.\n *\n * @param params - Enrollment completion inputs.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @param params.authenticationResponse - Result of `navigator.credentials.get()` after {@link generatePostRegistrationAuthenticationOptions}.\n * @param params.vaultKey - Vault encryption key to encrypt and persist.\n */\nexport type PasskeyControllerProtectVaultKeyWithPasskeyAction = {\n type: `PasskeyController:protectVaultKeyWithPasskey`;\n handler: PasskeyController['protectVaultKeyWithPasskey'];\n};\n\n/**\n * Verifies an authentication assertion and returns the decrypted vault key.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns The plaintext vault encryption key.\n */\nexport type PasskeyControllerRetrieveVaultKeyWithPasskeyAction = {\n type: `PasskeyController:retrieveVaultKeyWithPasskey`;\n handler: PasskeyController['retrieveVaultKeyWithPasskey'];\n};\n\n/**\n * Checks whether the given authentication assertion is valid for the enrolled passkey.\n *\n * On failure, returns `false` for {@link PasskeyControllerError} with a `code`;\n * other errors propagate.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns `true` if verification succeeds, otherwise `false`.\n */\nexport type PasskeyControllerVerifyPasskeyAuthenticationAction = {\n type: `PasskeyController:verifyPasskeyAuthentication`;\n handler: PasskeyController['verifyPasskeyAuthentication'];\n};\n\n/**\n * Re-wraps the vault key after rotation. Updates persisted `encryptedVaultKey` on success.\n *\n * Does not verify WebAuthn or ceremony state—call only after your layer has authenticated\n * the user (passkey `get()` + verified assertion, or verified password). On passkey paths,\n * pass the same `authenticationResponse` you just verified (e.g. from\n * {@link retrieveVaultKeyWithPasskey} / {@link verifyPasskeyAuthentication}).\n *\n * @param params - Re-wrap inputs.\n * @param params.authenticationResponse - Used to derive the wrapping key.\n * @param params.oldVaultKey - Expected current vault key.\n * @param params.newVaultKey - New vault key to encrypt under the passkey.\n */\nexport type PasskeyControllerRenewVaultKeyProtectionAction = {\n type: `PasskeyController:renewVaultKeyProtection`;\n handler: PasskeyController['renewVaultKeyProtection'];\n};\n\n/**\n * Clears enrolled passkey state and in-flight ceremonies. Call only after the same\n * auth gate as renewal (verified passkey assertion or password).\n */\nexport type PasskeyControllerRemovePasskeyAction = {\n type: `PasskeyController:removePasskey`;\n handler: PasskeyController['removePasskey'];\n};\n\n/**\n * Resets state and clears in-flight registration/authentication ceremonies.\n */\nexport type PasskeyControllerClearStateAction = {\n type: `PasskeyController:clearState`;\n handler: PasskeyController['clearState'];\n};\n\n/**\n * Releases all in-flight ceremony state and tears down the messenger.\n */\nexport type PasskeyControllerDestroyAction = {\n type: `PasskeyController:destroy`;\n handler: PasskeyController['destroy'];\n};\n\n/**\n * Union of all PasskeyController action types.\n */\nexport type PasskeyControllerMethodActions =\n | PasskeyControllerIsPasskeyEnrolledAction\n | PasskeyControllerGenerateRegistrationOptionsAction\n | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction\n | PasskeyControllerGenerateAuthenticationOptionsAction\n | PasskeyControllerProtectVaultKeyWithPasskeyAction\n | PasskeyControllerRetrieveVaultKeyWithPasskeyAction\n | PasskeyControllerVerifyPasskeyAuthenticationAction\n | PasskeyControllerRenewVaultKeyProtectionAction\n | PasskeyControllerRemovePasskeyAction\n | PasskeyControllerClearStateAction\n | PasskeyControllerDestroyAction;\n"]}
|
|
1
|
+
{"version":3,"file":"PasskeyController-method-action-types.cjs","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { PasskeyController } from './PasskeyController';\n\n/**\n * Whether a passkey is enrolled and vault key material is stored.\n *\n * @returns `true` if enrolled, otherwise `false`.\n */\nexport type PasskeyControllerIsPasskeyEnrolledAction = {\n type: `PasskeyController:isPasskeyEnrolled`;\n handler: PasskeyController['isPasskeyEnrolled'];\n};\n\n/**\n * Builds WebAuthn credential creation options for passkey enrollment.\n *\n * @param creationOptionsConfig - Optional creation behavior.\n * @param creationOptionsConfig.prfAvailable - Request the PRF extension unless `false`. Defaults to `true`.\n * @returns Public key credential creation options for `navigator.credentials.create()`.\n */\nexport type PasskeyControllerGenerateRegistrationOptionsAction = {\n type: `PasskeyController:generateRegistrationOptions`;\n handler: PasskeyController['generateRegistrationOptions'];\n};\n\n/**\n * Builds WebAuthn credential request options for the post-registration\n * authentication step (between `create` and {@link protectVaultKeyWithPasskey}).\n *\n * @param params - Input for the pending registration ceremony.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction =\n {\n type: `PasskeyController:generatePostRegistrationAuthenticationOptions`;\n handler: PasskeyController['generatePostRegistrationAuthenticationOptions'];\n };\n\n/**\n * Builds WebAuthn credential request options for the enrolled passkey.\n *\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGenerateAuthenticationOptionsAction = {\n type: `PasskeyController:generateAuthenticationOptions`;\n handler: PasskeyController['generateAuthenticationOptions'];\n};\n\n/**\n * Verifies registration and post-registration authentication, then stores the\n * vault key encrypted under the new passkey.\n *\n * Fetches the current vault encryption key from KeyringController before wrapping.\n * When onboarding is complete, requires `password` for step-up verification first.\n *\n * @param params - Enrollment completion inputs.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @param params.authenticationResponse - Result of `navigator.credentials.get()` after {@link generatePostRegistrationAuthenticationOptions}.\n * @param params.password - Wallet password when onboarding is complete (step-up).\n * @returns Resolves when enrollment completes.\n */\nexport type PasskeyControllerProtectVaultKeyWithPasskeyAction = {\n type: `PasskeyController:protectVaultKeyWithPasskey`;\n handler: PasskeyController['protectVaultKeyWithPasskey'];\n};\n\n/**\n * Verifies an authentication assertion and returns the decrypted vault key.\n *\n * Prefer orchestrated methods ({@link unlockWithPasskey},\n * {@link exportSeedPhraseWithPasskey}, {@link exportAccountsWithPasskey}) for product\n * flows instead of calling KeyringController with the returned key manually.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns The plaintext vault encryption key.\n */\nexport type PasskeyControllerRetrieveVaultKeyWithPasskeyAction = {\n type: `PasskeyController:retrieveVaultKeyWithPasskey`;\n handler: PasskeyController['retrieveVaultKeyWithPasskey'];\n};\n\n/**\n * Unlocks the keyring using a passkey authentication assertion.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns Resolves when the keyring is unlocked.\n */\nexport type PasskeyControllerUnlockWithPasskeyAction = {\n type: `PasskeyController:unlockWithPasskey`;\n handler: PasskeyController['unlockWithPasskey'];\n};\n\n/**\n * Exports the seed phrase after passkey step-up authentication.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @param keyringId - Optional keyring id; defaults to the primary HD keyring.\n * @returns Raw seed phrase bytes from KeyringController.\n */\nexport type PasskeyControllerExportSeedPhraseWithPasskeyAction = {\n type: `PasskeyController:exportSeedPhraseWithPasskey`;\n handler: PasskeyController['exportSeedPhraseWithPasskey'];\n};\n\n/**\n * Exports private keys for the given addresses after passkey step-up authentication.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @param addresses - Account addresses to export.\n * @returns Private keys in the same order as `addresses`.\n */\nexport type PasskeyControllerExportAccountsWithPasskeyAction = {\n type: `PasskeyController:exportAccountsWithPasskey`;\n handler: PasskeyController['exportAccountsWithPasskey'];\n};\n\n/**\n * Checks whether the given authentication assertion is valid for the enrolled passkey.\n *\n * On failure, returns `false` for {@link PasskeyControllerError} with a `code`;\n * other errors propagate.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns `true` if verification succeeds, otherwise `false`.\n */\nexport type PasskeyControllerVerifyPasskeyAuthenticationAction = {\n type: `PasskeyController:verifyPasskeyAuthentication`;\n handler: PasskeyController['verifyPasskeyAuthentication'];\n};\n\n/**\n * Re-wraps the vault key after rotation. Updates persisted `encryptedVaultKey` on success.\n *\n * Does not verify WebAuthn or ceremony state—call only after your layer has authenticated\n * the user (passkey `get()` + verified assertion, or verified password). On passkey paths,\n * pass the same `authenticationResponse` you just verified (e.g. from\n * {@link retrieveVaultKeyWithPasskey} / {@link verifyPasskeyAuthentication}).\n *\n * For password change with passkey step-up, prefer\n * {@link changePasswordWithPasskeyVerification}, which orchestrates keyring export,\n * `changePassword`, and re-wrap in one call.\n *\n * @param params - Re-wrap inputs.\n * @param params.authenticationResponse - Used to derive the wrapping key.\n * @param params.oldVaultKey - Expected current vault key.\n * @param params.newVaultKey - New vault key to encrypt under the passkey.\n * @returns Resolves when the passkey record is updated.\n */\nexport type PasskeyControllerRenewVaultKeyProtectionAction = {\n type: `PasskeyController:renewVaultKeyProtection`;\n handler: PasskeyController['renewVaultKeyProtection'];\n};\n\n/**\n * Changes the wallet password after passkey step-up authentication.\n *\n * When `renewVaultKeyProtection` is `true` (default), re-wraps the vault key under the\n * passkey after rotation. When `false`, removes the passkey instead.\n *\n * @param params - Change-password inputs.\n * @param params.newPassword - New wallet password.\n * @param params.authenticationResponse - Result of `navigator.credentials.get()`.\n * @param params.options - Optional flow controls.\n * @param params.options.renewVaultKeyProtection - Re-wrap vault key after password change.\n * @returns Resolves when the password change completes.\n */\nexport type PasskeyControllerChangePasswordWithPasskeyVerificationAction = {\n type: `PasskeyController:changePasswordWithPasskeyVerification`;\n handler: PasskeyController['changePasswordWithPasskeyVerification'];\n};\n\n/**\n * Removes the enrolled passkey after verifying a passkey authentication assertion.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns Resolves when the passkey is removed.\n */\nexport type PasskeyControllerRemovePasskeyWithPasskeyVerificationAction = {\n type: `PasskeyController:removePasskeyWithPasskeyVerification`;\n handler: PasskeyController['removePasskeyWithPasskeyVerification'];\n};\n\n/**\n * Removes the enrolled passkey after verifying the wallet password.\n *\n * @param password - Wallet password for step-up verification.\n * @returns Resolves when the passkey is removed.\n */\nexport type PasskeyControllerRemovePasskeyWithPasswordVerificationAction = {\n type: `PasskeyController:removePasskeyWithPasswordVerification`;\n handler: PasskeyController['removePasskeyWithPasswordVerification'];\n};\n\n/**\n * Resets state and clears in-flight registration/authentication ceremonies.\n *\n * For user-facing passkey removal with step-up, use\n * {@link removePasskeyWithPasskeyVerification} or\n * {@link removePasskeyWithPasswordVerification}.\n */\nexport type PasskeyControllerClearStateAction = {\n type: `PasskeyController:clearState`;\n handler: PasskeyController['clearState'];\n};\n\n/**\n * Releases all in-flight ceremony state and tears down the messenger.\n */\nexport type PasskeyControllerDestroyAction = {\n type: `PasskeyController:destroy`;\n handler: PasskeyController['destroy'];\n};\n\n/**\n * Union of all PasskeyController action types.\n */\nexport type PasskeyControllerMethodActions =\n | PasskeyControllerIsPasskeyEnrolledAction\n | PasskeyControllerGenerateRegistrationOptionsAction\n | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction\n | PasskeyControllerGenerateAuthenticationOptionsAction\n | PasskeyControllerProtectVaultKeyWithPasskeyAction\n | PasskeyControllerRetrieveVaultKeyWithPasskeyAction\n | PasskeyControllerUnlockWithPasskeyAction\n | PasskeyControllerExportSeedPhraseWithPasskeyAction\n | PasskeyControllerExportAccountsWithPasskeyAction\n | PasskeyControllerVerifyPasskeyAuthenticationAction\n | PasskeyControllerRenewVaultKeyProtectionAction\n | PasskeyControllerChangePasswordWithPasskeyVerificationAction\n | PasskeyControllerRemovePasskeyWithPasskeyVerificationAction\n | PasskeyControllerRemovePasskeyWithPasswordVerificationAction\n | PasskeyControllerClearStateAction\n | PasskeyControllerDestroyAction;\n"]}
|
|
@@ -48,10 +48,14 @@ export type PasskeyControllerGenerateAuthenticationOptionsAction = {
|
|
|
48
48
|
* Verifies registration and post-registration authentication, then stores the
|
|
49
49
|
* vault key encrypted under the new passkey.
|
|
50
50
|
*
|
|
51
|
+
* Fetches the current vault encryption key from KeyringController before wrapping.
|
|
52
|
+
* When onboarding is complete, requires `password` for step-up verification first.
|
|
53
|
+
*
|
|
51
54
|
* @param params - Enrollment completion inputs.
|
|
52
55
|
* @param params.registrationResponse - Result of `navigator.credentials.create()`.
|
|
53
56
|
* @param params.authenticationResponse - Result of `navigator.credentials.get()` after {@link generatePostRegistrationAuthenticationOptions}.
|
|
54
|
-
* @param params.
|
|
57
|
+
* @param params.password - Wallet password when onboarding is complete (step-up).
|
|
58
|
+
* @returns Resolves when enrollment completes.
|
|
55
59
|
*/
|
|
56
60
|
export type PasskeyControllerProtectVaultKeyWithPasskeyAction = {
|
|
57
61
|
type: `PasskeyController:protectVaultKeyWithPasskey`;
|
|
@@ -60,6 +64,10 @@ export type PasskeyControllerProtectVaultKeyWithPasskeyAction = {
|
|
|
60
64
|
/**
|
|
61
65
|
* Verifies an authentication assertion and returns the decrypted vault key.
|
|
62
66
|
*
|
|
67
|
+
* Prefer orchestrated methods ({@link unlockWithPasskey},
|
|
68
|
+
* {@link exportSeedPhraseWithPasskey}, {@link exportAccountsWithPasskey}) for product
|
|
69
|
+
* flows instead of calling KeyringController with the returned key manually.
|
|
70
|
+
*
|
|
63
71
|
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
64
72
|
* @returns The plaintext vault encryption key.
|
|
65
73
|
*/
|
|
@@ -67,6 +75,38 @@ export type PasskeyControllerRetrieveVaultKeyWithPasskeyAction = {
|
|
|
67
75
|
type: `PasskeyController:retrieveVaultKeyWithPasskey`;
|
|
68
76
|
handler: PasskeyController['retrieveVaultKeyWithPasskey'];
|
|
69
77
|
};
|
|
78
|
+
/**
|
|
79
|
+
* Unlocks the keyring using a passkey authentication assertion.
|
|
80
|
+
*
|
|
81
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
82
|
+
* @returns Resolves when the keyring is unlocked.
|
|
83
|
+
*/
|
|
84
|
+
export type PasskeyControllerUnlockWithPasskeyAction = {
|
|
85
|
+
type: `PasskeyController:unlockWithPasskey`;
|
|
86
|
+
handler: PasskeyController['unlockWithPasskey'];
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Exports the seed phrase after passkey step-up authentication.
|
|
90
|
+
*
|
|
91
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
92
|
+
* @param keyringId - Optional keyring id; defaults to the primary HD keyring.
|
|
93
|
+
* @returns Raw seed phrase bytes from KeyringController.
|
|
94
|
+
*/
|
|
95
|
+
export type PasskeyControllerExportSeedPhraseWithPasskeyAction = {
|
|
96
|
+
type: `PasskeyController:exportSeedPhraseWithPasskey`;
|
|
97
|
+
handler: PasskeyController['exportSeedPhraseWithPasskey'];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Exports private keys for the given addresses after passkey step-up authentication.
|
|
101
|
+
*
|
|
102
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
103
|
+
* @param addresses - Account addresses to export.
|
|
104
|
+
* @returns Private keys in the same order as `addresses`.
|
|
105
|
+
*/
|
|
106
|
+
export type PasskeyControllerExportAccountsWithPasskeyAction = {
|
|
107
|
+
type: `PasskeyController:exportAccountsWithPasskey`;
|
|
108
|
+
handler: PasskeyController['exportAccountsWithPasskey'];
|
|
109
|
+
};
|
|
70
110
|
/**
|
|
71
111
|
* Checks whether the given authentication assertion is valid for the enrolled passkey.
|
|
72
112
|
*
|
|
@@ -88,25 +128,63 @@ export type PasskeyControllerVerifyPasskeyAuthenticationAction = {
|
|
|
88
128
|
* pass the same `authenticationResponse` you just verified (e.g. from
|
|
89
129
|
* {@link retrieveVaultKeyWithPasskey} / {@link verifyPasskeyAuthentication}).
|
|
90
130
|
*
|
|
131
|
+
* For password change with passkey step-up, prefer
|
|
132
|
+
* {@link changePasswordWithPasskeyVerification}, which orchestrates keyring export,
|
|
133
|
+
* `changePassword`, and re-wrap in one call.
|
|
134
|
+
*
|
|
91
135
|
* @param params - Re-wrap inputs.
|
|
92
136
|
* @param params.authenticationResponse - Used to derive the wrapping key.
|
|
93
137
|
* @param params.oldVaultKey - Expected current vault key.
|
|
94
138
|
* @param params.newVaultKey - New vault key to encrypt under the passkey.
|
|
139
|
+
* @returns Resolves when the passkey record is updated.
|
|
95
140
|
*/
|
|
96
141
|
export type PasskeyControllerRenewVaultKeyProtectionAction = {
|
|
97
142
|
type: `PasskeyController:renewVaultKeyProtection`;
|
|
98
143
|
handler: PasskeyController['renewVaultKeyProtection'];
|
|
99
144
|
};
|
|
100
145
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
146
|
+
* Changes the wallet password after passkey step-up authentication.
|
|
147
|
+
*
|
|
148
|
+
* When `renewVaultKeyProtection` is `true` (default), re-wraps the vault key under the
|
|
149
|
+
* passkey after rotation. When `false`, removes the passkey instead.
|
|
150
|
+
*
|
|
151
|
+
* @param params - Change-password inputs.
|
|
152
|
+
* @param params.newPassword - New wallet password.
|
|
153
|
+
* @param params.authenticationResponse - Result of `navigator.credentials.get()`.
|
|
154
|
+
* @param params.options - Optional flow controls.
|
|
155
|
+
* @param params.options.renewVaultKeyProtection - Re-wrap vault key after password change.
|
|
156
|
+
* @returns Resolves when the password change completes.
|
|
103
157
|
*/
|
|
104
|
-
export type
|
|
105
|
-
type: `PasskeyController:
|
|
106
|
-
handler: PasskeyController['
|
|
158
|
+
export type PasskeyControllerChangePasswordWithPasskeyVerificationAction = {
|
|
159
|
+
type: `PasskeyController:changePasswordWithPasskeyVerification`;
|
|
160
|
+
handler: PasskeyController['changePasswordWithPasskeyVerification'];
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Removes the enrolled passkey after verifying a passkey authentication assertion.
|
|
164
|
+
*
|
|
165
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
166
|
+
* @returns Resolves when the passkey is removed.
|
|
167
|
+
*/
|
|
168
|
+
export type PasskeyControllerRemovePasskeyWithPasskeyVerificationAction = {
|
|
169
|
+
type: `PasskeyController:removePasskeyWithPasskeyVerification`;
|
|
170
|
+
handler: PasskeyController['removePasskeyWithPasskeyVerification'];
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Removes the enrolled passkey after verifying the wallet password.
|
|
174
|
+
*
|
|
175
|
+
* @param password - Wallet password for step-up verification.
|
|
176
|
+
* @returns Resolves when the passkey is removed.
|
|
177
|
+
*/
|
|
178
|
+
export type PasskeyControllerRemovePasskeyWithPasswordVerificationAction = {
|
|
179
|
+
type: `PasskeyController:removePasskeyWithPasswordVerification`;
|
|
180
|
+
handler: PasskeyController['removePasskeyWithPasswordVerification'];
|
|
107
181
|
};
|
|
108
182
|
/**
|
|
109
183
|
* Resets state and clears in-flight registration/authentication ceremonies.
|
|
184
|
+
*
|
|
185
|
+
* For user-facing passkey removal with step-up, use
|
|
186
|
+
* {@link removePasskeyWithPasskeyVerification} or
|
|
187
|
+
* {@link removePasskeyWithPasswordVerification}.
|
|
110
188
|
*/
|
|
111
189
|
export type PasskeyControllerClearStateAction = {
|
|
112
190
|
type: `PasskeyController:clearState`;
|
|
@@ -122,5 +200,5 @@ export type PasskeyControllerDestroyAction = {
|
|
|
122
200
|
/**
|
|
123
201
|
* Union of all PasskeyController action types.
|
|
124
202
|
*/
|
|
125
|
-
export type PasskeyControllerMethodActions = PasskeyControllerIsPasskeyEnrolledAction | PasskeyControllerGenerateRegistrationOptionsAction | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction | PasskeyControllerGenerateAuthenticationOptionsAction | PasskeyControllerProtectVaultKeyWithPasskeyAction | PasskeyControllerRetrieveVaultKeyWithPasskeyAction | PasskeyControllerVerifyPasskeyAuthenticationAction | PasskeyControllerRenewVaultKeyProtectionAction |
|
|
203
|
+
export type PasskeyControllerMethodActions = PasskeyControllerIsPasskeyEnrolledAction | PasskeyControllerGenerateRegistrationOptionsAction | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction | PasskeyControllerGenerateAuthenticationOptionsAction | PasskeyControllerProtectVaultKeyWithPasskeyAction | PasskeyControllerRetrieveVaultKeyWithPasskeyAction | PasskeyControllerUnlockWithPasskeyAction | PasskeyControllerExportSeedPhraseWithPasskeyAction | PasskeyControllerExportAccountsWithPasskeyAction | PasskeyControllerVerifyPasskeyAuthenticationAction | PasskeyControllerRenewVaultKeyProtectionAction | PasskeyControllerChangePasswordWithPasskeyVerificationAction | PasskeyControllerRemovePasskeyWithPasskeyVerificationAction | PasskeyControllerRemovePasskeyWithPasswordVerificationAction | PasskeyControllerClearStateAction | PasskeyControllerDestroyAction;
|
|
126
204
|
//# sourceMappingURL=PasskeyController-method-action-types.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasskeyController-method-action-types.d.cts","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gCAA4B;AAE7D;;;;GAIG;AACH,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,qCAAqC,CAAC;IAC5C,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;CACjD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,kDAAkD,GAAG;IAC/D,IAAI,EAAE,+CAA+C,CAAC;IACtD,OAAO,EAAE,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;CAC3D,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,oEAAoE,GAC9E;IACE,IAAI,EAAE,iEAAiE,CAAC;IACxE,OAAO,EAAE,iBAAiB,CAAC,+CAA+C,CAAC,CAAC;CAC7E,CAAC;AAEJ;;;;GAIG;AACH,MAAM,MAAM,oDAAoD,GAAG;IACjE,IAAI,EAAE,iDAAiD,CAAC;IACxD,OAAO,EAAE,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;CAC7D,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"PasskeyController-method-action-types.d.cts","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,10 +48,14 @@ export type PasskeyControllerGenerateAuthenticationOptionsAction = {
|
|
|
48
48
|
* Verifies registration and post-registration authentication, then stores the
|
|
49
49
|
* vault key encrypted under the new passkey.
|
|
50
50
|
*
|
|
51
|
+
* Fetches the current vault encryption key from KeyringController before wrapping.
|
|
52
|
+
* When onboarding is complete, requires `password` for step-up verification first.
|
|
53
|
+
*
|
|
51
54
|
* @param params - Enrollment completion inputs.
|
|
52
55
|
* @param params.registrationResponse - Result of `navigator.credentials.create()`.
|
|
53
56
|
* @param params.authenticationResponse - Result of `navigator.credentials.get()` after {@link generatePostRegistrationAuthenticationOptions}.
|
|
54
|
-
* @param params.
|
|
57
|
+
* @param params.password - Wallet password when onboarding is complete (step-up).
|
|
58
|
+
* @returns Resolves when enrollment completes.
|
|
55
59
|
*/
|
|
56
60
|
export type PasskeyControllerProtectVaultKeyWithPasskeyAction = {
|
|
57
61
|
type: `PasskeyController:protectVaultKeyWithPasskey`;
|
|
@@ -60,6 +64,10 @@ export type PasskeyControllerProtectVaultKeyWithPasskeyAction = {
|
|
|
60
64
|
/**
|
|
61
65
|
* Verifies an authentication assertion and returns the decrypted vault key.
|
|
62
66
|
*
|
|
67
|
+
* Prefer orchestrated methods ({@link unlockWithPasskey},
|
|
68
|
+
* {@link exportSeedPhraseWithPasskey}, {@link exportAccountsWithPasskey}) for product
|
|
69
|
+
* flows instead of calling KeyringController with the returned key manually.
|
|
70
|
+
*
|
|
63
71
|
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
64
72
|
* @returns The plaintext vault encryption key.
|
|
65
73
|
*/
|
|
@@ -67,6 +75,38 @@ export type PasskeyControllerRetrieveVaultKeyWithPasskeyAction = {
|
|
|
67
75
|
type: `PasskeyController:retrieveVaultKeyWithPasskey`;
|
|
68
76
|
handler: PasskeyController['retrieveVaultKeyWithPasskey'];
|
|
69
77
|
};
|
|
78
|
+
/**
|
|
79
|
+
* Unlocks the keyring using a passkey authentication assertion.
|
|
80
|
+
*
|
|
81
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
82
|
+
* @returns Resolves when the keyring is unlocked.
|
|
83
|
+
*/
|
|
84
|
+
export type PasskeyControllerUnlockWithPasskeyAction = {
|
|
85
|
+
type: `PasskeyController:unlockWithPasskey`;
|
|
86
|
+
handler: PasskeyController['unlockWithPasskey'];
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Exports the seed phrase after passkey step-up authentication.
|
|
90
|
+
*
|
|
91
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
92
|
+
* @param keyringId - Optional keyring id; defaults to the primary HD keyring.
|
|
93
|
+
* @returns Raw seed phrase bytes from KeyringController.
|
|
94
|
+
*/
|
|
95
|
+
export type PasskeyControllerExportSeedPhraseWithPasskeyAction = {
|
|
96
|
+
type: `PasskeyController:exportSeedPhraseWithPasskey`;
|
|
97
|
+
handler: PasskeyController['exportSeedPhraseWithPasskey'];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Exports private keys for the given addresses after passkey step-up authentication.
|
|
101
|
+
*
|
|
102
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
103
|
+
* @param addresses - Account addresses to export.
|
|
104
|
+
* @returns Private keys in the same order as `addresses`.
|
|
105
|
+
*/
|
|
106
|
+
export type PasskeyControllerExportAccountsWithPasskeyAction = {
|
|
107
|
+
type: `PasskeyController:exportAccountsWithPasskey`;
|
|
108
|
+
handler: PasskeyController['exportAccountsWithPasskey'];
|
|
109
|
+
};
|
|
70
110
|
/**
|
|
71
111
|
* Checks whether the given authentication assertion is valid for the enrolled passkey.
|
|
72
112
|
*
|
|
@@ -88,25 +128,63 @@ export type PasskeyControllerVerifyPasskeyAuthenticationAction = {
|
|
|
88
128
|
* pass the same `authenticationResponse` you just verified (e.g. from
|
|
89
129
|
* {@link retrieveVaultKeyWithPasskey} / {@link verifyPasskeyAuthentication}).
|
|
90
130
|
*
|
|
131
|
+
* For password change with passkey step-up, prefer
|
|
132
|
+
* {@link changePasswordWithPasskeyVerification}, which orchestrates keyring export,
|
|
133
|
+
* `changePassword`, and re-wrap in one call.
|
|
134
|
+
*
|
|
91
135
|
* @param params - Re-wrap inputs.
|
|
92
136
|
* @param params.authenticationResponse - Used to derive the wrapping key.
|
|
93
137
|
* @param params.oldVaultKey - Expected current vault key.
|
|
94
138
|
* @param params.newVaultKey - New vault key to encrypt under the passkey.
|
|
139
|
+
* @returns Resolves when the passkey record is updated.
|
|
95
140
|
*/
|
|
96
141
|
export type PasskeyControllerRenewVaultKeyProtectionAction = {
|
|
97
142
|
type: `PasskeyController:renewVaultKeyProtection`;
|
|
98
143
|
handler: PasskeyController['renewVaultKeyProtection'];
|
|
99
144
|
};
|
|
100
145
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
146
|
+
* Changes the wallet password after passkey step-up authentication.
|
|
147
|
+
*
|
|
148
|
+
* When `renewVaultKeyProtection` is `true` (default), re-wraps the vault key under the
|
|
149
|
+
* passkey after rotation. When `false`, removes the passkey instead.
|
|
150
|
+
*
|
|
151
|
+
* @param params - Change-password inputs.
|
|
152
|
+
* @param params.newPassword - New wallet password.
|
|
153
|
+
* @param params.authenticationResponse - Result of `navigator.credentials.get()`.
|
|
154
|
+
* @param params.options - Optional flow controls.
|
|
155
|
+
* @param params.options.renewVaultKeyProtection - Re-wrap vault key after password change.
|
|
156
|
+
* @returns Resolves when the password change completes.
|
|
103
157
|
*/
|
|
104
|
-
export type
|
|
105
|
-
type: `PasskeyController:
|
|
106
|
-
handler: PasskeyController['
|
|
158
|
+
export type PasskeyControllerChangePasswordWithPasskeyVerificationAction = {
|
|
159
|
+
type: `PasskeyController:changePasswordWithPasskeyVerification`;
|
|
160
|
+
handler: PasskeyController['changePasswordWithPasskeyVerification'];
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Removes the enrolled passkey after verifying a passkey authentication assertion.
|
|
164
|
+
*
|
|
165
|
+
* @param authenticationResponse - Result of `navigator.credentials.get()`.
|
|
166
|
+
* @returns Resolves when the passkey is removed.
|
|
167
|
+
*/
|
|
168
|
+
export type PasskeyControllerRemovePasskeyWithPasskeyVerificationAction = {
|
|
169
|
+
type: `PasskeyController:removePasskeyWithPasskeyVerification`;
|
|
170
|
+
handler: PasskeyController['removePasskeyWithPasskeyVerification'];
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Removes the enrolled passkey after verifying the wallet password.
|
|
174
|
+
*
|
|
175
|
+
* @param password - Wallet password for step-up verification.
|
|
176
|
+
* @returns Resolves when the passkey is removed.
|
|
177
|
+
*/
|
|
178
|
+
export type PasskeyControllerRemovePasskeyWithPasswordVerificationAction = {
|
|
179
|
+
type: `PasskeyController:removePasskeyWithPasswordVerification`;
|
|
180
|
+
handler: PasskeyController['removePasskeyWithPasswordVerification'];
|
|
107
181
|
};
|
|
108
182
|
/**
|
|
109
183
|
* Resets state and clears in-flight registration/authentication ceremonies.
|
|
184
|
+
*
|
|
185
|
+
* For user-facing passkey removal with step-up, use
|
|
186
|
+
* {@link removePasskeyWithPasskeyVerification} or
|
|
187
|
+
* {@link removePasskeyWithPasswordVerification}.
|
|
110
188
|
*/
|
|
111
189
|
export type PasskeyControllerClearStateAction = {
|
|
112
190
|
type: `PasskeyController:clearState`;
|
|
@@ -122,5 +200,5 @@ export type PasskeyControllerDestroyAction = {
|
|
|
122
200
|
/**
|
|
123
201
|
* Union of all PasskeyController action types.
|
|
124
202
|
*/
|
|
125
|
-
export type PasskeyControllerMethodActions = PasskeyControllerIsPasskeyEnrolledAction | PasskeyControllerGenerateRegistrationOptionsAction | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction | PasskeyControllerGenerateAuthenticationOptionsAction | PasskeyControllerProtectVaultKeyWithPasskeyAction | PasskeyControllerRetrieveVaultKeyWithPasskeyAction | PasskeyControllerVerifyPasskeyAuthenticationAction | PasskeyControllerRenewVaultKeyProtectionAction |
|
|
203
|
+
export type PasskeyControllerMethodActions = PasskeyControllerIsPasskeyEnrolledAction | PasskeyControllerGenerateRegistrationOptionsAction | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction | PasskeyControllerGenerateAuthenticationOptionsAction | PasskeyControllerProtectVaultKeyWithPasskeyAction | PasskeyControllerRetrieveVaultKeyWithPasskeyAction | PasskeyControllerUnlockWithPasskeyAction | PasskeyControllerExportSeedPhraseWithPasskeyAction | PasskeyControllerExportAccountsWithPasskeyAction | PasskeyControllerVerifyPasskeyAuthenticationAction | PasskeyControllerRenewVaultKeyProtectionAction | PasskeyControllerChangePasswordWithPasskeyVerificationAction | PasskeyControllerRemovePasskeyWithPasskeyVerificationAction | PasskeyControllerRemovePasskeyWithPasswordVerificationAction | PasskeyControllerClearStateAction | PasskeyControllerDestroyAction;
|
|
126
204
|
//# sourceMappingURL=PasskeyController-method-action-types.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasskeyController-method-action-types.d.mts","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gCAA4B;AAE7D;;;;GAIG;AACH,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,qCAAqC,CAAC;IAC5C,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;CACjD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,kDAAkD,GAAG;IAC/D,IAAI,EAAE,+CAA+C,CAAC;IACtD,OAAO,EAAE,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;CAC3D,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,oEAAoE,GAC9E;IACE,IAAI,EAAE,iEAAiE,CAAC;IACxE,OAAO,EAAE,iBAAiB,CAAC,+CAA+C,CAAC,CAAC;CAC7E,CAAC;AAEJ;;;;GAIG;AACH,MAAM,MAAM,oDAAoD,GAAG;IACjE,IAAI,EAAE,iDAAiD,CAAC;IACxD,OAAO,EAAE,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;CAC7D,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"PasskeyController-method-action-types.d.mts","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasskeyController-method-action-types.mjs","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { PasskeyController } from './PasskeyController';\n\n/**\n * Whether a passkey is enrolled and vault key material is stored.\n *\n * @returns `true` if enrolled, otherwise `false`.\n */\nexport type PasskeyControllerIsPasskeyEnrolledAction = {\n type: `PasskeyController:isPasskeyEnrolled`;\n handler: PasskeyController['isPasskeyEnrolled'];\n};\n\n/**\n * Builds WebAuthn credential creation options for passkey enrollment.\n *\n * @param creationOptionsConfig - Optional creation behavior.\n * @param creationOptionsConfig.prfAvailable - Request the PRF extension unless `false`. Defaults to `true`.\n * @returns Public key credential creation options for `navigator.credentials.create()`.\n */\nexport type PasskeyControllerGenerateRegistrationOptionsAction = {\n type: `PasskeyController:generateRegistrationOptions`;\n handler: PasskeyController['generateRegistrationOptions'];\n};\n\n/**\n * Builds WebAuthn credential request options for the post-registration\n * authentication step (between `create` and {@link protectVaultKeyWithPasskey}).\n *\n * @param params - Input for the pending registration ceremony.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction =\n {\n type: `PasskeyController:generatePostRegistrationAuthenticationOptions`;\n handler: PasskeyController['generatePostRegistrationAuthenticationOptions'];\n };\n\n/**\n * Builds WebAuthn credential request options for the enrolled passkey.\n *\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGenerateAuthenticationOptionsAction = {\n type: `PasskeyController:generateAuthenticationOptions`;\n handler: PasskeyController['generateAuthenticationOptions'];\n};\n\n/**\n * Verifies registration and post-registration authentication, then stores the\n * vault key encrypted under the new passkey.\n *\n * @param params - Enrollment completion inputs.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @param params.authenticationResponse - Result of `navigator.credentials.get()` after {@link generatePostRegistrationAuthenticationOptions}.\n * @param params.vaultKey - Vault encryption key to encrypt and persist.\n */\nexport type PasskeyControllerProtectVaultKeyWithPasskeyAction = {\n type: `PasskeyController:protectVaultKeyWithPasskey`;\n handler: PasskeyController['protectVaultKeyWithPasskey'];\n};\n\n/**\n * Verifies an authentication assertion and returns the decrypted vault key.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns The plaintext vault encryption key.\n */\nexport type PasskeyControllerRetrieveVaultKeyWithPasskeyAction = {\n type: `PasskeyController:retrieveVaultKeyWithPasskey`;\n handler: PasskeyController['retrieveVaultKeyWithPasskey'];\n};\n\n/**\n * Checks whether the given authentication assertion is valid for the enrolled passkey.\n *\n * On failure, returns `false` for {@link PasskeyControllerError} with a `code`;\n * other errors propagate.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns `true` if verification succeeds, otherwise `false`.\n */\nexport type PasskeyControllerVerifyPasskeyAuthenticationAction = {\n type: `PasskeyController:verifyPasskeyAuthentication`;\n handler: PasskeyController['verifyPasskeyAuthentication'];\n};\n\n/**\n * Re-wraps the vault key after rotation. Updates persisted `encryptedVaultKey` on success.\n *\n * Does not verify WebAuthn or ceremony state—call only after your layer has authenticated\n * the user (passkey `get()` + verified assertion, or verified password). On passkey paths,\n * pass the same `authenticationResponse` you just verified (e.g. from\n * {@link retrieveVaultKeyWithPasskey} / {@link verifyPasskeyAuthentication}).\n *\n * @param params - Re-wrap inputs.\n * @param params.authenticationResponse - Used to derive the wrapping key.\n * @param params.oldVaultKey - Expected current vault key.\n * @param params.newVaultKey - New vault key to encrypt under the passkey.\n */\nexport type PasskeyControllerRenewVaultKeyProtectionAction = {\n type: `PasskeyController:renewVaultKeyProtection`;\n handler: PasskeyController['renewVaultKeyProtection'];\n};\n\n/**\n * Clears enrolled passkey state and in-flight ceremonies. Call only after the same\n * auth gate as renewal (verified passkey assertion or password).\n */\nexport type PasskeyControllerRemovePasskeyAction = {\n type: `PasskeyController:removePasskey`;\n handler: PasskeyController['removePasskey'];\n};\n\n/**\n * Resets state and clears in-flight registration/authentication ceremonies.\n */\nexport type PasskeyControllerClearStateAction = {\n type: `PasskeyController:clearState`;\n handler: PasskeyController['clearState'];\n};\n\n/**\n * Releases all in-flight ceremony state and tears down the messenger.\n */\nexport type PasskeyControllerDestroyAction = {\n type: `PasskeyController:destroy`;\n handler: PasskeyController['destroy'];\n};\n\n/**\n * Union of all PasskeyController action types.\n */\nexport type PasskeyControllerMethodActions =\n | PasskeyControllerIsPasskeyEnrolledAction\n | PasskeyControllerGenerateRegistrationOptionsAction\n | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction\n | PasskeyControllerGenerateAuthenticationOptionsAction\n | PasskeyControllerProtectVaultKeyWithPasskeyAction\n | PasskeyControllerRetrieveVaultKeyWithPasskeyAction\n | PasskeyControllerVerifyPasskeyAuthenticationAction\n | PasskeyControllerRenewVaultKeyProtectionAction\n | PasskeyControllerRemovePasskeyAction\n | PasskeyControllerClearStateAction\n | PasskeyControllerDestroyAction;\n"]}
|
|
1
|
+
{"version":3,"file":"PasskeyController-method-action-types.mjs","sourceRoot":"","sources":["../src/PasskeyController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { PasskeyController } from './PasskeyController';\n\n/**\n * Whether a passkey is enrolled and vault key material is stored.\n *\n * @returns `true` if enrolled, otherwise `false`.\n */\nexport type PasskeyControllerIsPasskeyEnrolledAction = {\n type: `PasskeyController:isPasskeyEnrolled`;\n handler: PasskeyController['isPasskeyEnrolled'];\n};\n\n/**\n * Builds WebAuthn credential creation options for passkey enrollment.\n *\n * @param creationOptionsConfig - Optional creation behavior.\n * @param creationOptionsConfig.prfAvailable - Request the PRF extension unless `false`. Defaults to `true`.\n * @returns Public key credential creation options for `navigator.credentials.create()`.\n */\nexport type PasskeyControllerGenerateRegistrationOptionsAction = {\n type: `PasskeyController:generateRegistrationOptions`;\n handler: PasskeyController['generateRegistrationOptions'];\n};\n\n/**\n * Builds WebAuthn credential request options for the post-registration\n * authentication step (between `create` and {@link protectVaultKeyWithPasskey}).\n *\n * @param params - Input for the pending registration ceremony.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction =\n {\n type: `PasskeyController:generatePostRegistrationAuthenticationOptions`;\n handler: PasskeyController['generatePostRegistrationAuthenticationOptions'];\n };\n\n/**\n * Builds WebAuthn credential request options for the enrolled passkey.\n *\n * @returns Public key credential request options for `navigator.credentials.get()`.\n */\nexport type PasskeyControllerGenerateAuthenticationOptionsAction = {\n type: `PasskeyController:generateAuthenticationOptions`;\n handler: PasskeyController['generateAuthenticationOptions'];\n};\n\n/**\n * Verifies registration and post-registration authentication, then stores the\n * vault key encrypted under the new passkey.\n *\n * Fetches the current vault encryption key from KeyringController before wrapping.\n * When onboarding is complete, requires `password` for step-up verification first.\n *\n * @param params - Enrollment completion inputs.\n * @param params.registrationResponse - Result of `navigator.credentials.create()`.\n * @param params.authenticationResponse - Result of `navigator.credentials.get()` after {@link generatePostRegistrationAuthenticationOptions}.\n * @param params.password - Wallet password when onboarding is complete (step-up).\n * @returns Resolves when enrollment completes.\n */\nexport type PasskeyControllerProtectVaultKeyWithPasskeyAction = {\n type: `PasskeyController:protectVaultKeyWithPasskey`;\n handler: PasskeyController['protectVaultKeyWithPasskey'];\n};\n\n/**\n * Verifies an authentication assertion and returns the decrypted vault key.\n *\n * Prefer orchestrated methods ({@link unlockWithPasskey},\n * {@link exportSeedPhraseWithPasskey}, {@link exportAccountsWithPasskey}) for product\n * flows instead of calling KeyringController with the returned key manually.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns The plaintext vault encryption key.\n */\nexport type PasskeyControllerRetrieveVaultKeyWithPasskeyAction = {\n type: `PasskeyController:retrieveVaultKeyWithPasskey`;\n handler: PasskeyController['retrieveVaultKeyWithPasskey'];\n};\n\n/**\n * Unlocks the keyring using a passkey authentication assertion.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns Resolves when the keyring is unlocked.\n */\nexport type PasskeyControllerUnlockWithPasskeyAction = {\n type: `PasskeyController:unlockWithPasskey`;\n handler: PasskeyController['unlockWithPasskey'];\n};\n\n/**\n * Exports the seed phrase after passkey step-up authentication.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @param keyringId - Optional keyring id; defaults to the primary HD keyring.\n * @returns Raw seed phrase bytes from KeyringController.\n */\nexport type PasskeyControllerExportSeedPhraseWithPasskeyAction = {\n type: `PasskeyController:exportSeedPhraseWithPasskey`;\n handler: PasskeyController['exportSeedPhraseWithPasskey'];\n};\n\n/**\n * Exports private keys for the given addresses after passkey step-up authentication.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @param addresses - Account addresses to export.\n * @returns Private keys in the same order as `addresses`.\n */\nexport type PasskeyControllerExportAccountsWithPasskeyAction = {\n type: `PasskeyController:exportAccountsWithPasskey`;\n handler: PasskeyController['exportAccountsWithPasskey'];\n};\n\n/**\n * Checks whether the given authentication assertion is valid for the enrolled passkey.\n *\n * On failure, returns `false` for {@link PasskeyControllerError} with a `code`;\n * other errors propagate.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns `true` if verification succeeds, otherwise `false`.\n */\nexport type PasskeyControllerVerifyPasskeyAuthenticationAction = {\n type: `PasskeyController:verifyPasskeyAuthentication`;\n handler: PasskeyController['verifyPasskeyAuthentication'];\n};\n\n/**\n * Re-wraps the vault key after rotation. Updates persisted `encryptedVaultKey` on success.\n *\n * Does not verify WebAuthn or ceremony state—call only after your layer has authenticated\n * the user (passkey `get()` + verified assertion, or verified password). On passkey paths,\n * pass the same `authenticationResponse` you just verified (e.g. from\n * {@link retrieveVaultKeyWithPasskey} / {@link verifyPasskeyAuthentication}).\n *\n * For password change with passkey step-up, prefer\n * {@link changePasswordWithPasskeyVerification}, which orchestrates keyring export,\n * `changePassword`, and re-wrap in one call.\n *\n * @param params - Re-wrap inputs.\n * @param params.authenticationResponse - Used to derive the wrapping key.\n * @param params.oldVaultKey - Expected current vault key.\n * @param params.newVaultKey - New vault key to encrypt under the passkey.\n * @returns Resolves when the passkey record is updated.\n */\nexport type PasskeyControllerRenewVaultKeyProtectionAction = {\n type: `PasskeyController:renewVaultKeyProtection`;\n handler: PasskeyController['renewVaultKeyProtection'];\n};\n\n/**\n * Changes the wallet password after passkey step-up authentication.\n *\n * When `renewVaultKeyProtection` is `true` (default), re-wraps the vault key under the\n * passkey after rotation. When `false`, removes the passkey instead.\n *\n * @param params - Change-password inputs.\n * @param params.newPassword - New wallet password.\n * @param params.authenticationResponse - Result of `navigator.credentials.get()`.\n * @param params.options - Optional flow controls.\n * @param params.options.renewVaultKeyProtection - Re-wrap vault key after password change.\n * @returns Resolves when the password change completes.\n */\nexport type PasskeyControllerChangePasswordWithPasskeyVerificationAction = {\n type: `PasskeyController:changePasswordWithPasskeyVerification`;\n handler: PasskeyController['changePasswordWithPasskeyVerification'];\n};\n\n/**\n * Removes the enrolled passkey after verifying a passkey authentication assertion.\n *\n * @param authenticationResponse - Result of `navigator.credentials.get()`.\n * @returns Resolves when the passkey is removed.\n */\nexport type PasskeyControllerRemovePasskeyWithPasskeyVerificationAction = {\n type: `PasskeyController:removePasskeyWithPasskeyVerification`;\n handler: PasskeyController['removePasskeyWithPasskeyVerification'];\n};\n\n/**\n * Removes the enrolled passkey after verifying the wallet password.\n *\n * @param password - Wallet password for step-up verification.\n * @returns Resolves when the passkey is removed.\n */\nexport type PasskeyControllerRemovePasskeyWithPasswordVerificationAction = {\n type: `PasskeyController:removePasskeyWithPasswordVerification`;\n handler: PasskeyController['removePasskeyWithPasswordVerification'];\n};\n\n/**\n * Resets state and clears in-flight registration/authentication ceremonies.\n *\n * For user-facing passkey removal with step-up, use\n * {@link removePasskeyWithPasskeyVerification} or\n * {@link removePasskeyWithPasswordVerification}.\n */\nexport type PasskeyControllerClearStateAction = {\n type: `PasskeyController:clearState`;\n handler: PasskeyController['clearState'];\n};\n\n/**\n * Releases all in-flight ceremony state and tears down the messenger.\n */\nexport type PasskeyControllerDestroyAction = {\n type: `PasskeyController:destroy`;\n handler: PasskeyController['destroy'];\n};\n\n/**\n * Union of all PasskeyController action types.\n */\nexport type PasskeyControllerMethodActions =\n | PasskeyControllerIsPasskeyEnrolledAction\n | PasskeyControllerGenerateRegistrationOptionsAction\n | PasskeyControllerGeneratePostRegistrationAuthenticationOptionsAction\n | PasskeyControllerGenerateAuthenticationOptionsAction\n | PasskeyControllerProtectVaultKeyWithPasskeyAction\n | PasskeyControllerRetrieveVaultKeyWithPasskeyAction\n | PasskeyControllerUnlockWithPasskeyAction\n | PasskeyControllerExportSeedPhraseWithPasskeyAction\n | PasskeyControllerExportAccountsWithPasskeyAction\n | PasskeyControllerVerifyPasskeyAuthenticationAction\n | PasskeyControllerRenewVaultKeyProtectionAction\n | PasskeyControllerChangePasswordWithPasskeyVerificationAction\n | PasskeyControllerRemovePasskeyWithPasskeyVerificationAction\n | PasskeyControllerRemovePasskeyWithPasswordVerificationAction\n | PasskeyControllerClearStateAction\n | PasskeyControllerDestroyAction;\n"]}
|