/**
 * Human-like behavioral layer for cloakbrowser — Puppeteer edition.
 *
 * Mirrors Playwright humanize architecture, adapted for Puppeteer API.
 *
 * Patches ALL native Puppeteer interaction surfaces:
 *
 * PAGE-LEVEL:
 *   click (with clickCount support for dblclick), hover, type,
 *   select, focus, tap, goto
 *
 * MOUSE:
 *   move, click (with clickCount support for dblclick), wheel,
 *   dragAndDrop
 *
 * KEYBOARD:
 *   type, down, up, press, sendCharacter
 *
 * FRAME-LEVEL:
 *   click, hover, type, select, focus, tap
 *   + $, $$, waitForSelector (return patched ElementHandles)
 *
 * ELEMENTHANDLE-LEVEL (Puppeteer-specific, no Playwright equivalent):
 *   click (with clickCount), hover, type, press, tap, select,
 *   focus, drop, dragAndDrop
 *   + $, $$, waitForSelector (nested elements are also patched)
 *
 * BROWSER-LEVEL:
 *   newPage, createBrowserContext / createIncognitoBrowserContext,
 *   targetcreated event
 *
 * Stealth-aware:
 *   - isInputElement / isSelectorFocused use CDP Isolated Worlds
 *   - Shift symbol typing uses CDP Input.dispatchKeyEvent (isTrusted=true)
 *   - ElementHandle isInput check uses CDP DOM.describeNode (no JS execution)
 *   - Falls back to page.evaluate only when CDP session is unavailable
 *
 * Puppeteer-specific adaptations:
 *   - page.createCDPSession() instead of context.newCDPSession(page)
 *   - page.viewport() instead of page.viewportSize()
 *   - page.$(selector) instead of page.locator(selector)
 *   - keyboard.sendCharacter() mapped via RawKeyboard.insertText
 *   - mouse.wheel({deltaX, deltaY}) object form adapted to (dx, dy)
 *   - page.select() instead of page.selectOption()
 *   - ElementHandle prototype patching (Puppeteer-only)
 *   - No page.dblclick() — Puppeteer uses click({clickCount:2})
 */
import type { Browser, Page } from 'puppeteer-core';
import type { HumanConfig } from '../human/config.js';
export type { HumanConfig } from '../human/config.js';
export { resolveConfig, mergeConfig } from '../human/config.js';
export { humanMove, humanClick, clickTarget, humanIdle } from '../human/mouse.js';
export { humanType } from './keyboard.js';
export { scrollToElement, humanScrollIntoView } from './scroll.js';
declare class CursorState {
    x: number;
    y: number;
    initialized: boolean;
}
declare function patchPage(page: Page, cfg: HumanConfig, cursor: CursorState): void;
export declare function patchBrowser(browser: Browser, cfg: HumanConfig): void;
export { patchPage };
//# sourceMappingURL=index.d.ts.map