/**
 * Protocol types for communication between VS Code extension and Nanocoder CLI
 * This file should be kept in sync with plugins/vscode/src/protocol.ts
 */
export declare const PROTOCOL_VERSION = "1.0.0";
export declare const DEFAULT_PORT = 51820;
export type ServerMessage = FileChangeMessage | ToolCallMessage | AssistantMessage | StatusMessage | ConnectionAckMessage | DiagnosticsRequestMessage | CloseDiffMessage | OpenFileMessage;
export type ClientMessage = SendPromptMessage | ApplyChangeMessage | RejectChangeMessage | GetStatusMessage | ContextMessage | DiagnosticsResponseMessage;
export interface FileChangeMessage {
    type: 'file_change';
    id: string;
    filePath: string;
    originalContent: string;
    newContent: string;
    toolName: string;
    toolArgs: Record<string, unknown>;
}
export interface ToolCallMessage {
    type: 'tool_call';
    id: string;
    toolName: string;
    toolArgs: Record<string, unknown>;
    status: 'pending' | 'executing' | 'completed' | 'rejected';
    result?: string;
}
export interface AssistantMessage {
    type: 'assistant_message';
    content: string;
    isGenerating: boolean;
}
export interface StatusMessage {
    type: 'status';
    connected: boolean;
    model?: string;
    provider?: string;
    workingDirectory?: string;
}
export interface ConnectionAckMessage {
    type: 'connection_ack';
    protocolVersion: string;
    cliVersion: string;
}
export interface DiagnosticsRequestMessage {
    type: 'diagnostics_request';
    filePath?: string;
}
export interface CloseDiffMessage {
    type: 'close_diff';
    id: string;
}
export interface OpenFileMessage {
    type: 'open_file';
    filePath: string;
}
export interface SendPromptMessage {
    type: 'send_prompt';
    prompt: string;
    context?: {
        filePath?: string;
        selection?: string;
        fileName?: string;
        startLine?: number;
        endLine?: number;
        cursorPosition?: {
            line: number;
            character: number;
        };
    };
}
export interface ApplyChangeMessage {
    type: 'apply_change';
    id: string;
}
export interface RejectChangeMessage {
    type: 'reject_change';
    id: string;
}
export interface GetStatusMessage {
    type: 'get_status';
}
export interface ContextMessage {
    type: 'context';
    workspaceFolder?: string;
    openFiles?: string[];
    activeFile?: string;
    diagnostics?: DiagnosticInfo[];
}
export interface DiagnosticsResponseMessage {
    type: 'diagnostics_response';
    diagnostics: DiagnosticInfo[];
}
export interface DiagnosticInfo {
    filePath: string;
    line: number;
    character: number;
    message: string;
    severity: 'error' | 'warning' | 'info' | 'hint';
    source?: string;
}
export interface PendingChange {
    id: string;
    filePath: string;
    originalContent: string;
    newContent: string;
    toolName: string;
    timestamp: number;
}
//# sourceMappingURL=protocol.d.ts.map