import { Reportable } from './Reportable';
export interface ITrends {
    buildNumbers: string[];
    passedFeatures: number[];
    failedFeatures: number[];
    totalFeatures: number[];
    passedScenarios: number[];
    failedScenarios: number[];
    totalScenarios: number[];
    passedSteps: number[];
    failedSteps: number[];
    skippedSteps: number[];
    pendingSteps: number[];
    undefinedSteps: number[];
    totalSteps: number[];
    durations: number[];
}
export declare class Trends {
    private pBuildNumbers;
    private pPassedFeatures;
    private pFailedFeatures;
    private pTotalFeatures;
    private pPassedScenarios;
    private pFailedScenarios;
    private pTotalScenarios;
    private pPassedSteps;
    private pFailedSteps;
    private pSkippedSteps;
    private pPendingSteps;
    private pUndefinedSteps;
    private pTotalSteps;
    private pDurations;
    private constructor();
    private static validateArray;
    static defaultObject(): Trends;
    static fromJson(jsonData: ITrends): Trends;
    toJson(): ITrends;
    get buildNumbers(): string[];
    get passedFeatures(): number[];
    get failedFeatures(): number[];
    get totalFeatures(): number[];
    get passedScenarios(): number[];
    get failedScenarios(): number[];
    get totalScenarios(): number[];
    get passedSteps(): number[];
    get failedSteps(): number[];
    get skippedSteps(): number[];
    get pendingSteps(): number[];
    get undefinedSteps(): number[];
    get totalSteps(): number[];
    get durations(): number[];
    /**
     * Adds build into the trends.
     * @param buildNumber number of the build
     * @param reportable stats for the generated report
     */
    addBuild(buildNumber: string, reportable: Reportable): void;
    /**
     * Removes elements that points to the oldest items.
     * Leave trends unchanged if the limit is bigger than current trends length.
     *
     * @param limit number of elements that will be leave
     */
    limitItems(limit: number): void;
    private static copyLastElements;
    /**
     * Due to the error with old implementation where total features
     * were passed instead of failures (and vice versa) following correction must be applied for trends generated
     * between release 3.0.0 and 3.1.0.
     */
    private applyPatchForFeatures;
    /**
     * Since pending and undefined steps were added later
     * there is need to fill missing data for those statuses.
     */
    private fillMissingSteps;
    private fillMissingArray;
    /**
     * Since durations were added later there is need to fill missing data for those statuses.
     */
    private fillMissingDurations;
}
