import type Graphic from "@arcgis/core/Graphic";
import type { GeometryUnion } from "@arcgis/core/geometry/types.js";
import { Feature } from "../data/Feature.js";
import type { FeatureSource } from "../data/FeatureSource.js";
import type { QueryOptions } from "../tasks/query/QueryOptions.js";
/**
 * Queries an array of Graphics or Features using an SQL 'where' clause and/or a
 * spatial filter.
 *
 * @param where The SQL where clause with which to query.
 * @param source The source of the Graphics/Features.
 * @param queryable The array of Graphics/Features to query.
 * @param options Additional options to use as a part of the query.
 */
export declare function query<T extends Graphic | Feature>(where: string, source: FeatureSource, queryable: T[], options: QueryOptions): Promise<Feature[]>;
/**
 * Queries an array of Graphics or Features using an SQL 'where' clause and/or a
 * spatial filter, and returns the number of matching items.
 *
 * @param where The SQL where clause with which to query.
 * @param queryable The array of Graphics/Features to query.
 * @param options Additional options to use as a part of the query.
 */
export declare function count<T extends Graphic | Feature>(where: string, queryable: T[], options: QueryOptions): Promise<number>;
/**
 * Filters a set of Graphics or Features down to only those that intersect with
 * a given geometry.
 *
 * @param queryable The array of Graphics/Features to query against an
 *   intersecting geometry.
 * @param spatialFilter The geometry with which to filter the queryable items.
 */
export declare function spatialFilter<T extends Graphic | Feature>(queryable: T[], spatialFilter: GeometryUnion): Promise<T[]>;
