type Blank = null | undefined | void; /** * @private */ export declare type NonArray = T extends any[] ? never : T; /** * Object collects {} and Array so adding both {} and Array is not needed * * @private */ export declare type AllowedEmptyCheckTypes = Blank | string | object; /** * GetEmpty mapped type that will cast any AllowedEmptyCheckTypes to empty equivalent * * @private */ export declare type GetEmpty = T extends Blank ? T : T extends string ? '' : T extends any[] ? Empty.Array : T extends object ? {} : never; export interface NonEmptyArray extends Array { 0: T; } export declare type Empty = Empty.Array | Empty.Object | Empty.String; export declare namespace Empty { type String = ''; type Array = never[]; type Object = Record; } export declare type Bottom = T extends string ? Empty.String : T extends any[] ? Empty.Array : T extends object ? Empty.Object : never; export {}; //# sourceMappingURL=types.d.ts.map