import { TupleTail } from "./types"; /** Type safe event */ export declare class TEvent { #private; /** Emit the event */ emit(...args: A): void; /** Register event */ on(f: (...args: A) => void): void; /** Register event and only trigger once*/ once(f: (...args: A) => void): void; /** Unregister */ off(f: (...args: A) => void): void; } /** Event pool */ export declare class PEvents { #private; /** Emit the event */ emit(name: N, ...args: A): void; /** Emit the event */ emit(name: T[0], ...args: TupleTail): void; /** Emit the event */ emit(name: T['name'], ...args: T['args']): void; /** Register event */ on(name: N, fn: (...args: A) => unknown): void; /** Register event */ on(name: T[0], fn: (...args: TupleTail) => unknown): void; /** Register event */ on(name: T['name'], fn: (...args: T['args']) => unknown): void; /** Register event and only trigger once*/ once(name: N, fn: (...args: A) => unknown): void; /** Register event and only trigger once*/ once(name: T[0], fn: (...args: TupleTail) => unknown): void; /** Register event and only trigger once*/ once(name: T['name'], fn: (...args: T['args']) => unknown): void; /** Unregister */ off(name: N, fn: (...args: A) => unknown): void; /** Unregister */ off(name: T[0], fn: (...args: TupleTail) => unknown): void; /** Unregister */ off(name: T['name'], fn: (...args: T['args']) => unknown): void; }