import type { NonEmptyArray } from '@principia/base/NonEmptyArray' export interface InputTypeConfig { defaultValue?: A description?: string list?: boolean | [boolean] nullable?: boolean } export interface OutputTypeConfig { deprecation?: string description?: string list?: boolean | [boolean] nullable?: boolean } export type EvaluateConfig, A> = OutputTypeConfig extends Config ? A : InputTypeConfig extends Config ? A : EvaluateNullableConfig> export type EvaluateListConfig, A> = true extends Config['list'] ? Array : [true] extends Config['list'] ? NonEmptyArray : [false] extends Config['list'] ? Array : A export type EvaluateNullableConfig = Config['nullable'] extends true ? A | undefined : A