import { ItemValues, ListValues, CondValues, LoopValues, SwitchValues, YieldValues, ReturnValues } from "../values"; /** * Returns the union of all possible values that can be yielded by a multi-step form. */ export type Yield = ListData extends [ infer Next, unknown ] ? Next : never; type ItemData = Values extends ListValues ? ListData : Values extends CondValues ? CondData : Values extends LoopValues ? LoopData : Values extends SwitchValues ? SwitchData : Values extends YieldValues ? YieldData : Values extends ReturnValues ? [Data, true] : [Data, false]; type ListData = Values extends [ infer First, ...infer Other ] ? First extends ItemValues ? Other extends ListValues ? ItemData extends [infer Next, infer Return] ? Return extends true ? [Next, true] : ListData : never : never : never : [Data, false]; type CondData = RoutesData<[ Values["cond"]["then"], Values["cond"]["else"] ], Data>; type LoopData = ListData extends [infer Next, unknown] ? [Next, false] : never; type SwitchData = RoutesData<[ ...Values["switch"]["branches"], Values["switch"]["default"] ], Data>; type YieldData = [ Data | Values["yield"]["next"][number] | Values["yield"]["back"][number], false ]; type RoutesData = Values extends [infer First, ...infer Other] ? First extends ListValues ? Other extends ListValues[] ? ListData extends [infer Next, infer Return] ? RoutesReturn extends false ? RoutesData : RoutesData : never : never : never : [Data, RoutesReturn]; export {}; //# sourceMappingURL=yield.d.ts.map