import { Message } from "../clients/types";
import { EventService } from "./EventService";
export interface SyncedAgentWatcher {
    startWatching(taskId: string): Promise<void>;
    stopWatching(): void;
    taskId: string;
    agentName: string;
    sendMessage(message: string): Promise<void>;
    getThreads(): Promise<any[][]>;
    agentEvents: EventService;
    eventTypes: {
        done: string;
        toolCall: string;
        toolUsed: string;
        agentSay: string;
        threadUpdate: string;
    };
    pause(): Promise<void>;
    unpause(): Promise<void>;
    kill(): Promise<void>;
}
export interface AttachableAgent {
    name: string;
    agentEvents: EventService;
    eventTypes: {
        done: string;
        toolCall?: string;
        toolUsed?: string;
        agentSay?: string;
    };
    getTotalCostUsd(): number;
    pause(): void | Promise<void>;
    unpause(): void | Promise<void>;
    kill(): void | Promise<void>;
    addPendingUserMessage(message: Message): void;
}
export declare class WatcherBackedAgent implements AttachableAgent {
    readonly watcher: SyncedAgentWatcher;
    name: string;
    agentEvents: EventService;
    eventTypes: {
        done: string;
    };
    constructor(watcher: SyncedAgentWatcher);
    getTotalCostUsd(): number;
    pause(): Promise<void>;
    unpause(): Promise<void>;
    kill(): Promise<void>;
    addPendingUserMessage(message: Message): void;
}
