import { EventEmitter, OnChanges, OnInit, SimpleChanges } from "@angular/core";
import { BehaviorSubject } from "rxjs";
import { CssUtils } from "../utils";
import { BackgroundProviderService } from "../background-provider/service/background-provider.service";
import * as i0 from "@angular/core";
declare type Size = "medium" | "large" | "fillParent";
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
declare type Margin = {
    top?: Space;
    bottom?: Space;
    left?: Space;
    right?: Space;
};
export declare class DxcSliderComponent implements OnInit, OnChanges {
    private utils;
    bgProviderService?: BackgroundProviderService;
    className: any;
    isDisabled: boolean;
    /**
     * The minimum value available for selection.
     */
    minValue: number;
    /**
     * The maximum value available for selection.
     */
    maxValue: number;
    /**
     * The step interval between values available for selection.
     */
    step: number;
    /**
     * Whether the min/max value labels should be displayed next to the slider.
     */
    get showLimitsValues(): boolean;
    set showLimitsValues(value: boolean);
    private _showLimitsValues;
    /**
     * Whether the input element for displaying/controlling the slider value should be displayed next to the slider.
     */
    get showInput(): boolean;
    set showInput(value: boolean);
    private _showInput;
    /**
     * The selected value. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
     */
    value: number;
    /**
     * Name attribute of the input element.
     */
    name: string;
    /**
     * Text to be placed above the slider.
     */
    label: string;
    /**
     * Helper text to be placed above the slider.
     */
    helperText: string;
    /**
     * If true, the component will be disabled.
     */
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    /**
     * Whether the marks between each step should be shown or not.
     */
    get marks(): boolean;
    set marks(value: boolean);
    private _marks;
    /**
     * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
     * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
     */
    margin: Space | Margin;
    /**
     * Size of the component.
     */
    size: Size;
    /**
     * This function will be used to format the labels displayed next to the slider.
     * The value will be passed as parameter and the function must return the formatted value.
     */
    labelFormatCallback: (value: number) => string | number;
    /**
     * Value of the tabindex attribute.
     */
    get tabIndexValue(): number;
    set tabIndexValue(value: number);
    private _tabIndexValue;
    /**
     * This event will emit in case the slider changes its value, as it's being dragged.
     * The new value will be passed as a parameter.
     */
    onChange: EventEmitter<number>;
    /**
     * This event will emit in case the slider changes its value, but only when the thumb is released.
     * The new value will be passed as a parameter.
     */
    onDragEnd: EventEmitter<number>;
    tickInterval: any;
    renderedValue: number;
    minValueClass: any;
    maxValueClass: any;
    minValueLabel: any;
    maxValueLabel: any;
    darkBackground: boolean;
    defaultInputs: BehaviorSubject<any>;
    sizes: {
        medium: string;
        large: string;
        fillParent: string;
        fitContent: string;
    };
    constructor(utils: CssUtils, bgProviderService?: BackgroundProviderService);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    private updateStyles;
    /**
     * Executed while slider value moves or when user press a key in input
     * @param $event
     */
    valueChanged($event: any): void;
    /**
     * Controlled dxc-input behaviour
     * @param $event
     */
    inputValueChanged($event: any): void;
    /**
     * Executed once the user has ended dragging
     * @param $event
     */
    mouseUp($event: any): void;
    calculateWidth(sizes: any, inputs: any): string;
    private getMargin;
    getDynamicStyle(inputs: any): string;
    getMinLabelContainerClass(): string;
    getMaxLabelContainerClass(inputs: any): string;
    getDarkStyle(): string;
    getLightStyle(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DxcSliderComponent, [{ self: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DxcSliderComponent, "dxc-slider", never, { "minValue": "minValue"; "maxValue": "maxValue"; "step": "step"; "showLimitsValues": "showLimitsValues"; "showInput": "showInput"; "value": "value"; "name": "name"; "label": "label"; "helperText": "helperText"; "disabled": "disabled"; "marks": "marks"; "margin": "margin"; "size": "size"; "labelFormatCallback": "labelFormatCallback"; "tabIndexValue": "tabIndexValue"; }, { "onChange": "onChange"; "onDragEnd": "onDragEnd"; }, never, never>;
}
export {};
//# sourceMappingURL=dxc-slider.component.d.ts.map