import { MemoizedSelector, Store } from '@ngrx/store';
import { Observable } from 'rxjs';
import { AppState } from './../states/app.state';
import { Mapper, MapTree, modelService, modelUI } from './common.model';
export declare class GroupTypesModel extends modelService {
    attributes: WITGroupAttributes;
    links?: {
        related: string;
    };
    relationships?: WorkItemRelations;
}
export declare class WITGroupAttributes {
    bucket: string;
    level: number[];
    icon: string;
    sublevel?: number;
    group: string;
    name: string;
    ['show-in-sidebar']: boolean;
    description: string;
}
export declare class WorkItemRelations {
    defaultType?: {
        data?: object;
        links?: object;
    };
    nextGroup?: {
        data?: object;
        links?: object;
    };
    spaceTemplate?: {
        data?: object;
        links?: object;
    };
    typeList?: {
        data?: TypeListData[];
    };
}
export declare class TypeListData {
    id: string;
    workitemtype: string;
}
export interface GroupTypeService extends GroupTypesModel {
}
export interface GroupTypeUI extends modelUI {
    bucket: string;
    level: number[];
    icon: string;
    sublevel?: number;
    group: string;
    selected: boolean;
    showInSideBar: boolean;
    typeList: TypeListData[];
    description: string;
}
export declare class GroupTypeMapper implements Mapper<GroupTypeService, GroupTypeUI> {
    serviceToUiMapTree: MapTree;
    uiToServiceMapTree: MapTree;
    toUIModel(arg: GroupTypeService): GroupTypeUI;
    toServiceModel(arg: GroupTypeUI): GroupTypeService;
}
export declare const groupTypeSelector: MemoizedSelector<object, GroupTypeUI[]>;
export declare class GroupTypeQuery {
    private store;
    constructor(store: Store<AppState>);
    readonly getGroupTypes: Observable<GroupTypeUI[]>;
    readonly getFirstGroupType: Observable<GroupTypeUI>;
}
