import { Command } from 'commander'; import { Writable } from 'node:stream'; interface CliOutputOptions { json?: boolean; debug?: boolean; verbose?: boolean; stdout?: Writable; stderr?: Writable; } interface CliSpinner { start: (message?: string) => void; stop: (message?: string) => void; error: (message?: string) => void; cancel: (message?: string) => void; message: (message?: string) => void; clear: () => void; } interface CliOutput { readonly json: boolean; readonly debug: boolean; readonly verboseEnabled: boolean; readonly interactive: boolean; writeText: (message?: string, options?: { stderr?: boolean; }) => void; info: (message: string) => void; success: (message: string) => void; warn: (message: string) => void; error: (message: string) => void; step: (message: string) => void; note: (message: string, title?: string) => void; intro: (message: string) => void; outro: (message: string) => void; table: (rows: unknown) => void; spinner: () => CliSpinner; verbose: (message: string) => void; jsonSuccess: (command: string, data: T) => void; jsonError: (error: unknown, command?: string) => void; header: (message: string) => void; subHeader: (message: string) => void; listItem: (message: string) => void; footer: (message: string) => void; } declare function createCliOutput(options?: CliOutputOptions): CliOutput; interface CommandContext { runtimeDir: string; json: boolean; debug: boolean; verbose: boolean; output: CliOutput; cwd: string; } declare function buildMainProgram(context: CommandContext): Command; declare function runScanCli(rawArgs: string[]): Promise; interface ParsedCliInput { argv: string[]; command: string | undefined; restArgs: string[]; json: boolean; debug: boolean; verbose: boolean; help: boolean; helpCommand: string | undefined; } declare function ensureFlag(name: string, argv: string[]): string[]; declare function parseCliInput(argv: string[]): ParsedCliInput; export { buildMainProgram, createCliOutput, ensureFlag, parseCliInput as parseCliArgs, runScanCli };