import { WorkflowTrigger } from '@immich/plugin-sdk';
import { JsonSchemaDto } from "./json-schema.dto";
import { WorkflowType } from "../enum";
import z from 'zod';
declare const PluginSearchDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
    id: z.ZodOptional<z.ZodUUID>;
    enabled: z.ZodOptional<z.ZodBoolean>;
    name: z.ZodOptional<z.ZodString>;
    version: z.ZodOptional<z.ZodString>;
    title: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, false>;
export declare class PluginSearchDto extends PluginSearchDto_base {
}
declare const PluginResponseDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
    id: z.ZodUUID;
    name: z.ZodString;
    title: z.ZodString;
    description: z.ZodString;
    author: z.ZodString;
    version: z.ZodString;
    createdAt: z.ZodString;
    updatedAt: z.ZodString;
    methods: z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        name: z.ZodString;
        title: z.ZodString;
        description: z.ZodString;
        types: z.ZodArray<z.ZodEnum<typeof WorkflowType>>;
        uiHints: z.ZodArray<z.ZodString>;
        schema: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
        hostFunctions: z.ZodBoolean;
    }, z.core.$strip>>;
}, z.core.$strip>, false>;
export declare class PluginResponseDto extends PluginResponseDto_base {
}
declare const PluginMethodSearchDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
    id: z.ZodOptional<z.ZodUUID>;
    enabled: z.ZodOptional<z.ZodBoolean>;
    name: z.ZodOptional<z.ZodString>;
    title: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodString>;
    type: z.ZodOptional<z.ZodEnum<typeof WorkflowType>>;
    trigger: z.ZodOptional<z.ZodEnum<typeof WorkflowTrigger>>;
    pluginName: z.ZodOptional<z.ZodString>;
    pluginVersion: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, false>;
export declare class PluginMethodSearchDto extends PluginMethodSearchDto_base {
}
declare const PluginMethodResponseDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
    key: z.ZodString;
    name: z.ZodString;
    title: z.ZodString;
    description: z.ZodString;
    types: z.ZodArray<z.ZodEnum<typeof WorkflowType>>;
    uiHints: z.ZodArray<z.ZodString>;
    schema: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
    hostFunctions: z.ZodBoolean;
}, z.core.$strip>, false>;
export declare class PluginMethodResponseDto extends PluginMethodResponseDto_base {
}
declare const PluginTemplateResponseDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
    key: z.ZodString;
    title: z.ZodString;
    description: z.ZodString;
    trigger: z.ZodEnum<typeof WorkflowTrigger>;
    steps: z.ZodArray<z.ZodObject<{
        method: z.ZodString;
        config: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        enabled: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    uiHints: z.ZodArray<z.ZodString>;
}, z.core.$strip>, false>;
export declare class PluginTemplateResponseDto extends PluginTemplateResponseDto_base {
}
export type PluginTemplate = {
    name: string;
    title: string;
    description: string;
    trigger: WorkflowTrigger;
    steps: Array<{
        method: string;
        config?: Record<string, unknown> | null;
        enabled?: boolean;
    }>;
    uiHints: string[];
};
export declare const mapTemplate: (plugin: {
    name: string;
}, template: PluginTemplate) => PluginTemplateResponseDto;
type Plugin = {
    id: string;
    name: string;
    title: string;
    description: string;
    author: string;
    version: string;
    createdAt: Date;
    updatedAt: Date;
    methods: PluginMethod[];
};
type PluginMethod = {
    pluginName: string;
    name: string;
    title: string;
    description: string;
    types: WorkflowType[];
    schema: JsonSchemaDto | null;
    hostFunctions: boolean;
    uiHints: string[];
};
export declare function mapPlugin(plugin: Plugin): PluginResponseDto;
export declare const mapMethod: (method: PluginMethod) => PluginMethodResponseDto;
export {};
