import { Journal } from "./journal.cjs";
import { MetricsRegistry } from "./metrics.cjs";
import { Mountable } from "./types.cjs";
import { AGUIEvent, AGUIFixture, AGUIMockOptions, AGUIRecordConfig, AGUIRunAgentInput } from "./agui-types.cjs";
import * as http$1 from "node:http";

//#region src/agui-mock.d.ts
declare class AGUIMock implements Mountable {
  private fixtures;
  private server;
  private journal;
  private registry;
  private options;
  private baseUrl;
  private recordConfig;
  private logger;
  constructor(options?: AGUIMockOptions);
  addFixture(fixture: AGUIFixture): this;
  onMessage(pattern: string | RegExp, text: string, opts?: {
    delayMs?: number;
  }): this;
  onRun(pattern: string | RegExp, events: AGUIEvent[], delayMs?: number): this;
  onToolCall(pattern: string | RegExp, toolName: string, args: string, opts?: {
    result?: string;
    delayMs?: number;
  }): this;
  onStateKey(key: string, snapshot: Record<string, unknown>, delayMs?: number): this;
  onReasoning(pattern: string | RegExp, text: string, opts?: {
    delayMs?: number;
  }): this;
  onPredicate(predicate: (input: AGUIRunAgentInput) => boolean, events: AGUIEvent[], delayMs?: number): this;
  enableRecording(config: AGUIRecordConfig): this;
  reset(): this;
  handleRequest(req: http$1.IncomingMessage, res: http$1.ServerResponse, pathname: string): Promise<boolean>;
  health(): {
    status: string;
    fixtures: number;
  };
  setJournal(journal: Journal): void;
  setBaseUrl(url: string): void;
  setRegistry(registry: MetricsRegistry): void;
  start(): Promise<string>;
  stop(): Promise<void>;
  get url(): string;
  private journalRequest;
}
//# sourceMappingURL=agui-mock.d.ts.map
//#endregion
export { AGUIMock };
//# sourceMappingURL=agui-mock.d.cts.map