import type { BasicAppLogger } from "@paroicms/internal-server-lib";
import type { Knex } from "knex";
import type { ImageVariantWithBinary } from "../engine-types.js";
import type { CreateImageCacheEngineOptions } from "../image-cache-engine.js";
import type { OwnerKey, TaskData, TaskKey } from "./internal.types.js";
export interface VariantEngineContext extends Omit<CreateImageCacheEngineOptions, "logger"> {
    status: "ready" | "closed";
    logger: BasicAppLogger;
    queue: TaskKey[];
    pendingTasks: Map<TaskKey, PendingTask>;
    pendingTaskByOwnerKeys: Map<OwnerKey, PendingTask>;
    cn: Knex;
    logNextQuery: (count?: number) => void;
}
export interface PendingTask {
    resolve: (result: ImageVariantWithBinary) => void;
    reject: (error: unknown) => void;
    promise: Promise<ImageVariantWithBinary>;
    task: TaskData;
    ownerKeys: Set<OwnerKey>;
}
export declare function createVariantEngineContext(options: CreateImageCacheEngineOptions): Promise<{
    context: VariantEngineContext;
    isCleared: boolean;
}>;
