import type { PiAgentMessage, PiModel, PiRpcSlashCommand, PiRuntimeEvent, PiSessionState, PiSessionStats } from "./rpc-types.js";
import type { ProviderRuntimeSettings } from "../../provider-launch-config.js";
export interface PiRuntimeLaunch {
    cwd: string;
    argv: string[];
    env?: Record<string, string>;
    model?: string;
    thinkingOptionId?: string;
    session?: string;
    systemPrompt?: string;
    mcpConfigPath?: string;
    extensionPaths?: string[];
}
export interface PiStartSessionInput {
    cwd: string;
    env?: Record<string, string>;
    model?: string;
    thinkingOptionId?: string;
    session?: string;
    systemPrompt?: string;
    mcpConfigPath?: string;
    extensionPaths?: string[];
}
export interface PiRuntimeSession {
    onEvent(callback: (event: PiRuntimeEvent) => void): () => void;
    prompt(message: string, images?: Array<{
        type: "image";
        data: string;
        mimeType: string;
    }>): Promise<void>;
    abort(): Promise<void>;
    getState(): Promise<PiSessionState>;
    getMessages(): Promise<PiAgentMessage[]>;
    getAvailableModels(): Promise<PiModel[]>;
    setModel(provider: string, modelId: string): Promise<PiModel>;
    setThinkingLevel(level: string): Promise<void>;
    getSessionStats(): Promise<PiSessionStats>;
    getCommands(): Promise<PiRpcSlashCommand[]>;
    respondToExtensionUiRequest(id: string, response: {
        value?: string;
        confirmed?: boolean;
        cancelled?: boolean;
    }): void;
    cancelExtensionUiRequest(id: string): void;
    close(): Promise<void>;
}
export interface PiRuntime {
    startSession(input: PiStartSessionInput): Promise<PiRuntimeSession>;
}
export declare function buildPiLaunch(input: {
    command: [string, ...string[]];
    runtimeSettings?: ProviderRuntimeSettings;
    session: PiStartSessionInput;
}): PiRuntimeLaunch;
//# sourceMappingURL=runtime.d.ts.map