import { S2Layer } from '@deck.gl/geo-layers';
import { default as KeplerTable } from '@kepler.gl/table';
import Layer, { LayerBaseConfig, LayerBaseConfigPartial, LayerColorConfig, LayerSizeConfig, LayerStrokeColorConfig, LayerHeightConfig } from '../base-layer';
import { ColorRange, Merge, RGBColor, VisConfigBoolean, VisConfigColorRange, VisConfigColorSelect, VisConfigNumber, VisConfigRange, LayerColumn } from '@kepler.gl/types';
import S2LayerIcon from './s2-layer-icon';
import { DataContainerInterface } from '@kepler.gl/utils';
export type S2GeometryLayerVisConfigSettings = {
    opacity: VisConfigNumber;
    colorRange: VisConfigColorRange;
    filled: VisConfigBoolean;
    thickness: VisConfigNumber;
    strokeColor: VisConfigColorSelect;
    strokeColorRange: VisConfigColorRange;
    sizeRange: VisConfigRange;
    stroked: VisConfigBoolean;
    enable3d: VisConfigBoolean;
    elevationScale: VisConfigNumber;
    enableElevationZoomFactor: VisConfigBoolean;
    heightRange: VisConfigRange;
    wireframe: VisConfigBoolean;
};
export type S2GeometryLayerColumnsConfig = {
    token: LayerColumn;
};
export type S2GeometryLayerVisConfig = {
    opacity: number;
    colorRange: ColorRange;
    filled: boolean;
    thickness: number;
    strokeColor: RGBColor;
    strokeColorRange: ColorRange;
    sizeRange: [number, number];
    stroked: boolean;
    enable3d: boolean;
    elevationScale: number;
    enableElevationZoomFactor: boolean;
    heightRange: [number, number];
    wireframe: boolean;
};
export type S2GeometryLayerVisualChannelConfig = LayerColorConfig & LayerSizeConfig & LayerStrokeColorConfig & LayerHeightConfig;
export type S2GeometryLayerConfig = Merge<LayerBaseConfig, {
    columns: S2GeometryLayerColumnsConfig;
    visConfig: S2GeometryLayerVisConfig;
}> & S2GeometryLayerVisualChannelConfig;
export type S2GeometryLayerData = {
    index: number;
    token: any;
};
export declare const S2_TOKEN_FIELDS: {
    token: ['s2', 's2_token'];
};
export declare const s2RequiredColumns: ['token'];
export declare const S2TokenAccessor: ({ token }: S2GeometryLayerColumnsConfig) => (dc: DataContainerInterface) => (d: any) => any;
export declare const defaultElevation = 500;
export declare const defaultLineWidth = 1;
export declare const S2VisConfigs: {
    opacity: 'opacity';
    colorRange: 'colorRange';
    filled: VisConfigBoolean;
    thickness: VisConfigNumber;
    strokeColor: 'strokeColor';
    strokeColorRange: 'strokeColorRange';
    sizeRange: 'strokeWidthRange';
    stroked: 'stroked';
    enable3d: 'enable3d';
    elevationScale: 'elevationScale';
    enableElevationZoomFactor: 'enableElevationZoomFactor';
    fixedHeight: 'fixedHeight';
    heightRange: 'elevationRange';
    wireframe: 'wireframe';
};
export default class S2GeometryLayer extends Layer {
    dataToFeature: any;
    visConfigSettings: S2GeometryLayerVisConfigSettings;
    config: S2GeometryLayerConfig;
    constructor(props: any);
    get type(): 's2';
    get name(): 'S2';
    get requiredLayerColumns(): ["token"];
    get layerIcon(): typeof S2LayerIcon;
    get visualChannels(): {
        color: {
            accessor: string;
            property: string;
            field: string;
            scale: string;
            domain: string;
            range: string;
            key: string;
            channelScaleType: string;
            nullValue?: any;
            defaultMeasure?: any;
            condition?: (config: any) => boolean;
            defaultValue?: ((config: any) => any) | any;
            getAttributeValue?: (config: any) => (d: any) => any;
            fixed?: any;
            supportedFieldTypes?: Array<import("@kepler.gl/types").SupportedFieldTypes>;
            aggregation?: import("@kepler.gl/types").VisualChannelAggregation;
        };
        size: {
            property: string;
            accessor: string;
            condition: (config: any) => any;
            defaultValue: number;
            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;
            field: string;
            scale: string;
            domain: string;
            range: string;
            key: string;
            channelScaleType: "color";
            accessor: string;
            condition: (config: any) => any;
            nullValue: any;
            defaultValue: (config: any) => any;
        };
        height: {
            property: string;
            field: string;
            scale: string;
            domain: string;
            range: string;
            key: string;
            channelScaleType: "size";
            accessor: string;
            condition: (config: any) => any;
            nullValue: number;
            defaultValue: number;
        };
    };
    getDefaultLayerConfig(props: LayerBaseConfigPartial): {
        heightField: null;
        heightDomain: number[];
        heightScale: 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[];
        columnMode?: 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;
    };
    static findDefaultLayerProps({ fields }: KeplerTable): {
        props: {
            isVisible: boolean;
            label: string;
            columns: any;
        }[];
    };
    calculateDataAttribute({ filteredIndex }: KeplerTable, getS2Token: any): S2GeometryLayerData[];
    updateLayerMeta(dataset: KeplerTable, getS2Token: any): void;
    formatLayerData(datasets: any, oldLayerData: any): {};
    renderLayer(opts: any): S2Layer<any, {}>[];
}
