import type { WebExecutionTarget } from "@qawolf/flow-targets"; import type { FlowContextWithTest, FlowTest } from "../flowContextTypes.js"; import type { Dependencies } from "./dependencies.js"; import { type WebSupportedPresetLiteral } from "./flowTarget.js"; import { type LaunchOptions, type LaunchResult } from "./runtime.js"; type WebDependencies = Omit & { launch: (options?: LaunchOptions) => Promise; launchWithGpu: (options?: LaunchOptions) => Promise; }; type EmptyRecord = Record; type LaunchInputFor = TargetInput extends { launch?: infer LaunchInput; } ? LaunchInput : undefined; type TargetFor = TargetInput extends { target: infer Target; } ? Target : TargetInput; type IsElectronTargetInput = TargetFor extends "Electron" | { meta: { kind: "electron"; }; } ? true : false; export type LegacyFlowContext = FlowContextWithTest; export type BrowserLaunchFlowContext = { browser?: Extract["browser"]; context: Extract["context"]; page: Extract["page"]; }; export type ElectronLaunchFlowContext = { page: Awaited>["firstWindowPage"]; }; type LaunchFlowContextFor = Exclude, false | undefined> extends never ? EmptyRecord : IsElectronTargetInput extends true ? ElectronLaunchFlowContext : BrowserLaunchFlowContext; export type FlowContextFor = LegacyFlowContext & LaunchFlowContextFor; export type FlowContext = LegacyFlowContext & Partial & Partial; export type TestContext = Omit; export declare const testContextDependencies: readonly ["devices", "failWithoutRetry", "fetchLatestEnvironmentVariables", "getInbox", "getOTP", "inputs", "isGpuAvailable", "launch", "launchElectron", "launchWithGpu", "mountCifsShare", "OTPAuth", "qawolf", "readQRCode", "runCommand", "saveBaselineScreenshot", "selectors", "setEnvironmentVariable", "setOutput", "startOpenVpn", "startWireGuard", "workflowInputs"]; export declare function makeLegacyFlowContext({ dependencies, target, test, }: { dependencies: Dependencies; target: WebExecutionTarget | WebSupportedPresetLiteral; test?: FlowTest; }): LegacyFlowContext; export declare function makeBrowserLaunchFlowContext({ browser, context, dependencies, page, target, test, }: { browser?: BrowserLaunchFlowContext["browser"]; context: BrowserLaunchFlowContext["context"]; dependencies: Dependencies; page: BrowserLaunchFlowContext["page"]; target: WebExecutionTarget | WebSupportedPresetLiteral; test?: FlowTest; }): LegacyFlowContext & BrowserLaunchFlowContext; export declare function makeElectronLaunchFlowContext({ dependencies, page, target, test, }: { dependencies: Dependencies; page: ElectronLaunchFlowContext["page"]; target: WebExecutionTarget | WebSupportedPresetLiteral; test?: FlowTest; }): LegacyFlowContext & ElectronLaunchFlowContext; export {}; //# sourceMappingURL=flowContext.d.ts.map