import { VerifiablePresentation } from '../types';
import { VerificationResult } from './service-provider';
import { VerificationError, VerificationErrorCode } from './verification-errors';
export interface BatchVerificationResult {
    presentationIndex: number;
    presentationId?: string;
    result: VerificationResult;
    processingTime: number;
}
export interface BatchRevocationResult {
    credentialId: string;
    isRevoked: boolean;
    error?: VerificationError;
    processingTime: number;
}
export interface BatchOperationOptions {
    maxConcurrency?: number;
    timeout?: number;
    continueOnError?: boolean;
}
export declare class BatchOperations {
    private options;
    private defaultOptions;
    constructor(options?: BatchOperationOptions);
    /**
     * Verify multiple presentations in parallel with controlled concurrency
     */
    batchVerifyPresentations(presentations: VerifiablePresentation[], verifyFunction: (presentation: VerifiablePresentation) => Promise<VerificationResult>): Promise<BatchVerificationResult[]>;
    /**
     * Check multiple credential revocations in parallel
     */
    batchCheckRevocations(credentialIds: string[], checkFunction: (credentialId: string) => Promise<boolean>): Promise<Map<string, BatchRevocationResult>>;
    /**
     * Batch verify presentations with revocation checks
     */
    batchVerifyWithRevocationCheck(presentations: VerifiablePresentation[], verifyFunction: (presentation: VerifiablePresentation) => Promise<VerificationResult>, checkRevocationFunction: (credentialId: string) => Promise<boolean>): Promise<BatchVerificationResult[]>;
    /**
     * Get batch operation statistics
     */
    generateBatchStatistics(results: BatchVerificationResult[]): {
        total: number;
        valid: number;
        invalid: number;
        averageProcessingTime: number;
        maxProcessingTime: number;
        minProcessingTime: number;
        errorDistribution: Record<string, number>;
    };
    /**
     * Filter results by criteria
     */
    filterResults(results: BatchVerificationResult[], criteria: {
        validOnly?: boolean;
        maxProcessingTime?: number;
        minProcessingTime?: number;
        excludeErrorCodes?: VerificationErrorCode[];
    }): BatchVerificationResult[];
    /**
     * Utility: Add timeout to a promise
     */
    private withTimeout;
    /**
     * Utility: Split array into chunks
     */
    private chunkArray;
    /**
     * Extract presentation ID from presentation object
     */
    private extractPresentationId;
}
//# sourceMappingURL=batch-operations.d.ts.map