import { EventEmitter } from 'events';
import type { Page } from './Page.js';
export interface SerializedDOMNode {
    nodeType: string;
    tagName?: string;
    attributes?: Record<string, string>;
    children?: (SerializedDOMNode | null)[];
    index?: number;
    innerHTML?: string;
    position?: {
        x: number;
        y: number;
    };
    size?: {
        width: number;
        height: number;
    };
    textContent?: string;
    _meta: {
        selector: string;
        rootSelector?: string;
    };
}
export declare class Node extends EventEmitter {
    protected _serialized: SerializedDOMNode;
    protected _page: Page;
    protected _children: Node[];
    constructor(serialized: SerializedDOMNode, page: Page);
    get nodeType(): number;
    get nodeName(): string;
    get nodeValue(): string | null;
    get tagName(): string;
    get textContent(): string | null;
    private isBlockElement;
    get innerText(): string | null;
    get innerHTML(): string | undefined;
    get childNodes(): Node[];
    get firstChild(): Node | null;
    get lastChild(): Node | null;
    getAttribute(name: string): string | null;
    hasAttribute(name: string): boolean;
    click(options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    type(text: string, options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    focus(options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    blur(options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    hover(options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    scrollIntoView(options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    setValue(value: string | boolean, options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    dispatchEvent(eventName: string, detail?: unknown, options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void | -1>;
    dragTo(target: Node | string, options?: {
        waitForNavigation?: 'load' | 'change' | 'domcontentloaded' | 'networkidle0' | 'networkidle2';
    }): Promise<void>;
    $(selector: string): Promise<Node | null>;
    $$(selector: string): Promise<Node[]>;
    querySelector(selector: string): Promise<Node | null>;
    querySelectorAll(selector: string): Promise<Node[]>;
    getBoundingClientRect(): {
        x: number;
        y: number;
        width: number;
        height: number;
    };
}
