ArgsFor<S>: S extends { Named?: object; Positional?: unknown[]; } ? { Named: GetOrElse<S, "Named", EmptyObject>; Positional: GetOrElse<S, "Positional", []>; } : S extends { named?: object; positional?: unknown[]; } ? { Named: GetOrElse<S, "named", EmptyObject>; Positional: GetOrElse<S, "positional", []>; } : { Named: EmptyObject; Positional: []; }