import { NextFunction, Request, Response } from 'express';
export interface MiddlewareConfig {
    enabled?: boolean;
    [key: string]: unknown;
}
export type IndustryType = 'education' | 'healthcare' | 'finance' | 'retail' | 'government' | 'technology';
export interface UserContext {
    id: string;
    email?: string;
    roles?: string[];
    permissions?: string[];
    industry?: IndustryType;
}
export interface AuthConfig extends MiddlewareConfig {
    jwtSecret?: string;
    apiKeyHeader?: string;
    tokenHeader?: string;
    cookieName?: string;
    publicPaths?: string[];
    enableJWT?: boolean;
    enableApiKey?: boolean;
    enableSession?: boolean;
}
export interface LoggingConfig extends MiddlewareConfig {
    level?: string;
    includeBody?: boolean;
    includeHeaders?: boolean;
    colorize?: boolean;
    metricsPrefix?: string;
}
export interface ErrorConfig extends MiddlewareConfig {
    enableStackTrace?: boolean;
    customFormatter?: (error: Error, req: Request) => ErrorResponse;
}
export interface CorsConfig extends MiddlewareConfig {
    origin?: string | string[];
    credentials?: boolean;
    maxAge?: number;
    allowedHeaders?: string[];
    exposedHeaders?: string[];
}
export interface RateLimitConfig extends MiddlewareConfig {
    windowMs?: number;
    max?: number;
    message?: string;
}
export interface SecurityConfig extends MiddlewareConfig {
    contentSecurityPolicy?: string | boolean;
    strictTransportSecurity?: boolean;
    xFrameOptions?: string;
    xContentTypeOptions?: boolean;
}
export interface PhilosophyConfig extends MiddlewareConfig {
    trackingEnabled?: boolean;
    metricsPrefix?: string;
}
export interface ComplianceConfig extends MiddlewareConfig {
    frameworks?: string[];
    enforceHttps?: boolean;
    requireAuth?: boolean;
}
export type MiddlewareFunction = (req: Request, res: Response, next: NextFunction) => void;
export type ErrorMiddlewareFunction = (err: Error, req: Request, res: Response, next: NextFunction) => void;
export interface AuthenticatedRequest extends Request {
    user?: UserContext;
    token?: string;
    sessionId?: string;
}
export interface SDKMiddleware {
    auth: MiddlewareFunction;
    logging: MiddlewareFunction;
    error: ErrorMiddlewareFunction;
    cors: MiddlewareFunction;
    rateLimit: MiddlewareFunction;
    security: MiddlewareFunction;
    philosophy: MiddlewareFunction;
    compliance: MiddlewareFunction;
    isEnabled: boolean;
}
export interface ErrorResponse {
    error: string;
    message: string;
    statusCode: number;
    timestamp: string;
    path: string;
}
//# sourceMappingURL=types-clean.d.ts.map