import type { PasskeySignupChallengeOptions, PasskeySignupChallengeResponse, PasskeyLoginChallengeOptions, PasskeyLoginChallengeResponse, PasskeyCredentialResponse, PasskeyCreationOptions, PasskeyRequestOptions } from '@auth0/auth0-auth-js';
export type { PasskeySignupChallengeOptions, PasskeySignupChallengeResponse, PasskeyLoginChallengeOptions, PasskeyLoginChallengeResponse, PasskeyCredentialResponse, PasskeyCreationOptions, PasskeyRequestOptions };
/**
 * Options for passkey signup (registering a new user with a passkey).
 */
export type PasskeySignupOptions = PasskeySignupChallengeOptions & {
    scope?: string;
    audience?: string;
};
/**
 * Options for passkey login (authenticating with an existing passkey).
 */
export type PasskeyLoginOptions = PasskeyLoginChallengeOptions & {
    scope?: string;
    audience?: string;
};
/**
 * A passkey signup challenge ready for the WebAuthn ceremony.
 *
 * `publicKey` is decoded (base64url → ArrayBuffer) and can be fed directly into
 * a WebAuthn credential creation ceremony. `authSession` must be retained and passed to `getTokenWithPasskey()`.
 */
export type PasskeySignupChallenge = {
    authSession: string;
    publicKey: PublicKeyCredentialCreationOptions;
    /**
     * Identifiers that require OTP verification before token issuance (e.g. `["email"]`).
     * Absent when no verification is required. Collect OTP codes for each identifier
     * and pass them as `verification` to `getTokenWithPasskey()` — do NOT call
     * `navigator.credentials.create()` until all codes have been collected.
     */
    verificationRequired?: Array<'email' | 'phone'>;
};
/**
 * A passkey login challenge ready for the WebAuthn ceremony.
 *
 * `publicKey` is decoded (base64url → ArrayBuffer) and can be fed directly into
 * a WebAuthn assertion ceremony . `authSession` must be retained and passed to `getTokenWithPasskey()`.
 */
export type PasskeyLoginChallenge = {
    authSession: string;
    publicKey: PublicKeyCredentialRequestOptions;
};
/**
 * Options for exchanging a signed passkey credential for tokens.
 *
 * `credential` is the raw `PublicKeyCredential` produced by the WebAuthn
 * ceremony — a creation credential (signup) or an assertion credential
 * (login). The credential type (attestation vs assertion) is detected
 * automatically during serialization.
 */
export type PasskeyGetTokenOptions = {
    authSession: string;
    credential: PublicKeyCredential;
    realm?: string;
    organization?: string;
    scope?: string;
    audience?: string;
    /**
     * OTP codes collected for identifier verification. Required when
     * `PasskeySignupChallenge.verificationRequired` is non-empty. Keys are the
     * identifier names (e.g. `"email"`, `"phone"`); values are the OTP codes.
     * Omit entirely when no verification is required.
     */
    verification?: {
        email?: string;
        phone?: string;
    };
};
