export interface WaitCondition {
    check: () => Promise<boolean> | boolean;
    description?: string;
}
export interface WaitOptions {
    timeout?: number;
    interval?: number;
    retries?: number;
    exponentialBackoff?: boolean;
    minInterval?: number;
    maxInterval?: number;
}
export interface WaitResult {
    success: boolean;
    duration: number;
    attempts: number;
    reason?: string;
}
export declare class ConditionWaiter {
    private static readonly DEFAULT_TIMEOUT;
    private static readonly DEFAULT_INTERVAL;
    private static readonly DEFAULT_MIN_INTERVAL;
    private static readonly DEFAULT_MAX_INTERVAL;
    private static readonly DEFAULT_RETRIES;
    static waitForCondition(condition: WaitCondition, options?: WaitOptions): Promise<WaitResult>;
    static waitForTmuxWindow(bridge: any, sessionName: string, windowIndex: number, expectedContent: string | RegExp, options?: WaitOptions): Promise<WaitResult>;
    static waitForPrompt(bridge: any, sessionName: string, windowIndex: number, promptPattern?: RegExp, options?: WaitOptions): Promise<WaitResult>;
    static waitForClaudeReady(bridge: any, sessionName: string, windowIndex: number, options?: WaitOptions): Promise<WaitResult>;
    static waitForGitOperation(bridge: any, sessionName: string, windowIndex: number, operation: 'push' | 'pull' | 'commit' | 'branch', options?: WaitOptions): Promise<WaitResult>;
    static waitForPath(pathToCheck: string, options?: WaitOptions): Promise<WaitResult>;
    static waitForClaudeOperation(bridge: any, sessionName: string, windowIndex: number, operationDescription: string, options?: WaitOptions): Promise<WaitResult>;
    static waitForAgentResponsive(bridge: any, sessionName: string, windowIndex: number, options?: WaitOptions): Promise<WaitResult>;
    static waitForProcessCompletion(bridge: any, sessionName: string, windowIndex: number, options?: WaitOptions): Promise<WaitResult>;
    static waitForNetwork(host?: string, options?: WaitOptions): Promise<WaitResult>;
    static combineConditions(...conditions: WaitCondition[]): WaitCondition;
    static anyCondition(...conditions: WaitCondition[]): WaitCondition;
}
