import { type Constructor } from '@poppinss/types'; interface UnaryFunction { (source: T): R; } /** * Compose a class by applying mixins to it. * The code is inspired by https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/, its * just that I have added the support for static types too. * * Types https://github.com/tc39/proposal-pipeline-operator/issues/219 */ export declare function compose, A>(superclass: T, mixin: UnaryFunction): A; export declare function compose, A, B>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction): B; export declare function compose, A, B, C>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction): C; export declare function compose, A, B, C, D>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction, mixinD: UnaryFunction): D; export declare function compose, A, B, C, D, E>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction, mixinD: UnaryFunction, mixinE: UnaryFunction): E; export declare function compose, A, B, C, D, E, F>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction, mixinD: UnaryFunction, mixinE: UnaryFunction, mixinF: UnaryFunction): F; export declare function compose, A, B, C, D, E, F, G>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction, mixinD: UnaryFunction, mixinE: UnaryFunction, mixinF: UnaryFunction, mixinG: UnaryFunction): G; export declare function compose, A, B, C, D, E, F, G, H>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction, mixinD: UnaryFunction, mixinE: UnaryFunction, mixinF: UnaryFunction, mixinG: UnaryFunction, mixinH: UnaryFunction): H; export declare function compose, A, B, C, D, E, F, G, H, I>(superclass: T, mixin: UnaryFunction, mixinB: UnaryFunction, mixinC: UnaryFunction, mixinD: UnaryFunction, mixinE: UnaryFunction, mixinF: UnaryFunction, mixinG: UnaryFunction, mixinH: UnaryFunction, mixinI: UnaryFunction): I; export {};