type MaybeCbCallback = (...args: T) => void; type MaybeCbErrCallback = (error: Error | null | undefined, ...args: T) => void; type MaybeCbErrReturnType | null | undefined, TErr extends Error | string | null | undefined, TArgs extends any[]> = TCb extends MaybeCbErrCallback ? void : TErr extends Error | string ? Promise : Promise<[ ] extends TArgs ? void : [any] extends TArgs ? TArgs[0] : TArgs>; type MaybeCbErrCallbackParameters | null | undefined, TErr extends Error | string | null | undefined> = Exclude extends MaybeCbErrCallback ? TErr extends Error | string ? // don't require arguments but allow passing them U | [] : U : any[]; type MaybeCbCallbackParameters | null | undefined> = Exclude extends MaybeCbCallback ? U : any[]; type MaybeCbReturnType | null | undefined, TArgs extends any[]> = TCb extends MaybeCbCallback ? void : Promise<[ ] extends TArgs ? void : [any] extends TArgs ? TArgs[0] : TArgs>; type NoInfer = T & { [K in keyof T]: T[K]; }; export declare function maybeCallback | null | undefined, TArgs extends MaybeCbCallbackParameters = MaybeCbCallbackParameters>(callback: TCb, ...args: NoInfer): MaybeCbReturnType; export declare function maybeCallbackWithError | null | undefined, TErr extends Error | string | null | undefined, TArgs extends MaybeCbErrCallbackParameters = MaybeCbErrCallbackParameters>(callback: TCb, error: TErr, ...args: NoInfer): MaybeCbErrReturnType; export declare function maybeCallbackWithRedisError | null | undefined, TErr extends Error | string | null | undefined, TArgs extends MaybeCbErrCallbackParameters = MaybeCbErrCallbackParameters>(callback: TCb, error: TErr, ...args: NoInfer): MaybeCbErrReturnType; export {}; //# sourceMappingURL=maybeCallback.d.ts.map