import { WidgetSource, AggregationsRequestOptions, AggregationsResponse, CategoryRequestOptions, CategoryResponse, ExtentResponse, FeaturesResponse, FormulaRequestOptions, FormulaResponse, HistogramRequestOptions, HistogramResponse, RangeRequestOptions, RangeResponse, ScatterRequestOptions, ScatterResponse, SpatialFilter, TableRequestOptions, TableResponse, TilesetSourceOptions, TimeSeriesRequestOptions, TimeSeriesResponse, WidgetSourceProps } from '@carto/api-client';
import { Feature } from 'geojson';
import { Method } from './const';
import { WidgetGeoJsonSourceImpl } from './widget-geojson-source-impl';
import { FeatureData } from './types';
export type WidgetGeoJsonSourceProps = WidgetSourceProps & Omit<TilesetSourceOptions, 'filters' | 'tableName'> & {
    data: Feature[];
};
export interface WidgetGeoJsonSourceResult {
    widgetSource: WidgetGeoJsonSource;
}
/**
 * Source for Widget API requests on a data source defined by a geojson.
 */
export declare class WidgetGeoJsonSource<Props extends WidgetGeoJsonSourceProps = WidgetGeoJsonSourceProps> extends WidgetSource<Props> {
    protected _localImpl: WidgetGeoJsonSourceImpl | null;
    protected _workerImpl: Worker | null;
    protected _workerEnabled: boolean;
    protected _workerNextRequestId: number;
    constructor(props: Props);
    destroy(): void;
    /**
     * Returns an initialized Worker, to be reused for the lifecycle of this
     * source instance.
     */
    protected _getWorker(): Worker;
    /** Executes a given method on the worker. */
    protected _executeWorkerMethod<T>(method: (typeof Method)[keyof typeof Method], params: unknown[], signal?: AbortSignal): Promise<T>;
    /**
     * Loads features as GeoJSON
     */
    loadGeoJSON({ geojson }: {
        geojson: FeatureData[];
    }): void;
    getFeatures(): Promise<FeaturesResponse>;
    getFormula({ signal, ...options }: FormulaRequestOptions): Promise<FormulaResponse>;
    getHistogram({ signal, ...options }: HistogramRequestOptions): Promise<HistogramResponse>;
    getCategories({ signal, ...options }: CategoryRequestOptions): Promise<CategoryResponse>;
    getScatter({ signal, ...options }: ScatterRequestOptions): Promise<ScatterResponse>;
    getTable({ signal, ...options }: TableRequestOptions): Promise<TableResponse>;
    getTimeSeries({ signal, ...options }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse>;
    getRange({ signal, ...options }: RangeRequestOptions): Promise<RangeResponse>;
    getAggregations({ signal, ...options }: AggregationsRequestOptions): Promise<AggregationsResponse>;
    /** @experimental */
    getExtent({ signal, ...options }: {
        signal?: AbortSignal;
        spatialFilter?: SpatialFilter;
    }): Promise<ExtentResponse>;
}
