export interface IEventable { registerEvent(handler: Event): void; releaseEvents(): Event[]; } export declare class Event { payload: TEvent; constructor(payload: TEvent); } export declare function Eventable(): {}>(Base: TBase) => { new (...args: any[]): { _events: Event[]; registerEvent(handler: Event): void; releaseEvents(): Event[]; }; } & TBase;