import { PrismaService } from "../../database/prisma/prisma.service";
import { AutomationTaskType, AutomationTaskStatus, AutomationExecutionStatus } from '@prisma/client';
export interface CreateTaskDto {
    name: string;
    code: string;
    description?: string;
    type: AutomationTaskType;
    scheduleType: string;
    scheduleConfig: any;
    config?: any;
    timeout?: number;
    retryCount?: number;
}
export interface UpdateTaskDto {
    name?: string;
    description?: string;
    status?: AutomationTaskStatus;
    scheduleType?: string;
    scheduleConfig?: any;
    config?: any;
    timeout?: number;
    retryCount?: number;
}
export interface ExecuteTaskDto {
    triggeredBy?: string;
}
export declare class AutomationService {
    private prisma;
    constructor(prisma: PrismaService);
    findAll(filters?: {
        type?: AutomationTaskType;
        status?: AutomationTaskStatus;
    }): Promise<({
        _count: {
            executions: number;
        };
    } & {
        type: import("@prisma/client").$Enums.AutomationTaskType;
        timeout: number;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.AutomationTaskStatus;
        name: string;
        updatedAt: Date;
        description: string | null;
        createdById: string | null;
        retryCount: number;
        config: import("@prisma/client/runtime/library").JsonValue;
        scheduleType: string;
        scheduleConfig: import("@prisma/client/runtime/library").JsonValue;
        lastRunAt: Date | null;
        lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
        nextRunAt: Date | null;
        totalRuns: number;
        successRuns: number;
        failedRuns: number;
    })[]>;
    findOne(id: string): Promise<{
        _count: {
            executions: number;
        };
        createdBy: {
            displayName: string;
            id: string;
            username: string;
        } | null;
    } & {
        type: import("@prisma/client").$Enums.AutomationTaskType;
        timeout: number;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.AutomationTaskStatus;
        name: string;
        updatedAt: Date;
        description: string | null;
        createdById: string | null;
        retryCount: number;
        config: import("@prisma/client/runtime/library").JsonValue;
        scheduleType: string;
        scheduleConfig: import("@prisma/client/runtime/library").JsonValue;
        lastRunAt: Date | null;
        lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
        nextRunAt: Date | null;
        totalRuns: number;
        successRuns: number;
        failedRuns: number;
    }>;
    create(createTaskDto: CreateTaskDto, userId?: string): Promise<{
        type: import("@prisma/client").$Enums.AutomationTaskType;
        timeout: number;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.AutomationTaskStatus;
        name: string;
        updatedAt: Date;
        description: string | null;
        createdById: string | null;
        retryCount: number;
        config: import("@prisma/client/runtime/library").JsonValue;
        scheduleType: string;
        scheduleConfig: import("@prisma/client/runtime/library").JsonValue;
        lastRunAt: Date | null;
        lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
        nextRunAt: Date | null;
        totalRuns: number;
        successRuns: number;
        failedRuns: number;
    }>;
    update(id: string, updateTaskDto: UpdateTaskDto): Promise<{
        type: import("@prisma/client").$Enums.AutomationTaskType;
        timeout: number;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.AutomationTaskStatus;
        name: string;
        updatedAt: Date;
        description: string | null;
        createdById: string | null;
        retryCount: number;
        config: import("@prisma/client/runtime/library").JsonValue;
        scheduleType: string;
        scheduleConfig: import("@prisma/client/runtime/library").JsonValue;
        lastRunAt: Date | null;
        lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
        nextRunAt: Date | null;
        totalRuns: number;
        successRuns: number;
        failedRuns: number;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    updateStatus(id: string, status: AutomationTaskStatus): Promise<{
        type: import("@prisma/client").$Enums.AutomationTaskType;
        timeout: number;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.AutomationTaskStatus;
        name: string;
        updatedAt: Date;
        description: string | null;
        createdById: string | null;
        retryCount: number;
        config: import("@prisma/client/runtime/library").JsonValue;
        scheduleType: string;
        scheduleConfig: import("@prisma/client/runtime/library").JsonValue;
        lastRunAt: Date | null;
        lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
        nextRunAt: Date | null;
        totalRuns: number;
        successRuns: number;
        failedRuns: number;
    }>;
    execute(id: string, executeDto: ExecuteTaskDto): Promise<{
        message: string;
        executionId: string;
        task: {
            _count: {
                executions: number;
            };
            createdBy: {
                displayName: string;
                id: string;
                username: string;
            } | null;
        } & {
            type: import("@prisma/client").$Enums.AutomationTaskType;
            timeout: number;
            code: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AutomationTaskStatus;
            name: string;
            updatedAt: Date;
            description: string | null;
            createdById: string | null;
            retryCount: number;
            config: import("@prisma/client/runtime/library").JsonValue;
            scheduleType: string;
            scheduleConfig: import("@prisma/client/runtime/library").JsonValue;
            lastRunAt: Date | null;
            lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
            nextRunAt: Date | null;
            totalRuns: number;
            successRuns: number;
            failedRuns: number;
        };
    }>;
    getExecutions(taskId: string, options?: {
        page?: number;
        pageSize?: number;
        status?: AutomationExecutionStatus;
    }): Promise<{
        data: {
            error: string | null;
            id: string;
            createdAt: Date;
            result: import("@prisma/client/runtime/library").JsonValue | null;
            status: import("@prisma/client").$Enums.AutomationExecutionStatus;
            duration: number | null;
            logs: string | null;
            startedAt: Date;
            completedAt: Date | null;
            triggerType: string;
            triggeredBy: string | null;
            taskId: string;
        }[];
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
    }>;
    getExecutionDetail(executionId: string): Promise<{
        task: {
            type: import("@prisma/client").$Enums.AutomationTaskType;
            code: string;
            id: string;
            name: string;
        };
    } & {
        error: string | null;
        id: string;
        createdAt: Date;
        result: import("@prisma/client/runtime/library").JsonValue | null;
        status: import("@prisma/client").$Enums.AutomationExecutionStatus;
        duration: number | null;
        logs: string | null;
        startedAt: Date;
        completedAt: Date | null;
        triggerType: string;
        triggeredBy: string | null;
        taskId: string;
    }>;
    getStatistics(): Promise<{
        totalTasks: number;
        activeTasks: number;
        totalExecutions: number;
        recentFailures: number;
        tasksByType: (import("@prisma/client").Prisma.PickEnumerable<import("@prisma/client").Prisma.AutomationTaskGroupByOutputType, "type"[]> & {
            _count: number;
        })[];
        recentExecutions: ({
            task: {
                type: import("@prisma/client").$Enums.AutomationTaskType;
                name: string;
            };
        } & {
            error: string | null;
            id: string;
            createdAt: Date;
            result: import("@prisma/client/runtime/library").JsonValue | null;
            status: import("@prisma/client").$Enums.AutomationExecutionStatus;
            duration: number | null;
            logs: string | null;
            startedAt: Date;
            completedAt: Date | null;
            triggerType: string;
            triggeredBy: string | null;
            taskId: string;
        })[];
    }>;
}
