/**
 * StructuredTaskOutput
 * Implements type-safe structured output for tasks with optimized memory usage
 * Designed for:
 * - Zero-copy transformations where possible
 * - Minimal memory overhead for large outputs
 * - Efficient caching of formatted results
 * - Streaming support for incremental processing
 */
import { TaskOutput } from './Task.js';
/**
 * Base metadata interface for all task outputs
 * Optimized to use optional fields for minimal payload size
 */
export interface TaskOutputMetadata {
    taskId: string;
    agentId: string;
    executionTime: number;
    tokenUsage?: {
        prompt: number;
        completion: number;
        total: number;
    };
    iterations?: number;
    cacheHit?: boolean;
    retries?: number;
    formatTime?: number;
    schemaValidation?: {
        success: boolean;
        errorMessage?: string;
    };
}
/**
 * Enhanced TaskOutput with structured data support
 * Uses generics for type-safe access to formatted data
 */
export interface StructuredTaskOutput<T = any> extends TaskOutput {
    result: string;
    metadata: TaskOutputMetadata;
    formattedData?: T;
    isStreaming?: boolean;
    streamingComplete?: boolean;
    getFormatted<R = T>(): R | undefined;
    asJSON(): string;
    asPlainText(): string;
}
/**
 * Implementation of StructuredTaskOutput
 * Optimized for memory efficiency and minimal object creation
 */
export declare class StructuredTaskOutputImpl<T = any> implements StructuredTaskOutput<T> {
    result: string;
    metadata: TaskOutputMetadata;
    formattedData?: T;
    isStreaming?: boolean;
    streamingComplete?: boolean;
    private jsonCache?;
    constructor(output: TaskOutput, formattedData?: T, isStreaming?: boolean);
    /**
     * Get formatted data with type casting if needed
     * Zero runtime cost for same type, safe casting for different types
     */
    getFormatted<R = T>(): R | undefined;
    /**
     * Convert output to JSON string
     * Uses caching for repeated calls
     */
    asJSON(): string;
    /**
     * Get plain text representation
     * Returns the raw result without formatting
     */
    asPlainText(): string;
    /**
     * Update streaming status
     * Used when receiving chunks in streaming mode
     */
    updateStreamingStatus(complete: boolean, additionalResult?: string): void;
    /**
     * Create from a standard TaskOutput
     * Factory method for convenient creation
     */
    static fromTaskOutput<T>(output: TaskOutput, formattedData?: T): StructuredTaskOutput<T>;
    /**
     * Create a streaming output container
     * For handling incremental results
     */
    static createStreaming<T>(initialOutput: TaskOutput): StructuredTaskOutput<T>;
}
//# sourceMappingURL=StructuredTaskOutput.d.ts.map