import { PrismaService } from "../../../../core/database/prisma/prisma.service";
import { CreateFormInstanceDto, UpdateFormInstanceDto, SubmitFormInstanceDto, QueryMyFormInstancesDto, QueryAllFormInstancesDto, BatchUpdateStatusDto, ExportFormInstancesDto, GetFormInstanceStatsDto, CancelFormInstanceDto } from '../dto';
import { FormIdentifierResolverService } from './form-identifier-resolver.service';
import { FormApprovalIntegrationService } from './form-approval-integration.service';
import { FormBusinessKeyService } from './form-business-key.service';
export declare class FormInstanceService {
    private readonly prisma;
    private readonly identifierResolver;
    private readonly approvalIntegration;
    private readonly businessKeyService;
    private readonly logger;
    constructor(prisma: PrismaService, identifierResolver: FormIdentifierResolverService, approvalIntegration: FormApprovalIntegrationService, businessKeyService: FormBusinessKeyService);
    create(dto: CreateFormInstanceDto, userId: string): Promise<any>;
    findMy(query: QueryMyFormInstancesDto, userId: string): Promise<{
        items: any[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    findOne(instanceIdentifier: string, userId: string): Promise<any>;
    update(instanceIdentifier: string, dto: UpdateFormInstanceDto, userId: string): Promise<any>;
    submit(instanceIdentifier: string, dto: SubmitFormInstanceDto, userId: string): Promise<any>;
    remove(instanceIdentifier: string, userId: string): Promise<{
        id: string;
        deleted: boolean;
    }>;
    cancel(instanceIdentifier: string, dto: CancelFormInstanceDto, userId: string): Promise<any>;
    restore(instanceIdentifier: string, userId: string): Promise<{
        id: string;
        businessKey: string;
        deletedAt: null;
        restored: boolean;
    }>;
    findAll(query: QueryAllFormInstancesDto): Promise<{
        items: any[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    batchUpdateStatus(dto: BatchUpdateStatusDto): Promise<{
        updated: number;
        failed: number;
    }>;
    exportInstances(dto: ExportFormInstancesDto): Promise<{
        format: "csv" | "excel";
        filename: string;
        buffer: Buffer<ArrayBufferLike>;
        rowCount: number;
    }>;
    private flattenJsonForCell;
    getStats(dto: GetFormInstanceStatsDto): Promise<{
        formKey: string;
        totalInstances: number;
        statusBreakdown: {
            DRAFT: number;
            SUBMITTED: number;
            APPROVED: number;
            REJECTED: number;
            CANCELLED: number;
        };
        submissionTrend: {
            bucket: string;
            count: number;
        }[];
        topUsers: {
            userId: string;
            count: number;
        }[];
    }>;
    private getStatusBreakdown;
    private getSubmissionTrend;
    private getTopUsers;
    private formatInstanceResponse;
}
