import "reflect-metadata";
import { Observable } from "rxjs";
import { AbstractAgent, BaseEvent, Message, RunAgentInput } from "@ag-ui/client";

//#region src/v2/runtime/runner/agent-runner.d.ts
interface AgentRunnerRunRequest {
  threadId: string;
  agent: AbstractAgent;
  input: RunAgentInput;
  persistedInputMessages?: Message[];
}
interface AgentRunnerConnectRequest {
  threadId: string;
  headers?: Record<string, string>;
  joinCode?: string;
}
interface AgentRunnerIsRunningRequest {
  threadId: string;
}
interface AgentRunnerStopRequest {
  threadId: string;
}
interface LocalThreadEndpointRecord {
  id: string;
  name: string | null;
  agentId: string;
  organizationId: string;
  createdById: string;
  archived: boolean;
  createdAt: string;
  updatedAt: string;
}
interface LocalThreadEndpointRunner extends AgentRunner {
  readonly ɵsupportsLocalThreadEndpoints: true;
  listThreads(): LocalThreadEndpointRecord[];
  getThreadMessages(threadId: string): Message[];
  getThreadEvents(threadId: string): BaseEvent[];
  getThreadState(threadId: string): Record<string, unknown> | null;
  clearThreads(): void;
}
declare function supportsLocalThreadEndpoints(runner: AgentRunner): runner is LocalThreadEndpointRunner;
declare abstract class AgentRunner {
  readonly ɵsupportsLocalThreadEndpoints?: boolean;
  abstract run(request: AgentRunnerRunRequest): Observable<BaseEvent>;
  abstract connect(request: AgentRunnerConnectRequest): Observable<BaseEvent>;
  abstract isRunning(request: AgentRunnerIsRunningRequest): Promise<boolean>;
  abstract stop(request: AgentRunnerStopRequest): Promise<boolean | undefined>;
}
//#endregion
export { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, supportsLocalThreadEndpoints };
//# sourceMappingURL=agent-runner.d.mts.map