import { OnChanges, SimpleChanges } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../source.directive";
/**
 * `mgl-geojson-source` - a geojson source component
 * @see [geojson](https://maplibre.org/maplibre-gl-js/docs/API/classes/maplibregl.GeoJSONSource/)
 *
 * @category Source Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-geojson-source id="symbols-source">
 *     <mgl-feature
 *       *ngFor="let geometry of geometries"
 *       [geometry]="geometry"
 *     ></mgl-feature>
 *   </mgl-geojson-source>
 *   ...
 *   <mgl-geojson-source
 *     id="earthquakes"
 *     [data]="earthquakes"
 *     [cluster]="true"
 *     [clusterMaxZoom]="14"
 *     [clusterRadius]="50"
 *   ></mgl-geojson-source>
 * </mgl-map>
 *
 * ```
 */
export declare class GeoJSONSourceComponent implements OnChanges {
    /** Init injections */
    private readonly sourceDirective;
    /** Init injection */
    private readonly ngZone;
    /** Dynamic input */
    readonly data: import("@angular/core").InputSignal<string | import("geojson").GeoJSON<import("geojson").Geometry, import("geojson").GeoJsonProperties>>;
    /** Dynamic input */
    readonly maxzoom: import("@angular/core").InputSignal<number | undefined>;
    /** Dynamic input */
    readonly attribution: import("@angular/core").InputSignal<string | undefined>;
    /** Dynamic input */
    readonly buffer: import("@angular/core").InputSignal<number | undefined>;
    /** Dynamic input */
    readonly tolerance: import("@angular/core").InputSignal<number | undefined>;
    /** Dynamic input */
    readonly cluster: import("@angular/core").InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly clusterRadius: import("@angular/core").InputSignal<number | undefined>;
    /** Dynamic input */
    readonly clusterMaxZoom: import("@angular/core").InputSignal<number | undefined>;
    /** Dynamic input */
    readonly clusterMinPoints: import("@angular/core").InputSignal<number | undefined>;
    /** Dynamic input */
    readonly clusterProperties: import("@angular/core").InputSignal<unknown>;
    /** Dynamic input */
    readonly lineMetrics: import("@angular/core").InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly generateId: import("@angular/core").InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly promoteId: import("@angular/core").InputSignal<import("maplibre-gl").PromoteIdSpecification | undefined>;
    /** Dynamic input */
    readonly filter: import("@angular/core").InputSignal<unknown>;
    private readonly updateFeatureDataSubject;
    private readonly featureIdCounter;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * For clustered sources, fetches the zoom at which the given cluster expands.
     * @param clusterId The value of the cluster's cluster_id property.
     */
    getClusterExpansionZoom(clusterId: number): Promise<number>;
    /**
     * For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).
     * @param clusterId The value of the cluster's cluster_id property.
     */
    getClusterChildren(clusterId: number): Promise<import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties>[]>;
    /**
     * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).
     * @param clusterId The value of the cluster's cluster_id property.
     * @param limit The maximum number of features to return.
     * @param offset The number of features to skip (e.g. for pagination).
     */
    getClusterLeaves(clusterId: number, limit: number, offset: number): Promise<import("geojson").Feature<import("geojson").Geometry, import("geojson").GeoJsonProperties>[]>;
    _addFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>): void;
    _removeFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>): void;
    updateFeatureData(): void;
    _getNewFeatureId(): number;
    private getGeoJSONSourceSpecification;
    private updateFeature;
    static ɵfac: i0.ɵɵFactoryDeclaration<GeoJSONSourceComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<GeoJSONSourceComponent, "mgl-geojson-source", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "maxzoom": { "alias": "maxzoom"; "required": false; "isSignal": true; }; "attribution": { "alias": "attribution"; "required": false; "isSignal": true; }; "buffer": { "alias": "buffer"; "required": false; "isSignal": true; }; "tolerance": { "alias": "tolerance"; "required": false; "isSignal": true; }; "cluster": { "alias": "cluster"; "required": false; "isSignal": true; }; "clusterRadius": { "alias": "clusterRadius"; "required": false; "isSignal": true; }; "clusterMaxZoom": { "alias": "clusterMaxZoom"; "required": false; "isSignal": true; }; "clusterMinPoints": { "alias": "clusterMinPoints"; "required": false; "isSignal": true; }; "clusterProperties": { "alias": "clusterProperties"; "required": false; "isSignal": true; }; "lineMetrics": { "alias": "lineMetrics"; "required": false; "isSignal": true; }; "generateId": { "alias": "generateId"; "required": false; "isSignal": true; }; "promoteId": { "alias": "promoteId"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}
