import type { ResizeRule, SizeName } from "@paroicms/public-anywhere-lib";
export type ImageVariantStorage = {
    type: "sqlite";
    file: string;
    inMemory?: false;
} | {
    type: "sqlite";
    inMemory: true;
};
export type GetOriginalImage = (mediaId: string) => Promise<Buffer>;
export interface RequestedImageVariantWithSize extends RequestedImageVariant, ImageVariantSize {
}
export interface RequestedImageVariant {
    rawSizeName: SizeName;
    mediaType: string;
}
export interface NewVariantInput {
    rawResizeR: ResizeRule;
    autoCrop?: boolean;
    mediaType?: string;
    sourceImage: SourceImageRef;
}
export interface SourceImageRef {
    mediaId: string;
    rawHeight: number;
    rawWidth: number;
    mediaType: string;
    slug: string | undefined;
    avgRawWidth?: number;
    avgRawHeight?: number;
}
export interface ImageVariantSize {
    rawWidth: number;
    rawHeight: number;
    rawSizeName: SizeName;
}
export interface ImageVariant extends ImageVariantSize {
    mediaId: string;
    mediaType: string;
    resourceVersion: string;
    slug?: string;
}
export interface ImageVariantWithBinary extends ImageVariant {
    weightB: number;
    binaryFile: Buffer;
    /**
     * Timestamp as ISO string.
     */
    lastModified: string;
}
export interface ImageCacheOwnerTransaction {
    makeImageAvailable(inputs: NewVariantInput[], options?: {
        optimizeForBatch?: {
            getMoreInputsForBatch: (filter: (input: NewVariantInput) => boolean) => NewVariantInput[];
        };
    }): Promise<ImageVariant[]>;
    flush(): Promise<void>;
    close(): Promise<void>;
}
export interface RawSize {
    rawWidth: number;
    rawHeight: number;
}
export interface UsedRawSize {
    rawResizeR: ResizeRule;
    rawSizeName: SizeName;
}
//# sourceMappingURL=engine-types.d.ts.map