import { Writable } from 'stream'; import { OngoingRequest, CompletedRequest, OngoingResponse, Explainable } from "../../types"; import { MaybePromise } from '@httptoolkit/util'; import * as matchers from "../matchers"; import { type RequestStepDefinition } from "./request-step-definitions"; import * as completionCheckers from "../completion-checkers"; export interface RequestRule extends Explainable { id: string; requests: Promise[]; matches(request: OngoingRequest): MaybePromise; handle(request: OngoingRequest, response: OngoingResponse, options: { record: boolean; debug: boolean; keyLogStream?: Writable; emitEventCallback?: (type: string, event: unknown) => void; }): Promise; isComplete(): boolean | null; } export interface RequestRuleData { id?: string; priority?: number; matchers: matchers.RequestMatcher[]; steps: Array; completionChecker?: completionCheckers.RuleCompletionChecker; } export declare class RequestRule implements RequestRule { private matchers; private steps; private completionChecker?; id: string; readonly priority: number; requests: Promise[]; requestCount: number; constructor(data: RequestRuleData); explain(withoutExactCompletion?: boolean): string; dispose(): void; } export declare function explainSteps(steps: RequestStepDefinition[]): string; //# sourceMappingURL=request-rule.d.ts.map