import { Store } from '@ngrx/store';
import { UserService } from 'ngx-login-client';
import { Observable } from 'rxjs';
import { AppState } from './../states/app.state';
import { AreaModel, AreaQuery, AreaUI } from './area.model';
import { Mapper, MapTree, modelService } from './common.model';
import { IterationModel, IterationQuery, IterationUI } from './iteration.model';
import { LabelModel, LabelQuery, LabelUI } from './label.model';
import { UserQuery, UserUI } from './user';
import { WorkItemType, WorkItemTypeQuery, WorkItemTypeUI } from './work-item-type';
export declare class Event extends modelService {
    attributes: EventAttributes;
    relationships: EventRelationships;
}
export declare class EventAttributes {
    name: string;
    newValue?: string | null | any[];
    oldValue?: string | null | any[];
    timestamp: string;
}
export declare class EventRelationships {
    modifier: {
        data: {
            id: string;
            links: {
                related: string;
            };
            type: string;
        };
    };
    newValue?: {
        data?: AreaModel[] | IterationModel[] | WorkItemType[] | UserService[] | LabelModel[];
    };
    oldValue?: {
        data?: AreaModel[] | IterationModel[] | WorkItemType[] | UserService[] | LabelModel[];
    };
}
export interface EventUI {
    name: string;
    timestamp: string;
    newValue: string | null;
    oldValue: string | null;
    modifierId: string;
    modifier?: Observable<UserUI>;
    newValueRelationships: any;
    oldValueRelationships: any;
    newValueRelationshipsObs?: Observable<IterationUI | AreaUI | WorkItemTypeUI | UserUI>[] | Observable<LabelUI[]>;
    oldValueRelationshipsObs?: Observable<IterationUI | AreaUI | WorkItemTypeUI | UserUI>[] | Observable<LabelUI[]>;
    type: string | null;
}
export interface EventService extends Event {
}
export declare class EventMapper implements Mapper<EventService, EventUI> {
    constructor();
    serviceToUiMapTree: MapTree;
    uiToServiceMapTree: MapTree;
    toUIModel(arg: EventService): EventUI;
    toServiceModel(arg: EventUI): EventService;
}
export declare class EventQuery {
    private store;
    private userQuery;
    private iterationQuery;
    private areaQuery;
    private labelQuery;
    private workitemTypeQuery;
    private eventSource;
    constructor(store: Store<AppState>, userQuery: UserQuery, iterationQuery: IterationQuery, areaQuery: AreaQuery, labelQuery: LabelQuery, workitemTypeQuery: WorkItemTypeQuery);
    getEventsWithModifier(): Observable<EventUI[]>;
}
