import type { AnySpiceflow } from '../spiceflow.ts'; import { SpiceflowFetchError } from './errors.ts'; export type Prettify = { [K in keyof T]: T[K]; } & {}; export type IsNever = [T] extends [never] ? true : false; type Files = File | FileList; type ReplaceBlobWithFiles> = { [K in keyof RecordType]: RecordType[K] extends any ? RecordType[K] : RecordType[K] extends Blob | Blob[] | { arrayBuffer: () => Promise; } ? Files : RecordType[K]; } & {}; type And = A extends true ? B extends true ? true : false : false; export type ReplaceGeneratorWithAsyncGenerator> = { [K in keyof RecordType]: RecordType[K] extends any ? RecordType[K] : RecordType[K] extends Generator ? And>, void extends B ? true : false> extends true ? AsyncGenerator : And, void extends B ? false : true> extends true ? B : AsyncGenerator | B : RecordType[K] extends AsyncGenerator ? And>, void extends B ? true : false> extends true ? AsyncGenerator : And, void extends B ? false : true> extends true ? B : AsyncGenerator | B : RecordType[K]; } & {}; type MaybeArray = T | T[]; type MaybePromise = T | Promise; export declare namespace SpiceflowClient { interface ClientParam { fetch?: RequestInit; } export type Create = App extends { _types: { ClientRoutes: infer Schema extends Record; }; } ? Prettify> : 'Install latest Spiceflow before using the client, make sure both client and server use the same version. Make sure you passed the App type generic if using createSpiceflowClient'; export type Sign> = { [K in keyof Route as K extends `:${string}` ? never : K]: Route[K] extends { request: infer Body; params: any; query: infer Query; response: infer Response extends Record; } ? { headers?: Record; } & (undefined extends Query ? { query?: Record; } : { query: Query; }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify) => Promise>> : (request?: Body, options?: Prettify) => Promise>> : (request: Body extends Record ? ReplaceBlobWithFiles : Body, options?: Prettify) => Promise>> : K extends 'get' | 'head' ? (options: Prettify) => Promise>> : (request: Body extends Record ? ReplaceBlobWithFiles : Body, options: Prettify) => Promise>> : never : CreateParams; }; type CreateParams> = Extract extends infer Path extends string ? IsNever extends true ? Prettify> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED (((params: { [param in Path extends `:${infer Param}` ? Param extends `${infer Param}?` ? Param : Param : never]: string | number; }) => Prettify> & CreateParams) & Prettify>) & (Path extends `:${string}?` ? CreateParams : {}) : never; export interface Config { fetch?: typeof fetch; state?: Record; headers?: MaybeArray RequestInit['headers'] | void)>; onRequest?: MaybeArray<(path: string, options: RequestInit) => MaybePromise>; onResponse?: MaybeArray<(response: Response) => MaybePromise>; retries?: number; } export type ClientResponse> = { data: Res[200]; error: null; response: Response; status: number; headers: RequestInit['headers']; url: string; } | { data: null; error: Exclude extends never ? SpiceflowFetchError : { [Status in keyof Res]: SpiceflowFetchError; }[Exclude]; response: Response; status: number; headers: RequestInit['headers']; url: string; }; export interface OnMessage extends MessageEvent { data: Data; rawData: MessageEvent['data']; } export type WSEvent = K extends 'message' ? OnMessage : WebSocketEventMap[K]; export {}; } export type Not = T extends true ? false : true; export {}; //# sourceMappingURL=types.d.ts.map