import { EventEmitter, ElementRef, Renderer2, AfterViewInit, ChangeDetectorRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
/**
 * Switch Component
 */
export declare class SwitchComponent implements AfterViewInit, ControlValueAccessor {
    private _el;
    private _render;
    private _cd;
    /**
     * Event emitted when the switch value changes, emits the checked `boolean` value
     */
    change: EventEmitter<boolean>;
    /**
     * Whether the switch is checked
     * @default false
     */
    checked: boolean;
    /**
     * Whether the switch is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * Extra theme classes to provide custom themes, when theme is 'small', a `nb-switch-small` class will be added
     * @default ''
     */
    theme: string;
    _checkbox: ElementRef;
    _innerbar: ElementRef;
    _outerbar: ElementRef;
    _dragging: boolean;
    _outerbarWidth: number;
    _innerbarWidth: number;
    _dragPercentage: number;
    constructor(_el: ElementRef, _render: Renderer2, _cd: ChangeDetectorRef);
    ngAfterViewInit(): void;
    /**
     * Dispatch change event with current value
     * @docs-private
     */
    _onChange(event: Event): void;
    _onInputClick(event: MouseEvent): void;
    _onDragStart(): void;
    _onDrag(dragEvent: any): void;
    _onDragEnd(): void;
    _updateInnerBarPosition(deltaX: number): void;
    _getDragPercentage(distance: number): number;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /**
     * Registers a callback that will be triggered when the value has changed.
     * Implemented as part of ControlValueAccessor.
     * @param fn On change callback function.
     */
    registerOnChange(fn: Function): void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * Registers a callback that will be triggered when the control has been touched.
     * Implemented as part of ControlValueAccessor.
     * @param fn On touch callback function.
     */
    registerOnTouched(fn: Function): void;
    /**
     * Sets the model value. Implemented as part of ControlValueAccessor.
     * @param value Value to be set to the model.
     */
    writeValue(value: any): void;
    /**
     * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.
     * @param isDisabled Whether the component should be disabled.
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * update form model value and mark for check
     * @docs-private
     */
    updateFormModel(): void;
}
