import { BaseAuthProvider } from "./BaseAuthProvider.js";
import type { AuthProviderConfig, FirebaseConfig, AuthUser, TokenValidationResult, AuthRequestContext, AuthHealthCheck, AuthProviderType } from "../../types/authTypes.js";
/**
 * Firebase Authentication Provider
 *
 * Supports Firebase ID token validation using Google's public keys.
 * Can validate tokens locally or via Firebase REST API.
 *
 * Features:
 * - JWT validation using Google's public keys
 * - Token verification via Firebase REST API
 * - Custom claims extraction for roles/permissions
 *
 * @example
 * ```typescript
 * const firebase = new FirebaseAuthProvider({
 *   type: "firebase",
 *   projectId: "your-project-id"
 * });
 *
 * const result = await firebase.authenticateToken(idToken);
 * if (result.valid) {
 *   console.log("Authenticated user:", result.user);
 * }
 * ```
 */
export declare class FirebaseAuthProvider extends BaseAuthProvider {
    readonly type: AuthProviderType;
    private projectId;
    private apiKey?;
    private serviceAccount?;
    private jwks;
    constructor(config: AuthProviderConfig & FirebaseConfig);
    /**
     * Initialize JWKS for Firebase token verification
     */
    initialize(): Promise<void>;
    /**
     * Validate Firebase ID token
     */
    authenticateToken(token: string, _context?: AuthRequestContext): Promise<TokenValidationResult>;
    /**
     * Validate token via Firebase REST API
     */
    private validateViaApi;
    /**
     * Convert JWT payload to AuthUser
     */
    private payloadToUser;
    /**
     * Convert Firebase user data to AuthUser
     */
    private firebaseUserToAuthUser;
    /**
     * Get user by ID via Firebase REST API
     * Requires API key
     */
    getUser(_userId: string): Promise<AuthUser | null>;
    /**
     * Health check
     */
    healthCheck(): Promise<AuthHealthCheck>;
}
