| import BoundingRect from 'zrender/lib/core/BoundingRect.js'; | 
| import { HashMap } from 'zrender/lib/core/util.js'; | 
| import { Group } from '../../util/graphic.js'; | 
| import { Region } from './Region.js'; | 
| export declare type GeoSVGSourceInput = string | Document | SVGElement; | 
| export declare type GeoJSONSourceInput = string | GeoJSON | GeoJSONCompressed; | 
| export interface NameMap { | 
|     [regionName: string]: string; | 
| } | 
| export interface GeoSpecialAreas { | 
|     [areaName: string]: { | 
|         left: number; | 
|         top: number; | 
|         width?: number; | 
|         height?: number; | 
|     }; | 
| } | 
| export interface GeoJSON extends GeoJSONFeatureCollection<GeoJSONGeometry> { | 
| } | 
| export interface GeoJSONCompressed extends GeoJSONFeatureCollection<GeoJSONGeometryCompressed> { | 
|     UTF8Encoding?: boolean; | 
|     UTF8Scale?: number; | 
| } | 
| interface GeoJSONFeatureCollection<G> { | 
|     type: 'FeatureCollection'; | 
|     features: GeoJSONFeature<G>[]; | 
| } | 
| interface GeoJSONFeature<G = GeoJSONGeometry> { | 
|     type: 'Feature'; | 
|     id?: string | number; | 
|     properties: { | 
|         name?: string; | 
|         cp?: number[]; | 
|         [key: string]: any; | 
|     }; | 
|     geometry: G; | 
| } | 
| declare type GeoJSONGeometry = GeoJSONGeometryPoint | GeoJSONGeometryMultiPoint | GeoJSONGeometryLineString | GeoJSONGeometryMultiLineString | GeoJSONGeometryPolygon | GeoJSONGeometryMultiPolygon; | 
| declare type GeoJSONGeometryCompressed = GeoJSONGeometryPolygonCompressed | GeoJSONGeometryMultiPolygonCompressed | GeoJSONGeometryLineStringCompressed | GeoJSONGeometryMultiLineStringCompressed; | 
| interface GeoJSONGeometryPoint { | 
|     type: 'Point'; | 
|     coordinates: number[]; | 
| } | 
| interface GeoJSONGeometryMultiPoint { | 
|     type: 'MultiPoint'; | 
|     coordinates: number[][]; | 
| } | 
| interface GeoJSONGeometryLineString { | 
|     type: 'LineString'; | 
|     coordinates: number[][]; | 
| } | 
| interface GeoJSONGeometryLineStringCompressed { | 
|     type: 'LineString'; | 
|     coordinates: string; | 
|     encodeOffsets: number[]; | 
| } | 
| interface GeoJSONGeometryMultiLineString { | 
|     type: 'MultiLineString'; | 
|     coordinates: number[][][]; | 
| } | 
| interface GeoJSONGeometryMultiLineStringCompressed { | 
|     type: 'MultiLineString'; | 
|     coordinates: string[]; | 
|     encodeOffsets: number[][]; | 
| } | 
| export interface GeoJSONGeometryPolygon { | 
|     type: 'Polygon'; | 
|     coordinates: number[][][]; | 
| } | 
| interface GeoJSONGeometryPolygonCompressed { | 
|     type: 'Polygon'; | 
|     coordinates: string[]; | 
|     encodeOffsets: number[][]; | 
| } | 
| export interface GeoJSONGeometryMultiPolygon { | 
|     type: 'MultiPolygon'; | 
|     coordinates: number[][][][]; | 
| } | 
| interface GeoJSONGeometryMultiPolygonCompressed { | 
|     type: 'MultiPolygon'; | 
|     coordinates: string[][]; | 
|     encodeOffsets: number[][][]; | 
| } | 
| export interface GeoResource { | 
|     readonly type: 'geoJSON' | 'geoSVG'; | 
|     load(nameMap: NameMap, nameProperty: string): { | 
|         boundingRect: BoundingRect; | 
|         regions: Region[]; | 
|         regionsMap: HashMap<Region>; | 
|     }; | 
| } | 
| export interface GeoSVGGraphicRoot extends Group { | 
|     isGeoSVGGraphicRoot: boolean; | 
| } | 
| /** | 
|  * Geo stream interface compatitable with d3-geo | 
|  * See the API detail in https://github.com/d3/d3-geo#streams | 
|  */ | 
| export interface ProjectionStream { | 
|     point(x: number, y: number): void; | 
|     lineStart(): void; | 
|     lineEnd(): void; | 
|     polygonStart(): void; | 
|     polygonEnd(): void; | 
|     /** | 
|      * Not supported yet. | 
|      */ | 
|     sphere(): void; | 
| } | 
| export interface GeoProjection { | 
|     project(point: number[]): number[]; | 
|     unproject(point: number[]): number[]; | 
|     /** | 
|      * Projection stream compatitable to d3-geo projection stream. | 
|      * | 
|      * When rotate projection is used. It may have antimeridian artifacts. | 
|      * So we need to introduce the fule projection stream to do antimeridian clipping. | 
|      * | 
|      * project will be ignored if projectStream is given. | 
|      */ | 
|     stream?(outStream: ProjectionStream): ProjectionStream; | 
| } | 
| export {}; |