import type { AuthVerification, Prisma } from '%prismaGeneratedImports';
/**
 * Creates a new auth verification using the split-token pattern.
 *
 * @param type - Verification type (e.g., "password-reset", "email-verify")
 * @param userId - Optional user ID to associate with the token
 * @param expiresInSec - Token lifetime in seconds
 * @param metadata - Optional JSON metadata to store with the token
 * @returns The combined token (`{selector}.{verifier}`) to send to the user
 */
export declare function createAuthVerification({ type, userId, expiresInSec, metadata, }: {
    type: string;
    userId?: string;
    expiresInSec: number;
    metadata?: Prisma.JsonValue;
}): Promise<{
    token: string;
}>;
/**
 * Validates an auth verification token without consuming it.
 * Returns the full record if valid so the caller can delete it
 * as part of their own transaction.
 *
 * Security: If the selector matches but the verifier is wrong or expired,
 * the token is deleted to prevent brute-force attempts.
 *
 * @throws BadRequestError if token is invalid, expired, or malformed
 */
export declare function validateAuthVerification({ type, token, }: {
    type: string;
    token: string;
}): Promise<AuthVerification | null>;
/**
 * Cleanup job to delete expired auth verification tokens.
 * Should be called periodically (e.g., via cron job or queue).
 */
export declare function cleanupExpiredAuthVerifications(): Promise<{
    deletedCount: number;
}>;
//# sourceMappingURL=auth-verification.service.d.ts.map