infinity-forge
Version:
29 lines (28 loc) • 1.32 kB
TypeScript
import { useQueryProps } from '../../use-query/index.js';
export type DeepPartial<T> = {
[P in keyof T]?: T[P] extends object ? T[P] extends Array<infer U> ? Array<DeepPartial<U>> : DeepPartial<T[P]> : T[P];
};
export declare function createClient<Swagger>({ basePath, customBody, customHeaders, }: {
basePath?: string;
customBody?: () => Record<string, string>;
customHeaders?: () => Record<string, string>;
}): {
client: <Url extends keyof Swagger, Method extends keyof Swagger[Url]>({ url, body, method, headers, arrayFormat, }: {
url: Url;
server?: boolean;
method: Method;
signal?: AbortSignal;
headers?: Record<string, string>;
arrayFormat?: "repeat" | "brackets";
body?: DeepPartial<Omit<Swagger[Url][Method], "result">>;
}) => Promise<Swagger[Url][Method] extends {
result: infer R;
} ? R : never>;
useSwagger: <Url extends keyof Swagger, Method extends keyof Swagger[Url]>({ url, method, body, ...rest }: {
url: Url;
method: Method;
body?: DeepPartial<Omit<Swagger[Url][Method], "result">>;
} & Partial<Omit<useQueryProps<any>, "queryFn">>) => Required<import("../../use-query/index.js").QueryState<Awaited<Swagger[Url][Method] extends {
result: infer R;
} ? R : never>>>;
};