export type RuntimeEmitterListener = [TValue] extends [void] ? () => void : (value: TValue) => void; type RuntimeEmitterArgs = [TValue] extends [void] ? [] : [TValue]; export interface RuntimeEmitter> { hook(name: TName, listener: RuntimeEmitterListener): () => void; has(name: TName): boolean; emit(name: TName, ...args: RuntimeEmitterArgs): void; } export declare function createRuntimeEmitter>(onError: (name: keyof TEvents, error: unknown) => void): RuntimeEmitter; export type RuntimePriorityRegistration = Readonly; export interface RuntimeOrderedRegistry { append(value: TValue): () => void; prepend(value: TValue): () => void; values(): readonly TValue[]; has(): boolean; clear(): void; } export interface RuntimePriorityRegistry { register(listener: TListener, options: TOptions): () => void; entries(): readonly RuntimePriorityRegistration[]; has(): boolean; clear(): void; } export declare function createRuntimeOrderedRegistry(): RuntimeOrderedRegistry; export declare function createRuntimePriorityRegistry(): RuntimePriorityRegistry; export {};