import type { ImageRaw, ImageType } from "../..";
import type { BeeClient } from "../../clients";
import type { WriterUploadOptions } from "../base-writer";
export type ProcessedImage = {
    blurhash: string;
    aspectRatio: number;
    responsiveSourcesData: ResponseSourceData[];
};
export type ResponseSourceData = {
    type: ImageType;
    data: Uint8Array;
    width: number;
};
interface ImageWriterOptions {
    beeClient: BeeClient;
    responsiveSizes?: number[];
}
export declare class ImageWriter {
    private beeClient;
    private responsiveSizes;
    private file;
    private preGenerateImages?;
    static defaultResponsiveSizes: number[];
    static avatarResponsiveSizes: number[];
    static thumbnailResponsiveSizes: number[];
    constructor(file: File | Blob, opts: ImageWriterOptions);
    /**
     * Upload the image(s) data on swarm
     *
     * @param options Upload options
     * @returns The raw image object
     */
    upload(options?: WriterUploadOptions): Promise<ImageRaw>;
    /**
     * Generate a Data URL string from the file
     */
    getFilePreview(): Promise<string>;
    /**
     * Pregenerate images and return the total size of the images,
     * used to calculate the best postage batch
     */
    pregenerateImages(): Promise<ProcessedImage>;
    /**
     * Generate the preview, base64 and responsive images from the selected file
     */
    private generateImages;
    getFileImageSize(buffer: ArrayBuffer): Promise<{
        width: number;
        height: number;
    }>;
    imageToResponsiveSize(image: File | Blob, width: number): Promise<Blob>;
}
export {};
//# sourceMappingURL=writer.d.ts.map