import { type StringifyOptions } from 'query-string';
import type { FetchClient, Prefix, MethodUrl, MethodUrlFn, RegistApi, RequestConfig } from '../types';
/**
 * form data serializer
 * @param data request data
 * @param options stringify options
 */
export declare function formDataSerializer(data: any, options?: StringifyOptions): string;
/**
 * typed url with no local config
 * @param strings TemplateStringsArray
 * @param keys string key or function, function first argument is request params
 * @returns the method url format function
 */
export declare function typedUrl<R = any, P extends Record<string, any> = any, D = any>(strings: TemplateStringsArray, ...keys: Array<string | Function>): MethodUrlFn<R, P, D>;
/**
 * typed url with local config
 * @param config local config object
 * @returns template literals function
 */
export declare function typedUrl<R = any, P extends Record<string, any> = any, D = any>(config: Partial<RequestConfig<D>>): (strings: TemplateStringsArray, ...keys: Array<string | Function>) => MethodUrlFn<R, P, D>;
/**
 * register api
 * @param client fetch client
 * @param definition  typed request definition
 * @param prefix base url
 * @returns named fetch requests
 */
export declare function registApi<C extends Record<string, MethodUrl>>(client: FetchClient, definition: C, prefix?: Prefix): RegistApi<C>;
