UNPKG

@httpc/kit

Version:

httpc toolbox for building function-based API with minimal code and end-to-end type safety

10 lines (9 loc) 735 B
import { IService } from "./types"; type ServiceConstructor<T extends IService = IService> = new (...args: any) => T; type Instances<T extends (ServiceConstructor | IService)[]> = { [k in keyof T]: T[k] extends ServiceConstructor<infer I> ? I : T[k] extends IService ? T[k] : never; }; export declare function useTransaction<T extends ServiceConstructor, R>(type: T, func: (service: InstanceType<T>) => Promise<R>): Promise<R>; export declare function useTransaction<T extends IService, R>(type: T, func: (service: T) => Promise<R>): Promise<R>; export declare function useTransaction<T extends (ServiceConstructor | IService)[], R>(...services: [...T, (...instances: Instances<T>) => Promise<R>]): Promise<R>; export {};