/**
 * Create a snapshot tester
 */
export declare function createSnapshotTester(config?: VisualTestConfig): void;
/**
 * Create a visual regression tester
 */
export declare function createVisualRegressionTester(config?: VisualTestConfig): void;
/**
 * Create a story-based visual tester
 */
export declare function createStoryTester(config?: VisualTestConfig): void;
/**
 * Generate visual test report
 */
export declare function generateReport(results: VisualTestResult[], config?: ReportConfig): Promise<string>;
/**
 * Quick snapshot test
 */
export declare function snapshot(html: string, name: string): Promise<SnapshotResult>;
/**
 * Quick JSON snapshot test
 */
export declare function snapshotJson(data: unknown, name: string): Promise<SnapshotResult>;
/**
 * Reset default tester (for testing)
 */
export declare function resetDefaultTester(): void;
// =============================================================================
// Default Viewports
// =============================================================================
export declare const defaultViewports: Viewport[];
// =============================================================================
// Types
// =============================================================================
export declare interface VisualTestConfig {
  snapshotDir?: string
  screenshotDir?: string
  updateSnapshots?: boolean
  threshold?: number
  viewports?: Viewport[]
  generateDiff?: boolean
  diffDir?: string
  compare?: (actual: Buffer, expected: Buffer) => Promise<ComparisonResult>
  ci?: boolean
  retries?: number
}
export declare interface Viewport {
  name: string
  width: number
  height: number
  deviceScaleFactor?: number
  isMobile?: boolean
  hasTouch?: boolean
}
export declare interface SnapshotResult {
  passed: boolean
  snapshotPath: string
  actualPath?: string
  diffPath?: string
  message?: string
}
export declare interface ComparisonResult {
  match: boolean
  diffPercentage: number
  diffPixels: number
  diffImage?: Buffer
}
export declare interface VisualTestResult {
  name: string
  passed: boolean
  duration: number
  snapshots: SnapshotResult[]
  screenshots: ScreenshotResult[]
  errors: Error[]
}
export declare interface ScreenshotResult {
  viewport: string
  passed: boolean
  baselinePath: string
  actualPath?: string
  diffPath?: string
  diffPercentage?: number
}
export declare interface Story {
  name: string
  component: string
  render: () => string | Promise<string>
  args?: Record<string, unknown>
  viewports?: Viewport[]
}
// =============================================================================
// Test Reporter
// =============================================================================
export declare interface ReportConfig {
  outputDir?: string
  format?: 'html' | 'json' | 'markdown'
  title?: string
  includeScreenshots?: boolean
}
// =============================================================================
// Exports
// =============================================================================
export default {
  createSnapshotTester,
  createVisualRegressionTester,
  createStoryTester,
  generateReport,
  snapshot,
  snapshotJson,
  defaultViewports,
};
