import type { Response } from 'express';
import type { CurrentUserPayload } from "../../../common/decorators/current-user.decorator";
import { ImportBatchService } from './import-batch.service';
import { PurchaseOrderImporter } from './purchase-order/purchase-order.importer';
import { PrismaService } from "../../../core/database/prisma/prisma.service";
export declare class ImportController {
    private readonly importBatchService;
    private readonly purchaseOrderImporter;
    private readonly prisma;
    constructor(importBatchService: ImportBatchService, purchaseOrderImporter: PurchaseOrderImporter, prisma: PrismaService);
    private getImporter;
    private resolveType;
    private isAdmin;
    downloadTemplate(typeParam: string, locale: "zh" | "en" | undefined, res: Response): Promise<void>;
    preview(typeParam: string, file: Express.Multer.File | undefined, user: CurrentUserPayload): Promise<{
        batchId: string;
        summary: {
            totalRows: number;
            successRows: number;
            errorRows: number;
            warningRows: number;
            templateSchemaHash: string;
            fileHash: string;
            status: import("@prisma/client").$Enums.ImportBatchStatus;
            deduped: boolean;
        };
        errorPreview: import("./import-batch.service").ErrorPreviewEntry[];
    } | {
        batchId: string;
        summary: {
            totalRows: number;
            successRows: number;
            errorRows: number;
            warningRows: number;
            templateSchemaHash: string;
            fileHash: string;
            status: import("@prisma/client").$Enums.ImportBatchStatus;
            deduped?: undefined;
        };
        errorPreview: import("./import-batch.service").ErrorPreviewEntry[];
    }>;
    getBatch(batchId: string, user: CurrentUserPayload): Promise<{
        entries: {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.ImportEntryStatus;
            deletedAt: Date | null;
            payload: import("@prisma/client/runtime/library").JsonValue;
            batchId: string;
            rowNo: number;
            entityIds: string[];
            payloadHash: string;
            errorDetail: import("@prisma/client/runtime/library").JsonValue | null;
        }[];
    } & {
        type: import("@prisma/client").$Enums.ImportBatchType;
        id: string;
        createdAt: Date;
        userAgent: string | null;
        status: import("@prisma/client").$Enums.ImportBatchStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        clientIp: string | null;
        startedAt: Date | null;
        completedAt: Date | null;
        fileName: string;
        totalRows: number;
        fileHash: string;
        successRows: number;
        confirmedAt: Date | null;
        templateSchemaHash: string;
        errorRows: number;
        warningRows: number;
        confirmedById: string | null;
        errorSummary: import("@prisma/client/runtime/library").JsonValue | null;
    }>;
    listBatches(typeParam: string | undefined, scope: "mine" | "all" | undefined, page: string | undefined, limit: string | undefined, user: CurrentUserPayload): Promise<{
        items: {
            type: import("@prisma/client").$Enums.ImportBatchType;
            id: string;
            createdAt: Date;
            userAgent: string | null;
            status: import("@prisma/client").$Enums.ImportBatchStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            clientIp: string | null;
            startedAt: Date | null;
            completedAt: Date | null;
            fileName: string;
            totalRows: number;
            fileHash: string;
            successRows: number;
            confirmedAt: Date | null;
            templateSchemaHash: string;
            errorRows: number;
            warningRows: number;
            confirmedById: string | null;
            errorSummary: import("@prisma/client/runtime/library").JsonValue | null;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    confirm(batchId: string, user: CurrentUserPayload): Promise<{
        batchId: string;
        status: import("@prisma/client").$Enums.ImportBatchStatus;
        completedAt: Date | null;
        successRows: number;
        sideEffects: {
            recordCount?: number;
            notes?: string;
        } | undefined;
    }>;
    downloadErrorReport(batchId: string, user: CurrentUserPayload, res: Response): Promise<void>;
}
