/*!
 * Copyright 2020 VMware, Inc.
 * SPDX-License-Identifier: BSD-2-Clause
 */
import { DebugElement, Type } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { TestElement } from './angular-widget-object';
import { BaseWidgetObject, FindableWidget } from './widget-object';
import { CorrectReturnTypes } from './widget-object';
/**
 * Knows how to find Angular objects in the DOM.
 */
export declare class AngularWidgetObjectFinder<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 a single widget object
     *
     * @param widgetConstructor - The constructor of the widget to use
     * @param ancestor - The parent DebugElement to begin the search from
     * @param cssSelector - The cssSelector to append to the tagName for the search
     *
     * @throws An error if the widget is not found or if there are multiple instances
     */
    find<W extends BaseWidgetObject<TestElement>, C extends FindableWidget<TestElement, W>>(widgetConstructor: C, ancestor?: DebugElement, cssSelector?: string): CorrectReturnTypes<InstanceType<C>, TestElement>;
    /**
     * Runs a change detection cycle.
     */
    detectChanges(): void;
}
