import { PrismaService } from "../../core/database/prisma/prisma.service";
import { CreateDefinitionDto, UpdateDefinitionDto, CreateVersionDto, UpdateVersionDto, DeployVersionDto, DefinitionsQueryDto } from './dto/approval.dto';
import { ProcessDefinitionItem, ProcessVersionItem, ProcessVersionDetailResponse } from './dto/approval-response.dto';
export declare class DefinitionService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    findAll(query: DefinitionsQueryDto): Promise<{
        items: ProcessDefinitionItem[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    create(dto: CreateDefinitionDto, userId: string): Promise<ProcessDefinitionItem>;
    findByKey(key: string): Promise<ProcessDefinitionItem>;
    update(key: string, dto: UpdateDefinitionDto, userId: string): Promise<ProcessDefinitionItem>;
    delete(key: string): Promise<{
        success: boolean;
        message: string;
    }>;
    getVersions(key: string): Promise<{
        items: ProcessVersionItem[];
    }>;
    syncFromConfig(userId: string): Promise<{
        success: boolean;
        message: string;
        syncedCount: number;
    }>;
    listDefinitions(params: {
        category?: string;
        status?: string;
        page?: number;
        limit?: number;
    }): Promise<{
        items: ProcessDefinitionItem[];
        total: number;
    }>;
    getDefinition(key: string): Promise<ProcessDefinitionItem>;
    createDefinition(dto: CreateDefinitionDto, createdBy: string): Promise<ProcessDefinitionItem>;
    updateDefinition(key: string, dto: UpdateDefinitionDto, updatedBy: string): Promise<ProcessDefinitionItem>;
    deleteDefinition(key: string): Promise<{
        success: boolean;
        message: string;
    }>;
    listVersions(key: string): Promise<ProcessVersionItem[]>;
    getVersion(key: string, version: number): Promise<ProcessVersionDetailResponse>;
    createVersion(key: string, dto: CreateVersionDto, createdBy: string): Promise<ProcessVersionItem>;
    updateVersion(key: string, version: number, dto: UpdateVersionDto, updatedBy: string): Promise<ProcessVersionItem>;
    deployVersion(key: string, version: number, dto: DeployVersionDto, deployedBy: string): Promise<ProcessVersionItem>;
    private validateProcessModel;
}
