import type { Values } from '../helpers.js'; import type { ParameterSpec } from '../ParameterSpec/index.js'; import type { ExclusiveParameterConfiguration } from './exclusive/types.js'; import type { ParameterConfiguration } from './root/types.js'; import type { FlagName } from '@molt/types'; import type { Any } from 'ts-toolbelt'; import type { z } from 'zod'; export declare namespace State { export interface BaseEmpty extends Base { IsPromptEnabled: false; ParametersExclusive: {}; Parameters: {}; } export type Base = { IsPromptEnabled: boolean; ParametersExclusive: { [label: string]: { Optional: boolean; Parameters: { [canonicalName: string]: { NameParsed: FlagName.Types.FlagNames; NameUnion: string; Schema: ParameterSpec.SomeBasicType; }; }; }; }; Parameters: { [nameExpression: string]: { NameParsed: FlagName.Types.FlagNames; NameUnion: string; Schema: ParameterSpec.SomeBasicType; }; }; }; type ReservedParameterNames = 'help' | 'h'; export type ValidateNameExpression = FlagName.Errors.$Is; reservedNames: ReservedParameterNames; }>> extends true ? FlagName.Parse; reservedNames: ReservedParameterNames; }> : NameExpression; export type GetUsedNames = Values['NameUnion']; export type ParametersSchemaObjectBase = Record; export type ParametersConfigBase = Record; }>; export type SetExclusiveOptional = { IsPromptEnabled: State['IsPromptEnabled']; Parameters: State['Parameters']; ParametersExclusive: Omit & { [_ in Label]: { Optional: Value; Parameters: State['ParametersExclusive'][_]['Parameters']; }; }; }; export type AddExclusiveParameter = MergeIntoProperty>]: { Schema: Configuration['schema']; NameParsed: FlagName.Parse; reservedNames: ReservedParameterNames; }>; NameUnion: FlagName.Data.GetNamesFromParseResult; reservedNames: ReservedParameterNames; }>>; }; }; }; }>; export type CreateParameter = { Schema: Configuration['schema']; NameParsed: FlagName.Parse; reservedNames: ReservedParameterNames; }>; NameUnion: FlagName.Data.GetNamesFromParseResult; reservedNames: ReservedParameterNames; }>>; }; export type ToArgs = State['IsPromptEnabled'] extends true ? Promise> : ToArgs_; type ToArgs_ = Any.Compute<{ [Name in keyof State['Parameters'] & string as FlagName.Data.GetCanonicalName]: z.infer; } & UnionToIntersection; value: z.infer; }; }>; } : { [_ in Label]: Values<{ [Name in keyof State['ParametersExclusive'][Label]['Parameters']]: { _tag: FlagName.Data.GetCanonicalName; value: z.infer; }; }>; }; }>>>; export type ToSchema = { [K in keyof Spec['Parameters'] & string as FlagName.Types.GetCanonicalName]: Spec['Parameters'][K]['Schema']; }; export {}; } /** * @see https://stackoverflow.com/questions/50374908/transform-union-type-to-intersection-type */ type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; type SetProperty = Omit & { [P in PropertyName]: Value; }; type MergeIntoProperty = SetProperty; export {}; //# sourceMappingURL=State.d.ts.map