/**
 * Copyright (c) Microsoft Corporation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
export type TestItemStatus = 'none' | 'running' | 'scheduled' | 'passed' | 'failed' | 'skipped';
import type * as reporterTypes from '../../types/testReporter';
export type TreeItemBase = {
    kind: 'root' | 'group' | 'case' | 'test';
    id: string;
    title: string;
    location: reporterTypes.Location;
    duration: number;
    parent: TreeItem | undefined;
    children: TreeItem[];
    status: TestItemStatus;
};
export type GroupItem = TreeItemBase & {
    kind: 'group';
    subKind: 'folder' | 'file' | 'describe';
    hasLoadErrors: boolean;
    children: (TestCaseItem | GroupItem)[];
};
export type TestCaseItem = TreeItemBase & {
    kind: 'case';
    tests: reporterTypes.TestCase[];
    children: TestItem[];
    test: reporterTypes.TestCase | undefined;
    project: reporterTypes.FullProject | undefined;
    tags: Array<string>;
};
export type TestItem = TreeItemBase & {
    kind: 'test';
    test: reporterTypes.TestCase;
    project: reporterTypes.FullProject;
};
export type TreeItem = GroupItem | TestCaseItem | TestItem;
export declare class TestTree {
    rootItem: GroupItem;
    private _treeItemById;
    private _treeItemByTestId;
    readonly pathSeparator: string;
    constructor(rootFolder: string, rootSuite: reporterTypes.Suite | undefined, loadErrors: reporterTypes.TestError[], projectFilters: Map<string, boolean> | undefined, pathSeparator: string, hideFiles: boolean);
    private _addChild;
    filterTree(filterText: string, statusFilters: Map<string, boolean>, runningTestIds: Set<string> | undefined): void;
    private _fileItem;
    private _defaultDescribeItem;
    sortAndPropagateStatus(): void;
    flattenForSingleProject(): void;
    shortenRoot(): void;
    fileNames(): string[];
    flatTreeItems(): TreeItem[];
    treeItemById(id: string): TreeItem | undefined;
    collectTestIds(treeItem: TreeItem): {
        testIds: Set<string>;
        locations: Set<string>;
    };
}
export declare function sortAndPropagateStatus(treeItem: TreeItem): void;
export declare const statusEx: unique symbol;
//# sourceMappingURL=testTree.d.ts.map