import * as cesium from 'cesium'; import { HeadingPitchRange, Viewer, ImageryLayer, EllipsoidTerrainProvider, CesiumTerrainProvider, SceneMode } from 'cesium'; declare const Config: { prefixCls: string; prefix(suffix: string): string; }; declare const _default: { "en-US": { "dde-earth": { dde: string; }; }; "zh-CN": { "dde-earth": { dde: string; }; }; }; type Tail = ((...args: T) => void) extends (head: any, ...tail: infer R) => void ? R : never; type EventArgs = { [key: string]: any; }; type EventNames = Extract; type NestedKeyOf = ObjectType extends object ? { [Key in keyof ObjectType]: `${Key & string}` | `${Key & string}.${NestedKeyOf}`; }[keyof ObjectType] : never; type NestedValueOf = Property extends `${infer Key}.${infer Rest}` ? Key extends keyof ObjectType ? NestedValueOf : never : Property extends keyof ObjectType ? ObjectType[Property] : never; type NamespaceKeys = { [Property in Keys]: NestedValueOf extends string ? never : Property; }[Keys]; type MessageKeys = { [Property in Keys]: NestedValueOf extends string ? Property : never; }[Keys]; type NestedKeys = NamespaceKeys> | undefined; type NestedIds = never> = MessageKeys, NestedKeyOf>>; type CheckUndefined = T extends undefined ? never : T; type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P]; }; declare function findMostSimilarString(strings: string[], target: string): string | null; /** * Deeply merges multiple objects into the original object. * @param target The original object where other objects will be merged into. * @param sources The list of objects to merge. * @returns The merged original object. */ declare function deepMerge(target: any, ...sources: any[]): any; declare function generateUUID(): string; declare function convertToAsync(result: T | Promise): Promise; declare function convertToAsyncFunc any>(func: T): (...args: Parameters) => Promise>; declare function mergeAndDistinctArrays(...arrays: T[][]): T[]; declare class I18N { private _locale; private _localeMessages; private _messages; options: I18N.Options; get locales(): string[]; get locale(): I18N.Languages; set locale(val: I18N.Languages); constructor(options?: Partial); getT = never>(namespace?: NestedKey): (id: NestedIds, values?: Record) => string | undefined; private _replaceValues; private _translateFunc; extend(messages: any): void; } declare namespace I18N { type IntlMessages = (typeof _default)["en-US"]; interface LocaleMessages extends Record { } type Languages = keyof LocaleMessages; type ExtendMessages = { [key in Languages]?: DeepPartial; }; const defaultOptions: Options; interface Options { defaultLanguage: Languages; fallBackLanguage?: Languages | undefined | null; onLocaleChanged?(locale: string): void; } type TranslateFunc = = never>(namespace?: NestedKey | undefined) => (id: NestedIds, values?: Record) => string | undefined; } declare class EventEmitter { callbacks: { [key: string]: Function[]; }; on(event: T, fn: Earth.EventFunc): this; emit(event: T, ...args: Earth.Events[T]): this; off(event: T, fn?: Earth.EventFunc): this; destroy(): void; } declare abstract class LayerItem { readonly earth: Earth; readonly options: LayerItem.Options; readonly data: Lyr; readonly method: Lyr["method"]; protected _instance?: Instance; readonly id: any; protected _ready: boolean; protected _isDestroyed: boolean; protected abstract readonly defaultRenderOptions: Lyr["renderOptions"]; protected _renderOptions?: Lyr["renderOptions"]; get renderOptions(): Lyr["renderOptions"] | undefined; get isDestroyed(): boolean; get ready(): boolean; abstract get show(): boolean; abstract set show(value: boolean); get instance(): Instance | undefined; constructor(earth: Earth, data: Lyr, options?: LayerItem.Options); initial(): Promise; protected abstract _init(data: Lyr): Promise; abstract zoomTo(options?: LayerItem.ZoomToOptions): void; protected abstract _remove(): boolean | Promise; remove(): Promise; protected abstract _render(renderOptions: Lyr["renderOptions"]): Promise; render(renderOptions: Lyr["renderOptions"]): Promise; destroy(): void; } declare namespace LayerItem { interface Options { defaultRenderOptions?: Lyr["renderOptions"]; } type ZoomToOptions = { duration?: number; maximumHeight?: number; offset?: HeadingPitchRange; }; } declare class LayerManager { readonly earth: Earth; private _isDestroyed; private _baseLayer?; private _layerList; private _loaders; readonly viewer: Viewer; get isDestroyed(): boolean; get baseLayer(): ImageryLayer | undefined; get layerList(): LayerItem, any>[]; get loaders(): Record, any>>; set baseLayer(layer: ImageryLayer | undefined); constructor(earth: Earth, options?: LayerManager.Options); addLoader(loaders: Record): void; removeLoader(method: string | string[]): void; getLoaderByMethod(method: string): LayerManager.Loader, any>; changeBaseLayer(data: LayerManager.LoaderTypes[Method]["data"] | null | undefined): Promise; addLayer(data: LayerManager.LoaderTypes[Method]["data"], options?: LayerManager.AddLayerOptions): Promise | undefined>; /** * remove layer from the layer list * @param param layerName or LayerItem object * @returns removed successfully or not */ removeLayer(param: string | LayerItem): Promise; getLayerById(id: string): LayerItem, any> | undefined; destroy(): void; } declare namespace LayerManager { export interface Options { baseLayer?: false | ImageryLayer; } export interface AddLayerOptions { zoom?: boolean; } export interface BaseLayer = any> { id?: string; layerName?: string; method: Method; renderOptions?: Render; } export type Loader = (earth: Earth, data: T) => LayerItem | Promise>; export interface Loaders { } type ExtractLoaderTypes = { [K in keyof T]: { data: T[K] extends Loader ? U : never; instance: T[K] extends Loader ? V : any; layerItem: T[K] extends Loader ? ReturnType : any; }; }; export type LoaderTypes = ExtractLoaderTypes; export type LoaderMethods = keyof LoaderTypes; export { }; } declare abstract class BasePlugin = any> { readonly options?: BasePlugin.Options | undefined; /** plugin name, do not repeat, will appear in warnings or errors */ readonly name: string; /** Internationalized Dictionary */ protected _intl: I18N.ExtendMessages; protected _earth: Earth; protected _enable: boolean; protected _isDestroyed: boolean; get earth(): Earth; get viewer(): cesium.Viewer; /** get or set plugin's enable */ get enable(): boolean; set enable(val: boolean); get isDestroyed(): boolean; constructor(options?: BasePlugin.Options | undefined); /** should be executed when implement init function */ protected _init(_earth: Earth): void; abstract init(_earth: Earth, ..._options: InitOptions): this; /** get translation's api */ protected _getT: I18N.TranslateFunc; destroy(): void; } declare namespace BasePlugin { interface Options { name?: string; intl?: I18N.ExtendMessages; } } declare abstract class WithEventPlugin = any, Events extends string = string, Args extends any[] = []> extends BasePlugin { readonly eventList: Events[]; constructor(options?: WithEventPlugin.Options); abstract on(event: Events, fn: (...args: Args) => void): any; abstract off(event: Events, fn?: (...args: Args) => void): any; } declare namespace WithEventPlugin { interface Options extends BasePlugin.Options { } } type IPlugin = WithEventPlugin | BasePlugin; declare class PluginManager { readonly earth: Earth; readonly plugins: Record; private _isDestroyed; constructor(earth: Earth, plugins?: Record); get isDestroyed(): boolean; use(plugin: T, ...options: Tail>): T; get(param: string | Function): T | undefined; getPluginWithEvent(event: T): WithEventPlugin | undefined; remove(name: string | string[]): void; destroy(): void; } declare class TerrainManager { readonly earth: Earth; private _data; private _loaders; get terrain(): cesium.TerrainProvider; get loaders(): Record>; get data(): any; constructor(earth: Earth, options?: TerrainManager.Options); addLoader(loaders: Record): void; removeLoader(method: string | string[]): void; getLoaderByMethod(method: string): TerrainManager.Loader; setTerrain(data?: TerrainManager.LoaderTypes[Method]["data"]): Promise | EllipsoidTerrainProvider | undefined>; } declare namespace TerrainManager { export interface Options { terrain?: [T] extends [never] ? undefined : LoaderTypes[T]["data"]; } export type DataWithMethod> = { type: T; } & U; export type Loader = (data: T) => Instance | Promise; type ExtractLoaderTypes = { [K in keyof T]: { data: T[K] extends Loader ? U : never; instance: T[K] extends Loader ? V : any; }; }; export interface Loaders { } interface CesiumWorldTerrainLoader { cesium: (data: DataWithMethod<"cesium", CesiumTerrainProvider.ConstructorOptions>) => CesiumTerrainProvider; } export interface Loaders extends CesiumWorldTerrainLoader { } export type LoaderTypes = ExtractLoaderTypes; export type LoaderMethods = keyof LoaderTypes; export type LoaderDatas = ExtractLoaderTypes[LoaderMethods]["data"]; export { }; } declare class Earth { readonly container: string | Element | Viewer; private _isDestroyed; private _ready; readonly viewer: Viewer; readonly options: Earth.EarthOptions; readonly pluginManager: PluginManager; readonly i18n: I18N; readonly layerManager: LayerManager; readonly eventEmitter: EventEmitter; readonly terrainManager: TerrainManager; constructor(container: string | Element | Viewer, options?: Earth.EarthOptions); get ready(): boolean; get isDestroyed(): boolean; /** * Get or set the scene display mode * @default SceneMode.SCENE3D */ get sceneMode(): SceneMode; set sceneMode(mode: SceneMode); resetStatus(): void; resetView(viewPort?: number[]): void; on(event: T, fn: Earth.EventFunc): any; off(event: T, fn?: Earth.EventFunc): any; emit: (typeof EventEmitter.prototype)["emit"]; usePlugin: (typeof PluginManager.prototype)["use"]; getPlugin: (typeof PluginManager.prototype)["get"]; removePlugin: (typeof PluginManager.prototype)["remove"]; /** add layer using layer loader */ addLayer: (typeof LayerManager.prototype)["addLayer"]; removeLayer: (typeof LayerManager.prototype)["removeLayer"]; /** set terrain using terrain loader */ setTerrain: (typeof TerrainManager.prototype)["setTerrain"]; destroy(): void; } declare namespace Earth { type EarthOptions = { /** plugins list */ plugins?: IPlugin[]; /** * scene background color * @default'#00000099' */ backgroundColor?: string; /** * globe base color * @default'#4F4F4F' */ baseColor?: string; /** * default viewport * @default[116.3, 39.9, 20000000] */ defaultViewPort?: number[]; toolOptions?: { i18n?: Partial; }; } & Viewer.ConstructorOptions; const defaultOptions: EarthOptions; interface Events { "layer:add": [layerItem: LayerItem]; "layer:remove": [id: string]; "layer:render": [layerItem: LayerItem]; "lang:change": [lang: string]; "terrain:change": [terrain: any]; } type EventTypes = keyof Events; type EventFunc = (...args: Events[T]) => void; interface AddLayerOptions { zoom?: boolean; } } declare const Debug: { info: (message: string | [ scope: string, msg: string ], ...optionalParams: any[]) => void; warn: (message: string | [ scope: string, msg: string ], ...optionalParams: any[]) => void; error: (message: string | [ scope: string, msg: string ], ...optionalParams: any[]) => void; trace: (message: string | [ scope: string, msg: string ], ...optionalParams: any[]) => void; }; export { BasePlugin, type CheckUndefined, Config, Debug, type DeepPartial, Earth, type EventArgs, EventEmitter, type EventNames, I18N, type IPlugin, LayerItem, LayerManager, type MessageKeys, type NamespaceKeys, type NestedIds, type NestedKeyOf, type NestedKeys, type NestedValueOf, PluginManager, type Tail, TerrainManager, WithEventPlugin, convertToAsync, convertToAsyncFunc, deepMerge, findMostSimilarString, generateUUID, mergeAndDistinctArrays };