import type * as t from 'io-ts'; declare type Defined = T extends undefined ? never : T; export declare type DefinedValues = { [K in keyof T]: Defined; }; declare type DefinedProps = { [K in keyof Props]: Props[K] extends t.Type ? t.Type, O, I> : never; }; declare type PossiblyUndefinedKeys = { [K in keyof T]: undefined extends T[K] ? K : never; }[keyof T]; export declare type PossiblyUndefinedProps = { [K in keyof T]: undefined extends t.TypeOf ? K : never; }[keyof T]; declare type Optionalized = Simplify> & Partial>>>>; export declare type OptionalProps = DefinedProps>>; export declare type RequiredProps = Omit>; export declare type OptionalizedC = t.IntersectionC<[ t.TypeC>, t.PartialC> ]>; export declare type NestedProps = { [K: string]: t.Props; }; export declare type NestedType = { [K in keyof Props]: Optionalized>; }; export declare type NestedOutputType = { [K in keyof Props]: Optionalized>; }; export declare type Flattened = UnionToIntersection; declare type UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never; export declare type Simplify = T extends unknown ? { [K in keyof T]: T[K]; } : never; export {}; //# sourceMappingURL=utils.d.ts.map