import { Buffer } from 'node:buffer'; interface Image { data: Buffer | Uint8Array | Uint8ClampedArray; width: number; height: number; } interface Codec { read: (input: string | Buffer) => Promise; write: (image: Image, output: string | Buffer) => Promise; } type ComparisonMode = "diff" | "gmsd" | "ssim" | "msssim"; interface DiffModeOptions { outputPath?: string; codec: Codec; mode?: "diff"; options?: Record; } interface GmsdModeOptions { outputPath?: string; codec: Codec; mode: "gmsd"; options?: Record; } interface SsimModeOptions { outputPath?: string; codec: Codec; mode: "ssim"; options?: Record; } interface MsssimModeOptions { outputPath?: string; codec: Codec; mode: "msssim"; options?: Record; } interface DiffModeResult { mode: "diff"; diffCount: number; width: number; height: number; outputData?: Uint8Array; duration: number; } interface GmsdModeResult { mode: "gmsd"; score: number; width: number; height: number; outputData?: Uint8Array; duration: number; } interface SsimModeResult { mode: "ssim"; score: number; width: number; height: number; outputData?: Uint8Array; duration: number; } interface MsssimModeResult { mode: "msssim"; score: number; width: number; height: number; outputData?: Uint8Array; duration: number; } type BlazeDiffCoreNativeResult = DiffModeResult | GmsdModeResult | SsimModeResult | MsssimModeResult; export type { BlazeDiffCoreNativeResult, Codec, ComparisonMode, DiffModeOptions, DiffModeResult, GmsdModeOptions, GmsdModeResult, Image, MsssimModeOptions, MsssimModeResult, SsimModeOptions, SsimModeResult };