import type { McpRuntimeStatus, SessionGetSkillsAck, SourceRuntimeStatus } from "../../../hub/index.js";
import type { QueueWriteImage } from "../../../hub/transport/protocol.js";
import type { PeerAppSnapshot } from "../../state/peer-app-state.js";
import type { PeerUiSnapshot } from "../../state/peer-ui-state.js";
import type { PeerThinkingLevel } from "../../types.js";
import type { RemoteInteractiveActions } from "./remote-interactive-actions.js";
import type { RemoteInteractiveCapabilities } from "./remote-interactive-capabilities.js";
import type { RemoteInteractiveView } from "./remote-interactive-view.js";
export interface RemoteInteractiveController {
    getView(): RemoteInteractiveView;
    actions: RemoteInteractiveActions;
    capabilities: RemoteInteractiveCapabilities;
}
export interface RemoteInteractiveRuntimeBridge {
    hello: {
        peerId: string;
        cwd?: string;
        agentId?: string;
    };
    queueWrite?: (text: string, images?: QueueWriteImage[], streamingBehavior?: "steer" | "followUp") => Promise<void>;
    queueFlush?: () => Promise<void>;
    submitPrompt?: (text: string) => Promise<void>;
    followUp?: (text: string) => Promise<void>;
    steer?: (text: string) => Promise<void>;
    abort(): Promise<boolean>;
    switchAgent?(agentId: string): Promise<void>;
    setModel(modelResourceId: string): Promise<void>;
    setThinkingLevel(level: PeerThinkingLevel): Promise<void>;
    invokeCommand(commandName: string, args?: string): Promise<void>;
    getSessionSources(): Promise<SourceRuntimeStatus[]>;
    pauseSource(resourceId: string): Promise<SourceRuntimeStatus[]>;
    restartSource(resourceId: string): Promise<SourceRuntimeStatus[]>;
    removeSource(resourceId: string): Promise<SourceRuntimeStatus[]>;
    getMcpServers(): Promise<{
        servers: McpRuntimeStatus[];
        configError?: string;
    }>;
    getSkills?(): Promise<Extract<SessionGetSkillsAck, {
        ok: true;
    }>>;
    pauseMcpServer(name: string): Promise<McpRuntimeStatus[]>;
    restartMcpServer(name: string): Promise<McpRuntimeStatus[]>;
    removeMcpServer(name: string): Promise<McpRuntimeStatus[]>;
    retryConnection?(): Promise<void> | void;
    appState: {
        getSnapshot(): PeerAppSnapshot;
    };
    uiState: {
        getSnapshot(): PeerUiSnapshot;
    };
}
export declare function createRemoteInteractiveController(runtime: RemoteInteractiveRuntimeBridge, capabilityOverrides?: Partial<RemoteInteractiveCapabilities>): RemoteInteractiveController;
//# sourceMappingURL=remote-interactive-controller.d.ts.map