/// <reference types="node" />
import { formats } from "../formats";
import { StreamReader } from "./streamReader";
import { StreamParser } from "./streamParser";
import { TransformOptions } from "stream";
interface Event<TName extends string, TValues extends unknown[]> {
    addListener(event: TName, listener: (...args: TValues) => void): this;
    emit(event: TName, ...args: TValues): boolean;
    on(event: TName, listener: (...args: TValues) => void): this;
    once(event: TName, listener: (...args: TValues) => void): this;
    prependListener(event: TName, listener: (...args: TValues) => void): this;
    prependOnceListener(event: TName, listener: (...args: TValues) => void): this;
    removeListener(event: TName, listener: (...args: TValues) => void): this;
}
export interface ExtractSize {
    (stream: StreamParser): AsyncGenerator<{
        width: number;
        height: number;
    }, void, void>;
}
type TExtracted<TFormat extends typeof formats = typeof formats> = {
    [K in keyof TFormat]: [data: ReturnType<TFormat[K][1]> extends AsyncGenerator<infer TResult> ? TResult : any, format: TFormat[K][0]];
}[any];
export type ExtractedSize = TExtracted;
type SizeExtractorEvent = Event<'parseError', [error: unknown, format: ExtractedSize[1]]> & Event<'parseDone', [format: ExtractedSize[1]]> & Event<'parseAllDone', []> & Event<'size', ExtractedSize>;
export interface ISize {
    width: number | undefined;
    height: number | undefined;
    orientation?: number;
    type?: string;
}
export interface ISizeCalculationResult extends ISize {
    images?: ISize[];
}
declare const SizeExtractor_base: (abstract new (...args: any) => SizeExtractorEvent) & typeof StreamReader;
export declare class SizeExtractor extends SizeExtractor_base {
    imageSize?: ISizeCalculationResult;
    sizes: ExtractedSize[];
    constructor(options: {
        passthrough: boolean;
        whitelistFormats?: ExtractedSize[1][];
        blacklistFormats?: ExtractedSize[1][];
    }, transformOptions?: TransformOptions);
}
export {};
//# sourceMappingURL=sizeExtractor.d.ts.map