import { MemoizedSelector, Store } from '@ngrx/store';
import { Observable } from 'rxjs';
import { FilterService } from './../services/filter.service';
import { BoardViewState } from './../states/app.state';
import { AppState } from './../states/index.state';
import { Mapper, MapTree } from './common.model';
import { SpaceQuery } from './space';
import { WorkItemQuery, WorkItemUI } from './work-item';
export declare class BoardModelData {
    id: string;
    attributes: {
        name: string;
        description: string;
        contextType: string;
        context: string;
        'created-at': string;
        'updated-at': string;
    };
    relationships: {
        spaceTemplate: {
            data: {
                id: string;
                type: string;
            };
        };
        columns: {
            data?: {
                id: string;
                type: string;
            }[];
        };
    };
    type: string;
}
export declare class BoardModel {
    data: BoardModelData[];
    included: ({
        attributes: {
            id: string;
            name: string;
        };
        columnOrder: 0;
        type: string;
    } | any)[];
}
export declare class BoardModelUI {
    id: string;
    name: string;
    description: string;
    contextType: string;
    context: string;
    columns: {
        id: string;
        title: string;
        columnOrder: number;
        type: string;
        workItems?: Observable<WorkItemUI[]>;
    }[];
}
export declare class BoardMapper implements Mapper<BoardModelData, BoardModelUI> {
    serviceToUiMapTree: MapTree;
    uiToServiceMapTree: MapTree;
    toUIModel(arg: BoardModelData): BoardModelUI;
    toServiceModel(arg: BoardModelUI): BoardModelData;
}
export declare const boardSelector: MemoizedSelector<object, BoardViewState>;
export declare const boardsEntitySelector: MemoizedSelector<object, import("src/app/states/board.state").BoardState>;
export declare class BoardQuery {
    private store;
    private columnWorkItemQuery;
    private spaceQuery;
    private filterService;
    private boardSource;
    constructor(store: Store<AppState>, columnWorkItemQuery: ColumnWorkItemQuery, spaceQuery: SpaceQuery, filterService: FilterService);
    getBoardById(id: string, iterationID?: string): Observable<BoardModelUI>;
}
export declare class ColumnWorkItemQuery {
    private store;
    private workItemQuery;
    private columnWorkitems;
    private columnWorkitemSource;
    constructor(store: Store<AppState>, workItemQuery: WorkItemQuery);
    getWorkItemsByColumnId(id: string): Observable<WorkItemUI[]>;
}
export declare class BoardUIQuery {
    private store;
    private boardUiSelector;
    constructor(store: Store<AppState>);
    readonly boardLocked: Observable<boolean>;
}
