diff --git a/hwe/ts/util/callSammoAPI.ts b/hwe/ts/util/callSammoAPI.ts index 9e7b0788..451cd90a 100644 --- a/hwe/ts/util/callSammoAPI.ts +++ b/hwe/ts/util/callSammoAPI.ts @@ -13,12 +13,27 @@ export type InvalidResponse = { export type RawArgType = Record | Record[] | undefined; -export interface APICallT { - (args?: ArgType): Promise; - (args: ArgType | undefined, returnError: false): Promise; - (args: ArgType | undefined, returnError: true): Promise; +interface BasicAPICallT { + (args: ArgType): Promise; + (args: ArgType, returnError: false): Promise; + (args: ArgType, returnError: true): Promise; } +interface EmptyAPICallT { + (): Promise; + (args: undefined): Promise; + (args: undefined, returnError: false): Promise; + (args: undefined, returnError: true): Promise; +} + +export type APICallT< + ArgType extends RawArgType, + ResultType extends ValidResponse = ValidResponse, + ErrorType extends InvalidResponse = InvalidResponse + > = ArgType extends undefined + ? EmptyAPICallT + : BasicAPICallT; + type HttpMethod = 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete'; export type APITail = typeof GET | typeof POST | typeof PUT | typeof PATCH | typeof HEAD | typeof DELETE;