import { PrismaService } from '../prisma/prisma.service';
type ProductSelectionQuery = {
    applicationId?: string;
    loadId?: string;
};
type WheelCollectionQuery = ProductSelectionQuery & {
    wheelSizeId?: string;
    wheelSizeCode?: string;
    wheelSizeInch?: string;
};
type SuitableWheelsQuery = ProductSelectionQuery & {
    wheelSizeInch?: string;
    wheelTypeCode?: string;
};
type MountingQuery = SuitableWheelsQuery & {
    wheelTagCode?: string;
};
type PlateQuery = MountingQuery & {
    mountCode?: string;
};
type ProductQuery = PlateQuery & {
    mountLoad?: string;
};
export declare class ProductSelectionService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    getWheelSizes(query: ProductSelectionQuery): Promise<{
        application: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        items: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
            orderId: number;
            inch: number;
            productCount: number;
        }[];
    }>;
    getWheelCollections(query: WheelCollectionQuery): Promise<{
        application: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        wheelSize: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
            orderId: number;
            inch: number;
        };
        items: {
            orderId: number | null;
            productCount: number;
            sampleProductImage: string;
            subTypes: {
                orderId: number | null;
                productCount: number;
                id?: string | undefined;
                name?: string | undefined;
                code?: string | undefined;
                image?: string | undefined;
                status?: string | undefined;
            }[];
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        }[];
    }>;
    getSuitableWheels(query: SuitableWheelsQuery): Promise<{
        application: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        wheelSize: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
            orderId: number;
            inch: number;
        };
        wheelType: {
            orderId: number | null;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        items: {
            orderId: number | null;
            productCount: number;
            sampleProductImage: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        }[];
    }>;
    getMountings(query: MountingQuery): Promise<{
        application: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        wheelSize: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
            orderId: number;
            inch: number;
        };
        wheelType: {
            orderId: number | null;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        selectedWheel: {
            orderId: number | null;
            productCount: number;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        items: {
            orderId: number | null;
            productCount: number;
            sampleProductImage: string;
            details: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        }[];
    }>;
    getPlates(query: PlateQuery): Promise<{
        application: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        wheelSize: any;
        wheelType: {
            orderId: number | null | undefined;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        selectedWheel: {
            orderId: number | null | undefined;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        mounting: {
            orderId: number | null | undefined;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        items: never[];
        error: string;
    } | {
        application: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        wheelSize: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
            orderId: number;
            inch: number;
        };
        wheelType: {
            orderId: number | null;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        selectedWheel: {
            orderId: number | null;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        mounting: {
            orderId: number | null;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        items: {
            id: string;
            name: string;
            code: string;
            plateName: string;
            plateCode: string;
            yokeCode: string;
            displayCode: string;
            yokeLoad: string;
            status: string;
            productCount: number;
        }[];
        error: string;
    }>;
    getProducts(query: ProductQuery): Promise<{
        success: number;
        app: {
            id: string;
            name: string;
            code: string;
            image: string;
            status: string;
        } | null;
        load: {
            orderId: number | null | undefined;
            displayName: string;
            id?: string | undefined;
            name?: string | undefined;
            code?: string | undefined;
            image?: string | undefined;
            status?: string | undefined;
        };
        inch: number;
        wtCode: string;
        wheelCode: string;
        mountCode: string;
        mountLoad: string;
        products: {
            id: any;
            code: any;
            name: any;
            description: string;
            image: string;
            price: null;
            productTag: string;
        }[];
    }>;
    searchFinalProducts(search: string, pageSize?: string): Promise<{
        success: number;
        items: {
            id: any;
            code: any;
            name: any;
            description: string;
            image: string;
            price: null;
            productTag: string;
        }[];
    }>;
    getProductInformation(code: string): Promise<{
        success: number;
        product: {
            gallery: string[];
            detailedDescription: string;
            specifications: {
                label: string;
                code: string;
                value: string;
            }[];
            id: any;
            code: any;
            name: any;
            description: string;
            image: string;
            price: null;
            productTag: string;
        };
    }>;
    getProductBrochure(code: string): Promise<{
        filename: string;
        buffer: Buffer<ArrayBuffer>;
    }>;
    private buildSelectionContext;
    private resolveWheelSize;
    private resolveWheelType;
    private resolveWheelTag;
    private resolveMounting;
    private resolveLoadCodesFrom;
    private buildProductWhere;
    private hasApplicationProducts;
    private findProductByCode;
    private toPublicProduct;
    private resolveFinalProductImage;
    private findExactProductCodeImageAsset;
    private findProductImageAsset;
    private findProductBrochureImageAsset;
    private findRootJpegAsset;
    private composeProductAssetCode;
    private buildProductSpecifications;
    private resolveSpecValue;
    private toPublicTag;
    private toPublicLoad;
    private numericValue;
    private resolveYokeDisplayCode;
    private mountingImageSuffix;
    private groupCount;
    private resolveInchImageUrl;
    private emptyPlateResponse;
}
export {};
