import { AbstractJigsawComponent } from "../common";
import { ControlValueAccessor } from "@angular/forms";
import { AfterContentInit, ChangeDetectorRef, EventEmitter, OnDestroy, QueryList } from "@angular/core";
import { CallbackRemoval } from "../../core/utils/common-utils";
import { ArrayCollection } from "../../core/data/array-collection";
export declare class GroupOptionValue {
    [index: string]: any;
    disabled?: boolean;
}
export declare class AbstractJigsawGroupComponent extends AbstractJigsawComponent implements ControlValueAccessor, AfterContentInit, OnDestroy {
    protected _removeRefreshCallback: CallbackRemoval;
    valid: boolean;
    private _trackItemBy;
    trackItemBy: string | string[];
    multipleSelect: boolean;
    protected _selectedItems: ArrayCollection<any>;
    selectedItems: ArrayCollection<any> | any[];
    private _removeInvalidSelectedItems();
    selectedItemsChange: EventEmitter<any[]>;
    protected _items: QueryList<AbstractJigsawOptionComponent>;
    protected _updateSelectItems(itemValue: any, selected: any): void;
    protected _updateSelectItemsForForm(itemValue: any, selected: any): void;
    update(itemValue: any, selected: any): void;
    protected _setItemState(items: QueryList<AbstractJigsawOptionComponent>): void;
    private _subscribeItemSelectedChange(items);
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    protected _propagateChange: any;
    protected _setSelectedItems(newValue: any): void;
    writeValue(newValue: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
}
export declare class AbstractJigsawOptionComponent extends AbstractJigsawComponent {
    value: any;
    disabled: boolean;
    selectedChange: EventEmitter<boolean>;
    selected: boolean;
    change: EventEmitter<AbstractJigsawOptionComponent>;
    changeDetector: ChangeDetectorRef;
}
