import type { ProductDetailInputBase, ProductListInputBase, ProductQueryKeys, ProductService, RegionInfo } from "./types";
type ProductQueryInput = RegionInfo & {
    enabled?: boolean;
};
export declare const resolveProductQueryInput: <TInput extends ProductQueryInput>(input: TInput, region?: RegionInfo | null) => TInput;
type ProductListQueryDefinitionConfig<TProduct, TListInput extends ProductListInputBase, TListParams, TDetailParams> = {
    input: TListInput;
    region?: RegionInfo | null;
    service: ProductService<TProduct, TListParams, TDetailParams>;
    buildListParams: (input: TListInput) => TListParams;
    queryKeys: ProductQueryKeys<TListParams, TDetailParams>;
    useGlobalFetcher?: boolean;
    transformInput?: (input: TListInput) => TListInput;
};
export declare const createProductListQueryDefinition: <TProduct, TListInput extends ProductListInputBase, TListParams, TDetailParams>({ input, region, service, buildListParams, queryKeys, useGlobalFetcher, transformInput, }: ProductListQueryDefinitionConfig<TProduct, TListInput, TListParams, TDetailParams>) => {
    resolvedInput: TListInput;
    listParams: TListParams;
    useGlobalFetcher: boolean;
    queryKey: import("../shared/query-keys").QueryKey;
    queryFn: ({ signal }: {
        signal?: AbortSignal;
    }) => Promise<import("./types").ProductListResponse<TProduct>>;
};
type ProductDetailQueryDefinitionConfig<TProduct, TListParams, TDetailInput extends ProductDetailInputBase, TDetailParams> = {
    input: TDetailInput;
    region?: RegionInfo | null;
    service: ProductService<TProduct, TListParams, TDetailParams>;
    buildDetailParams: (input: TDetailInput) => TDetailParams;
    queryKeys: ProductQueryKeys<TListParams, TDetailParams>;
};
export declare const createProductDetailQueryDefinition: <TProduct, TListParams, TDetailInput extends ProductDetailInputBase, TDetailParams>({ input, region, service, buildDetailParams, queryKeys, }: ProductDetailQueryDefinitionConfig<TProduct, TListParams, TDetailInput, TDetailParams>) => {
    resolvedInput: TDetailInput;
    detailParams: TDetailParams;
    queryKey: import("../shared/query-keys").QueryKey;
    queryFn: ({ signal }: {
        signal?: AbortSignal;
    }) => Promise<TProduct | null>;
};
export {};
//# sourceMappingURL=query-definition.d.ts.map