import type { NextApiRequest } from 'next';
/** Auth provider type for explicit configuration */
export type AuthProvider = 'firebase' | 'supabase';
/**
 * Validates that user is authenticated
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function assertAuthenticated(uid: string): string;
/**
 * Validates that user has admin privileges.
 * Uses IServerAuthAdapter when configured, falls back to Firebase Admin SDK.
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function assertAdmin(uid: string): Promise<string>;
/**
 * Verify a Bearer token using the specified auth provider.
 * Returns `{ uid: string }` on success, throws on failure.
 *
 * Provider resolution order:
 * 1. Explicit `provider` parameter ('firebase' | 'supabase')
 * 2. Provider registry (IServerAuthAdapter via `hasProvider('serverAuth')`)
 * 3. Firebase Admin SDK fallback
 *
 * @param token - Raw JWT token (without "Bearer " prefix)
 * @param provider - Optional explicit auth provider
 * @returns Object with verified user's uid
 *
 * @version 0.1.0
 * @since 0.5.0
 * @author AMBROISE PARK Consulting
 */
export declare function verifyToken(token: string, provider?: AuthProvider): Promise<{
    uid: string;
}>;
/**
 * Verifies auth token from request.
 * Uses IServerAuthAdapter when configured, falls back to Firebase Admin SDK.
 *
 * @param req - Next.js API request
 * @param provider - Optional explicit auth provider ('firebase' | 'supabase')
 * @returns Verified user's uid
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function verifyAuthToken(req: NextApiRequest, provider?: AuthProvider): Promise<string>;
/**
 * @deprecated Use verifyAuthToken instead. Kept for backwards compatibility.
 */
export declare const verifyFirebaseAuthToken: typeof verifyAuthToken;
