import { E2EPage } from '@stencil/core/testing';
import * as axe from 'axe-core';
declare global {
    interface Window {
        axe: typeof axe;
    }
}
export interface NanoE2EPage extends E2EPage, Pick<PuppeteerPage, 'screenshot' | 'viewport'> {
    reportA11y: (contextQuery?: string) => Promise<string>;
}
type NanoE2EPageOptions = {
    html: string;
    viewportWidth: number;
    viewportHeight?: number;
    dir: 'ltr' | 'rtl';
    padding?: string;
};
export declare class E2EPlayGround<T> {
    props: Partial<T>;
    viewportHeight: number;
    /** element template string. Add `{{ attrs }}` to place the attributes */
    template: string;
    cssVars: {
        [key: string]: string;
    };
    viewportWidth: number;
    page: NanoE2EPage;
    tag: string;
    constructor(setup: {
        template: string;
        tag: string;
    } | string);
    private get attrs();
    private get css();
    newPage(props?: Partial<T>, docOpts?: {
        dir?: 'rtl' | 'ltr';
        padding?: string;
    }): Promise<NanoE2EPage>;
    reportA11y(): Promise<string>;
    component(): Promise<import("@stencil/core/testing").E2EElement>;
    componentQuery(selectorStr: string, shadow?: boolean): Promise<any>;
}
export declare function getFocusedElement(page: E2EPage, shadowEleSelector?: string): Promise<any>;
export declare function clickOnElement(page: E2EPage, elem: ElementHandle<Element>, x?: number, y?: number): Promise<void>;
export declare function createPage(optionsOrHtml?: string | NanoE2EPageOptions): Promise<NanoE2EPage>;
export declare const kebabize: (str: any) => any;
export declare const screenshotSettings: (dirname: string) => MatchImageSnapshotOptions;
export declare const waitForVisibleSnippet: (selector: any) => string;
export declare const stringifyFormSnippet = "\n<div id=\"form-result\"></div>\n<script>\n  var form = document.querySelector('form');\n  var result = document.querySelector('#form-result');\n  form.addEventListener('submit', (e) => {\n    e.preventDefault();\n    var data = new FormData(event.target);\n    var object = {};\n    data.forEach((value, key) => {\n        // Reflect.has in favor of: object.hasOwnProperty(key)\n        if(!Reflect.has(object, key)){\n            object[key] = value;\n            return;\n        }\n        if(!Array.isArray(object[key])){\n            object[key] = [object[key]];\n        }\n        object[key].push(value);\n    });\n    result.innerHTML = JSON.stringify(object);\n  })\n</script>";
export {};
