import { AnyClass } from 'tn-typescript'; import { ExoConnResponse } from '../../ExoConnection/ExoConnResponse/ExoConnResponse'; import { ExoConnection } from '../../ExoConnection/ExoConnection'; import { ExoContext } from '../../ExoContext/ExoContext'; import { ExoFile } from '../../ExoMisc/ExoFile'; import { ExoConstructor } from '../../accessories/ExoTypings'; type Promize = T | Promise; export type ExoRouteResultType = null | ExoConstructor | [ExoConstructor] | AnyClass | [AnyClass] | BufferConstructor | typeof ArrayBuffer | typeof Blob | typeof ExoFile; export interface ExoRouteServeProps extends ExoServeProps { conn: ExoConnection; res: ExoConnResponse; ctx: ExoContext; user: ExoContextUser; fields: F; } export type ExoRouteServe = (props: ExoRouteServeProps) => R extends StringConstructor[] ? Promize : R extends StringConstructor ? Promize : R extends NumberConstructor[] ? Promize : R extends NumberConstructor ? Promize : R extends BooleanConstructor[] ? Promize : R extends BooleanConstructor ? Promize : R extends BufferConstructor | typeof Blob | typeof ExoFile | typeof ArrayBuffer ? Promize : R extends AnyClass ? Promize> : R extends AnyClass[] ? Promize[]> : Promize; export {};