import { GlobalSettings } from '../shared/globals';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
import { Broadcaster, Logger } from 'ngx-base';
import { AuthenticationService } from 'ngx-login-client';
import { Spaces } from 'ngx-fabric8-wit';
import { Notifications } from 'ngx-base';
import { IterationModel, IterationUI } from '../models/iteration.model';
import { HttpService } from './http-service';
import { WorkItem } from '../models/work-item';
export declare class IterationService {
    private logger;
    private http;
    private auth;
    private globalSettings;
    private broadcaster;
    private spaces;
    private notifications;
    iterations: IterationModel[];
    private transformedIterations;
    private headers;
    private _currentSpace;
    private selfId;
    dropWIObservable: Subject<{
        workItem: WorkItem;
        error: boolean;
    }>;
    createIterationObservable: Subject<IterationModel>;
    constructor(logger: Logger, http: HttpService, auth: AuthenticationService, globalSettings: GlobalSettings, broadcaster: Broadcaster, spaces: Spaces, notifications: Notifications);
    notifyError(message: string, httpError: any): void;
    createId(): string;
    /**
     * getIteration - We call this service method to fetch
     * @param iterationUrl - The url to get all the iteration
     * @return Promise of IterationModel[] - Array of iterations.
     */
    getIterations(): Observable<IterationModel[]>;
    /**
     * getIteration - We call this service method to fetch
     * @param iterationUrl - The url to get all the iteration
     * @return Promise of IterationModel[] - Array of iterations.
     */
    getIterations2(iterationUrl: any): Observable<IterationModel[]>;
    /**
     * Create new iteration
     * @param iterationUrl - POST url
     * @param iteration - data to create a new iteration
     * @return new item
     */
    createIteration(iteration: IterationModel, parentIteration: IterationModel): Observable<IterationModel>;
    /**
     * Update an existing iteration
     * @param iteration - Updated iteration
     * @return updated iteration's reference from the list
     */
    updateIteration(iteration: IterationModel): Observable<IterationModel>;
    isRootIteration(parentPath: string): boolean;
    getRootIteration(): Observable<IterationModel>;
    getIteration(iteration: any): Observable<IterationModel>;
    getIterationById(iterationId: string): Observable<IterationModel>;
    getWorkItemCountInIteration(iteration: any): Observable<number>;
    emitDropWI(workItem: WorkItem, err?: boolean): void;
    checkForChildIterations(parent: IterationModel, iterations: any): IterationModel[];
    checkForChildIterations2(parent: IterationUI, iterations: IterationUI[]): IterationUI[];
    getTopLevelIterations(iterations: any): IterationModel[];
    getTopLevelIterations2(iterations: IterationUI[]): IterationUI[];
    isTopLevelIteration(iteration: any): Boolean;
    getDirectParent(iteration: any, iterations: any): IterationModel;
    emitCreateIteration(iteration: IterationModel): void;
    resetIterations(): void;
}
