import { WidgetSource, AggregationsRequestOptions, AggregationsResponse, CategoryRequestOptions, CategoryResponse, ExtentResponse, FeaturesResponse, FormulaRequestOptions, FormulaResponse, HistogramRequestOptions, HistogramResponse, RangeRequestOptions, RangeResponse, ScatterRequestOptions, ScatterResponse, SpatialFilter, TableRequestOptions, TableResponse, TimeSeriesRequestOptions, TimeSeriesResponse } from '@carto/api-client';
import { WidgetGeoJsonSourceProps } from './widget-geojson-source';
import { FeatureData } from './types';
/**
 * Local (in-memory) implementation of geojson widget calculations. This class
 * may be instantiated by {@link WidgetGeoJsonSource} in a Web Worker when
 * supported, or on the main thread.
 */
export declare class WidgetGeoJsonSourceImpl extends WidgetSource<WidgetGeoJsonSourceProps> {
    private features;
    protected _filterFeaturesBySpatial(spatialFilter?: SpatialFilter): FeatureData[];
    /**
     * Loads features as GeoJSON.
     */
    loadGeoJSON({ geojson }: {
        geojson: FeatureData[];
    }): void;
    getFeatures(): Promise<FeaturesResponse>;
    getFormula({ column, operation, joinOperation, filters, filterOwner, spatialFilter, }: FormulaRequestOptions): Promise<FormulaResponse>;
    getHistogram({ operation, ticks, column, joinOperation, filters, filterOwner, spatialFilter, }: HistogramRequestOptions): Promise<HistogramResponse>;
    getCategories({ column, operation, operationColumn, joinOperation, filters, filterOwner, spatialFilter, othersThreshold, orderBy, rawResult, }: CategoryRequestOptions): Promise<CategoryResponse>;
    getScatter({ xAxisColumn, yAxisColumn, xAxisJoinOperation, yAxisJoinOperation, filters, filterOwner, spatialFilter, }: ScatterRequestOptions): Promise<ScatterResponse>;
    getTable({ columns, searchFilterColumn, searchFilterText, sortBy, sortDirection, sortByColumnType, offset, limit, filters, filterOwner, spatialFilter, }: TableRequestOptions): Promise<TableResponse>;
    getTimeSeries({ column, stepSize, operation, operationColumn, joinOperation, filters, filterOwner, spatialFilter, }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse>;
    getRange({ column, filters, filterOwner, spatialFilter, }: RangeRequestOptions): Promise<RangeResponse>;
    getAggregations({ aggregations, filters, filterOwner, spatialFilter, }: AggregationsRequestOptions): Promise<AggregationsResponse>;
    /** @experimental */
    getExtent(): Promise<ExtentResponse>;
    /****************************************************************************
     * INTERNAL
     */
    private _getFilteredFeatures;
}
