import { PrismaService } from "../../../../core/database/prisma/prisma.service";
import { FormDefinitionService } from "../../form-engine/services/form-definition.service";
import { FormVersionService } from "../../form-engine/services/form-version.service";
import { FormTemplateService } from "../../form-engine/services/form-template.service";
import { DefinitionService } from "../../../approval/definition.service";
import { CreateFormDefinitionDto, UpdateFormDefinitionDto, FormDefinitionListItem } from '../dto/form-definition.dto';
import { SaveDesignDto, SaveFormDesignDto, SaveProcessDesignDto, DesignDataResponse, SaveDesignResponse } from '../dto/form-design.dto';
import { QueryFormDefinitionsDto, PaginatedResponse } from '../dto/query.dto';
import { RegionId } from '../decorators/region.decorator';
export declare class FormManagementService {
    private readonly prisma;
    private readonly formDefinitionService;
    private readonly formVersionService;
    private readonly formTemplateService;
    private readonly approvalDefinitionService;
    private readonly logger;
    private readonly orgRegionInclude;
    constructor(prisma: PrismaService, formDefinitionService: FormDefinitionService, formVersionService: FormVersionService, formTemplateService: FormTemplateService, approvalDefinitionService: DefinitionService);
    findAll(query: QueryFormDefinitionsDto, regionId: RegionId, userId: string, userPermissions: string[]): Promise<PaginatedResponse<FormDefinitionListItem>>;
    create(dto: CreateFormDefinitionDto, regionId: RegionId, userId: string): Promise<{
        id: string;
        regionId: "CN" | "US" | "ME";
        key: string;
        name: string;
        description: string | null;
        category: string;
        status: import("@prisma/client").$Enums.FormStatus;
        templateId: string | null;
        formVersion: {
            id: string;
            version: number;
            versionName: null;
            status: import("@prisma/client").$Enums.FormVersionStatus;
        };
        processDefinition: {
            id: string;
            key: string;
            processVersion: {
                id: string;
                version: number;
                versionName: null;
                status: import("@prisma/client").$Enums.VersionStatus;
            };
        };
        createdAt: string;
        createdBy: string;
    }>;
    findOne(id: string, regionId: RegionId): Promise<{
        id: string;
        regionId: "CN" | "US" | "ME";
        key: string;
        name: string;
        description: string | null;
        category: string;
        status: import("@prisma/client").$Enums.FormStatus;
        formVersion: {
            id: string;
            version: number;
            versionName: string | null;
            status: import("@prisma/client").$Enums.FormVersionStatus;
        } | null;
        processDefinition: {
            id: string;
            key: string;
            processVersion: {
                id: string;
                version: number;
                versionName: string;
                status: import("@prisma/client").$Enums.VersionStatus;
            } | null;
        } | null;
        createdAt: string;
        updatedAt: string;
    }>;
    update(id: string, dto: UpdateFormDefinitionDto, regionId: RegionId, userId: string): Promise<{
        id: string;
        regionId: "CN" | "US" | "ME";
        key: string;
        name: string;
        description: string | null;
        category: string;
        status: import("@prisma/client").$Enums.FormStatus;
        icon: string | null;
        color: string | null;
        updatedAt: string;
    }>;
    remove(id: string, regionId: RegionId): Promise<{
        id: string;
        deleted: boolean;
    }>;
    getDesignData(id: string, regionId: RegionId): Promise<DesignDataResponse>;
    saveDesign(id: string, dto: SaveDesignDto, regionId: RegionId, userId: string): Promise<SaveDesignResponse>;
    saveFormDesign(id: string, dto: SaveFormDesignDto, regionId: RegionId, userId: string): Promise<{
        formVersionId: any;
        savedAt: string;
    }>;
    saveProcessDesign(id: string, dto: SaveProcessDesignDto, regionId: RegionId, userId: string): Promise<{
        processVersionId: any;
        savedAt: string;
    }>;
    private validateRegionAccess;
    private mapToListItem;
    private loadActiveSnapshotMap;
    private saveFormDesignInternal;
    private saveProcessDesignInternal;
    archive(id: string, regionId: RegionId, userId: string): Promise<{
        id: string;
        status: string;
        message: string;
        archivedAt?: undefined;
    } | {
        id: string;
        status: import("@prisma/client").$Enums.FormStatus;
        archivedAt: string;
        message: string;
    }>;
    disable(id: string, regionId: RegionId, userId: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.FormStatus;
        disabledAt: string;
        message: string;
    }>;
    enable(id: string, regionId: RegionId, userId: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.FormStatus;
        enabledAt: string;
        message: string;
    }>;
    private mapApprovalMode;
    previewProcessWithApprovers(formId: string, dto: {
        formData: Record<string, any>;
        departmentId?: string;
        initiatorId?: string;
    }, userId: string): Promise<{
        model: {
            nodes: any[];
            edges: any;
        };
        initiator: {
            id: string;
            name: string;
            avatar: string | undefined;
        };
    }>;
    private resolveApproversForNode;
    private generateAssigneesFromConfig;
    private resolveApproverExpression;
    private findUserManager;
    private findDepartmentManager;
    private findManagerChain;
}
