import type { NonEmptyArray } from "@effect-ts/system/NonEmptyArray"; export interface InputTypeConfig { defaultValue?: A; description?: string; list?: boolean | [boolean]; required?: boolean; } export interface OutputTypeConfig { deprecation?: string; description?: string; list?: boolean | [boolean]; nullable?: boolean; } export declare type EvaluateConfig< Config extends OutputTypeConfig | InputTypeConfig, A > = Config extends OutputTypeConfig ? EvaluateNullableConfig> : Config extends InputTypeConfig ? EvaluateRequiredConfig> : A; export declare type EvaluateListConfig< Config extends OutputTypeConfig | InputTypeConfig, A > = OutputTypeConfig extends Config ? A : InputTypeConfig extends Config ? A : Config["list"] extends true ? Array : Config["list"] extends [true] ? NonEmptyArray : Config["list"] extends [false] ? Array : A; export declare type EvaluateNullableConfig< Config extends OutputTypeConfig, A > = OutputTypeConfig extends Config ? A : Config["nullable"] extends true ? A | undefined : A; export declare type EvaluateRequiredConfig< Config extends InputTypeConfig, A > = InputTypeConfig extends Config ? A : Config["required"] extends false ? A | undefined : A;