import { RpcObservableRequestContext } from '../rpc-observable-request';
import { RpcObservableResultContext } from '../rpc-observable-result';
/**
 * RPC Copilot request name and version.
 */
export declare class RpcObservableCopilotKey {
    static command: string;
    static configCommand: string;
    static version: string;
}
/**
 * RPC observable copilot request type.
 */
export declare enum RpcObservableCopilotRequestType {
    RouteNavigation = 0,
    ThemeChange = 1,
    ToolChange = 2,
    ActiveNodeNameChange = 3,
    RequestRouteNavigation = 4,
    RequestActiveNodeName = 5,
    RequestThemeChange = 6,
    RequestToolChange = 7,
    RequestToSendToShellSendingPromptToCopilot = 8,
    RequestToSendToExtensionSendingCopilotResponse = 9
}
/**
 * The tool data for sending to extension.
 */
export interface RpcObservableCopilotShellToolData {
    name: string;
    displayName: string;
}
/**
 * Rpc observable copilot request data.
 */
export interface RpcObservableCopilotRequest extends RpcObservableRequestContext {
    type?: RpcObservableCopilotRequestType;
    errorMessage?: string;
    routeNavigation?: {
        url: string;
        target?: string;
    };
    themeChange?: {
        current: string;
        previous?: string;
    };
    toolChange?: RpcObservableCopilotShellToolData;
    activeNodeName?: string;
    copilotChatRequest?: RpcObservableCopilotChatRequestData;
    copilotChatResponse?: RpcObservableCopilotChatResponseData;
}
/**
 * Rpc observable copilot chat request data.
 */
export interface RpcObservableCopilotChatRequestData {
    prompt?: string;
    originExtension?: string;
}
/**
 * Rpc observable copilot chat response data.
 */
export interface RpcObservableCopilotChatResponseData {
    response?: string;
    targetExtension?: string;
}
/**
 * Rpc observable copilot result.
 */
export interface RpcObservableCopilotResult extends RpcObservableResultContext {
    message: string;
}
/**
 * Rpc observable copilot error.
 */
export interface RpcObservableCopilotError extends RpcObservableCopilotResult {
    error: Error;
}
/**
 * Rpc observable copilot request set data.
 */
export interface RpcObservableCopilotConfigRequest extends RpcObservableCopilotRequest, RpcObservableRequestContext {
}
