import { PrismaService } from '../prisma/prisma.service';
type SetQuery = {
    page?: string;
    pageSize?: string;
    search?: string;
    sortBy?: string;
    sortOrder?: string;
};
type CodeGeneratorQuery = SetQuery & {
    inch?: string;
};
type CodeGeneratorSetQuery = {
    inch?: string;
    search?: string;
    limit?: string;
};
type CreateSetDto = {
    productInch?: number | string;
    holderCode?: string;
    plateCodes?: string[];
    finishes?: CreateFinishDto[];
    finishTypes?: string[];
    wheelCodes?: string[];
};
type CreateFinishDto = {
    type?: string;
    shortLabel?: string;
    label?: string;
    finishCode?: string;
    frameColor?: string;
    frameColorCode?: string;
    status?: string;
};
type CodeGeneratorImportDto = {
    content?: string;
    fileName?: string;
    inch?: number | string;
};
type CodeGeneratorImportFile = {
    buffer?: Buffer;
    originalname?: string;
    mimetype?: string;
};
type CodeGeneratorEmailSettingsDto = {
    recipientEmail?: string;
    ccEmail?: string;
};
type CodeGeneratorDeleteOtpDto = {
    startCode?: string;
    endCode?: string;
};
type CodeGeneratorDeleteConfirmDto = {
    requestId?: string;
    otp?: string;
};
export declare class SetCreatorService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    list(query: SetQuery): Promise<{
        items: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            holderCode: string;
            holderName: string;
            productInch: number;
            setNumber: number;
            plateCount: number;
            finishCount: number;
            wheelCount: number;
        }[];
        meta: {
            total: number;
            page: number;
            pageSize: number;
            totalPages: number;
        };
    }>;
    getFinishOptions(): {
        type: "EG_COATED" | "CED_COATED" | "POWDER_COATED";
        shortLabel: "EG COATED" | "CED COATED" | "POWDER COATED";
        label: "ELECTRO GALVANISED ZINC COATING" | "CED COATING" | "POWDER COATING";
    }[];
    getInchOptions(): Promise<{
        value: number;
        label: string;
    }[]>;
    getHolderOptions(inch: string | undefined): Promise<{
        holderCode: string;
        holderName: string;
        holderInchValue: number;
        holderInch: string;
    }[]>;
    getPlateOptions(holderCode: string | undefined): Promise<{
        plateCode: string;
        plateName: string;
        brakeName: string;
    }[]>;
    getWheelOptions(inch: string | undefined): Promise<{
        wheelInchValue: number;
        wheelName: string;
        wheelCode: string;
        wheelType: string;
        bearingType: string;
    }[]>;
    listCodeGeneratorProducts(query: CodeGeneratorQuery): Promise<{
        items: {
            id: string;
            code: string;
            holderName: string;
            wheelName: string;
            productInch: number;
        }[];
        meta: {
            total: number;
            page: number;
            pageSize: number;
            totalPages: number;
        };
    }>;
    getCodeGeneratorSetOptions(query: CodeGeneratorSetQuery): Promise<{
        id: string;
        holderName: string;
        productInch: number;
        setNumber: number;
    }[]>;
    getCodeGeneratorDeleteEmailSettings(): Promise<{
        recipientEmail: string;
        ccEmail: string;
    }>;
    updateCodeGeneratorDeleteEmailSettings(dto: CodeGeneratorEmailSettingsDto): Promise<{
        recipientEmail: string;
        ccEmail: string;
    }>;
    requestCodeGeneratorDeleteOtp(dto: CodeGeneratorDeleteOtpDto): Promise<{
        requestId: `${string}-${string}-${string}-${string}-${string}`;
        matchedCount: number;
        expiresAt: Date;
        message: string;
    }>;
    confirmCodeGeneratorDelete(dto: CodeGeneratorDeleteConfirmDto): Promise<{
        deleted: number;
        message: string;
    }>;
    detail(id: string): Promise<{
        plates: {
            id: string;
            createdAt: Date;
            setId: string;
            plateCode: string;
            plateName: string;
            brakeName: string;
        }[];
        finishes: {
            id: string;
            createdAt: Date;
            setId: string;
            finishType: string;
            finishLabel: string;
        }[];
        wheels: {
            id: string;
            wheelInchValue: number;
            wheelName: string;
            wheelCode: string;
            wheelType: string;
            bearingType: string;
            createdAt: Date;
            setId: string;
        }[];
        products: {
            id: string;
            wheelName: string;
            wheelCode: string;
            createdAt: Date;
            updatedAt: Date;
            setId: string;
            holderCode: string;
            holderName: string;
            plateCode: string;
            plateName: string;
            brakeName: string;
            finishType: string;
            finishLabel: string;
            productName: string;
            productCode: string;
            productInch: number;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        holderCode: string;
        holderName: string;
        productInch: number;
        setNumber: number;
        plateCount: number;
        finishCount: number;
        wheelCount: number;
    }>;
    create(dto: CreateSetDto): Promise<{
        plates: {
            id: string;
            createdAt: Date;
            setId: string;
            plateCode: string;
            plateName: string;
            brakeName: string;
        }[];
        finishes: {
            id: string;
            createdAt: Date;
            setId: string;
            finishType: string;
            finishLabel: string;
        }[];
        wheels: {
            id: string;
            wheelInchValue: number;
            wheelName: string;
            wheelCode: string;
            wheelType: string;
            bearingType: string;
            createdAt: Date;
            setId: string;
        }[];
        products: {
            id: string;
            wheelName: string;
            wheelCode: string;
            createdAt: Date;
            updatedAt: Date;
            setId: string;
            holderCode: string;
            holderName: string;
            plateCode: string;
            plateName: string;
            brakeName: string;
            finishType: string;
            finishLabel: string;
            productName: string;
            productCode: string;
            productInch: number;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        holderCode: string;
        holderName: string;
        productInch: number;
        setNumber: number;
        plateCount: number;
        finishCount: number;
        wheelCount: number;
    }>;
    exportProducts(id: string | string[]): Promise<import("../common/tabular-file.util").ExportFile>;
    importCodeGeneratorProducts(dto: CodeGeneratorImportDto, file?: CodeGeneratorImportFile): Promise<{
        created: number;
        skipped: number;
        errors: string[];
    }>;
    private buildCodeGeneratorTemplateRows;
    private buildImportResolutionContext;
    private resolveImportTemplateRow;
    private createImportTemplateSet;
    private findProductsInCodeRange;
    private resolveFinishSelections;
    private findDuplicateProducts;
    private getNextSetNumber;
    private getNextProductCodeCounter;
    private toPositiveNumber;
}
export {};
