import { Type, DebugElement } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
/**
 * Exported DOM accessor utility functions
 */
declare const _dom: {
    hasStyle: typeof hasStyle;
    getDistributedNodes: typeof getDistributedNodes;
    getShadowRoot: typeof getShadowRoot;
    getText: typeof getText;
    getStyle: typeof getStyle;
    childNodes: typeof childNodes;
    childNodesAsList: typeof childNodesAsList;
    hasClass: typeof hasClass;
    hasAttribute: typeof hasAttribute;
    getAttribute: typeof getAttribute;
    hasShadowRoot: typeof hasShadowRoot;
    isCommentNode: typeof isCommentNode;
    isElementNode: typeof isElementNode;
    isPresent: typeof isPresent;
    isShadowRoot: typeof isShadowRoot;
    tagName: typeof tagName;
    lastElementChild: typeof lastElementChild;
};
declare function getStyle(element: any, stylename: string): string;
declare function hasStyle(element: any, styleName: string, styleValue?: string, inlineOnly?: boolean): boolean;
declare function getDistributedNodes(el: HTMLElement): Node[];
declare function getShadowRoot(el: HTMLElement): DocumentFragment;
declare function getText(el: Node): string;
declare function childNodesAsList(el: Node): any[];
declare function hasClass(element: any, className: string): boolean;
declare function hasAttribute(element: any, attributeName: string): boolean;
declare function getAttribute(element: any, attributeName: string): string;
declare function childNodes(el: any): Node[];
declare function hasShadowRoot(node: any): boolean;
declare function isCommentNode(node: Node): boolean;
declare function isElementNode(node: Node): boolean;
declare function isShadowRoot(node: any): boolean;
declare function isPresent(obj: any): boolean;
declare function tagName(element: any): string;
declare function lastElementChild(element: any): Node | null;

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

type ComponentClazzFn = () => Type<any>;
/**
 * Function generator that captures a Component Type accessor and enables
 * `createTestComponent()` to be reusable for *any* captured Component class.
 */
declare function makeCreateTestComponent(getClass: ComponentClazzFn): (template: string, styles?: any) => ComponentFixture<any>;
/**
 *
 */
declare function expectNativeEl(fixture: ComponentFixture<any>, instanceOptions?: any): any;
/**
 *
 */
declare function expectEl(debugEl: DebugElement): any;
declare function queryFor(fixture: ComponentFixture<any>, selector: string): DebugElement[];

export { _dom, expectEl, expectNativeEl, makeCreateTestComponent, queryFor };
export type { ComponentClazzFn };
