import { z } from 'zod'; import type { ExecutionProgram } from './execution-types.js'; export interface ProgramSecurityMetadata { expectedApiOrigin: string; allowedNavigationOrigins: string[]; runtimeLlmAllowed: boolean; } export interface SignedExecutionProgramEnvelope { kind: 'signed_execution_program'; signedAt: string; security: ProgramSecurityMetadata; program: ExecutionProgram; signature: string; meta?: { stale?: boolean; /** * FORM version the stored program was at BEFORE the server migrated it * (0 = legacy / no version field). Debug-only run provenance; lives in the * UNSIGNED meta because it carries no security weight — the server reads it * from the raw preset config before `extractExecutionProgram` normalizes. */ programSchemaVersionOrigin?: number; }; } export declare const ProgramSecurityMetadataSchema: z.ZodObject<{ expectedApiOrigin: z.ZodString; allowedNavigationOrigins: z.ZodArray; runtimeLlmAllowed: z.ZodDefault; }, z.core.$strict>; export declare const SignedExecutionProgramEnvelopeSchema: z.ZodObject<{ kind: z.ZodLiteral<"signed_execution_program">; signedAt: z.ZodString; security: z.ZodObject<{ expectedApiOrigin: z.ZodString; allowedNavigationOrigins: z.ZodArray; runtimeLlmAllowed: z.ZodDefault; }, z.core.$strict>; program: z.ZodObject<{ presetId: z.ZodString; programVersion: z.ZodNumber; programSchemaVersion: z.ZodOptional; engineVersion: z.ZodOptional; mediaMode: z.ZodEnum<{ video: "video"; clip: "clip"; screenshot: "screenshot"; }>; baseUrl: z.ZodString; maxParallelCaptures: z.ZodOptional; variants: z.ZodArray; deviceScaleFactor: z.ZodOptional; locale: z.ZodOptional; theme: z.ZodOptional>; targetId: z.ZodOptional; targetLabel: z.ZodOptional; deviceFrame: z.ZodOptional; mockupOptions: z.ZodOptional>; outputScale: z.ZodOptional; showStatusBar: z.ZodOptional; showSafeAreaTop: z.ZodOptional; showSafeAreaBottom: z.ZodOptional; showSafeAreaLeft: z.ZodOptional; showSafeAreaRight: z.ZodOptional; showHomeIndicator: z.ZodOptional; safeAreaTopColor: z.ZodOptional; safeAreaBottomColor: z.ZodOptional; safeAreaLeftColor: z.ZodOptional; safeAreaRightColor: z.ZodOptional; statusBar: z.ZodOptional; date: z.ZodOptional; menuBarApp: z.ZodOptional; menuBarItems: z.ZodOptional>; signalStrength: z.ZodOptional; showNetworkType: z.ZodOptional; networkType: z.ZodOptional; wifiStrength: z.ZodOptional; batteryLevel: z.ZodOptional; batteryCharging: z.ZodOptional; showBatteryPercentage: z.ZodOptional; colorScheme: z.ZodOptional>; carrierName: z.ZodOptional; autoLocale: z.ZodOptional; }, z.core.$strict>>; browserBar: z.ZodOptional; pageTitle: z.ZodOptional; tabIconUrl: z.ZodOptional; }, z.core.$strict>>; windowBorder: z.ZodOptional>; colorScheme: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strict>>; preconditions: z.ZodObject<{ credentialsId: z.ZodOptional; credentials: z.ZodOptional; password: z.ZodOptional; loginUrl: z.ZodOptional; }, z.core.$strict>>; storageState: z.ZodOptional; }, z.core.$strict>>; origins: z.ZodArray>; }, z.core.$strict>>; }, z.core.$strict>>; sessionStorage: z.ZodOptional>>; cookies: z.ZodOptional; }, z.core.$strict>>>; scenario: z.ZodOptional; }, z.core.$strict>; steps: z.ZodArray; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"NAVIGATE">; }, z.core.$strict>, z.ZodObject<{ description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"DISMISS_OVERLAYS">; }, z.core.$strict>, z.ZodObject<{ urlPattern: z.ZodString; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"ASSERT_ROUTE">; }, z.core.$strict>, z.ZodObject<{ selectors: z.ZodArray; matchAll: z.ZodBoolean; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"ASSERT_SURFACE">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; button: z.ZodOptional>; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"CLICK">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; text: z.ZodString; textByLocale: z.ZodOptional>; clearFirst: z.ZodBoolean; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"TYPE">; }, z.core.$strict>, z.ZodObject<{ key: z.ZodString; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"PRESS_KEY">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; state: z.ZodEnum<{ visible: "visible"; attached: "attached"; }>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"WAIT_FOR">; }, z.core.$strict>, z.ZodObject<{ durationMs: z.ZodNumber; narrationText: z.ZodOptional; narrationTextByLocale: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"SLEEP">; }, z.core.$strict>, z.ZodObject<{ locale: z.ZodString; method: z.ZodEnum<{ browser_context: "browser_context"; ui_interaction: "ui_interaction"; storage: "storage"; }>; selector: z.ZodOptional; storageHints: z.ZodOptional; key: z.ZodString; value: z.ZodString; }, z.core.$strict>>>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"SET_LOCALE">; }, z.core.$strict>, z.ZodObject<{ theme: z.ZodEnum<{ light: "light"; dark: "dark"; $variant: "$variant"; }>; method: z.ZodEnum<{ ui_interaction: "ui_interaction"; storage: "storage"; color_scheme: "color_scheme"; }>; selector: z.ZodOptional; storageHints: z.ZodOptional; key: z.ZodString; value: z.ZodString; }, z.core.$strict>>>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"SET_THEME">; }, z.core.$strict>, z.ZodObject<{ direction: z.ZodEnum<{ up: "up"; down: "down"; left: "left"; right: "right"; }>; amount: z.ZodOptional; targetSelector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"SCROLL">; }, z.core.$strict>, z.ZodObject<{ captureId: z.ZodOptional; captureName: z.ZodOptional; elementSelector: z.ZodOptional; outscale: z.ZodOptional; paddingTop: z.ZodOptional; paddingRight: z.ZodOptional; paddingBottom: z.ZodOptional; paddingLeft: z.ZodOptional; paddingPercent: z.ZodOptional; clampToViewport: z.ZodOptional; backgroundColor: z.ZodOptional; }, z.core.$strict>>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"CAPTURE_SCREENSHOT">; }, z.core.$strict>, z.ZodObject<{ clipId: z.ZodOptional; clipName: z.ZodOptional; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"BEGIN_CLIP">; }, z.core.$strict>, z.ZodObject<{ clipId: z.ZodOptional; clipName: z.ZodOptional; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"END_CLIP">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"HOVER">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; optionLabel: z.ZodOptional; optionValue: z.ZodOptional; optionIndex: z.ZodOptional; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"SELECT_OPTION">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; checked: z.ZodBoolean; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"CHECK">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"DOUBLE_CLICK">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodOptional; target: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; fingerprint: z.ZodOptional; selectorAlternates: z.ZodOptional>; toSelector: z.ZodOptional; toTarget: z.ZodOptional; textByLocale: z.ZodOptional>; role: z.ZodOptional; label: z.ZodOptional; labelByLocale: z.ZodOptional>; near: z.ZodOptional; nearByLocale: z.ZodOptional>; placeholder: z.ZodOptional; placeholderByLocale: z.ZodOptional>; exact: z.ZodOptional; }, z.core.$strict>>; toSelectorAlternates: z.ZodOptional>; offset: z.ZodOptional>; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"DRAG">; }, z.core.$strict>, z.ZodObject<{ sourceSelector: z.ZodString; containerSelector: z.ZodString; count: z.ZodNumber; removeSource: z.ZodOptional; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"CLONE_ELEMENT">; }, z.core.$strict>, z.ZodObject<{ groupName: z.ZodString; containerSelector: z.ZodOptional; templateSelector: z.ZodOptional; count: z.ZodOptional; removeTemplate: z.ZodOptional; slotMappings: z.ZodOptional; }, z.core.$strict>>>; inputSelector: z.ZodOptional; triggerSelector: z.ZodOptional; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"INJECT_MOCK_DATA">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodString; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"REMOVE_ELEMENT">; }, z.core.$strict>, z.ZodObject<{ selector: z.ZodString; attribute: z.ZodString; value: z.ZodString; description: z.ZodString; postcondition: z.ZodObject<{ type: z.ZodEnum<{ route_matches: "route_matches"; element_visible: "element_visible"; element_absent: "element_absent"; text_contains: "text_contains"; overlay_dismissed: "overlay_dismissed"; screenshot_stable: "screenshot_stable"; any_change: "any_change"; always: "always"; }>; pattern: z.ZodOptional; selector: z.ZodOptional; text: z.ZodOptional; threshold: z.ZodOptional; waitMs: z.ZodOptional; }, z.core.$strict>; recovery: z.ZodObject<{ retries: z.ZodNumber; useSelectorMemory: z.ZodBoolean; useAltInteraction: z.ZodBoolean; allowReload: z.ZodBoolean; allowHealer: z.ZodBoolean; }, z.core.$strict>; timeoutMs: z.ZodNumber; maxFailures: z.ZodNumber; stepId: z.ZodOptional; kind: z.ZodLiteral<"SET_ATTRIBUTE">; }, z.core.$strict>], "kind">>; artifactPlan: z.ZodObject<{ mediaMode: z.ZodEnum<{ video: "video"; clip: "clip"; screenshot: "screenshot"; }>; format: z.ZodOptional>; screenshotFormat: z.ZodOptional>; captureResolution: z.ZodOptional>; captureFps: z.ZodOptional; deliveryResolution: z.ZodOptional>; }, z.core.$strict>>; cursorTheme: z.ZodOptional>; maxClipDurationSec: z.ZodOptional; applyMockup: z.ZodOptional; applyStatusBar: z.ZodOptional; }, z.core.$strict>; outputScale: z.ZodOptional; compileFingerprint: z.ZodString; variantFingerprint: z.ZodOptional; compiledAt: z.ZodString; compiledWith: z.ZodOptional; mockDataGroups: z.ZodOptional; }, z.core.$strict>>; defaultValues: z.ZodArray>; replaceExisting: z.ZodOptional; }, z.core.$strict>>>; deviceConfigs: z.ZodOptional>>; publicUrl: z.ZodOptional; environmentHttpHeaders: z.ZodOptional>; blockAnalytics: z.ZodOptional; }, z.core.$strict>; signature: z.ZodString; meta: z.ZodOptional; programSchemaVersionOrigin: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>; export declare function normalizeAllowedOrigins(origins: Iterable): string[]; export declare function normalizeHttpOrigin(value: string | null | undefined): string | null; export declare function signExecutionProgramEnvelope(params: { apiKey: string; program: ExecutionProgram; security: ProgramSecurityMetadata; signedAt?: string; meta?: SignedExecutionProgramEnvelope['meta']; }): SignedExecutionProgramEnvelope; export declare function verifySignedExecutionProgramEnvelope(params: { apiKey: string; envelope: unknown; expectedApiOrigin?: string; now?: Date; }): SignedExecutionProgramEnvelope;