import { Selection as MosaicSelection, ClauseSource } from '@uwdata/mosaic-core'; import { ExprNode, ColumnRefNode } from '@uwdata/mosaic-sql'; import { MosaicDBCoordinator } from "../../duckdb/mosaic-coordinator"; import { CosmographData } from "../config/interfaces"; export interface FilteringClientConfig { coordinator: MosaicDBCoordinator; getSelection: () => MosaicSelection; getTableName: () => string; getAccessor: () => string | undefined; onFiltered?: (result: CosmographData) => void; includeFields?: () => string[]; id?: string; } export declare class FilteringClient implements ClauseSource { private static _clientRegistry; private _id; private _isActive; private _client; private _selection; private _config; private _currentData; private _isArrayColumn; constructor(config: FilteringClientConfig); static getOrCreateClient(config: FilteringClientConfig): FilteringClient; get selection(): MosaicSelection | undefined; get tableName(): string; get accessor(): string | undefined; get id(): string; get active(): boolean; get currentData(): CosmographData | undefined; get fieldsToQuery(): (string | ColumnRefNode)[]; setActive(value: boolean): void; getCurrentData(): Promise; private _detectArrayColumn; applyFilter(predicate: ExprNode | null | undefined): void; applyRangeFilter(range: [number, number] | [Date, Date] | undefined): void; applyExactFilter(value: string | number | undefined): void; applyInFilter(values: (string | number)[] | ArrayLike | undefined): void; applyLessOrEqFilter(value: number | undefined): void; applyGreaterOrEqFilter(value: number | undefined): void; resetFilter(): void; update(): void; destroy(): void; regenerateClient(): void; private _createClient; /** * Required by the ClauseSource interface so that this FilteringClient can be * used as the `source` of a `SelectionClause`. Internally this method simply * delegates to {@link resetFilter}. */ reset(): void; }