import type { EventSourcePayload, EventSourceHandler, EventSource, RuntimeEnvironment } from './event-source-registry';
import type { ExecutionContext } from '../types/core';
export type UniversalEventPayload = EventSourcePayload<'universal'>;
export type UniversalEventHandler = EventSourceHandler<'universal'>;
export interface UniversalEventSource<TEnv extends RuntimeEnvironment = 'universal'> extends EventSource {
}
export interface TypedRegistry<TEnv extends RuntimeEnvironment = 'universal'> {
    eventSources: {
        register(name: string, source: UniversalEventSource<TEnv>): void;
        get(name: string): UniversalEventSource<TEnv> | undefined;
        has(name: string): boolean;
        getSourceNames(): string[];
    };
    context: {
        register<T>(name: string, provide: (ctx: ExecutionContext) => T, options?: {
            description?: string;
            cache?: boolean;
        }): void;
        has(name: string): boolean;
        getProviderNames(): string[];
    };
    commands: {
        register(command: any): void;
        has(name: string): boolean;
        getCommandNames(): string[];
    };
}
export declare function createTimerEventSource(name: string, interval: number): UniversalEventSource;
export declare function createAdaptiveEventSource(name: string, options?: {
    description?: string;
}): UniversalEventSource;
export declare function isBrowserLikePayload(payload: UniversalEventPayload): boolean;
export declare function isServerLikePayload(payload: UniversalEventPayload): boolean;
//# sourceMappingURL=universal-types.d.ts.map