/** * The base class for a mixin/behavior with an optional expected base class type. * * @template TElement Optional expected base class type, such as `CustomElement`. * * @example * ```ts * interface Foo { * isFoo: boolean; * } * * function fooBehavior(base: T): ControlBehaviorReturn { * // class must be `abstract` * abstract class FooImpl extends base implements Foo { * isFoo = true; * } * * return FooImpl; * } * ``` */ export type ControlBehaviorBase = abstract new (...args: Array) => TElement; /** * The return value of a mixin/behavior. * * @template TBehaviorBase The generic that extends `ControlBehaviorBase` used for the mixin's base class argument. * @template TBehaviorClass Optional interface of functionality that was mixed in. Omit if no additional APIs were added (such as purely overriding base class functionality). * * @example * ```ts * interface Foo { * isFoo: boolean; * } * * function fooBehavior(base: T): ControlBehaviorReturn { * // class must be `abstract` * abstract class FooImpl extends base implements Foo { * isFoo = true; * } * * return FooImpl; * } * ``` */ export type ControlBehaviorReturn = (abstract new (...args: Array) => TBehaviorClass) & TBehaviorBase; //# sourceMappingURL=Behavior.d.ts.map