import { AuthUser, TypedRequest } from '@iota-big3/sdk-types';
import type { FastifyInstance, FastifyRequest } from 'fastify';
import { AuthConfig, MiddlewareFunction } from './types-clean';
export interface AuthenticatedRequest extends TypedRequest {
    user?: AuthUser;
    token?: string;
    authMethod?: 'jwt' | 'api-key' | 'session';
}
export interface AuthenticatedFastifyRequest extends FastifyRequest {
    user?: {
        id: string;
        email?: string;
        roles?: string[];
        permissions?: string[];
        industry?: string;
        metadata?: {
            lastLogin?: string;
            loginCount?: number;
            preferences?: Record<string, unknown>;
        };
    };
    token?: string;
    authMethod?: 'jwt' | 'api-key' | 'session';
}
export declare class AuthMiddleware {
    private config;
    private isEnabled;
    private metrics;
    constructor(config?: AuthConfig);
    private extractToken;
    private extractApiKey;
    private extractApiKeyFastify;
    private isPublicPath;
    private validateToken;
    private validateApiKey;
    middleware(): MiddlewareFunction;
    getHealthStatus(): {
        status: string;
        enabled: boolean;
    };
    fastifyPlugin(): (fastify: FastifyInstance) => Promise<void>;
    getMetrics(): typeof this.metrics;
    private generateRequestId;
    private logSuccessfulAuthentication;
    private logAuthenticationFailure;
    private logAuthenticationError;
    private logPublicPathAccess;
    private logSuccessfulAuthenticationFastify;
    private logAuthenticationFailureFastify;
    private logAuthenticationErrorFastify;
    private logPublicPathAccessFastify;
    resetMetrics(): void;
}
export declare function createAuthMiddleware(config?: AuthConfig): MiddlewareFunction & {
    fastify: (fastify: FastifyInstance) => Promise<void>;
};
//# sourceMappingURL=auth-middleware-clean.d.ts.map