import type { AgentToolResult, ToolDefinition } from '../../../core/core-types.js';
import type { Component } from '../../../tui/index.js';
import type { Theme } from '../../theme/runtime.js';
import type { ToolExecutionPreviewState } from '../runtime/tool-execution-types.js';
/** Context passed to renderCall and renderResult functions. */
export interface ToolRenderContext {
    args?: unknown;
    expanded: boolean;
    isPartial: boolean;
    textOutput?: string;
    terminalColumns?: number;
    preview?: ToolExecutionPreviewState;
}
/** Snapshot of a single member within a grouped tool call. */
export interface ToolGroupMember<TDetails = unknown> {
    toolCallId: string;
    args: unknown;
    result?: {
        content: unknown;
        details?: TDetails;
        isError: boolean;
    };
    isPartial: boolean;
}
export interface ToolRenderGroupOptions {
    expanded: boolean;
}
/**
 * Presentation contract for a tool — provides optional render functions
 * for call headers, results, and grouped concurrent calls.
 */
export interface ToolPresentation<TDetails = unknown> {
    renderCall?: (args: unknown, options: ToolRenderContext, theme: Theme) => Component | undefined;
    renderResult?: (result: (AgentToolResult<TDetails> & {
        isError?: boolean;
    }) | undefined, options: ToolRenderContext, theme: Theme) => Component | undefined;
    renderGroup?: (members: ToolGroupMember<TDetails>[], options: ToolRenderGroupOptions, theme: Theme) => Component;
}
export type { ToolDefinition };
//# sourceMappingURL=types.d.ts.map