export interface ISelf { self: any; discriminator: string; } export interface IMap extends ISelf { on(eventName: string, callback: Function); plugin(eventName: string[], callback: Function); add(obj: IMarker): any; remove(obj: any): any; setCity(city: string): any; getCity(callback: Function): any; setZoom(zoom: number): any; setZoomAndCenter(zoom: number, pos: number[]): any; getZoom(): any; setCenter(x: number[]): any; getCenter(): any; getBounds(): any; } export interface IMapOptions { zoom?: number; zooms?: number[]; } export interface IMarker extends ISelf { id: string; on(eventName: string, callback: Function); setMap(); } export interface IMarkerCluster extends ISelf { } type HtmlRender = (...args) => string | HTMLElement; type PixelRender = (...args) => IPixel; export interface IRenderClusterMarker { getFirstImages(context: any): string; contentRender: HtmlRender; contentNonRender: HtmlRender; pixelRender: PixelRender; pixelNonRender: PixelRender; } export class IMarkOptions { position?: ILngLat; content?: string; offset?: IPixel; } export interface IPixel extends ISelf { } export interface ILngLat extends ISelf { offset(x: number, y: number) } export interface ILayer extends ISelf { } export interface ICircle extends ISelf { setRadius(num: number); setCenter(pos: number[]) setMap(map: any) }