/// <reference types="@geoscene/core/interfaces.d.ts" />
/// <reference types="../../index.d.ts" />
import { Use } from '@arcgis/lumina/controllers';
import { default as Slider } from '@geoscene/core/widgets/Slider.js';
import { PublicLitElement as LitElement, TargetedEvent } from '@arcgis/lumina';
import { GeosceneReferenceElement } from '../../utils/component-utils';

declare const useSliderWidget: (component: LitElement & Pick<Slider, "icon" | "label" | "viewModel" | "values" | "layout" | "tickConfigs" | "draggableSegmentsEnabled" | "effectiveMax" | "effectiveMin" | "labelInputsEnabled" | "max" | "min" | "precision" | "rangeLabelInputsEnabled" | "snapOnClickEnabled" | "steps" | "syncedSegmentsEnabled" | "thumbsConstrained"> & {
    state?: "ready" | "disabled" | "editing" | "dragging" | undefined;
    viewModel?: __geoscene.SliderViewModel | undefined;
    closed?: boolean;
    icon: import('@arcgis/components-utils').Nil | string;
    label: import('@arcgis/components-utils').Nil | string;
    referenceElement?: GeosceneReferenceElement | string;
    position: __geoscene.UIPosition;
    geosceneReady: import('@arcgis/lumina').EventEmitter;
    geoscenePropertyChange: import('@arcgis/lumina').EventEmitter<{
        name: string;
    }> | undefined;
    el: HTMLElement & {
        childElem?: HTMLElement & {
            ownedBy?: HTMLElement;
        };
        view?: __geoscene.LinkChartView | __geoscene.MapView | __geoscene.SceneView;
    };
    autoDestroyDisabled: boolean;
    destroy: () => Promise<void>;
}) => Slider;
/**
 * [Read more...](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-slider/)
 *
 * @internal
 */
export declare class GeosceneSlider extends LitElement {
    /**
     * If true, the component will not be destroyed automatically when it is
     * disconnected from the document. This is useful when you want to move the
     * component to a different place on the page, or temporarily hide it. If this
     * is set, make sure to call the [destroy](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-slider/#destroy) method when you are done to
     * prevent memory leaks.
     *
     * @default false
     */
    autoDestroyDisabled: boolean;
    /**
     * Indicates if the user can drag the segment between thumbs
     * to update thumb positions.
     *
     * @default true
     */
    draggableSegmentsEnabled: boolean;
    /**
     * When set, the user is restricted from moving slider thumbs to positions higher than
     * this value.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#effectiveMax)
     */
    effectiveMax: number | nullish;
    /**
     * When set, the user is restricted from moving slider thumbs to positions less than
     * this value.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#effectiveMin)
     */
    effectiveMin: number | nullish;
    /**
     * The HTML Element nodes representing the slider segment between the [min](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#min) and [effectiveMin](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#effectiveMin), and the segment between the
     * [effectiveMax](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#effectiveMax) and [max](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#max).
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#effectiveSegmentElements)
     */
    readonly effectiveSegmentElements: __geoscene.Collection<HTMLElement>;
    /**
     * Icon which represents the component.
     * Typically used when the component is controlled by another component (e.g. by the Expand component).
     *
     * @see [Calcite Icons](https://doc.geoscene.cn/calcite-design-system/icons/)
     * @default "caret-double-horizontal"
     */
    icon: string;
    /**
     * The widget's default label.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#label)
     */
    label: string;
    /**
     * The HTML Element nodes representing [labels](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#labels) attached to slider thumbs.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#labelElements)
     */
    readonly labelElements: __geoscene.Collection<HTMLElement>;
    /**
     * Indicates whether to enable editing input values via keyboard input
     * when the user clicks a label.
     *
     * @default false
     */
    labelInputsEnabled: boolean;
    /**
     * An array of strings associated with 'values' generated using an internal label formatter or
     * the values returned from [labelFormatFunction](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#labelFormatFunction).
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#labels)
     */
    readonly labels: __geoscene.LabelInfos;
    /**
     * Determines the layout/orientation of the Slider widget.
     *
     * @default "horizontal"
     */
    layout: "vertical" | "horizontal" | "horizontal-reversed" | "vertical-reversed";
    /**
     * The maximum possible data/thumb value of the slider.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#max)
     */
    max: number | nullish;
    /**
     * The HTML Element node representing the [max](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#max) value label.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#maxLabelElement)
     */
    readonly maxLabelElement: HTMLElement | nullish;
    /**
     * The minimum possible data/thumb value of the slider.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#min)
     */
    min: number | nullish;
    /**
     * The HTML Element node representing the [min](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#min) value label.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#minLabelElement)
     */
    readonly minLabelElement: HTMLElement | nullish;
    /** @default "bottom-left" */
    position: __geoscene.UIPosition;
    /**
     * Defines how slider thumb values should be rounded.
     *
     * @default 4
     */
    precision: number;
    /**
     * Indicates whether to enable editing range values via keyboard input
     * when the user clicks a [min](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#min) or [max](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#max) label.
     *
     * @default false
     */
    rangeLabelInputsEnabled: boolean;
    /**
     * By assigning the `id` attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene.
     *
     * @see [Associate components with a Map or Scene component](https://doc.geoscene.cn/javascript/4.33/programming-patterns/#associate-components-with-a-map-or-scene-component)
     */
    referenceElement?: GeosceneReferenceElement | string;
    /**
     * The HTML Element nodes representing interactive slider segments.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#segmentElements)
     */
    readonly segmentElements: __geoscene.Collection<HTMLElement>;
    /**
     * Indicates if the closest thumb will snap to the clicked location on the track.
     *
     * @default true
     */
    snapOnClickEnabled: boolean;
    /** The current state of the component. */
    readonly state: "ready" | "disabled" | "editing" | "dragging";
    /**
     * Sets steps, or intervals, on the slider that restrict user
     * input to specific values.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#steps)
     */
    steps: number | nullish | number[];
    /**
     * When `true`, all segments will sync together in updating thumb values when the user drags any segment.
     *
     * @default false
     */
    syncedSegmentsEnabled: boolean;
    /**
     * The HTML Element nodes representing slider thumbs.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#thumbElements)
     */
    readonly thumbElements: __geoscene.Collection<HTMLElement>;
    /**
     * When `false`, the user can freely move any slider thumb to any
     * position along the track.
     *
     * @default true
     */
    thumbsConstrained: boolean;
    /**
     * When set, renders ticks along the slider track.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#tickConfigs)
     */
    tickConfigs: __geoscene.TickConfig[];
    /**
     * The HTML Element nodes representing slider ticks and their associated labels.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#tickElements)
     */
    readonly tickElements: __geoscene.Collection<__geoscene.Collection<__geoscene.TickElementGroup>>;
    /**
     * The HTML Element node representing the slider track.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#trackElement)
     */
    readonly trackElement: HTMLElement | nullish;
    /**
     * An array of numbers representing absolute thumb positions on the slider.
     *
     * [Read more...](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-Slider.html#values)
     */
    values: nullish | number[];
    /** Permanently destroy the component. */
    destroy(): Promise<void>;
    readonly geosceneMaxChange: TargetedEvent<this, __geoscene.SliderMaxChangeEvent>;
    readonly geosceneMaxClick: TargetedEvent<this, __geoscene.SliderMaxClickEvent>;
    readonly geosceneMinChange: TargetedEvent<this, __geoscene.SliderMinChangeEvent>;
    readonly geosceneMinClick: TargetedEvent<this, __geoscene.SliderMinClickEvent>;
    /** Emitted when the value of a property is changed. Use this to listen to changes to properties. */
    readonly geoscenePropertyChange: TargetedEvent<this, {
        name: "state";
    }>;
    /** Emitted when the component associated with a map or scene view is is ready to be interacted with. */
    readonly geosceneReady: TargetedEvent<this, void>;
    readonly geosceneSegmentClick: TargetedEvent<this, __geoscene.SliderSegmentClickEvent>;
    readonly geosceneSegmentDrag: TargetedEvent<this, __geoscene.SliderSegmentDragEvent>;
    readonly geosceneThumbChange: TargetedEvent<this, __geoscene.SliderThumbChangeEvent>;
    readonly geosceneThumbClick: TargetedEvent<this, __geoscene.SliderThumbClickEvent>;
    readonly geosceneThumbDrag: TargetedEvent<this, __geoscene.SliderThumbDragEvent>;
    readonly geosceneTickClick: TargetedEvent<this, __geoscene.SliderTickClickEvent>;
    readonly geosceneTrackClick: TargetedEvent<this, __geoscene.SliderTrackClickEvent>;
}
export {};