import { Key } from './_Internal'; import { NonNullable as UNonNullable } from '../Union/NonNullable'; import { Depth } from '../Object/_Internal'; import { BuiltIn } from '../Misc/BuiltIn'; import { Cast } from '../Any/Cast'; import { List } from './List'; /** * @hidden */ export declare type NonNullableFlat = { [P in keyof O]: P extends K ? UNonNullable : O[P]; } & {}; /** * @hidden */ declare type _NonNullableDeep = { [K in keyof O]: O[K] extends BuiltIn ? O[K] : NonNullableDeep; }; /** * @hidden */ export declare type NonNullableDeep = _NonNullableDeep>; /** * @hidden */ export declare type NonNullablePart = { 'flat': NonNullableFlat; 'deep': NonNullableDeep; }[depth]; /** * Make some entries of `L` not nullable (deeply or not) * @param L to make non nullable * @param K (?=`Key`) to choose fields * @param depth (?=`'flat'`) 'deep' to do it deeply * @returns [[List]] * @example * ```ts * ``` */ export declare type NonNullable = Cast, List>; export {};