import { Factory, Function1, Function2, Function3, Function4, Function5, Optional } from "../functions.js"; export declare const Mixin_init: unique symbol; export declare const Mixin_private_initializedProperties: unique symbol; export declare const Mixin_properties: unique symbol; export declare const Mixin_prototype: unique symbol; type OptionalProperties = T extends object ? { [P in keyof T]: Optional; } : T; export type Mutable = { -readonly [Key in keyof Type]: Type[Key]; }; export type PartialMixin = { [Mixin_properties]: object; [Mixin_prototype]: TPrototype; }; export interface MixinAny extends PartialMixin { [Mixin_init]: (instance: TInstance, ...args: readonly any[]) => TReturn; } export interface Mixin extends PartialMixin { [Mixin_init](instance: TInstance): TReturn; } export interface Mixin1 extends PartialMixin { [Mixin_init](instance: TInstance, a: TA): TReturn; } export interface Mixin2 extends PartialMixin { [Mixin_init](instance: TInstance, a: TA, b: TB): TReturn; } export interface Mixin3 extends PartialMixin { [Mixin_init](instance: TInstance, a: TA, b: TB, c: TC): TReturn; } export interface Mixin4 extends PartialMixin { [Mixin_init](instance: TInstance, a: TA, b: TB, c: TC, d: TD): TReturn; } export interface Mixin5 extends PartialMixin { [Mixin_init](instance: TInstance, a: TA, b: TB, c: TC, d: TD, e: TE): TReturn; } export interface MixinDecorator { (mixin: Mixin): Mixin; (mixin: Mixin1): Mixin1; (mixin: Mixin2): Mixin2; (mixin: Mixin3): Mixin3; (mixin: Mixin4): Mixin4; (mixin: Mixin5): Mixin5; } interface Signature { createInstanceFactory(mixin: Mixin): Factory; createInstanceFactory(mixin: Mixin1): Function1; createInstanceFactory(mixin: Mixin2): Function2; createInstanceFactory(mixin: Mixin3): Function3; createInstanceFactory(mixin: Mixin4): Function4; createInstanceFactory(mixin: Mixin5): Function5; include(m0: PartialMixin, ...tail: readonly PartialMixin[]): PartialMixin; init(mixin: Mixin, instance: TInstance): asserts instance is TInstance & TReturn; init(mixin: Mixin1, instance: TInstance, a: TA): asserts instance is TInstance & TReturn; init(mixin: Mixin2, instance: TInstance, a: TA, b: TB): asserts instance is TInstance & TReturn; init(mixin: Mixin3, instance: TInstance, a: TA, b: TB, c: TC): asserts instance is TInstance & TReturn; init(mixin: Mixin4, instance: TInstance, a: TA, b: TB, c: TC, d: TD): asserts instance is TInstance & TReturn; init(mixin: Mixin5, instance: TInstance, a: TA, b: TB, c: TC, d: TD, e: TE): asserts instance is TInstance & TReturn; mix(init: (instance: TPrototype & Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TPrototype & Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TInstance) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TInstance, a: TA) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TInstance, a: TA, b: TB) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TInstance, a: TA, b: TB, c: TC) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TInstance) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TInstance, a: TA) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB, c: TC) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mix(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn): PartialMixin & { [Mixin_init]: typeof init; }; mixInstanceFactory(init: (instance: TPrototype & Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Factory; mixInstanceFactory(init: (instance: TPrototype & Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function1; mixInstanceFactory(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function2; mixInstanceFactory(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function3; mixInstanceFactory(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function4; mixInstanceFactory(init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function5; mixInstanceFactory(init: (instance: Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Factory; mixInstanceFactory(init: (instance: Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function1; mixInstanceFactory(init: (instance: Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function2; mixInstanceFactory(init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function3; mixInstanceFactory(init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function4; mixInstanceFactory(init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function5; mixInstanceFactory(init: (instance: TInstance) => TReturn): Factory; mixInstanceFactory(init: (instance: TInstance, a: TA) => TReturn): Function1; mixInstanceFactory(init: (instance: TInstance, a: TA, b: TB) => TReturn): Function2; mixInstanceFactory(init: (instance: TInstance, a: TA, b: TB, c: TC) => TReturn): Function3; mixInstanceFactory(init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn): Function4; mixInstanceFactory(init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn): Function5; mixInstanceFactory(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Factory; mixInstanceFactory(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function1; mixInstanceFactory(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function2; mixInstanceFactory(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function3; mixInstanceFactory(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function4; mixInstanceFactory(includes: PartialMixin, init: (instance: TPrototype & Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }, prototype: TPrototype): Function5; mixInstanceFactory(includes: PartialMixin, init: (instance: Mutable & TInstance) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Factory; mixInstanceFactory(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function1; mixInstanceFactory(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function2; mixInstanceFactory(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function3; mixInstanceFactory(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function4; mixInstanceFactory(includes: PartialMixin, init: (instance: Mutable & TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn, properties: TProperties & { [Mixin_private_initializedProperties]?: true; }): Function5; mixInstanceFactory(includes: PartialMixin, init: (instance: TInstance) => TReturn): Factory; mixInstanceFactory(includes: PartialMixin, init: (instance: TInstance, a: TA) => TReturn): Function1; mixInstanceFactory(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB) => TReturn): Function2; mixInstanceFactory(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB, c: TC) => TReturn): Function3; mixInstanceFactory(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD) => TReturn): Function4; mixInstanceFactory(includes: PartialMixin, init: (instance: TInstance, a: TA, b: TB, c: TC, d: TD, e: TE) => TReturn): Function5; props(o: OptionalProperties): TProperties & { [Mixin_private_initializedProperties]?: true; }; props(): object; } export declare const init: Signature["init"]; export declare const include: Signature["include"]; export declare const mix: Signature["mix"]; export declare const createInstanceFactory: Signature["createInstanceFactory"]; export declare const mixInstanceFactory: Signature["mixInstanceFactory"]; export declare const props: Signature["props"]; export declare const getPrototype: (mixin: PartialMixin) => TPrototype; export declare function unsafeCast(_v: unknown): asserts _v is T; export {};