export interface FlowConfigFile { baseUrl?: string; timeout?: number; speedFactor?: number; move?: { humanize?: boolean; movePath?: string; duration?: number; waitBefore?: number; waitAfter?: number; }; click?: { humanize?: boolean; randomRange?: number; waitBefore?: number; waitAfter?: number; }; idleMotion?: Record; humanMonitor?: { idleThreshold?: number; pollInterval?: number; detectKeyboard?: boolean; mouseJitterPx?: number; deviationPx?: number; deviationCount?: number; stationaryCount?: number; safetyNetSecs?: number; }; type?: { charDelay?: { min?: number; max?: number; }; waitBefore?: number; waitAfter?: number; }; autoWait?: { enable?: boolean; delays?: Record; }; logging?: { enable?: boolean; level?: string; showElementInfo?: boolean; showCoordinates?: boolean; }; scroll?: { scrollAmount?: number; times?: number; timeout?: number; useIdle?: boolean; autoScrollAmount?: boolean; scrollAmountRatio?: number; scrollToCenter?: boolean; centerAdjustTimes?: number; scrollInterval?: number; autoScrollDelay?: number; minScrollRatio?: number; centerSnapThreshold?: number; }; scrollToVisible?: { direction?: 'up' | 'down'; timeout?: number; scrollTimes?: number; autoScrollAmount?: boolean; scrollAmountRatio?: number; scrollInterval?: number; scrollToCenter?: boolean; centerAdjustTimes?: number; autoScrollDelay?: number; minScrollRatio?: number; centerSnapThreshold?: number; scrollEndDetection?: { mode?: 'scrollbar' | 'bottomChangeRate'; bottomChangeThreshold?: number; scrollbarWidth?: number; sampleRatio?: number; consecutiveFrames?: number; saveDebugFrames?: boolean; historyDepth?: number; dynamicPixelEps?: number; minDynamicRatio?: number; }; scrollInset?: { top?: string; right?: string; bottom?: string; left?: string; }; scrollFindThreading?: { scrollIntervalMinMs?: number; scrollIntervalMaxMs?: number; matchIntervalMs?: number; cursorMoveDurationMs?: number; cursorMotionMode?: 'reading' | 'off' | 'random'; cursorMoveIntervalMs?: number; cursorHorizontalRatio?: number; }; }; image?: { precision?: number; accel?: boolean; autoCache?: boolean; usePositionCache?: boolean; templateDir?: string; }; } /** * 加载配置文件 * 搜索顺序:当前工作目录 → 用户主目录 * 如果都不存在,自动在当前工作目录生成 .flow.json5 模板 */ export declare function loadConfig(): FlowConfigFile; /** * 深合并多个对象(从左到右,后面的覆盖前面的) */ export declare function deepMerge>(...sources: (T | undefined | null)[]): T;