import type { IPoint } from '../../typings/coordinate';
import { Projection } from './projection';
import type { IEffect, IModelLayoutOption, IModelRenderOption, IModelSpecInfo } from '../../model/interface';
import { ComponentTypeEnum } from '../interface/type';
import { BaseComponent } from '../base/base-component';
import type { IGeoRegionSpec, IRegion } from '../../region/interface';
import type { IGeoCoordinate, IGeoCoordinateSpec, IProjectionSpec } from './interface';
import type { StringOrNumber } from '../../typings';
import type { Maybe } from '@visactor/vutils';
import type { IGraphic } from '@visactor/vrender-core';
export declare function projectionName(key: string, id: number): string;
export declare class GeoCoordinate extends BaseComponent<IGeoRegionSpec> implements IGeoCoordinate {
    static type: ComponentTypeEnum;
    type: ComponentTypeEnum;
    name: string;
    layoutType: 'none';
    protected layoutZIndex: number;
    _longitudeField?: string;
    get longitudeField(): string;
    _latitudeField?: string;
    get latitudeField(): string;
    protected _projectionSpec: IProjectionSpec;
    get projectionSpec(): IProjectionSpec;
    setProjection(projectionSpec: IGeoCoordinateSpec['projection']): void;
    protected _projection: Projection;
    protected _centerCache: Map<StringOrNumber, {
        x: number;
        y: number;
    }>;
    private _actualScale;
    getZoom(): number;
    private _initialScale;
    static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
    effect: IEffect;
    setAttrFromSpec(): void;
    created(): void;
    private _handleChartZoom;
    dispatchZoom(zoomDelta: number, center?: {
        x: number;
        y: number;
    }): void;
    initEvent(): void;
    initProjection(): void;
    coordinateHelper(): void;
    onLayoutEnd(ctx: IModelLayoutOption): void;
    onRender(ctx: IModelRenderOption): void;
    changeRegions(regions: IRegion[]): void;
    protected _getNeedClearVRenderComponents(): IGraphic[];
    protected collectFeatures(): any[];
    dataToPosition(values?: number[]): IPoint;
    dataToLatitude(lat: number): number;
    dataToLongitude(lon: number): number;
    zoom(p: number, anchor?: [number, number]): void;
    pan: (delta?: [number, number]) => void;
    shape(datum?: any): any;
    invert(point: [number, number]): any;
    private evaluateProjection;
    protected _initCenterCache(): void;
    _compareSpec(spec: IGeoRegionSpec, prevSpec: IGeoRegionSpec): {
        change: boolean;
        reMake: boolean;
        reRender: boolean;
        reSize: boolean;
        reCompile: boolean;
    };
    release(): void;
}
export declare const registerGeoCoordinate: () => void;
