import { exec, spawn } from 'node:child_process'; import fs from 'node:fs'; import { extractArchive } from './file'; import { fetchJRE, serverSupportsJREProvisioning } from './java'; import { locateExecutableFromPath } from './process'; import { download as defaultDownload, fetch as defaultFetch } from './request'; import { downloadScannerCli, runScannerCli } from './scanner-cli'; import { fetchScannerEngine, runScannerEngine } from './scanner-engine'; declare const execAsync: typeof exec.__promisify__; /** * Centralized dependency container for all injectable dependencies. * This allows for easy mocking in tests while keeping function signatures clean. */ export interface Dependencies { fs: { existsSync: typeof fs.existsSync; readFileSync: typeof fs.readFileSync; readFile: typeof fs.readFile; mkdirSync: typeof fs.mkdirSync; createReadStream: typeof fs.createReadStream; createWriteStream: typeof fs.createWriteStream; remove: (path: string) => Promise; writeFile: (path: string, data: string) => Promise; exists: (path: string) => Promise; ensureDir: (path: string) => Promise; }; process: { platform: NodeJS.Platform; arch: NodeJS.Architecture; env: NodeJS.ProcessEnv; cwd: () => string; }; http: { fetch: typeof defaultFetch; download: typeof defaultDownload; }; spawn: typeof spawn; execAsync: typeof execAsync; scan: { serverSupportsJREProvisioning: typeof serverSupportsJREProvisioning; fetchJRE: typeof fetchJRE; downloadScannerCli: typeof downloadScannerCli; runScannerCli: typeof runScannerCli; fetchScannerEngine: typeof fetchScannerEngine; runScannerEngine: typeof runScannerEngine; locateExecutableFromPath: typeof locateExecutableFromPath; }; file: { extractArchive: typeof extractArchive; }; } /** * Get the current dependency container. * Internal functions use this to access dependencies. */ export declare function getDeps(): Dependencies; /** * Set/override dependencies. Used for testing. * Merges the provided partial dependencies with the defaults. * * @param newDeps - Partial dependencies to override */ export declare function setDeps(newDeps: Partial): void; /** * Reset dependencies to defaults. Should be called in afterEach() in tests. */ export declare function resetDeps(): void; export {};