/*!
 * Copyright 2020 VMware, Inc.
 * SPDX-License-Identifier: BSD-2-Clause
 */
import { DebugElement, Type } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { FindableWidget, FindParams } from './widget-object';
/**
 * Finds instances that implement {@link FindableWidget}
 * H is the host component's type
 */
export declare class AngularWidgetFinder<H = unknown> {
    /**
     * We don't care or could possibly know the type of fixture
     */
    private fixture;
    /**
     * If you need direct access to manipulate the host
     */
    hostComponent: H;
    /**
     * @param componentConstructor The host component to be created as the root of the tests's fixture
     */
    constructor(arg: Type<H> | ComponentFixture<H>);
    /**
     * Finds widgets within a fixture
     * @return A Potentially empty list of widgets matching the given specs
     */
    findWidgets<C, T extends FindableWidget<C>>(params: FindParams<T> | T, parent?: DebugElement): InstanceType<T>[];
    /**
     * Finds a single widget object
     * @throws An error if the widget is not found or if there are multiple instances
     */
    find<C, T extends FindableWidget<C>>(params: FindParams<T> | T, parent?: DebugElement): InstanceType<T>;
    detectChanges(): void;
}
/**
 * Can be used in tests that use `this` to share a finder with before/AfterEach instead of leaky closures
 */
export interface HasAngularFinder {
    finder: AngularWidgetFinder;
}
