import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
/**
 * `user-passkeys` — per-user WebAuthn (passkey) enrollment + assertion.
 *
 * Implemented by `@camstack/addon-auth-webauthn` (collection of one
 * for now; the cap is collection-mode for forward compat with
 * provider-specific passkey stores).
 *
 * Lifecycle:
 *   1. Enrollment (admin or self):
 *      a. `beginRegistration({userId, username})` → server returns
 *         PublicKeyCredentialCreationOptions (challenge, rp, user, …).
 *         The browser passes this to `navigator.credentials.create()`.
 *      b. `finishRegistration({userId, response, label})` →
 *         server verifies attestation, persists the credential
 *         (publicKey + counter + transports + label).
 *
 *   2. Authentication (during login):
 *      a. `beginAuthentication({userId?})` → server returns
 *         PublicKeyCredentialRequestOptions (challenge, allowCredentials).
 *         The browser passes this to `navigator.credentials.get()`.
 *      b. `finishAuthentication({userId, response})` → server verifies
 *         the assertion, bumps the credential counter, returns ok.
 *
 *   3. Management:
 *      - `listPasskeys({userId})` — enumerate user's enrolled credentials.
 *      - `removePasskey({userId, credentialId})` — revoke one credential.
 *
 * Challenges are short-lived (5 min, in-memory). The cap is internal —
 * the admin-ui composes the begin/finish round-trip and never exposes
 * the cap to non-admins.
 */
declare const PasskeySummarySchema: z.ZodObject<{
    credentialId: z.ZodString;
    label: z.ZodString;
    createdAt: z.ZodNumber;
    lastUsedAt: z.ZodNullable<z.ZodNumber>;
    transports: z.ZodDefault<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
export type PasskeySummary = z.infer<typeof PasskeySummarySchema>;
export declare const userPasskeysCapability: {
    readonly name: "user-passkeys";
    readonly scope: "system";
    readonly mode: "collection";
    readonly internal: true;
    readonly methods: {
        readonly beginRegistration: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            userId: z.ZodString;
            username: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            optionsJSON: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>, "mutation">;
        readonly finishRegistration: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            userId: z.ZodString;
            response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
            label: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            success: z.ZodLiteral<true>;
            credentialId: z.ZodString;
        }, z.core.$strip>, "mutation">;
        readonly beginAuthentication: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            userId: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            optionsJSON: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>, "mutation">;
        readonly finishAuthentication: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            userId: z.ZodString;
            response: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        }, z.core.$strip>, z.ZodObject<{
            verified: z.ZodBoolean;
        }, z.core.$strip>, "mutation">;
        readonly listPasskeys: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            userId: z.ZodString;
        }, z.core.$strip>, z.ZodArray<z.ZodObject<{
            credentialId: z.ZodString;
            label: z.ZodString;
            createdAt: z.ZodNumber;
            lastUsedAt: z.ZodNullable<z.ZodNumber>;
            transports: z.ZodDefault<z.ZodArray<z.ZodString>>;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly removePasskey: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            userId: z.ZodString;
            credentialId: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            success: z.ZodLiteral<true>;
        }, z.core.$strip>, "mutation">;
    };
};
export type IUserPasskeysProvider = InferProvider<typeof userPasskeysCapability>;
export { PasskeySummarySchema };
//# sourceMappingURL=user-passkeys.cap.d.ts.map