import { Callstack } from "./callstack";
import { BrowserConfig } from "../../config/browser-config";
import type { Test, TestStep } from "../../types";
export interface PromiseRef<T = unknown> {
    current: Promise<T>;
}
export declare const shouldPropagateFn: (parentNode: TestStep, currentNode: TestStep) => boolean;
interface HooksData {
    session: WebdriverIO.Browser;
    snapshotsPromiseRef: PromiseRef;
    callstack: Callstack;
    config: BrowserConfig;
}
interface RequestDomSnapshotsData extends HooksData {
    attempt?: number;
    currentTest?: Test;
}
export declare const runWithoutHistory: <T>(_: unknown, fn: () => T) => Promise<T>;
export declare const requestDomSnapshots: ({ session, callstack, snapshotsPromiseRef, config, attempt, currentTest, }: RequestDomSnapshotsData) => void;
type CleanupDomSnapshotsData = Pick<HooksData, "session" | "callstack">;
export declare const cleanupDomSnapshots: ({ session, callstack }: CleanupDomSnapshotsData) => Promise<void>;
export declare const runGroup: <T>({ session, callstack, snapshotsPromiseRef, config }: HooksData, name: string, fn: () => T) => T;
interface InitHistoryResult {
    callstack: Callstack;
    snapshotsPromiseRef: PromiseRef;
}
export declare const initCommandHistory: (session: WebdriverIO.Browser, config: BrowserConfig) => InitHistoryResult;
export {};
