import type { IndustryType, SDK } from '@iota-big3/sdk-core'; import type { Request, RequestHandler } from 'express'; import type { FastifyInstance } from 'fastify'; export interface PolicyConfig { opaUrl?: string; enforcementMode?: 'enforce' | 'monitor' | 'off'; cacheDecisions?: boolean; cacheTTL?: number; defaultAllow?: boolean; includeViolationDetails?: boolean; inputBuilder?: (req: Request) => Promise; philosophyEnforcement?: boolean; philosophyMinScore?: number; } export interface PolicyMetadata { serviceName: string; tribe?: string; industry?: IndustryType; environment?: string; sdk?: SDK; } export interface PolicyInput { method: string; path: string; user?: import('@iota-big3/sdk-types').AuthUser; resource?: string; action?: string; context?: Record; } export interface PolicyDecision { allowed: boolean; reasons?: string[]; appliedPolicies?: string[]; filteredResponse?: unknown; } export interface PolicyMiddleware extends RequestHandler { express: RequestHandler; fastify: (fastify: FastifyInstance) => Promise; clearCache: () => void; getMetrics: () => PolicyMetrics; } interface PolicyMetrics { allowed: number; denied: number; errors: number; cached: number; } export declare function createPolicyMiddleware(metadata: PolicyMetadata, config?: PolicyConfig): PolicyMiddleware; export declare function createLegacyPolicyMiddleware(config?: PolicyConfig & { tribe?: string; }): PolicyMiddleware; export declare const policyMiddleware: typeof createPolicyMiddleware; export default createPolicyMiddleware; //# sourceMappingURL=policy-middleware.d.ts.map