export interface AuthGetChallengeMessage {
    type: "auth:getChallenge";
}
export interface AuthLockedMessage {
    type: "auth:locked";
    message: string;
}
export interface AuthChallengeMessage {
    type: "auth:challenge";
    challenge: string;
    timestamp: number;
}
export interface AuthResponseMessage {
    type: "auth:response";
    challenge: string;
    signature: string;
    credentialId: string;
    authenticatorData: string;
    clientDataJSON: string;
}
export interface AuthSuccessMessage {
    type: "auth:success";
    token: string;
    expiresAt: number;
}
export interface AuthFailureMessage {
    type: "auth:failure";
    reason: "invalid_signature" | "expired" | "unknown_credential";
}
export type AuthMessage = AuthGetChallengeMessage | AuthChallengeMessage | AuthResponseMessage | AuthSuccessMessage | AuthFailureMessage | AuthLockedMessage;
export interface PasskeyCredential {
    publicKey: string;
    credentialId: string;
    algorithm: string;
}
export interface PasskeySetupSession {
    sessionId: string;
    browserUrl: string;
}
export interface PasskeySetupStatus {
    status: "pending" | "complete" | "expired";
    credential?: PasskeyCredential;
}
