import { Template } from "./template.js";
import { DocumentLoadState, ExtractResult, ExtractState, Select, Transform, YieldLocator, YieldNavigate, YieldParams, YieldScreenshot } from "./package/index.js";
export interface NavigateResult {
    status?: number;
}
export interface HostOptions {
    template: Template;
    url?: string;
    params?: Record<string, unknown>;
    unwrap?: boolean;
    debug?: boolean;
    extractHtml?: boolean;
    maxYields?: number;
    retries?: number;
    retryDelay?: number[];
    onExtract?: (state: ExtractState, script: string) => Promise<ExtractState>;
    onGoback?: (options: {
        timeout?: number;
        waitUntil?: DocumentLoadState;
    }) => Promise<NavigateResult>;
    onHtml?: () => Promise<string>;
    onLocator?: (options: YieldLocator) => Promise<unknown>;
    onNavigate?: (options: YieldNavigate & {
        timeout?: number;
        waitUntil?: DocumentLoadState;
    }) => Promise<NavigateResult>;
    onReload?: (options: {
        timeout?: number;
        waitUntil?: DocumentLoadState;
    }) => Promise<NavigateResult>;
    onScreenshot?: (options: YieldScreenshot) => Promise<void>;
    onYield?: (params: YieldParams) => Promise<void>;
}
export declare function host({ maxYields, retries, retryDelay, ...options }: HostOptions): Promise<ExtractResult>;
export declare function expandTemplateUrl(url: string, params?: Record<string, unknown>): string;
export declare function invokeAsyncMethod(obj: {}, method: string, args?: unknown[]): Promise<unknown>;
export interface AttemptOptions {
    retries: number;
}
export declare const script = "";
export type EvaluateArg = ExtractState | {
    select: Select[];
} | {
    transform: Transform[];
} | {
    sync: ExtractState;
};
export type EvaluateResult = ExtractState;
export type EvaluateFunction = (arg: EvaluateArg) => Promise<EvaluateResult>;
