import { Context, DAL, FilterableProductOptionValueProps, FindConfig, IEventBusModuleService, InferEntityType, InternalModuleDeclaration, ModuleJoinerConfig, ModulesSdkTypes, ProductTypes, RestoreReturn, SoftDeleteReturn } from "@medusajs/framework/types";
import { Product, ProductCategory, ProductCollection, ProductImage, ProductOption, ProductOptionValue, ProductProductOption, ProductProductOptionValue, ProductTag, ProductType, ProductVariant, ProductVariantProductImage } from "../models";
import { ProductCategoryService } from ".";
import { Modules } from "@medusajs/framework/utils";
import { ProductRepository } from "../repositories";
import { UpdateCollectionInput, UpdateProductInput, UpdateProductOptionInput, UpdateProductVariantInput, VariantImageInputArray } from "../types";
type InjectedDependencies = {
    baseRepository: DAL.RepositoryService;
    productRepository: ProductRepository;
    productService: ModulesSdkTypes.IMedusaInternalService<any, any>;
    productVariantService: ModulesSdkTypes.IMedusaInternalService<any, any>;
    productTagService: ModulesSdkTypes.IMedusaInternalService<any>;
    productCategoryService: ProductCategoryService;
    productCollectionService: ModulesSdkTypes.IMedusaInternalService<any>;
    productImageService: ModulesSdkTypes.IMedusaInternalService<any>;
    productImageProductService: ModulesSdkTypes.IMedusaInternalService<any>;
    productTypeService: ModulesSdkTypes.IMedusaInternalService<any>;
    productOptionService: ModulesSdkTypes.IMedusaInternalService<any>;
    productProductOptionService: ModulesSdkTypes.IMedusaInternalService<any>;
    productProductOptionValueService: ModulesSdkTypes.IMedusaInternalService<any>;
    productOptionValueService: ModulesSdkTypes.IMedusaInternalService<any>;
    productVariantProductImageService: ModulesSdkTypes.IMedusaInternalService<any>;
    [Modules.EVENT_BUS]?: IEventBusModuleService;
};
declare const ProductModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<{
    Product: {
        dto: ProductTypes.ProductDTO;
    };
    ProductCategory: {
        dto: ProductTypes.ProductCategoryDTO;
    };
    ProductCollection: {
        dto: ProductTypes.ProductCollectionDTO;
    };
    ProductOption: {
        dto: ProductTypes.ProductOptionDTO;
    };
    ProductOptionValue: {
        dto: ProductTypes.ProductOptionValueDTO;
    };
    ProductTag: {
        dto: ProductTypes.ProductTagDTO;
    };
    ProductType: {
        dto: ProductTypes.ProductTypeDTO;
    };
    ProductVariant: {
        dto: ProductTypes.ProductVariantDTO;
    };
    ProductImage: {
        dto: ProductTypes.ProductImageDTO;
    };
    ProductProductOption: {
        dto: ProductTypes.ProductProductOptionDTO;
    };
}>;
export default class ProductModuleService extends ProductModuleService_base implements ProductTypes.IProductModuleService {
    protected readonly moduleDeclaration: InternalModuleDeclaration;
    protected baseRepository_: DAL.RepositoryService;
    protected readonly productRepository_: ProductRepository;
    protected readonly productService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof Product>>;
    protected readonly productVariantService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductVariant>>;
    protected readonly productCategoryService_: ProductCategoryService;
    protected readonly productTagService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductTag>>;
    protected readonly productCollectionService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductCollection>>;
    protected readonly productImageService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductImage>>;
    protected readonly productTypeService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductType>>;
    protected readonly productOptionService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductOption>>;
    protected readonly productOptionValueService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductOptionValue>>;
    protected readonly productProductOptionService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductProductOption>>;
    protected readonly productProductOptionValueService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductProductOptionValue>>;
    protected readonly productVariantProductImageService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof ProductVariantProductImage>>;
    protected readonly eventBusModuleService_?: IEventBusModuleService;
    constructor({ baseRepository, productRepository, productService, productVariantService, productTagService, productCategoryService, productCollectionService, productImageService, productTypeService, productOptionService, productProductOptionService, productProductOptionValueService, productOptionValueService, productVariantProductImageService, [Modules.EVENT_BUS]: eventBusModuleService, }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
    __joinerConfig(): ModuleJoinerConfig;
    retrieveProduct(productId: string, config?: FindConfig<ProductTypes.ProductDTO>, sharedContext?: Context): Promise<ProductTypes.ProductDTO>;
    listProducts(filters?: ProductTypes.FilterableProductProps, config?: FindConfig<ProductTypes.ProductDTO>, sharedContext?: Context): Promise<ProductTypes.ProductDTO[]>;
    listAndCountProducts(filters?: ProductTypes.FilterableProductProps, config?: FindConfig<ProductTypes.ProductDTO>, sharedContext?: Context): Promise<[ProductTypes.ProductDTO[], number]>;
    protected applyOptionValueFilter_(filters?: ProductTypes.FilterableProductProps, sharedContext?: Context): Promise<{
        filters?: ProductTypes.FilterableProductProps;
        shouldReturnEmpty: boolean;
    }>;
    protected getProductFindConfig_(config?: FindConfig<ProductTypes.ProductDTO>): FindConfig<ProductTypes.ProductDTO>;
    createProductVariants(data: ProductTypes.CreateProductVariantDTO[], sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO[]>;
    createProductVariants(data: ProductTypes.CreateProductVariantDTO, sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO>;
    protected createVariants_(data: ProductTypes.CreateProductVariantDTO[], sharedContext?: Context): Promise<InferEntityType<typeof ProductVariant>[]>;
    upsertProductVariants(data: ProductTypes.UpsertProductVariantDTO[], sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO[]>;
    upsertProductVariants(data: ProductTypes.UpsertProductVariantDTO, sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO>;
    updateProductVariants(id: string, data: ProductTypes.UpdateProductVariantDTO, sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO>;
    updateProductVariants(selector: ProductTypes.FilterableProductVariantProps, data: ProductTypes.UpdateProductVariantDTO, sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO[]>;
    protected updateVariants_(data: UpdateProductVariantInput[], sharedContext?: Context): Promise<InferEntityType<typeof ProductVariant>[]>;
    createProductTags(data: ProductTypes.CreateProductTagDTO[], sharedContext?: Context): Promise<ProductTypes.ProductTagDTO[]>;
    createProductTags(data: ProductTypes.CreateProductTagDTO, sharedContext?: Context): Promise<ProductTypes.ProductTagDTO>;
    upsertProductTags(data: ProductTypes.UpsertProductTagDTO[], sharedContext?: Context): Promise<ProductTypes.ProductTagDTO[]>;
    upsertProductTags(data: ProductTypes.UpsertProductTagDTO, sharedContext?: Context): Promise<ProductTypes.ProductTagDTO>;
    protected upsertProductTags_(data: ProductTypes.UpsertProductTagDTO[] | ProductTypes.UpsertProductTagDTO, sharedContext?: Context): Promise<InferEntityType<typeof ProductTag>[]>;
    updateProductTags(id: string, data: ProductTypes.UpdateProductTagDTO, sharedContext?: Context): Promise<ProductTypes.ProductTagDTO>;
    updateProductTags(selector: ProductTypes.FilterableProductTagProps, data: ProductTypes.UpdateProductTagDTO, sharedContext?: Context): Promise<ProductTypes.ProductTagDTO[]>;
    createProductTypes(data: ProductTypes.CreateProductTypeDTO[], sharedContext?: Context): Promise<ProductTypes.ProductTypeDTO[]>;
    createProductTypes(data: ProductTypes.CreateProductTypeDTO, sharedContext?: Context): Promise<ProductTypes.ProductTypeDTO>;
    upsertProductTypes(data: ProductTypes.UpsertProductTypeDTO[], sharedContext?: Context): Promise<ProductTypes.ProductTypeDTO[]>;
    upsertProductTypes(data: ProductTypes.UpsertProductTypeDTO, sharedContext?: Context): Promise<ProductTypes.ProductTypeDTO>;
    protected upsertProductTypes_(data: ProductTypes.UpsertProductTypeDTO | ProductTypes.UpsertProductTypeDTO[], sharedContext?: Context): Promise<InferEntityType<typeof ProductType>[]>;
    updateProductTypes(id: string, data: ProductTypes.UpdateProductTypeDTO, sharedContext?: Context): Promise<ProductTypes.ProductTypeDTO>;
    updateProductTypes(selector: ProductTypes.FilterableProductTypeProps, data: ProductTypes.UpdateProductTypeDTO, sharedContext?: Context): Promise<ProductTypes.ProductTypeDTO[]>;
    createProductOptions(data: ProductTypes.CreateProductOptionDTO[], sharedContext?: Context): Promise<ProductTypes.ProductOptionDTO[]>;
    createProductOptions(data: ProductTypes.CreateProductOptionDTO, sharedContext?: Context): Promise<ProductTypes.ProductOptionDTO>;
    protected createOptions_(data: ProductTypes.CreateProductOptionDTO[], sharedContext?: Context): Promise<InferEntityType<typeof ProductOption>[]>;
    upsertProductOptions(data: ProductTypes.UpsertProductOptionDTO[], sharedContext?: Context): Promise<ProductTypes.ProductOptionDTO[]>;
    upsertProductOptions(data: ProductTypes.UpsertProductOptionDTO, sharedContext?: Context): Promise<ProductTypes.ProductOptionDTO>;
    updateProductOptions(id: string, data: ProductTypes.UpdateProductOptionDTO, sharedContext?: Context): Promise<ProductTypes.ProductOptionDTO>;
    updateProductOptions(selector: ProductTypes.FilterableProductOptionProps, data: ProductTypes.UpdateProductOptionDTO, sharedContext?: Context): Promise<ProductTypes.ProductOptionDTO[]>;
    protected updateOptions_(data: UpdateProductOptionInput[], sharedContext?: Context): Promise<InferEntityType<typeof ProductOption>[]>;
    /**
     * Guards against removing product option values that are still associated
     * with products. Shared by the option update flow (when values are removed)
     * and the option value deletion flow.
     */
    protected validateOptionValuesNotAssociatedWithProducts_(valueIds: string[], sharedContext?: Context): Promise<void>;
    softDeleteProductOptions<TReturnableLinkableKeys extends string = string>(primaryKeyValues: string | object | string[] | object[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    protected softDeleteProductOptions_<TReturnableLinkableKeys extends string = string>(primaryKeyValues: string | object | string[] | object[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    softDeleteProductOptionValues<TReturnableLinkableKeys extends string = string>(primaryKeyValues: string | object | string[] | object[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    protected softDeleteProductOptionValues_<TReturnableLinkableKeys extends string = string>(primaryKeyValues: string | object | string[] | object[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    restoreProductOptions<TReturnableLinkableKeys extends string>(ids: string | object | string[] | object[], config?: RestoreReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    protected restoreProductOptions_<TReturnableLinkableKeys extends string>(ids: string | object | string[] | object[], config?: RestoreReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    addProductOptionToProduct(productOptionProductPair: ProductTypes.ProductOptionProductPair, sharedContext?: Context): Promise<{
        id: string;
    }>;
    addProductOptionToProduct(productOptionProductPairs: ProductTypes.ProductOptionProductPair[], sharedContext?: Context): Promise<{
        id: string;
    }[]>;
    protected addProductOptionToProduct_(data: ProductTypes.ProductOptionProductPair | ProductTypes.ProductOptionProductPair[], sharedContext?: Context): Promise<{
        id: string;
    } | {
        id: string;
    }[]>;
    removeProductOptionFromProduct(groupCustomerPair: ProductTypes.ProductOptionProductPair, sharedContext?: Context): Promise<string[]>;
    removeProductOptionFromProduct(groupCustomerPairs: ProductTypes.ProductOptionProductPair[], sharedContext?: Context): Promise<string[]>;
    protected removeProductOptionFromProduct_(data: ProductTypes.ProductOptionProductPair | ProductTypes.ProductOptionProductPair[], alreadyValidatedProductIds: Set<string>, sharedContext?: Context): Promise<string[]>;
    updateProductOptionValuesOnProduct(update: ProductTypes.ProductOptionProductValueUpdate, sharedContext?: Context): Promise<void>;
    updateProductOptionValuesOnProduct(updates: ProductTypes.ProductOptionProductValueUpdate[], sharedContext?: Context): Promise<void>;
    protected updateProductOptionValuesOnProduct_(data: ProductTypes.ProductOptionProductValueUpdate | ProductTypes.ProductOptionProductValueUpdate[], sharedContext?: Context): Promise<void>;
    protected normalizeProductOptionValueUpdates_(updates: ProductTypes.ProductOptionProductValueUpdate[], sharedContext: Context): Promise<Array<Omit<ProductTypes.ProductOptionProductValueUpdate, "add"> & {
        add?: string[];
    }>>;
    createProductCollections(data: ProductTypes.CreateProductCollectionDTO[], sharedContext?: Context): Promise<ProductTypes.ProductCollectionDTO[]>;
    createProductCollections(data: ProductTypes.CreateProductCollectionDTO, sharedContext?: Context): Promise<ProductTypes.ProductCollectionDTO>;
    createCollections_(data: ProductTypes.CreateProductCollectionDTO[], sharedContext?: Context): Promise<InferEntityType<typeof ProductCollection>[]>;
    upsertProductCollections(data: ProductTypes.UpsertProductCollectionDTO[], sharedContext?: Context): Promise<ProductTypes.ProductCollectionDTO[]>;
    upsertProductCollections(data: ProductTypes.UpsertProductCollectionDTO, sharedContext?: Context): Promise<ProductTypes.ProductCollectionDTO>;
    protected upsertCollections_(data: ProductTypes.UpsertProductCollectionDTO[] | ProductTypes.UpsertProductCollectionDTO, sharedContext?: Context): Promise<InferEntityType<typeof ProductCollection>[]>;
    updateProductCollections(id: string, data: ProductTypes.UpdateProductCollectionDTO, sharedContext?: Context): Promise<ProductTypes.ProductCollectionDTO>;
    updateProductCollections(selector: ProductTypes.FilterableProductCollectionProps, data: ProductTypes.UpdateProductCollectionDTO, sharedContext?: Context): Promise<ProductTypes.ProductCollectionDTO[]>;
    protected updateCollections_(data: UpdateCollectionInput[], sharedContext?: Context): Promise<InferEntityType<typeof ProductCollection>[]>;
    createProductCategories(data: ProductTypes.CreateProductCategoryDTO[], sharedContext?: Context): Promise<ProductTypes.ProductCategoryDTO[]>;
    createProductCategories(data: ProductTypes.CreateProductCategoryDTO, sharedContext?: Context): Promise<ProductTypes.ProductCategoryDTO>;
    upsertProductCategories(data: ProductTypes.UpsertProductCategoryDTO[], sharedContext?: Context): Promise<ProductTypes.ProductCategoryDTO[]>;
    upsertProductCategories(data: ProductTypes.UpsertProductCategoryDTO, sharedContext?: Context): Promise<ProductTypes.ProductCategoryDTO>;
    protected upsertProductCategories_(data: ProductTypes.UpsertProductCategoryDTO[] | ProductTypes.UpsertProductCategoryDTO, sharedContext?: Context): Promise<InferEntityType<typeof ProductCategory>[]>;
    updateProductCategories(id: string, data: ProductTypes.UpdateProductCategoryDTO, sharedContext?: Context): Promise<ProductTypes.ProductCategoryDTO>;
    updateProductCategories(selector: ProductTypes.FilterableProductTypeProps, data: ProductTypes.UpdateProductCategoryDTO, sharedContext?: Context): Promise<ProductTypes.ProductCategoryDTO[]>;
    protected updateProductCategories_(idOrSelector: string | ProductTypes.FilterableProductTypeProps, data: ProductTypes.UpdateProductCategoryDTO, sharedContext?: Context): Promise<InferEntityType<typeof ProductCategory>[]>;
    softDeleteProductCategories<TReturnableLinkableKeys extends string = string>(primaryKeyValues: string | object | string[] | object[], config?: SoftDeleteReturn<TReturnableLinkableKeys>, sharedContext?: Context): Promise<Record<string, string[]> | void>;
    createProducts(data: ProductTypes.CreateProductDTO[], sharedContext?: Context): Promise<ProductTypes.ProductDTO[]>;
    createProducts(data: ProductTypes.CreateProductDTO, sharedContext?: Context): Promise<ProductTypes.ProductDTO>;
    upsertProducts(data: ProductTypes.UpsertProductDTO[], sharedContext?: Context): Promise<ProductTypes.ProductDTO[]>;
    upsertProducts(data: ProductTypes.UpsertProductDTO, sharedContext?: Context): Promise<ProductTypes.ProductDTO>;
    updateProducts(id: string, data: ProductTypes.UpdateProductDTO, sharedContext?: Context): Promise<ProductTypes.ProductDTO>;
    updateProducts(selector: ProductTypes.FilterableProductProps, data: ProductTypes.UpdateProductDTO, sharedContext?: Context): Promise<ProductTypes.ProductDTO[]>;
    protected createProducts_(data: ProductTypes.CreateProductDTO[], sharedContext?: Context): Promise<InferEntityType<typeof Product>[]>;
    protected updateProducts_(data: UpdateProductInput[], sharedContext?: Context): Promise<InferEntityType<typeof Product>[]>;
    updateProductOptionValues(idOrSelector: string, data: ProductTypes.UpdateProductOptionValueDTO, sharedContext?: Context): Promise<ProductTypes.ProductOptionValueDTO>;
    updateProductOptionValues(selector: FilterableProductOptionValueProps, data: ProductTypes.UpdateProductOptionValueDTO, sharedContext?: Context): Promise<ProductTypes.ProductOptionValueDTO[]>;
    protected updateProductOptionValues_(normalizedInput: ({
        id: string;
    } & ProductTypes.UpdateProductOptionValueDTO)[], sharedContext?: Context): Promise<InferEntityType<typeof ProductOptionValue>[]>;
    /**
     * Validates the manually provided handle value of the product
     * to be URL-safe
     */
    protected validateProductPayload(productData: UpdateProductInput | ProductTypes.CreateProductDTO): void;
    protected validateProductCreatePayload(productData: ProductTypes.CreateProductDTO): void;
    protected validateProductUpdatePayload(productData: UpdateProductInput): void;
    protected normalizeCreateProductInput<T extends ProductTypes.CreateProductDTO | ProductTypes.CreateProductDTO[], TOutput = T extends ProductTypes.CreateProductDTO[] ? ProductTypes.CreateProductDTO[] : ProductTypes.CreateProductDTO>(products: T, sharedContext?: Context): Promise<TOutput>;
    /**
     * Normalizes the input for the update product input
     * @param products - The products to normalize
     * @param originalProducts - The original products to use for the normalization (must include options and option values relations)
     * @returns The normalized products
     */
    protected normalizeUpdateProductInput<T extends UpdateProductInput | UpdateProductInput[], TOutput = T extends UpdateProductInput[] ? UpdateProductInput[] : UpdateProductInput>(products: T, originalProducts?: InferEntityType<typeof Product>[]): Promise<TOutput>;
    protected static normalizeCreateProductCollectionInput(collection: ProductTypes.CreateProductCollectionDTO): ProductTypes.CreateProductCollectionDTO;
    protected static normalizeUpdateProductCollectionInput(collection: ProductTypes.CreateProductCollectionDTO | UpdateCollectionInput): ProductTypes.CreateProductCollectionDTO | UpdateCollectionInput;
    protected static validateVariantOptions(variants: ProductTypes.CreateProductVariantDTO[] | ProductTypes.UpdateProductVariantDTO[], options: InferEntityType<typeof ProductOption>[], productId: string, allowedValueIds?: Set<string>): void;
    protected static assignOptionsToVariants(variants: ProductTypes.CreateProductVariantDTO[] | ProductTypes.UpdateProductVariantDTO[], optionsByProductId: Map<string, InferEntityType<typeof ProductOption>[]>, valueIdsByProductId?: Map<string, Set<string>>): ProductTypes.CreateProductVariantDTO[] | ProductTypes.UpdateProductVariantDTO[];
    /**
     * Validate that `data` doesn't create or update a variant to have same options combination
     * as an existing variant on the product.
     * @param data - create / update payloads
     * @param variants - existing variants
     * @protected
     */
    protected static checkIfVariantWithOptionsAlreadyExists(data: ((ProductTypes.CreateProductVariantDTO | UpdateProductVariantInput) & {
        options: {
            id: string;
        }[];
        product_id: string;
    })[], variants: InferEntityType<typeof ProductVariant>[]): void;
    /**
     * Validate that array of variants that we are upserting doesn't have variants with the same options.
     * @param variants -
     * @protected
     */
    protected static checkIfVariantsHaveUniqueOptionsCombinations(variants: (ProductTypes.UpdateProductVariantDTO & {
        options: {
            id: string;
        }[];
    })[]): void;
    listProductVariants(filters?: ProductTypes.FilterableProductVariantProps, config?: FindConfig<ProductTypes.ProductVariantDTO>, sharedContext?: Context): Promise<ProductTypes.ProductVariantDTO[]>;
    listAndCountProductVariants(filters?: ProductTypes.FilterableProductVariantProps, config?: FindConfig<ProductTypes.ProductVariantDTO>, sharedContext?: Context): Promise<[ProductTypes.ProductVariantDTO[], number]>;
    retrieveProductVariant(id: string, config?: FindConfig<any>, sharedContext?: Context): Promise<any>;
    addImageToVariant(data: VariantImageInputArray, sharedContext?: Context): Promise<{
        id: string;
    }[]>;
    protected addImageToVariant_(data: VariantImageInputArray, sharedContext?: Context): Promise<{
        id: string;
    } | {
        id: string;
    }[]>;
    removeImageFromVariant(data: VariantImageInputArray, sharedContext?: Context): Promise<void>;
    protected removeImageFromVariant_(data: VariantImageInputArray, sharedContext?: Context): Promise<void>;
    private getVariantImages;
    protected validateOptionRemoval_(pairs: Array<{
        productId: string;
        optionId: string;
        valueIdsToCheck?: string[];
    }>, sharedContext?: Context): Promise<void>;
    private filterOptionValues;
    /**
     * Assigns the computed `images` value to each variant of the given products:
     * every variant receives the product's general images (images not assigned
     * to any variant), and variants with specific assignments additionally
     * receive those images. This union is what `variants.images` exposes — it
     * cannot be loaded through the m:n relation, which only contains explicit
     * assignments.
     *
     * The products are expected to be serialized already. The assignment is
     * intentionally performed on plain DTOs (after serialization) so that no
     * ORM entity ever leaks into the returned payload, and the variant <> image
     * relations are fetched in a single query for all products.
     */
    private assignImagesToVariants;
    protected loadOptionsAndValuesByProductId_(productIds: string[], sharedContext?: Context): Promise<{
        optionsByProductId: Map<string, InferEntityType<typeof ProductOption>[]>;
        valueIdsByProductId: Map<string, Set<string>>;
    }>;
}
export {};
//# sourceMappingURL=product-module-service.d.ts.map