import type { Test } from "./runTypes.js"; /** * Which tests of a suite to run. Both `eval run` and `eval ls` apply a * filter through `selectTests`, so `eval ls` with the same flags shows * exactly what a run would run. */ export type TestFilter = { /** `--test` patterns. A test is selected when its id matches ANY pattern * (picomatch glob, so `agent-*` works and a bare id is an exact match). */ ids?: string[]; /** `--tags` values. A test is selected only when it carries EVERY one — * `--tags coding,hard` means hard coding tests, not hard-or-coding. */ tags?: string[]; }; export declare function isEmptyFilter(filter: TestFilter): boolean; export declare function selectTests(tests: Test[], filter: TestFilter): Test[]; /** The suite's tag vocabulary: every tag any test carries, first appearance * order, duplicates removed. */ export declare function suiteTags(tests: Test[]): string[]; /** A filter that selects nothing is a mistake worth a specific message: name * what the suite actually offers, so the fix is one glance away. */ export declare function describeEmptySelection(tests: Test[], filter: TestFilter): string;