import * as arrow from 'apache-arrow';
import Layer, { LayerBaseConfig, LayerBaseConfigPartial, LayerColorConfig, LayerSizeConfig, LayerStrokeColorConfig } from '../base-layer';
import { DataContainerInterface } from '@kepler.gl/utils';
import { default as KeplerTable } from '@kepler.gl/table';
import PointLayerIcon from './point-layer-icon';
import { FindDefaultLayerProps } from '../layer-utils';
import { GeojsonPointDataMaps } from '../geojson-layer/geojson-utils';
import { ColorRange, Merge, RGBColor, VisConfigBoolean, VisConfigColorRange, VisConfigColorSelect, VisConfigNumber, VisConfigRange, LayerColumn, Field, AnimationConfig } from '@kepler.gl/types';
export type PointLayerVisConfigSettings = {
    radius: VisConfigNumber;
    fixedRadius: VisConfigBoolean;
    opacity: VisConfigNumber;
    outline: VisConfigBoolean;
    thickness: VisConfigNumber;
    strokeColor: VisConfigColorSelect;
    colorRange: VisConfigColorRange;
    strokeColorRange: VisConfigColorRange;
    radiusRange: VisConfigRange;
    filled: VisConfigBoolean;
};
export type PointLayerColumnsConfig = {
    lat: LayerColumn;
    lng: LayerColumn;
    altitude?: LayerColumn;
    neighbors?: LayerColumn;
    geojson: LayerColumn;
    geoarrow: LayerColumn;
};
export type PointLayerVisConfig = {
    radius: number;
    fixedRadius: boolean;
    opacity: number;
    outline: boolean;
    thickness: number;
    strokeColor: RGBColor;
    colorRange: ColorRange;
    strokeColorRange: ColorRange;
    radiusRange: [number, number];
    filled: boolean;
    billboard: boolean;
    allowHover: boolean;
    showNeighborOnHover: boolean;
    showHighlightColor: boolean;
};
export type PointLayerVisualChannelConfig = LayerColorConfig & LayerSizeConfig & LayerStrokeColorConfig;
export type PointLayerConfig = Merge<LayerBaseConfig, {
    columns: PointLayerColumnsConfig;
    visConfig: PointLayerVisConfig;
}> & PointLayerVisualChannelConfig;
export type PointLayerData = {
    position: number[];
    index: number;
    neighbors: any[];
};
export declare const pointPosAccessor: ({ lat, lng, altitude }: PointLayerColumnsConfig) => (dc: DataContainerInterface) => (d: {
    index: number;
}) => any[];
export declare const geojsonPosAccessor: ({ geojson }: {
    geojson: LayerColumn;
}) => (d: any) => any;
export declare const geoarrowPosAccessor: ({ geoarrow }: PointLayerColumnsConfig) => (dataContainer: DataContainerInterface) => (d: {
    index: number;
}) => any[];
export declare const COLUMN_MODE_POINTS = "points";
export declare const COLUMN_MODE_GEOJSON = "geojson";
export declare const COLUMN_MODE_GEOARROW = "geoarrow";
export declare const pointRequiredColumns: ['lat', 'lng'];
export declare const pointOptionalColumns: ['altitude', 'neighbors'];
export declare const geojsonRequiredColumns: ['geojson'];
export declare const geoarrowRequiredColumns: ['geoarrow'];
export declare const pointVisConfigs: {
    radius: 'radius';
    fixedRadius: 'fixedRadius';
    opacity: 'opacity';
    outline: 'outline';
    thickness: 'thickness';
    strokeColor: 'strokeColor';
    colorRange: 'colorRange';
    strokeColorRange: 'strokeColorRange';
    radiusRange: 'radiusRange';
    filled: VisConfigBoolean;
    billboard: 'billboard';
    allowHover: 'allowHover';
    showNeighborOnHover: 'showNeighborOnHover';
    showHighlightColor: 'showHighlightColor';
};
export default class PointLayer extends Layer {
    config: PointLayerConfig;
    visConfigSettings: PointLayerVisConfigSettings;
    dataToFeature: GeojsonPointDataMaps;
    dataContainer: DataContainerInterface | null;
    geoArrowVector: arrow.Vector | undefined;
    filteredIndex: Uint8ClampedArray | null;
    filteredIndexTrigger: number[];
    constructor(props: any);
    get type(): 'point';
    get isAggregated(): false;
    get layerIcon(): typeof PointLayerIcon;
    get optionalColumns(): ["altitude", "neighbors"];
    get columnPairs(): import("@kepler.gl/types").ColumnPairs;
    get supportedColumnModes(): ({
        key: string;
        label: string;
        requiredColumns: ["lat", "lng"];
        optionalColumns: ["altitude", "neighbors"];
        verifyField?: undefined;
    } | {
        key: string;
        label: string;
        requiredColumns: ["geojson"];
        verifyField: (f: any) => boolean;
        optionalColumns?: undefined;
    } | {
        key: string;
        label: string;
        requiredColumns: ["geoarrow"];
        verifyField: (f: any) => boolean;
        optionalColumns?: undefined;
    })[];
    get noneLayerDataAffectingProps(): string[];
    get visualChannels(): {
        color: {
            accessor: string;
            condition: (config: any) => any;
            defaultValue: (config: any) => any;
            property: string;
            field: string;
            scale: string;
            domain: string;
            range: string;
            key: string;
            channelScaleType: string;
            nullValue?: any;
            defaultMeasure?: any;
            getAttributeValue?: (config: any) => (d: any) => any;
            fixed?: any;
            supportedFieldTypes?: Array<import("@kepler.gl/types").SupportedFieldTypes>;
            aggregation?: import("@kepler.gl/types").VisualChannelAggregation;
        };
        strokeColor: {
            property: string;
            key: string;
            field: string;
            scale: string;
            domain: string;
            range: string;
            channelScaleType: "color";
            accessor: string;
            condition: (config: any) => any;
            defaultValue: (config: any) => any;
        };
        size: {
            property: string;
            range: string;
            fixed: 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;
            supportedFieldTypes?: Array<import("@kepler.gl/types").SupportedFieldTypes>;
            aggregation?: import("@kepler.gl/types").VisualChannelAggregation;
        };
    };
    setInitialLayerConfig(dataset: any): this;
    static findDefaultLayerProps(dataset: KeplerTable): {
        props: FindDefaultLayerProps[];
        altProps?: undefined;
    } | {
        props: FindDefaultLayerProps[];
        altProps: FindDefaultLayerProps[];
    };
    getDefaultLayerConfig(props: LayerBaseConfigPartial): {
        columnMode: string;
        strokeColorField: null;
        strokeColorDomain: number[];
        strokeColorScale: string;
        colorUI: {
            strokeColorRange: import("@kepler.gl/types").ColorUI;
            color: import("@kepler.gl/types").ColorUI;
            colorRange: import("@kepler.gl/types").ColorUI;
        };
        dataId: string;
        label: string;
        color: RGBColor;
        columns: import("@kepler.gl/types").LayerColumns;
        isVisible: boolean;
        isConfigActive: boolean;
        highlightColor: RGBColor | import("@kepler.gl/types").RGBAColor;
        hidden: boolean;
        visConfig: import("@kepler.gl/types").LayerVisConfig;
        textLabel: import("@kepler.gl/types").LayerTextLabel[];
        animation: {
            enabled: boolean;
            domain?: [number, number] | null;
        };
        aggregatedBins?: import("@kepler.gl/types").AggregatedBin[];
        heightField?: import("@kepler.gl/types").VisualChannelField;
        heightDomain?: import("@kepler.gl/types").VisualChannelDomain;
        heightScale?: string;
        colorField?: import("@kepler.gl/types").VisualChannelField | undefined;
        colorDomain?: import("@kepler.gl/types").VisualChannelDomain | undefined;
        colorScale?: string | number | symbol | undefined;
        sizeDomain?: import("@kepler.gl/types").VisualChannelDomain | undefined;
        sizeScale?: string | number | symbol | undefined;
        sizeField?: import("@kepler.gl/types").VisualChannelField | undefined;
    };
    calculateDataAttribute({ filteredIndex, dataContainer }: KeplerTable, getPosition: any): arrow.Table<any> | PointLayerData[];
    formatLayerData(datasets: any, oldLayerData: any): {};
    updateLayerMeta(dataset: KeplerTable): void;
    renderLayer(opts: any): any[];
    hasHoveredObject(objectInfo: {
        index: number;
    }): any;
    getHoverData(object: {
        index: number;
    } | arrow.StructRow | undefined, dataContainer: DataContainerInterface, fields: Field[], animationConfig: AnimationConfig, hoverInfo: {
        index: number;
    }): import("@kepler.gl/utils").DataRow | null;
}
