import type { AuthUser, IndustryType } from '@iota-big3/sdk-types';
import type { Request, RequestHandler } from 'express';
import type { FastifyInstance } from 'fastify';
export interface ApiKey {
    id: string;
    name: string;
    scopes?: string[];
}
export interface AuthenticatedRequest extends Request {
    user?: AuthUser;
    apiKey?: ApiKey;
    auth?: {
        type: 'jwt' | 'apiKey' | 'session';
        token?: string;
    };
}
export interface AuthConfig {
    secret?: string;
    algorithm?: string;
    issuer?: string;
    audience?: string;
    expiresIn?: string | number;
    tokenHeader?: string;
    cookieName?: string;
    publicPaths?: string[];
    enableJWT?: boolean;
    enableApiKey?: boolean;
    enableSession?: boolean;
}
export interface AuthMetadata {
    serviceName: string;
    version?: string;
    environment?: string;
    industry?: IndustryType;
}
export interface AuthMiddleware extends RequestHandler {
    express: RequestHandler;
    fastify: (fastify: FastifyInstance) => Promise<void>;
}
export declare function createAuthMiddleware(authConfig: AuthConfig | undefined, metadata: AuthMetadata): AuthMiddleware;
export declare const authMiddleware: typeof createAuthMiddleware;
export default createAuthMiddleware;
//# sourceMappingURL=auth-middleware.d.ts.map