import type { AllOperations, ApiClientRequestOptions, ReturnData } from '@shopify/graphql-client';
import type { MaybeRefOrGetter } from 'vue';
import type { AsyncDataOptions, AsyncData, NuxtError } from '#app';
import type { StorefrontOperations } from '@konkonam/nuxt-shopify/storefront';
type PickFrom<T, K extends Array<string>> = T extends Array<any> ? T : T extends Record<string, any> ? keyof T extends K[number] ? T : K[number] extends never ? T : Pick<T, K[number]> : T;
type KeysOf<T> = Array<T extends T ? keyof T extends string ? keyof T : never : never>;
type ResT<Operation extends keyof AllOperations> = ReturnData<Operation, StorefrontOperations>;
type RequestOptions<Operation extends keyof AllOperations> = ApiClientRequestOptions<Operation, StorefrontOperations>;
export declare function useAsyncStorefront<Operation extends keyof AllOperations = '', Options extends RequestOptions<Operation> | undefined = undefined, NuxtErrorDataT = unknown, DataT = ResT<Operation>, PickKeys extends KeysOf<DataT> = KeysOf<DataT>, DefaultT = DataT>(operation: Operation, options: Options, asyncDataOptions?: AsyncDataOptions<ResT<Operation>, DataT, PickKeys, DefaultT>): AsyncData<PickFrom<DataT, PickKeys> | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError<NuxtErrorDataT>) | undefined>;
export declare function useAsyncStorefront<Operation extends keyof AllOperations = '', Options extends RequestOptions<Operation> | undefined = undefined, NuxtErrorDataT = unknown, DataT = ResT<Operation>, PickKeys extends KeysOf<DataT> = KeysOf<DataT>, DefaultT = DataT>(key: MaybeRefOrGetter<string>, operation: Operation, options: Options, asyncDataOptions?: AsyncDataOptions<ResT<Operation>, DataT, PickKeys, DefaultT>): AsyncData<PickFrom<DataT, PickKeys> | DefaultT, (NuxtErrorDataT extends Error | NuxtError ? NuxtErrorDataT : NuxtError<NuxtErrorDataT>) | undefined>;
export {};
