import type { InputRecord } from './types' import type { Compute } from '@principia/base/util/compute' import type { _A, ExcludeMatchingProperties, UnionToIntersection } from '@principia/base/util/types' export type NonRequiredInputKeys = keyof ExcludeMatchingProperties< { [k in keyof T]: T[k]['config']['nullable'] extends true ? k : never }, never > export type RequiredInputKeys = Exclude> export type TypeofInputRecord = Compute< { [k in NonRequiredInputKeys]?: _A } & { [k in RequiredInputKeys]: _A }, 'flat' > export type _Root = [A] extends [{ _Root: infer Root }] ? Root : {} export type __R = UnionToIntersection< { [K in keyof Fs]: [Fs[K]] extends [{ _R: (_: infer R) => void }] ? (unknown extends R ? never : R) : never }[keyof Fs] > export type __E = Compute< { [K in keyof Fs]: [Fs[K]] extends [{ _E: () => infer E }] ? E : never }[keyof Fs], 'flat' > export type __A = Compute< { [K in keyof Fs]: _A }, 'flat' >