import { Builtin } from "../primitive"; type Strategy = 'shallow' | 'deep'; /** * @since 0.0.2 */ export type ShallowResolve = T extends null | undefined ? T : T extends Builtin ? T & {} : unknown extends T ? T : { [K in keyof T]: T[K]; }; /** * @since 0.0.2 */ export type DeepResolve = T extends null | undefined ? T : T extends Builtin ? T & {} : unknown extends T ? T : [T] extends [Memo] ? T : { [K in keyof T]: DeepResolve; }; /** * resolve a type to simplify unions/intersections and expand type aliases. * mostly useful to see the result of a complex type in the IDE when debugging. * * @since 0.0.2 * * @example * * type e4 = Resolve // string * * @todo * figure out how to resolve function intersections :c */ export type Resolve = S extends 'deep' ? DeepResolve : ShallowResolve; export {}; //# sourceMappingURL=resolve.d.ts.map