import { OnInit, ChangeDetectorRef, QueryList, EventEmitter, AfterContentInit } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
/** toggle button value type */
export interface ButtonGroupValue {
    /** current toggle button value */
    currentValue: any;
    /** all toogled button value, this is usually an array */
    value: any;
}
/** toogle button group item type */
export interface ButtongGroupItem {
    value: string;
    text: string;
    checked?: boolean;
    disabled?: boolean;
}
/**
 * Button Group Component
 */
export declare class ButtonGroupComponent implements ControlValueAccessor, AfterContentInit, OnInit {
    private _cd;
    /**
     * button group change event, emit the `ButtonGroupValue`
     * , which with the `currentValue` and `value` property
     */
    change: EventEmitter<ButtonGroupValue>;
    /**
     * button group type, either 'radio' or 'checkbox'
     * @default checkbox
     */
    type: 'radio' | 'checkbox';
    /**
     * button group datasource, when datasource exists, the inner toggle buttons will be overwrited
     * using datasource, you can't use html tags in toggle button
     */
    datasource: ButtongGroupItem[];
    /**
     * button group value, can be any type
     */
    value: any;
    /**
     * Whether the button group is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * @docs-private
     */
    disabledChange: EventEmitter<boolean>;
    /**
     * button toggle content children
     */
    _contentButtonList: QueryList<ButtonToggleComponent>;
    /**
     * button toggle view children
     */
    _viewButtonList: QueryList<ButtonToggleComponent>;
    constructor(_cd: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    _disableButtonList(groupDisabled: boolean): void;
    _getButtonList(): QueryList<ButtonToggleComponent>;
    /**
     * set children toggle button checked state
     *
     * @param {any} value - current toggle button value
     * @docs-private
     */
    select(value: any): void;
    /**
     * 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
     */
    _updateFormModel(): void;
    /**
     * force update box group value
     *
     * @param {any[]} value
     * @returns
     */
    _forceUpdateValue(value: any[]): void;
}
/**
 * A single toggle button, usually used in `nb-button-group`,
 * like checkbox, it has a associated value and can be checked and disabled
 */
export declare class ButtonToggleComponent {
    /** toggle event, emit a boolean value */
    toggle: EventEmitter<boolean>;
    /**
     * toggle button's value, can be any type
     * @default ''
     */
    value: any;
    /**
     * Whether toggle button is checked
     * @default false
     */
    checked: boolean;
    /**
     * Whether toggle button is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * Reference to the wrapped parent button group component
     * @docs-private
     */
    buttonGroup: ButtonGroupComponent;
    /**
     * Creates an instance of ButtonToggleComponent.
     * @param {ButtonGroupComponent?} buttonGroup - the optional wrapped parent button group component
     */
    constructor(buttonGroup: ButtonGroupComponent);
    /**
     * Toggle event
     *
     * @docs-private
     */
    onToggle(): void;
}
