import { EventEmitter } from 'events';
import { ServiceIdentity, ZeroTrustPolicy, AccessRequest, AccessDecision } from '../types/security.types';
import { Logger } from '@iota-big3/sdk-observability';
export interface ServiceMeshConfig {
    type: 'istio' | 'linkerd';
    controlPlaneUrl: string;
    mtlsMode: 'strict' | 'permissive' | 'disabled';
    certificateRotationDays: number;
    namespace?: string;
    trustDomain?: string;
}
export declare class ServiceMeshIntegration extends EventEmitter {
    private config;
    private logger;
    private grpcClient?;
    private serviceIdentity?;
    private policies;
    private certificateRotationTimer?;
    constructor(_config: ServiceMeshConfig, logger: Logger);
    private initializeGrpcClient;
    private getProtoPath;
    private getServiceClass;
    generateSpiffeId(_serviceName: string, namespace?: string): string;
    registerService(_serviceName: string, namespace?: string): Promise<ServiceIdentity>;
    private generateCertificate;
    private createSelfSignedCertificate;
    private registerWithMesh;
    applyPolicy(_policy: ZeroTrustPolicy): Promise<void>;
    private validatePolicy;
    private applyPolicyToMesh;
    private convertToMeshPolicy;
    private convertToIstioPolicy;
    private convertToLinkerdPolicy;
    enforceAccess(request: AccessRequest): Promise<AccessDecision>;
    private verifyMTLS;
    private evaluatePolicy;
    private matchResource;
    private evaluateConditions;
    private getConditionValue;
    private evaluateCondition;
    private logAccessDecision;
    private startCertificateRotation;
    private rotateCertificate;
    getMetrics(): unknown;
    destroy(): void;
}
//# sourceMappingURL=service-mesh.d.ts.map