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;