import type { OpenFetchClientName } from '#build/open-fetch'; import type { AsyncData, UseFetchOptions } from 'nuxt/app'; import type { $Fetch } from 'ofetch'; import type { Ref } from 'vue'; import type { FetchResponseData, FetchResponseError, FilterMethods, ParamsOption, RequestBodyOption } from './fetch.js'; type PickFrom> = T extends Array ? T : T extends Record ? keyof T extends K[number] ? T : K[number] extends never ? T : Pick : T; type KeysOf = Array; type ComputedOptions = { [K in keyof T]: T[K] extends Function ? T[K] : ComputedOptions | Ref | T[K]; }; type ComputedMethodOption = 'get' extends keyof P ? ComputedOptions<{ method?: M; }> : ComputedOptions<{ method: M; }>; type UseOpenFetchOptions = KeysOf, DefaultT = null, Operation = 'get' extends LowercasedMethod ? ('get' extends keyof Params ? Params['get'] : never) : LowercasedMethod extends keyof Params ? Params[LowercasedMethod] : never> = ComputedMethodOption & ComputedOptions> & ComputedOptions> & Omit, 'query' | 'body' | 'method'>; export type UseOpenFetchClient = , Methods extends FilterMethods, Method extends Extract | Uppercase>, LowercasedMethod extends Lowercase extends keyof Methods ? Lowercase : never, DefaultMethod extends 'get' extends LowercasedMethod ? 'get' : LowercasedMethod, ResT = Methods[DefaultMethod] extends Record ? FetchResponseData : never, ErrorT = Methods[DefaultMethod] extends Record ? FetchResponseError : never, DataT = ResT, PickKeys extends KeysOf = KeysOf, DefaultT = null>(url: ReqT | (() => ReqT), options?: Lazy extends true ? Omit, 'lazy'> : UseOpenFetchOptions) => AsyncData | DefaultT, ErrorT | null>; export declare function createUseOpenFetch(client: $Fetch | OpenFetchClientName, lazy?: Lazy): UseOpenFetchClient; export declare function createUseOpenFetch(client: $Fetch | OpenFetchClientName, lazy?: Lazy): UseOpenFetchClient; export {};