import { Constructor } from './Constructor.js'; import { Extends } from './Extends.js'; import './ConstructorStatics.js'; import './OmitNever.js'; import './Pretty.js'; import './Function.js'; import './chunks/CV1DT9yO.js'; import './chunks/CM89_aaq.js'; import './BooleanNor.js'; import './BooleanNot.js'; import './BooleanOr.js'; import './Tuple.js'; import './chunks/DZEfmVOc.js'; import './BooleanAnd.js'; import './MaybeReadonly.js'; import './TupleLength.js'; import './DefaultValue.js'; import './Nil.js'; import './UnionMerge.js'; /** * Mixes multiple classes into a single class from left to right. * * @template T An array of classes to mix. * @returns A single class that extends all classes. * @example * class A { a = 1 } * class B { b = 2 } * class C { c = 3 } * type C = Mixins<[A, B, C]> // { a: number, b: number, c: number } */ type Mixins = T extends [infer T1 extends Constructor] ? T1 : T extends [infer T1 extends Constructor, infer T2 extends Constructor] ? Extends : T extends [infer T1 extends Constructor, ...infer TRest extends Constructor[]] ? Extends> : never; export type { Mixins };