import { Feature, ProtoDatasetField } from '@kepler.gl/types'; import { DataContainerInterface } from './data-container-interface'; export type ExtractableDataset = { type?: string; disableDataOperation?: boolean; fields: Array<{ name: string; type: string; format?: string; analyzerType?: string; displayName?: string; }>; dataContainer: DataContainerInterface; filteredIndex?: number[]; filteredIdxCPU?: number[]; allIndexes?: number[]; }; export type ExtractableLayer = { type?: string | null; config: { dataId: string | null; label?: string; isVisible?: boolean; uniqueIdField?: string; }; tileDataset?: { getTiles?: () => readonly any[]; }; [key: string]: any; }; export type ExtractedTable = { kind: 'table'; fields: ProtoDatasetField[]; rows: any[][]; rowCount: number; }; export type ExtractedGeojson = { kind: 'geojson'; features: Array<{ type: 'Feature'; id?: string | number; geometry: any; properties?: Record | null; }>; rowCount: number; }; export type ExtractResult = ExtractedTable | ExtractedGeojson; /** * Tiled raster/WMS/3D sources have no copyable rows. Vector tiles are extractable * from the layer's loaded tile cache, not from dataset.rows. */ export declare function isExtractableDataset(dataset?: ExtractableDataset | null): boolean; export declare function isVectorTileExtractLayer(layer?: ExtractableLayer | null): boolean; export declare function isRasterTileExtractLayer(layer?: ExtractableLayer | null): boolean; export declare function isExtractableLayer(layer: ExtractableLayer, datasets: Record): boolean; /** * Copy GeoJSON features from currently loaded vector tiles that intersect a drawing. * Coverage is the current viewport/zoom tile cache, not the full tileset. */ export declare function extractVectorTileFeaturesInsideFeature({ layer, feature }: { layer: ExtractableLayer; feature: Feature | null; }): ExtractedGeojson | null; export declare function extractRasterInsideFeature({ layer, feature }: { layer: ExtractableLayer; feature: Feature | null; }): ExtractedGeojson | null; /** * Copy in-memory rows whose geometry falls inside a drawn polygon. * Existing table filters (range/select/time), including GPU-backed ones via * `filteredIdxCPU`, are applied; the polygon clip is extra. * Vector tiles use currently loaded viewport tiles instead of dataset.rows. * Raster tiles report whether any loaded pixels fall inside the drawing. */ export declare function extractRowsInsideFeature({ layer, dataset, feature }: { layer: ExtractableLayer; dataset: ExtractableDataset; feature: Feature | null; }): ExtractResult | null;