import { FocusMonitor } from '@angular/cdk/a11y';
import { BooleanInput } from '@angular/cdk/coercion';
import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList, InjectionToken, AfterViewInit } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { CanDisableRipple } from '@angular/material/core';
export declare type ButtonToggleAppearance = 'standard' | 'active' | 'dark';
export interface ButtonToggleDefaultOptions {
    appearance?: ButtonToggleAppearance;
}
export declare const BUTTON_TOGGLE_DEFAULT_OPTIONS: InjectionToken<ButtonToggleDefaultOptions>;
export declare const BUTTON_TOGGLE_GROUP: InjectionToken<QMSButtonToggleGroup>;
export declare const BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any;
export declare class ButtonToggleChange {
    source: QMSButtonToggle;
    value: any;
    constructor(source: QMSButtonToggle, value: any);
}
export declare class QMSButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit {
    private _changeDetector;
    private _vertical;
    private _disabled;
    private _selectionModel;
    private _rawValue;
    _controlValueAccessorChangeFn: (value: any) => void;
    _onTouched: () => any;
    _buttonToggles: QueryList<QMSButtonToggle>;
    appearance: ButtonToggleAppearance;
    get name(): string;
    set name(value: string);
    private _name;
    get vertical(): boolean;
    set vertical(value: boolean);
    get value(): any;
    set value(newValue: any);
    readonly valueChange: EventEmitter<any>;
    get selected(): QMSButtonToggle | QMSButtonToggle[];
    get disabled(): boolean;
    set disabled(value: boolean);
    readonly change: EventEmitter<ButtonToggleChange>;
    constructor(_changeDetector: ChangeDetectorRef, defaultOptions?: ButtonToggleDefaultOptions);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    writeValue(value: any): void;
    registerOnChange(fn: (value: any) => void): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    _emitChangeEvent(): void;
    _syncButtonToggle(toggle: QMSButtonToggle, select: boolean, isUserInput?: boolean, deferEvents?: boolean): void;
    _isSelected(toggle: QMSButtonToggle): boolean;
    _isPrechecked(toggle: QMSButtonToggle): boolean;
    private _setSelectionByValue;
    private _clearSelection;
    private _selectValue;
    private _updateModelValue;
    static ngAcceptInputType_disabled: BooleanInput;
    static ngAcceptInputType_multiple: BooleanInput;
    static ngAcceptInputType_vertical: BooleanInput;
}
declare const _ButtonToggleBase: import("@angular/material/core/common-behaviors/constructor").Constructor<CanDisableRipple> & import("@angular/material/core/common-behaviors/constructor").AbstractConstructor<CanDisableRipple> & {
    new (): {};
};
export declare class QMSButtonToggle extends _ButtonToggleBase implements OnInit, AfterViewInit, CanDisableRipple, OnDestroy {
    private _changeDetectorRef;
    private _elementRef;
    private _focusMonitor;
    private _checked;
    ariaLabel: string;
    ariaLabelledby: string | null;
    _buttonElement: ElementRef<HTMLButtonElement>;
    buttonToggleGroup: QMSButtonToggleGroup;
    get buttonId(): string;
    id: string;
    name: string;
    value: any;
    tabIndex: number | null;
    get appearance(): ButtonToggleAppearance;
    set appearance(value: ButtonToggleAppearance);
    private _appearance;
    get checked(): boolean;
    set checked(value: boolean);
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    readonly change: EventEmitter<ButtonToggleChange>;
    constructor(toggleGroup: QMSButtonToggleGroup, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>, _focusMonitor: FocusMonitor, defaultTabIndex: string, defaultOptions?: ButtonToggleDefaultOptions);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    focus(options?: FocusOptions): void;
    _onButtonClick(): void;
    _markForCheck(): void;
    static ngAcceptInputType_checked: BooleanInput;
    static ngAcceptInputType_disabled: BooleanInput;
    static ngAcceptInputType_vertical: BooleanInput;
    static ngAcceptInputType_disableRipple: BooleanInput;
}
export {};
