import { EventEmitter } from 'events'; export interface InstallerEvents { status: { message: string; }; output: { text: string; isError?: boolean; }; 'file:write': { path: string; content: string; }; 'file:edit': { path: string; oldContent: string; newContent: string; }; 'prompt:request': { id: string; message: string; options?: string[]; }; 'prompt:response': { id: string; value: string; }; 'confirm:request': { id: string; message: string; warning?: string; files?: string[]; }; 'confirm:response': { id: string; confirmed: boolean; }; 'credentials:request': { requiresApiKey: boolean; }; 'credentials:response': { apiKey: string; clientId: string; }; complete: { success: boolean; summary?: string; }; error: { message: string; stack?: string; }; 'state:enter': { state: string; }; 'state:exit': { state: string; }; 'auth:checking': Record; 'auth:required': Record; 'auth:success': Record; 'auth:failure': { message: string; }; 'detection:start': Record; 'detection:complete': { integration: string; }; 'detection:none': Record; 'git:checking': Record; 'git:clean': Record; 'git:dirty': { files: string[]; }; 'git:dirty:confirmed': Record; 'git:dirty:cancelled': Record; 'credentials:gathering': { requiresApiKey: boolean; }; 'credentials:found': Record; 'credentials:env:detected': { files: string[]; }; 'credentials:env:prompt': { files: string[]; }; 'credentials:env:scanning': Record; 'credentials:env:found': { sourcePath: string; }; 'credentials:env:notfound': Record; 'device:started': { verificationUri: string; verificationUriComplete: string; userCode: string; }; 'device:polling': Record; 'device:success': { email?: string; }; 'device:timeout': Record; 'device:error': { message: string; }; 'staging:fetching': Record; 'staging:success': Record; 'staging:error': { message: string; statusCode?: number; }; 'config:start': Record; 'config:complete': Record; 'agent:start': Record; 'agent:progress': { step: string; detail?: string; }; 'agent:success': { summary?: string; }; 'agent:failure': { message: string; stack?: string; }; 'agent:retry': { attempt: number; maxRetries: number; }; 'validation:retry:start': { attempt: number; }; 'validation:retry:complete': { attempt: number; passed: boolean; }; 'validation:start': { framework: string; }; 'validation:issues': { issues: import('./validation/types.js').ValidationIssue[]; }; 'validation:complete': { passed: boolean; issueCount: number; durationMs: number; }; 'scaffold:checking': Record; 'scaffold:prompt': { packageManager: string; }; 'scaffold:start': { packageManager: string; }; 'scaffold:progress': { text: string; }; 'scaffold:complete': Record; 'scaffold:failed': { error: string; }; 'scaffold:skipped': Record; 'branch:checking': Record; 'branch:protected': { branch: string; }; 'branch:prompt': { branch: string; }; 'branch:created': { branch: string; }; 'branch:create:failed': { error: string; }; 'branch:skipped': Record; 'postinstall:changes': { files: string[]; }; 'postinstall:nochanges': Record; 'postinstall:commit:prompt': Record; 'postinstall:commit:generating': Record; 'postinstall:commit:committing': { message: string; }; 'postinstall:commit:success': { message: string; }; 'postinstall:commit:failed': { error: string; }; 'postinstall:pr:prompt': Record; 'postinstall:pr:generating': Record; 'postinstall:pr:pushing': Record; 'postinstall:pr:creating': Record; 'postinstall:pr:success': { url: string; }; 'postinstall:pr:failed': { error: string; }; 'postinstall:push:failed': { error: string; }; 'postinstall:manual': { instructions: string; }; } export type InstallerEventName = keyof InstallerEvents; export declare class InstallerEventEmitter extends EventEmitter { emit(event: K, payload: InstallerEvents[K]): boolean; on(event: K, listener: (payload: InstallerEvents[K]) => void): this; off(event: K, listener: (payload: InstallerEvents[K]) => void): this; once(event: K, listener: (payload: InstallerEvents[K]) => void): this; } export declare function createInstallerEventEmitter(): InstallerEventEmitter;