import type { AgentStatusEntry, ClaudeSessionGateway, CleanupResult, DaemonStatus, DispatchInput, DispatchResult, UsageReport } from '../../../../modules/claude-invocation/entities/claudeSession/claudeSession.gateway.js';
import { type SessionId } from '../../../../modules/claude-invocation/entities/claudeSession/claudeSession.schema.js';
import type { SessionUsageSnapshot } from '../../../../modules/claude-invocation/entities/claudeSession/sessionUsage.schema.js';
export interface ClaudeProcessRunArgs {
    args: string[];
    cwd?: string;
    env?: Record<string, string>;
}
export interface ClaudeProcessRunResult {
    stdout: string;
    stderr: string;
    exitCode: number;
}
export type ClaudeProcessRunner = (request: ClaudeProcessRunArgs) => Promise<ClaudeProcessRunResult>;
export declare const RATE_LIMIT_DETECTION_REGEX: RegExp;
export interface ClaudeSessionCliGatewayOptions {
    homeDir?: string;
}
export declare class ClaudeSessionCliGateway implements ClaudeSessionGateway {
    private readonly runner;
    private readonly homeDir;
    constructor(runner: ClaudeProcessRunner, options?: ClaudeSessionCliGatewayOptions);
    dispatch(input: DispatchInput): Promise<DispatchResult>;
    stop(sessionId: SessionId): Promise<CleanupResult>;
    remove(sessionId: SessionId): Promise<CleanupResult>;
    listAgents(): Promise<AgentStatusEntry[]>;
    daemonStatus(): Promise<DaemonStatus>;
    usage(): Promise<UsageReport>;
    getSessionUsage(sessionId: SessionId, cwd: string): Promise<SessionUsageSnapshot | null>;
}
//# sourceMappingURL=claudeSession.cli.gateway.d.ts.map