import { Spy } from "./spy";
declare type Option = {
    html?: string;
    url?: string;
    width?: number;
    height?: number;
};
declare type Result = {
    description: string;
    result: boolean;
    error?: unknown;
};
export declare class BrowserTester {
    private html;
    private url;
    private width?;
    private height?;
    private iframe;
    private tests;
    private expects;
    private beforeAllCallbacks;
    private afterAllCallbacks;
    private beforeEachCallbacks;
    private afterEachCallbacks;
    constructor({ html, url, width, height, }: Option);
    spyOn<T extends string>(obj: Record<T, Function>, key: T): Spy<T>;
    setBrowserSize(width: number, height: number): void;
    beforeAll(callback: (window: Window, doc: Document) => Promise<void>): void;
    afterAll(callback: (window: Window, doc: Document) => Promise<void>): void;
    beforeEach(callback: (window: Window, doc: Document) => Promise<void>): void;
    afterEach(callback: (window: Window, doc: Document) => Promise<void>): void;
    test(description: string, callback: (window: Window, doc: Document, iframe: HTMLIFrameElement) => Promise<void>): void;
    it(description: string, callback: (window: Window, doc: Document, iframe: HTMLIFrameElement) => Promise<void>): void;
    expect(...args: unknown[]): {
        toBe: (...value: unknown[]) => void;
        toBeTruthy: (...value: unknown[]) => void;
        toBeFalsy: (...value: unknown[]) => void;
        toBeNull: (...value: unknown[]) => void;
        toBeUndefined: (...value: unknown[]) => void;
        toBeDefined: (...value: unknown[]) => void;
        toBeNaN: (...value: unknown[]) => void;
        toMatch: (...value: unknown[]) => void;
        toContain: (...value: unknown[]) => void;
        toBeLessThan: (...value: unknown[]) => void;
        toBeGreaterThan: (...value: unknown[]) => void;
        toBeLessThanOrEqual: (...value: unknown[]) => void;
        toBeGreaterThanOrEqual: (...value: unknown[]) => void;
        toBeInstanceOf: (...value: unknown[]) => void;
        toHaveBeenCalled: (...value: unknown[]) => void;
        toHaveBeenCalledWith: (...value: unknown[]) => void;
        toThrow: (...value: unknown[]) => void;
    } & {
        not: {
            toBe: (...value: unknown[]) => void;
            toBeTruthy: (...value: unknown[]) => void;
            toBeFalsy: (...value: unknown[]) => void;
            toBeNull: (...value: unknown[]) => void;
            toBeUndefined: (...value: unknown[]) => void;
            toBeDefined: (...value: unknown[]) => void;
            toBeNaN: (...value: unknown[]) => void;
            toMatch: (...value: unknown[]) => void;
            toContain: (...value: unknown[]) => void;
            toBeLessThan: (...value: unknown[]) => void;
            toBeGreaterThan: (...value: unknown[]) => void;
            toBeLessThanOrEqual: (...value: unknown[]) => void;
            toBeGreaterThanOrEqual: (...value: unknown[]) => void;
            toBeInstanceOf: (...value: unknown[]) => void;
            toHaveBeenCalled: (...value: unknown[]) => void;
            toHaveBeenCalledWith: (...value: unknown[]) => void;
            toThrow: (...value: unknown[]) => void;
        };
    };
    clearTests(): void;
    evaluate(code: string, args?: Record<string, unknown>): void;
    run(): Promise<Result[]>;
}
export {};
