import type Medusa from "@medusajs/js-sdk";
import type { HttpTypes } from "@medusajs/types";
import type { CatalogFacets, CatalogListInputBase, CatalogListResponse, CatalogService } from "./types";
type MedusaCatalogListQuery = Record<string, unknown>;
export type MedusaCatalogListInput = CatalogListInputBase;
export type MedusaCatalogTransformContext<TListParams extends MedusaCatalogListInput, TFacets> = {
    params: TListParams;
    query: MedusaCatalogListQuery;
    response: CatalogListResponse<HttpTypes.StoreProduct, TFacets>;
};
export type MedusaCatalogServiceConfig<TProduct, TListParams extends MedusaCatalogListInput, TFacets> = {
    listPath?: string;
    defaultLimit?: number;
    defaultSort?: string;
    queryDefaults?: MedusaCatalogListQuery;
    normalizeListQuery?: (params: TListParams) => MedusaCatalogListQuery;
    transformProduct?: (product: HttpTypes.StoreProduct) => TProduct;
    transformListProduct?: (product: HttpTypes.StoreProduct, context: MedusaCatalogTransformContext<TListParams, TFacets>) => TProduct;
    transformFacets?: (facets: CatalogFacets) => TFacets;
};
/**
 * Creates a CatalogService for Medusa Store API.
 *
 * Uses `/store/catalog/products` through `sdk.client.fetch` so query cancellation
 * works with `AbortSignal` passed by TanStack Query.
 */
export declare function createMedusaCatalogService<TProduct = HttpTypes.StoreProduct, TListParams extends MedusaCatalogListInput = MedusaCatalogListInput, TFacets = CatalogFacets>(sdk: Medusa, config?: MedusaCatalogServiceConfig<TProduct, TListParams, TFacets>): CatalogService<TProduct, TListParams, TFacets>;
export {};
//# sourceMappingURL=medusa-service.d.ts.map