export type Optional = Pick, K> & Omit; export type NoUndefinedField = { [P in keyof T]-?: NoUndefinedField>; }; export type Await = T extends PromiseLike ? U : T; export type ValueOf = T[keyof T]; export type RequiredAndNotNull = { [P in keyof T]-?: Exclude; }; export type RequireAndNotNullSome = RequiredAndNotNull> & Omit; export type RequireAtLeastOne = Pick> & { [K in Keys]-?: Required> & Partial>>; }[Keys]; export declare function hasFields(obj: Array>, fields: K[]): obj is Array>; export declare function hasFields(obj: T | RequireAndNotNullSome, fields: K[]): obj is RequireAndNotNullSome; export declare const findMissingFieldNames: (obj: T, fields: Array) => string;