export type SecretFinding = { file: string; line: number; match: string; pattern: string; strategy: 'gitleaks' | 'regex'; }; export type ScanOptions = { /** Working directory (defaults to process.cwd()) */ cwd?: string; /** Glob patterns to exclude from scanning */ allowlist?: string[]; /** Timeout in milliseconds (defaults to 2000) */ timeoutMs?: number; /** Return JSON-structured output */ json?: boolean; /** Maximum diff size in bytes before early abort (defaults to 5MB) */ maxDiffBytes?: number; }; export type ScanExitCode = 0 | 1 | 2; export type ScanResult = { exitCode: ScanExitCode; findings: SecretFinding[]; strategy: 'gitleaks' | 'regex'; durationMs: number; error?: string; }; export type ScanStrategy = { name: 'gitleaks' | 'regex'; available(): boolean; scan(diff: string, options: ScanOptions): Promise; };