import type { NetworkRequest } from "./types.js"; /** The one request-status predicate: the first captured request matching url AND status (AND * method, when given — so a same-prefix GET can't satisfy a POST check on a status collision). * Shared by the deterministic critic (`request-status`) and `conditionMet` (waitFor / step * `expect`) so a verdict can never depend on which matching request arrived first — an endpoint * that answered 401 and then 200 on retry satisfies `status: 200`. */ export declare function findRequestStatus(requests: readonly NetworkRequest[], urlIncludes: string, status: number, method?: string): NetworkRequest | undefined; /** Requests whose failure is noise, not a regression — excluded from `no-failed-requests`. Built-in * universal noise (favicon, robots) plus any URL-substring a product marks benign. */ export declare function isBenignRequest(url: string, benign?: readonly string[]): boolean; /** A failed request is recovered noise when the SAME endpoint — method + host/path — later * answered under 400: the app retried and succeeded. Method must match so a successful * `GET /order` can never mask a failed `POST /order`. A failure with no later matching * success is still a real failure. Pure over the captured order (deterministic, invariant #4). */ export declare function isRecoveredFailure(requests: readonly NetworkRequest[], index: number): boolean; /** Is `url` on the site of a page the flow was on — the page's host or a subdomain of it, so with * the page at `shop.co` both `api.shop.co` and `sockjs.shop.co` are the app's own and * `api2.amplitude.com` is not? The line between an app's traffic and third-party background posts * (analytics, error reporters), which fire on their own schedule and never prove the app's action. * A leading `www.` on the page is not a site boundary. No public-suffix list is needed: `shop.co.kr` * and `other.co.kr` are different sites because neither is under the other. The miss is a page on * `app.shop.co` claiming nothing on `api.shop.co` — the quiet direction; callers pass every page the * flow visited to narrow it. Unparseable URLs never match. */ export declare function onSiteOf(pageUrl: string, url: string): boolean; /** Whether a request is a state-changing mutation (the kind that proves an action happened, vs a * navigation/read) — used to ground a scenario's success assertion on what did the work. */ export declare function isMutation(method: string): boolean;