import type { Client } from './client.js'; import type { WorkerRecord } from './worker.js'; export interface WorkerQuery { givenName?: string; familyName?: string; status?: string; /** Raw OData $filter escape hatch — used verbatim as the server predicate. */ filter?: string; /** * $select projection paths matching the worker graph, e.g. * ['workers/associateOID', 'workers/person/legalName'] (bare paths without * the workers/ prefix also work — live-verified 2026-07-16, as is composing * with $filter). Caller's responsibility: a name query's residual filtering * reads person/legalName, so keep it in the projection. */ select?: string[]; pageSize?: number; } export interface WorkerPage { workers: WorkerRecord[]; index: number; /** True iff the server returned 204/empty. May be false while workers is * empty (residual filtering) — loop on done, never on workers.length. */ done: boolean; next: number | null; } /** OData string-literal escaping: single quotes are doubled. */ export declare function odataEscape(value: string): string; type Residual = (worker: WorkerRecord) => boolean; /** * ADP's $filter `and`-support is per-field-combo and fails unsafely (name * `and` combos 500 server-side), so at most ONE predicate is sent to the * server; every other query field is applied client-side per page. * Precedence: filter (raw) > familyName > givenName > status. */ export declare function planQuery(query: WorkerQuery): { serverFilter?: string; residual: Residual; }; /** Lazy search handle: fetches nothing until page()/pages()/all()/find(). */ export declare class WorkerSearch { private readonly client; private readonly query; constructor(client: Client, query?: WorkerQuery); /** Stateless random access — one HTTP request. For flow-engine loops. */ page(index: number): Promise; /** Stream of pages, one request per iteration; the terminal done page is yielded. */ pages(): AsyncGenerator; /** @deprecated Accumulates every page in memory; prefer pages(). Removal candidate for 4.0. */ all(): Promise; /** @deprecated Sugar over pages() — see the README recipe. Removal candidate for 4.0. */ find(predicate: (worker: WorkerRecord) => boolean): Promise; } export {};