/** * A `field = 'literal'` comparison against a string, paired with the entity target it filters. * * String equality in J1QL is case-sensitive, and stored casing varies by integration — live j1dev * data holds `high` (64,230), `HIGH` (30,379) and `High` (330) on the same property. A query * filtering one casing is valid, succeeds, and silently reports a fraction of reality, which is the * failure the dashboard tools cannot otherwise see (TD-9016). */ export interface StringEqualityFilter { /** Reconstructed FIND target for probing: `Finding`, `aws_instance`, `(a|b)`. */ target: string; field: string; operator: '=' | '!='; /** The literal as written. Multi-value shorthand yields one entry per value. */ literal: string; } /** * What each identifier in a query refers to, for readers outside this module. * * The widget render contract needs the same lookup for a RETURN selector as this module needs for a * WHERE predicate: `f.severity` on `FIND Host AS h THAT HAS Finding AS f` reads `Finding`, not the * root `Host`. Fails open with an empty map, so an unparseable query resolves nothing rather than * throwing at a caller for whom this is advisory. */ export declare function aliasEntityTargets(query: string): Map; /** * Extract every `field = 'string'` comparison in a query, with the target each one filters. * * Both clauses are read. WHERE was blind for a release, and the gap was not academic: agents write * WHERE by habit and the validator's own hints teach the alias-plus-WHERE style, so on a board a * weak model built where every filter was a WHERE, not one literal was diagnosable — and a real * partial exclusion (`RESOLVED` stored alongside `resolved`) shipped unflagged. * * Non-string comparisons are skipped deliberately: booleans and numbers are not case-sensitive, and * the type-mismatch case they belong to is diagnosed from the probe's own results rather than from * the query text. Fails open — any parse surprise yields an empty list, never an exception, because * a diagnosis is a convenience and must never break the call it is attached to. */ export declare function extractStringEqualityFilters(query: string): StringEqualityFilter[]; /** * Every entity target a query traverses, in hop order: `Finding`, `aws_instance`, `(a|b)`. * * A widget on a type this account does not hold is the quietest failure of all — `count(e)` over * nothing returns one row containing `0`, so the widget renders a confident zero forever and every * row-based check reports it as healthy. Knowing the targets is what makes that checkable. */ export declare function extractTargets(query: string): string[]; //# sourceMappingURL=j1ql-filters.d.ts.map