import type { SessionRunStatePollAddress } from '../services/sessions/session-run-state-poller-service.js';
import type { ControlPlaneSessionApiService } from '../services/sessions/control-plane-session-api-service.js';
import type { ControlPlaneSessionLoader } from './control-plane-session-loader.js';
import type { ControlPlaneApprovalController } from './control-plane-approval-controller.js';
import type { ControlPlaneSessionState } from './control-plane-session-state.js';
type ControlPlaneRunControllerOptions = {
    api: ControlPlaneSessionApiService;
    state: ControlPlaneSessionState;
    loader: ControlPlaneSessionLoader;
    approvals: ControlPlaneApprovalController;
    refreshSessions: () => Promise<unknown>;
    formatError: (error: unknown) => string;
};
/**
 * Owns cli-v2 run cancellation and polling fallback.
 *
 * The server remains the source of truth for active runs. This controller owns
 * the TUI mirror: stop-request state, polling-based recovery when events lag,
 * and final refresh once a run is no longer active.
 */
export declare class ControlPlaneRunController {
    private readonly options;
    constructor(options: ControlPlaneRunControllerOptions);
    cancelRun(): Promise<void>;
    shouldPollRunState(): boolean;
    resolveRunStatePollAddress(): SessionRunStatePollAddress | undefined;
    pollRunState({ workspaceId, sessionId }: SessionRunStatePollAddress): Promise<void>;
}
export {};
//# sourceMappingURL=control-plane-run-controller.d.ts.map