import type Medusa from "@medusajs/js-sdk";
import type { FindParams, HttpTypes, SelectParams } from "@medusajs/types";
import type { CollectionService } from "./types";
type MedusaCollectionListQuery = FindParams & HttpTypes.StoreCollectionListParams & Record<string, unknown>;
type MedusaCollectionDetailQuery = SelectParams & Record<string, unknown>;
export type MedusaCollectionListInput = FindParams & HttpTypes.StoreCollectionListParams & {
    enabled?: boolean;
};
export type MedusaCollectionDetailInput = SelectParams & {
    id?: string;
    enabled?: boolean;
};
export type MedusaCollectionTransformListContext<TListParams extends MedusaCollectionListInput> = {
    params: TListParams;
    query: MedusaCollectionListQuery;
    response: HttpTypes.StoreCollectionListResponse;
};
export type MedusaCollectionTransformDetailContext<TDetailParams extends MedusaCollectionDetailInput> = {
    params: TDetailParams;
    query: MedusaCollectionDetailQuery;
    response: HttpTypes.StoreCollectionResponse;
};
export type MedusaCollectionServiceConfig<TCollection, TListParams extends MedusaCollectionListInput, TDetailParams extends MedusaCollectionDetailInput> = {
    listPath?: string;
    defaultListFields?: string;
    defaultDetailFields?: string;
    normalizeListQuery?: (params: TListParams) => MedusaCollectionListQuery;
    normalizeDetailQuery?: (params: TDetailParams) => MedusaCollectionDetailQuery;
    transformCollection?: (collection: HttpTypes.StoreCollection) => TCollection;
    transformListCollection?: (collection: HttpTypes.StoreCollection, context: MedusaCollectionTransformListContext<TListParams>) => TCollection;
    transformDetailCollection?: (collection: HttpTypes.StoreCollection, context: MedusaCollectionTransformDetailContext<TDetailParams>) => TCollection;
};
/**
 * Creates a CollectionService for Medusa Store API.
 *
 * Uses `/store/collections` through `sdk.client.fetch` so query cancellation
 * works with `AbortSignal` passed by TanStack Query.
 */
export declare function createMedusaCollectionService<TCollection = HttpTypes.StoreCollection, TListParams extends MedusaCollectionListInput = MedusaCollectionListInput, TDetailParams extends MedusaCollectionDetailInput = MedusaCollectionDetailInput>(sdk: Medusa, config?: MedusaCollectionServiceConfig<TCollection, TListParams, TDetailParams>): CollectionService<TCollection, TListParams, TDetailParams>;
export {};
//# sourceMappingURL=medusa-service.d.ts.map