import { Insertable, Kysely, Updateable } from 'kysely';
import { WorkflowSearchDto } from "../dtos/workflow.dto";
import { DB } from "../schema";
import { WorkflowStepTable } from "../schema/tables/workflow-step.table";
import { WorkflowTable } from "../schema/tables/workflow.table";
export type WorkflowStepUpsert = Omit<Insertable<WorkflowStepTable>, 'workflowId' | 'order'>;
export declare class WorkflowRepository {
    private db;
    constructor(db: Kysely<DB>);
    private queryBuilder;
    search(dto: WorkflowSearchDto & {
        userId?: string;
    }): Promise<{
        id: string;
        description: string | null;
        createdAt: Date;
        enabled: boolean;
        name: string | null;
        updatedAt: Date;
        trigger: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowTrigger;
        steps: {
            pluginName: string;
            enabled: boolean;
            config: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowStepConfig | null;
            methodName: string;
        }[];
    }[]>;
    get(id: string): Promise<{
        id: string;
        description: string | null;
        createdAt: Date;
        enabled: boolean;
        name: string | null;
        updatedAt: Date;
        trigger: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowTrigger;
        steps: {
            pluginName: string;
            enabled: boolean;
            config: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowStepConfig | null;
            methodName: string;
        }[];
    } | undefined>;
    getForWorkflowRun(id: string): Promise<{
        id: string;
        name: string | null;
        trigger: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowTrigger;
        steps: {
            hostFunctions: boolean;
            allowedHosts: string[];
            id: string;
            config: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowStepConfig | null;
            methodName: string;
            pluginId: string;
            types: import("../enum").WorkflowType[];
        }[];
    } | undefined>;
    create(dto: Insertable<WorkflowTable>, steps?: WorkflowStepUpsert[]): Promise<{
        id: string;
        description: string | null;
        createdAt: Date;
        enabled: boolean;
        name: string | null;
        updatedAt: Date;
        trigger: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowTrigger;
        steps: {
            pluginName: string;
            enabled: boolean;
            config: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowStepConfig | null;
            methodName: string;
        }[];
    }>;
    update(id: string, dto: Updateable<WorkflowTable>, steps?: WorkflowStepUpsert[]): Promise<{
        id: string;
        description: string | null;
        createdAt: Date;
        enabled: boolean;
        name: string | null;
        updatedAt: Date;
        trigger: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowTrigger;
        steps: {
            pluginName: string;
            enabled: boolean;
            config: import("@immich/plugin-sdk", { with: { "resolution-mode": "import" } }).WorkflowStepConfig | null;
            methodName: string;
        }[];
    }>;
    updateStep(id: string, dto: Updateable<WorkflowStepTable>): Promise<void>;
    private replaceAndReturn;
    delete(id: string): Promise<void>;
    getForAssetV1(assetId: string): Promise<{
        id: string;
        createdAt: Date;
        type: import("../enum").AssetType;
        fileCreatedAt: Date;
        localDateTime: Date;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: import("../enum").AssetStatus;
        ownerId: string;
        checksum: Buffer<ArrayBufferLike>;
        duplicateId: string | null;
        fileModifiedAt: Date;
        isExternal: boolean;
        isFavorite: boolean;
        isOffline: boolean;
        visibility: import("../enum").AssetVisibility;
        libraryId: string | null;
        livePhotoVideoId: string | null;
        originalFileName: string;
        originalPath: string;
        stackId: string | null;
        isEdited: boolean;
        exifInfo: {
            description: string | null;
            rating: number | null;
            colorspace: string | null;
            state: string | null;
            updatedAt: string | null;
            tags: string[] | null;
            city: string | null;
            country: string | null;
            make: string | null;
            model: string | null;
            lensModel: string | null;
            latitude: number | null;
            longitude: number | null;
            exifImageWidth: number | null;
            exifImageHeight: number | null;
            fileSizeInByte: number | null;
            orientation: string | null;
            dateTimeOriginal: string | null;
            modifyDate: string | null;
            timeZone: string | null;
            fNumber: number | null;
            focalLength: number | null;
            iso: number | null;
            exposureTime: string | null;
            projectionType: string | null;
            fps: number | null;
            livePhotoCID: string | null;
            profileDescription: string | null;
            bitsPerSample: number | null;
            autoStackId: string | null;
        } | null;
    }>;
}
