/// <reference types="@geoscene/core/interfaces.d.ts" />
import { EventEmitter } from '@arcgis/lumina';
import { Nil } from '@arcgis/components-utils';
import { GeosceneExpand } from '../components/geoscene-expand/customElement.js';
import { GeosceneLinkChart } from '../components/geoscene-link-chart/customElement.js';
import { GeosceneMap } from '../components/geoscene-map/customElement.js';
import { GeoscenePlacement } from '../components/geoscene-placement/customElement.js';
import { GeosceneScene } from '../components/geoscene-scene/customElement.js';
export type GeosceneReferenceElement = HTMLGeosceneLinkChartElement | HTMLGeosceneMapElement | HTMLGeosceneSceneElement;
export type GeosceneParentElement = HTMLGeosceneExpandElement | HTMLGeoscenePlacementElement | GeosceneReferenceElement;
interface BaseComponentElement {
    referenceElement?: GeosceneReferenceElement | string;
    view?: __geoscene.LinkChartView | __geoscene.MapView | __geoscene.SceneView | Nil;
    position?: __geoscene.UIPosition;
}
export interface WidgetElement extends BaseComponentElement {
    el: HTMLElement & {
        childElem?: HTMLElement;
    };
    widget: any;
    _watchHandles: __geoscene.WatchHandle[];
}
/**
 * A type that represents either wrapped widget or a native map component. Used
 * in places where both need to be accepted.
 */
export type WidgetOrMapComponent = Pick<WidgetElement, "position" | "referenceElement" | "view"> & {
    el: HTMLElement & {
        view?: __geoscene.LinkChartView | __geoscene.MapView | __geoscene.SceneView | __geoscene.VideoView | Nil;
        parent?: GeosceneParentElement;
        childElem?: HTMLElement & {
            ownedBy?: HTMLElement;
        };
    };
    icon?: Nil | string;
    widget?: WidgetElement["widget"];
};
/** @deprecated Use this.manager.onLifecycle() instead */
export declare function addHandles(element: WidgetElement, handle: __geoscene.WatchHandle | __geoscene.WatchHandle[]): void;
/**
 * Find applicable geoscene-map, geoscene-scene, geoscene-expand or geoscene-placement
 * for the current component and attach to it
 *
 * @remarks
 * If the view property was set by the user directly (for backwards
 * comparability with MapView/SceneView), attachToParent() will return undefined
 * as attachToParent() is looking for component parents only.
 * If the view property was provided, the developer takes over the
 * responsibility of calling view.ui.add()
 */
export declare function attachToParent(component: WidgetOrMapComponent): GeosceneParentElement | undefined;
/**
 * Defines a view prop on the component's el and emits geosceneReady once that
 * prop is set by attachToParent()
 *
 * @deprecated Use useWidget or useViewModel instead
 */
export declare function defineViewProperty(component: WidgetOrMapComponent & {
    geosceneReady: EventEmitter;
}): void;
export declare function isNullOrEmptyString(value: nullish | string): boolean;
export declare function isValidInteger(value: nullish | number): boolean;
export declare function areCamerasEqual(camera: __geoscene.Camera, camera2: __geoscene.Camera | Nil): boolean;
export declare function isNotSameViewpoint(viewpoint?: __geoscene.Viewpoint, viewpoint2?: __geoscene.Viewpoint): boolean;
export declare function parseCenter(newValue: __geoscene.MapView["center"] | Nil | number[] | string, view?: Pick<__geoscene.MapView, "center">): __geoscene.Point | undefined;
export declare function parsePoint(currentValue: __geoscene.Point | Nil, newValue: __geoscene.Point | Nil | number[] | string): __geoscene.Point | undefined;
/** @deprecated Use useWidget or useViewModel instead */
export declare function referenceElementHelper(component: WidgetOrMapComponent, refElement: GeosceneReferenceElement | Nil | string): Promise<void>;
export declare const getRenderContainer: (component: Pick<WidgetOrMapComponent, "el">) => HTMLElement | undefined;
/**
 * Focuses the specified element while waiting for it to be rendered.
 * 
 * Minus the `abortOptions`
 */
export declare function setFocus(elementOrGetElement: Element | Nil | (() => Element | Nil)): Promise<void>;
export {};