import { CdkDragMove } from '@angular/cdk/drag-drop';
import { ElementRef } from '@angular/core';
import { NxIconEnum } from 'nx-icons';
import { BaseComponent } from '../../base-component';
import { CssColorVariables } from '../../theme-provider';
import * as i0 from "@angular/core";
/**
 * A base setting slider component that can be used to create custom sliders.
 *
 * See the @see {@link NxPlaybackSliderComponent} for an example of how to wrap this component
 * or look at storybook jsdoc comments for descriptions of overridable properties.
 */
export declare class NxSettingSliderComponent extends BaseComponent {
    /**
     * The value of the slider.
     */
    value: import("@angular/core").ModelSignal<number>;
    /**
     * The last value of the slider before it was toggled.
     */
    lastValue: import("@angular/core").ModelSignal<number>;
    /**
     * The primary icon of the slider.
     */
    primaryIcon: import("@angular/core").InputSignal<NxIconEnum>;
    /**
     * The value of the slider when toggled.
     */
    toggledValue: import("@angular/core").InputSignal<number>;
    /**
     * The icon of the slider when toggled.
     */
    toggledIcon: import("@angular/core").InputSignal<NxIconEnum>;
    /**
     * The color of the slider when toggled.
     */
    toggledColor: import("@angular/core").InputSignal<CssColorVariables>;
    /**
     * The friendly name of the value.
     */
    toFriendlyName: import("@angular/core").InputSignal<(value: number) => string>;
    /**
     * Whether the slider is currently being dragged.
     */
    dragging: import("@angular/core").ModelSignal<boolean>;
    /**
     * The function to convert the value to a selection range.
     *
     * Normally from 0 to 100, but can be overridden to map values between any two points.
     */
    toSelectionRange: import("@angular/core").InputSignal<(value: number) => {
        start: number;
        end: number;
        handle: number;
    }>;
    /**
     * The function to clamp the value to a valid range.
     */
    clampValue: import("@angular/core").InputSignal<(value: number) => number>;
    /**
     * For when we potentially move the slider to a popover.
     */
    showPopover: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
    /**
     * The value from the slider mapped to a friendly name.
     */
    protected valueName: import("@angular/core").Signal<string>;
    /**
     * Whether the slider is toggled.
     */
    protected itToggled: import("@angular/core").Signal<boolean>;
    /**
     * Currently displayed icon.
     */
    protected icon: import("@angular/core").Signal<NxIconEnum>;
    /**
     * The value of the selection range after clamping and mapping the raw value.
     */
    protected selectionRange: import("@angular/core").Signal<{
        start: number;
        end: number;
        handle: number;
    }>;
    /**
     * The start of the selection range.
     */
    protected selectionStart: import("@angular/core").Signal<string>;
    /**
     * The end of the selection range.
     */
    protected selectionEnd: import("@angular/core").Signal<string>;
    /**
     * The handle location for modifying the selection range.
     */
    protected selectionHandle: import("@angular/core").Signal<string>;
    /**
     * Whether the slider is expanded showing slider or collapsed just allowing toggle.
     */
    protected opened: import("@angular/core").WritableSignal<boolean>;
    /**
     * The slider ref used for getting actual sizes of the wrapper.
     */
    protected sliderWrapper: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
    protected variableColors: import("@angular/core").Signal<{
        readonly '--iconColor': CssColorVariables;
    }>;
    /**
     * The current color of the icon.
     */
    protected iconColor: import("@angular/core").Signal<CssColorVariables>;
    /**
     * Handles the clamping of the raw value.
     */
    protected clampValueEffect: import("@angular/core").EffectRef;
    /**
     * Handles toggling if the slider is collapsed or expanded.
     */
    protected toggleOpened: (state?: boolean) => void;
    /**
     * Handles updating the position by clicking on the slider.
     */
    protected setPosition: (event: MouseEvent) => void;
    private getWidth;
    /**
     * The start position of the drag.
     */
    private dragStartPosition;
    /**
     * Handles the start of dragging the slider
     */
    protected startDrag: () => void;
    /**
     * Handles the end of dragging the slider.
     */
    protected endDrag: () => void;
    /**
     * Handles dragging the slider.
     */
    protected handleDrag: (event: CdkDragMove<unknown>) => void;
    /**
     * Updates saving the last value when toggling.
     */
    protected updateLastValue: import("@angular/core").EffectRef;
    /**
     * Toggles between the primary and toggled values.
     */
    protected handleToggle: () => void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NxSettingSliderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NxSettingSliderComponent, "nx-setting-slider", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "lastValue": { "alias": "lastValue"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "toggledValue": { "alias": "toggledValue"; "required": false; "isSignal": true; }; "toggledIcon": { "alias": "toggledIcon"; "required": false; "isSignal": true; }; "toggledColor": { "alias": "toggledColor"; "required": false; "isSignal": true; }; "toFriendlyName": { "alias": "toFriendlyName"; "required": false; "isSignal": true; }; "dragging": { "alias": "dragging"; "required": false; "isSignal": true; }; "toSelectionRange": { "alias": "toSelectionRange"; "required": false; "isSignal": true; }; "clampValue": { "alias": "clampValue"; "required": false; "isSignal": true; }; "showPopover": { "alias": "showPopover"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "lastValue": "lastValueChange"; "dragging": "draggingChange"; }, never, never, true, never>;
}
