import { Object3D, Material, Vector3, Vector2 } from 'three'; type Accessor = Out | string | ((obj: In) => Out); type ObjAccessor = Accessor; type HexBinAccessor = Accessor<{ points: object[], sumWeight: number, center: { lat: number, lng: number }}, T>; interface GeoJsonGeometry { type: string; coordinates: number[]; } interface TypeFace {} type LabelOrientation = 'right' | 'top' | 'bottom'; interface ConfigOptions { waitForGlobeReady?: boolean; animateIn?: boolean; } declare class ThreeGlobeGeneric extends Object3D { constructor(configOptions?: ConfigOptions); // Globe layer globeImageUrl(): string | null; globeImageUrl(url: string): ChainableInstance; bumpImageUrl(): string | null; bumpImageUrl(url: string): ChainableInstance; showGlobe(): boolean; showGlobe(show: boolean): ChainableInstance; showGraticules(): boolean; showGraticules(show: boolean): ChainableInstance; showAtmosphere(): boolean; showAtmosphere(show: boolean): ChainableInstance; atmosphereColor(): string; atmosphereColor(color: string): ChainableInstance; atmosphereAltitude(): number; atmosphereAltitude(alt: number): ChainableInstance; globeMaterial(): Material; globeMaterial(globeMaterial: Material): ChainableInstance; onGlobeReady(callback: (() => void)): ChainableInstance; // Points layer pointsData(): object[]; pointsData(data: object[]): ChainableInstance; pointLat(): ObjAccessor; pointLat(latitudeAccessor: ObjAccessor): ChainableInstance; pointLng(): ObjAccessor; pointLng(longitudeAccessor: ObjAccessor): ChainableInstance; pointColor(): ObjAccessor; pointColor(colorAccessor: ObjAccessor): ChainableInstance; pointAltitude(): ObjAccessor; pointAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; pointRadius(): ObjAccessor; pointRadius(radiusAccessor: ObjAccessor): ChainableInstance; pointResolution(): number; pointResolution(resolution: number): ChainableInstance; pointsMerge(): boolean; pointsMerge(merge: boolean): ChainableInstance; pointsTransitionDuration(): number; pointsTransitionDuration(durationMs: number): ChainableInstance; // Arcs layer arcsData(): object[]; arcsData(data: object[]): ChainableInstance; arcStartLat(): ObjAccessor; arcStartLat(latitudeAccessor: ObjAccessor): ChainableInstance; arcEndLat(): ObjAccessor; arcEndLat(latitudeAccessor: ObjAccessor): ChainableInstance; arcStartLng(): ObjAccessor; arcStartLng(longitudeAccessor: ObjAccessor): ChainableInstance; arcEndLng(): ObjAccessor; arcEndLng(longitudeAccessor: ObjAccessor): ChainableInstance; arcColor(): ObjAccessor string)>; arcColor(colorsAccessor: ObjAccessor string)>): ChainableInstance; arcAltitude(): ObjAccessor; arcAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; arcAltitudeAutoScale(): ObjAccessor; arcAltitudeAutoScale(scaleAccessor: ObjAccessor): ChainableInstance; arcStroke(): ObjAccessor; arcStroke(strokeWidthAccessor: ObjAccessor): ChainableInstance; arcCurveResolution(): number; arcCurveResolution(resolution: number): ChainableInstance; arcCircularResolution(): number; arcCircularResolution(resolution: number): ChainableInstance; arcDashLength(): ObjAccessor; arcDashLength(dashLengthAccessor: ObjAccessor): ChainableInstance; arcDashGap(): ObjAccessor; arcDashGap(dashGapAccessor: ObjAccessor): ChainableInstance; arcDashInitialGap(): ObjAccessor; arcDashInitialGap(dashGapAccessor: ObjAccessor): ChainableInstance; arcDashAnimateTime(): ObjAccessor; arcDashAnimateTime(durationMsAccessor: ObjAccessor): ChainableInstance; arcsTransitionDuration(): number; arcsTransitionDuration(durationMs: number): ChainableInstance; // Polygons layer polygonsData(): object[]; polygonsData(data: object[]): ChainableInstance; polygonGeoJsonGeometry(): ObjAccessor; polygonGeoJsonGeometry(geometryAccessor: ObjAccessor): ChainableInstance; polygonCapColor(): ObjAccessor; polygonCapColor(colorAccessor: ObjAccessor): ChainableInstance; polygonCapMaterial(): ObjAccessor; polygonCapMaterial(materialAccessor: ObjAccessor): ChainableInstance; polygonSideColor(): ObjAccessor; polygonSideColor(colorAccessor: ObjAccessor): ChainableInstance; polygonSideMaterial(): ObjAccessor; polygonSideMaterial(materialAccessor: ObjAccessor): ChainableInstance; polygonStrokeColor(): ObjAccessor; polygonStrokeColor(colorAccessor: ObjAccessor): ChainableInstance; polygonAltitude(): ObjAccessor; polygonAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; polygonCapCurvatureResolution(): ObjAccessor; polygonCapCurvatureResolution(capCurvatureResolutionAccessor: ObjAccessor): ChainableInstance; polygonsTransitionDuration(): number; polygonsTransitionDuration(durationMs: number): ChainableInstance; // Paths layer pathsData(): object[]; pathsData(data: object[]): ChainableInstance; pathPoints(): ObjAccessor; pathPoints(pointsAccessor: ObjAccessor): ChainableInstance; pathPointLat(): Accessor; pathPointLat(latitudeAccessor: Accessor): ChainableInstance; pathPointLng(): Accessor; pathPointLng(longitudeAccessor: Accessor): ChainableInstance; pathPointAlt(): Accessor; pathPointAlt(altitudeAccessor: Accessor): ChainableInstance; pathResolution(): number; pathResolution(resolution: number): ChainableInstance; pathColor(): ObjAccessor string)>; pathColor(colorsAccessor: ObjAccessor string)>): ChainableInstance; pathStroke(): ObjAccessor; pathStroke(widthAccessor: ObjAccessor): ChainableInstance; pathDashLength(): ObjAccessor; pathDashLength(dashLengthAccessor: ObjAccessor): ChainableInstance; pathDashGap(): ObjAccessor; pathDashGap(dashGapAccessor: ObjAccessor): ChainableInstance; pathDashInitialGap(): ObjAccessor; pathDashInitialGap(dashGapAccessor: ObjAccessor): ChainableInstance; pathDashAnimateTime(): ObjAccessor; pathDashAnimateTime(durationMsAccessor: ObjAccessor): ChainableInstance; pathTransitionDuration(): number; pathTransitionDuration(durationMs: number): ChainableInstance; // Hex Bin layer hexBinPointsData(): object[]; hexBinPointsData(data: object[]): ChainableInstance; hexBinPointLat(): ObjAccessor; hexBinPointLat(latitudeAccessor: ObjAccessor): ChainableInstance; hexBinPointLng(): ObjAccessor; hexBinPointLng(longitudeAccessor: ObjAccessor): ChainableInstance; hexBinPointWeight(): ObjAccessor; hexBinPointWeight(weightAccessor: ObjAccessor): ChainableInstance; hexBinResolution(): number; hexBinResolution(resolution: number): ChainableInstance; hexMargin(): HexBinAccessor; hexMargin(margin: HexBinAccessor): ChainableInstance; hexAltitude(): HexBinAccessor; hexAltitude(altitude: HexBinAccessor): ChainableInstance; hexTopCurvatureResolution(): number; hexTopCurvatureResolution(resolution: number): ChainableInstance; hexTopColor(): HexBinAccessor; hexTopColor(colorAccessor: HexBinAccessor): ChainableInstance; hexSideColor(): HexBinAccessor; hexSideColor(colorAccessor: HexBinAccessor): ChainableInstance; hexBinMerge(): boolean; hexBinMerge(merge: boolean): ChainableInstance; hexTransitionDuration(): number; hexTransitionDuration(durationMs: number): ChainableInstance; // Hexed Polygons layer hexPolygonsData(): object[]; hexPolygonsData(data: object[]): ChainableInstance; hexPolygonGeoJsonGeometry(): ObjAccessor; hexPolygonGeoJsonGeometry(geometryAccessor: ObjAccessor): ChainableInstance; hexPolygonColor(): ObjAccessor; hexPolygonColor(colorAccessor: ObjAccessor): ChainableInstance; hexPolygonAltitude(): ObjAccessor; hexPolygonAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; hexPolygonResolution(): ObjAccessor; hexPolygonResolution(resolutionAccessor: ObjAccessor): ChainableInstance; hexPolygonMargin(): ObjAccessor; hexPolygonMargin(marginAccessor: ObjAccessor): ChainableInstance; hexPolygonCurvatureResolution(): ObjAccessor; hexPolygonCurvatureResolution(resolutionAccessor: ObjAccessor): ChainableInstance; hexPolygonsTransitionDuration(): number; hexPolygonsTransitionDuration(durationMs: number): ChainableInstance; // Tiles layer tilesData(): object[]; tilesData(data: object[]): ChainableInstance; tileLat(): ObjAccessor; tileLat(latitudeAccessor: ObjAccessor): ChainableInstance; tileLng(): ObjAccessor; tileLng(longitudeAccessor: ObjAccessor): ChainableInstance; tileAltitude(): ObjAccessor; tileAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; tileWidth(): ObjAccessor; tileWidth(widthAccessor: ObjAccessor): ChainableInstance; tileHeight(): ObjAccessor; tileHeight(heightAccessor: ObjAccessor): ChainableInstance; tileUseGlobeProjection(): boolean; tileUseGlobeProjection(useGlobeProjection: boolean): ChainableInstance; tileMaterial(): ObjAccessor; tileMaterial(materialAccessor: ObjAccessor): ChainableInstance; tileCurvatureResolution(): ObjAccessor; tileCurvatureResolution(curvatureResolutionAccessor: ObjAccessor): ChainableInstance; tilesTransitionDuration(): number; tilesTransitionDuration(durationMs: number): ChainableInstance; // Labels layer labelsData(): object[]; labelsData(data: object[]): ChainableInstance; labelLat(): ObjAccessor; labelLat(latitudeAccessor: ObjAccessor): ChainableInstance; labelLng(): ObjAccessor; labelLng(longitudeAccessor: ObjAccessor): ChainableInstance; labelText(): ObjAccessor; labelText(textAccessor: ObjAccessor): ChainableInstance; labelColor(): ObjAccessor; labelColor(colorAccessor: ObjAccessor): ChainableInstance; labelAltitude(): ObjAccessor; labelAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; labelSize(): ObjAccessor; labelSize(sizeAccessor: ObjAccessor): ChainableInstance; labelTypeFace(): TypeFace; labelTypeFace(typeface: TypeFace): ChainableInstance; labelRotation(): ObjAccessor; labelRotation(rotationAccessor: ObjAccessor): ChainableInstance; labelResolution(): number; labelResolution(resolution: number): ChainableInstance; labelIncludeDot(): ObjAccessor; labelIncludeDot(includeAccessor: ObjAccessor): ChainableInstance; labelDotRadius(): ObjAccessor; labelDotRadius(radiusAccessor: ObjAccessor): ChainableInstance; labelDotOrientation(): ObjAccessor; labelDotOrientation(orientationAccessor: ObjAccessor): ChainableInstance; labelsTransitionDuration(): number; labelsTransitionDuration(durationMs: number): ChainableInstance; // Rings Layer ringsData(): object[]; ringsData(data: object[]): ChainableInstance; ringLat(): ObjAccessor; ringLat(latitudeAccessor: ObjAccessor): ChainableInstance; ringLng(): ObjAccessor; ringLng(longitudeAccessor: ObjAccessor): ChainableInstance; ringAltitude(): ObjAccessor; ringAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; ringColor(): ObjAccessor string)>; ringColor(colorAccessor: ObjAccessor string)>): ChainableInstance; ringResolution(): number; ringResolution(resolution: number): ChainableInstance; ringMaxRadius(): ObjAccessor; ringMaxRadius(radiusAccessor: ObjAccessor): ChainableInstance; ringPropagationSpeed(): ObjAccessor; ringPropagationSpeed(speedAccessor: ObjAccessor): ChainableInstance; ringRepeatPeriod(): ObjAccessor; ringRepeatPeriod(msAccessor: ObjAccessor): ChainableInstance; // HTML Elements layer htmlElementsData(): object[]; htmlElementsData(data: object[]): ChainableInstance; htmlLat(): ObjAccessor; htmlLat(latitudeAccessor: ObjAccessor): ChainableInstance; htmlLng(): ObjAccessor; htmlLng(longitudeAccessor: ObjAccessor): ChainableInstance; htmlAltitude(): ObjAccessor; htmlAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; htmlElement(): HTMLElement | string | ((d: object) => HTMLElement); htmlElement(htmlElementAccessor: HTMLElement | string | ((d: object) => HTMLElement)): ChainableInstance; htmlTransitionDuration(): number; htmlTransitionDuration(durationMs: number): ChainableInstance; // Objects layer objectsData(): object[]; objectsData(data: object[]): ChainableInstance; objectLat(): ObjAccessor; objectLat(latitudeAccessor: ObjAccessor): ChainableInstance; objectLng(): ObjAccessor; objectLng(longitudeAccessor: ObjAccessor): ChainableInstance; objectAltitude(): ObjAccessor; objectAltitude(altitudeAccessor: ObjAccessor): ChainableInstance; objectThreeObject(): Object3D | string | ((d: object) => Object3D); objectThreeObject(object3DAccessor: Object3D | string | ((d: object) => Object3D)): ChainableInstance; // Custom layer customLayerData(): object[]; customLayerData(data: object[]): ChainableInstance; customThreeObject(): Object3D | string | ((d: object) => Object3D); customThreeObject(object3DAccessor: Object3D | string | ((d: object) => Object3D)): ChainableInstance; customThreeObjectUpdate(): string | ((obj: Object3D, objData: object) => void); customThreeObjectUpdate(object3dAccessor: string | ((obj: Object3D, objData: object) => void)): ChainableInstance; // Utility getGlobeRadius(): number; getCoords(lat: number, lng: number, altitude?: number): { x: number, y: number, z: number }; toGeoCoords(coords: { x: number, y: number, z: number }): { lat: number, lng: number, altitude: number }; setPointOfView(pov: Vector3, globePos?: Vector3): void; // Render options rendererSize(): Vector2; rendererSize(size: Vector2): ChainableInstance; } declare class ThreeGlobe extends ThreeGlobeGeneric {} export { ConfigOptions, ThreeGlobeGeneric, ThreeGlobe as default };