import { ContentReference, ReferenceId } from '../types/content-reference';
import { ReferenceContextManager, ReferenceDisplayOptions } from './ReferenceContextManager';
import { Logger } from '@hashgraphonline/standards-sdk';

export interface ResponseProcessingOptions {
    autoDisplayReferences?: boolean;
    displayOptions?: ReferenceDisplayOptions;
    includeReferenceInstructions?: boolean;
    contextualizeReferences?: boolean;
}
export interface ProcessedResponse {
    content: string;
    hasReferences: boolean;
    referenceCount: number;
    contextIds: string[];
    suggestedActions: string[];
}
export interface ReferenceDetectionResult {
    hasReferences: boolean;
    references: Array<{
        reference: ContentReference;
        position: number;
        originalText: string;
    }>;
    plainReferences: Array<{
        referenceId: ReferenceId;
        position: number;
        originalText: string;
    }>;
}
/**
 * Processes agent responses to detect and display content references
 * Handles both structured references and plain reference IDs
 */
export declare class ReferenceResponseProcessor {
    private contextManager;
    private logger;
    constructor(contextManager: ReferenceContextManager, logger: Logger);
    /**
     * Process an agent response to handle content references
     */
    processResponse(responseContent: string, options?: ResponseProcessingOptions): Promise<ProcessedResponse>;
    /**
     * Detect references in response content
     */
    private detectReferences;
    /**
     * Create a preview from content buffer
     */
    private createPreviewFromContent;
    /**
     * Validate reference ID format
     */
    private isValidReferenceId;
    /**
     * Get reference context statistics
     */
    getContextStats(): {
        activeReferences: number;
        conversationTurn: number;
        oldestReference: number | null;
        mostRecentReference: number | null;
    };
    /**
     * Validate all references in context
     */
    validateAllReferences(): Promise<{
        valid: number;
        invalid: number;
        removed: ReferenceId[];
    }>;
    /**
     * Clean up old references
     */
    cleanupOldReferences(maxAgeMs?: number): number;
}
