import type { UiObserverRef } from '@farmslot/protocol'; import { type UiPoint } from '../adapters/gesture.js'; import type { StandardUiAction, UiActionTransport } from '../adapters/ui.js'; import type { ActionExecutionContext, RecipeObservationResult } from '../core/types.js'; export declare function sleep(ms: number): Promise; export declare function dataTestId(testId: string): string; export interface CdpTargetInfo { id: string; type: string; title?: string; url?: string; webSocketDebuggerUrl?: string; devtoolsFrontendUrl?: string; description?: string; } export interface RetryJsonGetOptions { timeoutMs?: number; intervalMs?: number; } export interface JsonGetOptions { timeoutMs?: number; } export interface SelectCdpTargetOptions { host?: string; port: number; type?: string; urlIncludes?: string; titleIncludes?: string; predicate?: (target: CdpTargetInfo) => boolean; } interface CdpCallOptions { timeoutMs?: number; } export declare function jsonGet(url: string, options?: JsonGetOptions): Promise; export declare function retryJsonGet(url: string, options?: RetryJsonGetOptions): Promise; export declare function listCdpTargets(host: string, port: number): Promise; export declare function selectCdpTarget(options: SelectCdpTargetOptions): Promise; export type CdpEventHandler = (params: Record) => void; export declare class CdpSession { #private; private constructor(); static connect(webSocketDebuggerUrl: string, options?: { timeoutMs?: number; }): Promise; call(method: string, params?: Record, options?: CdpCallOptions): Promise; on(method: string, handler: CdpEventHandler): () => void; close(): void; } export interface CdpCompositorProbe { status: 'ready' | 'suspended' | 'not-interactive'; frameAdvanced: boolean; interactiveTargetFound: boolean; hitTestOk: boolean | null; reason?: string; } interface CdpCallSession { call(method: string, params?: Record, options?: CdpCallOptions): Promise; } /** * Distinguish a reachable JavaScript context from a renderable, interactive * browser page. Hardened pages are retried in an isolated world so page policy * cannot hide requestAnimationFrame from the readiness probe. Navigation races * return a suspended report rather than rejecting the probe. */ export declare function probeCdpCompositorInteractivity(session: CdpCallSession, timeoutMs?: number): Promise; export declare class CdpWebPage { readonly session: CdpSession; constructor(session: CdpSession); static connectToTarget(target: CdpTargetInfo): Promise; navigate(url: string, timeoutMs?: number): Promise; private currentNavigationUrl; private waitForNavigationUrlChange; waitForDocumentReady(options: { expectedUrl?: string; timeoutMs?: number; }): Promise; waitForDomSettled(timeoutMs?: number): Promise; evaluate(expression: string): Promise; evaluateInIsolatedWorld(expression: string, worldName: string): Promise; click(selector: string): Promise; clickText(text: string): Promise; setInput(selector: string, value: string): Promise; keyPress(key: string): Promise; clickPoint(x: number, y: number): Promise; resolveGesturePoint(target: string | UiPoint): Promise; scroll(options: { selector?: string; deltaX?: number; deltaY?: number; intoView?: boolean; }): Promise; waitFor(options: { selector?: string; text?: string; expected?: string; timeoutMs?: number; }): Promise; waitForSelector(selector: string, options?: { timeoutMs?: number; }): Promise; waitForExpression(expression: string, options?: { timeoutMs?: number; }): Promise; screenshot(context?: ActionExecutionContext, relPath?: string, metadata?: Record): Promise; observe(refs: readonly UiObserverRef[]): Promise; close(): void; } export interface CdpWebUiTransportInput { action: StandardUiAction; node: Record; context: ActionExecutionContext; } export interface CreateCdpWebUiTransportOptions { getPage?(input: CdpWebUiTransportInput): Promise; withPage?(input: CdpWebUiTransportInput, callback: (page: CdpWebPage) => Promise): Promise; } export declare function createCdpWebUiTransport(options: CreateCdpWebUiTransportOptions): UiActionTransport; export declare function selectorForUiInput(node: Record): string | undefined; export {}; //# sourceMappingURL=cdp.d.ts.map