declare type Trait = (s: Base) => T; declare const Traitable: (superclass: T) => TraitBuilder; declare class TraitBuilder { superclass: T; constructor(superclass: T); use(...traits: Trait[]): T; } export { type Trait, Traitable };