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

declare const expect: (actual: any) => NgMatchers;
/**
 * Jasmine matchers that check Angular specific conditions.
 */
interface NgMatchers extends jasmine.Matchers<any> {
    /**
     * Expect the element to have exactly the given text.
     *
     * ## Example
     *
     * {@example testing/ts/matchers.ts region='toHaveText'}
     */
    toHaveText(expected: string): boolean;
    /**
     * Compare key:value pairs as matching EXACTLY
     */
    toHaveMap(expected: {
        [k: string]: string;
    }): boolean;
    /**
     * Expect the element to have the given CSS class.
     *
     * ## Example
     *
     * {@example testing/ts/matchers.ts region='toHaveCssClass'}
     */
    toHaveCssClass(expected: string): boolean;
    /**
     * Expect the element to have the given pairs of attribute name and attribute value
     */
    toHaveAttributes(expected: {
        [k: string]: string;
    }): boolean;
    /**
     * Expect the element to have the given CSS styles injected INLINE
     *
     * ## Example
     *
     * {@example testing/ts/matchers.ts region='toHaveStyle'}
     */
    toHaveStyle(expected: {
        [k: string]: string;
    } | string): boolean;
    /**
     * Expect the element to have the given CSS inline OR computed styles.
     *
     * ## Example
     *
     * {@example testing/ts/matchers.ts region='toHaveStyle'}
     */
    toHaveStyle(expected: {
        [k: string]: string;
    } | string): boolean;
    /**
     * Invert the matchers.
     */
    not: NgMatchers;
}
/**
 * NOTE: These custom JASMINE Matchers are used only
 *       in the Karma/Jasmine testing for the Layout Directives
 *       in `src/lib/flex/api`
 */
declare const customMatchers: jasmine.CustomMatcherFactories;

/**
 * @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<Type<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, customMatchers, expect, expectEl, expectNativeEl, makeCreateTestComponent, queryFor };
export type { ComponentClazzFn, NgMatchers };
