import IconLayerIcon from './icon-layer-icon';
import Layer, { LayerBaseConfig, LayerBaseConfigPartial } from '../base-layer';
import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
import { default as KeplerTable } from '@kepler.gl/table';
import { DataContainerInterface } from '@kepler.gl/utils';
import { ColorRange, VisConfigBoolean, VisConfigColorRange, VisConfigNumber, VisConfigRange, Merge, LayerColumn, BindedLayerCallbacks } from '@kepler.gl/types';
export type IconLayerColumnsConfig = {
    lat: LayerColumn;
    lng: LayerColumn;
    altitude: LayerColumn;
    icon: LayerColumn;
};
type IconGeometry = object | null;
export type IconLayerVisConfigSettings = {
    radius: VisConfigNumber;
    fixedRadius: VisConfigBoolean;
    opacity: VisConfigNumber;
    colorRange: VisConfigColorRange;
    radiusRange: VisConfigRange;
};
export type IconLayerVisConfig = {
    radius: number;
    fixedRadius: boolean;
    opacity: number;
    colorRange: ColorRange;
    radiusRange: [number, number];
    billboard: boolean;
};
export type IconLayerConfig = Merge<LayerBaseConfig, {
    columns: IconLayerColumnsConfig;
    visConfig: IconLayerVisConfig;
}>;
export type IconLayerData = {
    index: number;
    icon: string;
};
export declare const iconPosAccessor: ({ lat, lng, altitude }: IconLayerColumnsConfig) => (dc: DataContainerInterface) => (d: any) => any[];
export declare const iconAccessor: ({ icon }: IconLayerColumnsConfig) => (dc: DataContainerInterface) => (d: any) => any;
export declare const iconRequiredColumns: ['lat', 'lng', 'icon'];
export declare const iconOptionalColumns: ['altitude'];
export declare const pointVisConfigs: {
    radius: 'radius';
    fixedRadius: 'fixedRadius';
    opacity: 'opacity';
    colorRange: 'colorRange';
    radiusRange: 'radiusRange';
    billboard: 'billboard';
};
export default class IconLayer extends Layer {
    getIconAccessor: (dataContainer: DataContainerInterface) => (d: any) => any;
    _layerInfoModal: () => JSX.Element;
    iconGeometry: IconGeometry;
    iconGeometryVersion: number;
    onRedrawNeeded: BindedLayerCallbacks['onRedrawNeeded'];
    visConfigSettings: IconLayerVisConfigSettings;
    config: IconLayerConfig;
    constructor(props: {
        id?: string;
        iconGeometry?: IconGeometry;
        svgIcons?: any[];
    } & LayerBaseConfigPartial);
    get svgIconUrl(): string;
    get type(): 'icon';
    get requiredLayerColumns(): ["lat", "lng", "icon"];
    get optionalColumns(): ["altitude"];
    get columnPairs(): import("@kepler.gl/types").ColumnPairs;
    get layerIcon(): typeof IconLayerIcon;
    get visualChannels(): {
        color: {
            accessor: string;
            defaultValue: (config: any) => any;
            property: string;
            field: string;
            scale: string;
            domain: string;
            range: string;
            key: string;
            channelScaleType: string;
            nullValue?: any;
            defaultMeasure?: any;
            condition?: (config: any) => boolean;
            getAttributeValue?: (config: any) => (d: any) => any;
            fixed?: any;
            supportedFieldTypes?: Array<import("@kepler.gl/types").SupportedFieldTypes>;
            aggregation?: import("@kepler.gl/types").VisualChannelAggregation;
        };
        size: {
            property: string;
            range: string;
            channelScaleType: string;
            accessor: string;
            defaultValue: number;
            field: string;
            scale: string;
            domain: string;
            key: string;
            nullValue?: any;
            defaultMeasure?: any;
            condition?: (config: any) => boolean;
            getAttributeValue?: (config: any) => (d: any) => any;
            fixed?: any;
            supportedFieldTypes?: Array<import("@kepler.gl/types").SupportedFieldTypes>;
            aggregation?: import("@kepler.gl/types").VisualChannelAggregation;
        };
    };
    get layerInfoModal(): {
        id: string;
        template: () => JSX.Element;
        modalProps: {
            title: string;
        };
    };
    getZoomFactor({ zoom, zoomOffset }: {
        zoom: number;
        zoomOffset?: number;
    }): number;
    getSvgIcons(): void;
    setSvgIcons(svgIcons?: any[]): void;
    static findDefaultLayerProps({ fieldPairs, fields }: KeplerTable): FindDefaultLayerPropsReturnValue;
    getFilteredItemCount(): number | null;
    calculateDataAttribute({ dataContainer, filteredIndex }: KeplerTable, getPosition: any): IconLayerData[];
    formatLayerData(datasets: any, oldLayerData: any): {};
    updateLayerMeta(dataset: KeplerTable, getPosition: any): void;
    renderLayer(opts: any): any[];
}
export {};
