import { MessageBusService, MessageBusManager, MessageBusHandle, IWidget } from '@csnext/cs-core';
import { MapDatasource, IMapLayer, LayerStyle, ILayerService, FeatureEventDetails, PropertyDetails } from './../.';
import { PropertyType, FeatureType, DataSource, DataSet, LayerLegend, FeatureTypes } from '@csnext/cs-data';
import { CsMap } from './..';
import mapboxgl, { MapboxGeoJSONFeature } from 'mapbox-gl';
import { ILayerAction } from '../classes/ilayer-action';
import { ILayerExtension, ILayerExtensionType } from '../classes/ilayer-extension';
import { Feature } from 'geojson';
import { LayerFilter } from '../classes/layer-filter';
export declare class BaseLayer implements IMapLayer {
    static getFeatureFromEventDetails(e: FeatureEventDetails): MapboxGeoJSONFeature | undefined;
    _busManager: MessageBusManager;
    _events: MessageBusService;
    _extensions: ILayerExtension[];
    _featureType: FeatureType | undefined;
    _filters?: {
        [key: string]: LayerFilter;
    };
    _featureEventHandle?: MessageBusHandle;
    _initialized?: boolean | undefined;
    _legends?: LayerLegend[];
    _manager?: MapDatasource;
    _parent?: IMapLayer;
    _service?: ILayerService;
    _showMenu?: boolean | undefined;
    _showMore?: boolean | undefined;
    _source?: DataSource;
    color: string;
    defaultFeatureType?: string;
    description: string;
    disableFeatureList?: boolean;
    extensions?: ILayerExtensionType[];
    supportLayers: string[];
    selectedFeature?: mapboxgl.MapboxGeoJSONFeature;
    filter?: any[];
    hideInLayerList?: boolean;
    id: string;
    openFeatureDetails?: boolean;
    parentId?: string;
    popupContent?: string | Function | undefined;
    popupInfoWidget?: IWidget;
    source?: string | DataSource;
    state?: 'hidden' | 'loading' | 'visible';
    enabled?: boolean;
    style?: LayerStyle;
    tags: string[];
    title: string;
    typeId?: string;
    featureTypes?: FeatureTypes;
    constructor(init?: Partial<IMapLayer>);
    get Map(): CsMap | undefined;
    get MapControl(): mapboxgl.Map | undefined;
    addLayer(map: CsMap): void;
    getFeature(id: string | number): Feature | undefined;
    getFeatureType(): FeatureType | undefined;
    applyFilter(filter: LayerFilter): void;
    getBounds(): void;
    getLayerActions(): ILayerAction[];
    getStyleLegend(styleKey: string, style?: any): LayerLegend[];
    getStyleLegendKey(styleKey: string): LayerLegend[];
    initFilter(property: string): void;
    initLayer(manager: MapDatasource): Promise<IMapLayer>;
    moveLayer(beforeId?: string): void;
    private interpolatePopup;
    parsePopup(f?: mapboxgl.MapboxGeoJSONFeature): string;
    parseTitle(f?: mapboxgl.MapboxGeoJSONFeature): string;
    removeLayer(map: CsMap): void;
    addSupportLayer(layer: mapboxgl.AnyLayer): void;
    removeLegend(property: PropertyDetails | PropertyType | string, refreshLayer: boolean): void;
    setFilter(filter: any[]): void;
    removeFilter(filter: LayerFilter): void;
    setLegend(property: PropertyDetails | PropertyType | string, refreshLayer: boolean): void;
    setOpacity(value: number): void;
    setPopupContent(value: string | ((f: FeatureEventDetails) => {})): void;
    updateFilters(): void;
    updateGeojson(data: DataSet): void;
    updateLayer(): void;
    updateLegends(): void;
    private createDefaultPopup;
    private updateFilterArray;
}
