export { EventSourceRegistry, createEventSourceRegistry, getDefaultEventSourceRegistry, type EventSource, type EventSourceHandler, type EventSourcePayload, type EventSourceSubscription, type EventSourceSubscribeOptions, } from './event-source-registry';
export { ContextProviderRegistry, createContextProviderRegistry, getDefaultContextProviderRegistry, type ContextProvider, type ContextProviderFn, type ContextProviderOptions, meProvider, itProvider, youProvider, eventProvider, } from './context-provider-registry';
export { CommandRegistryV2, CommandAdapterV2, createCommandRegistryV2, type CommandWithParseInput, type RuntimeCommand, } from '../runtime/command-adapter';
import { CommandRegistryV2 } from '../runtime/command-adapter';
import { EventSourceRegistry } from './event-source-registry';
import { ContextProviderRegistry } from './context-provider-registry';
import type { CommandWithParseInput } from '../runtime/command-adapter';
import type { EventSource } from './event-source-registry';
import type { ContextProviderFn, ContextProviderOptions } from './context-provider-registry';
export interface LokaScriptRegistry {
    readonly commands: CommandRegistryV2;
    readonly eventSources: EventSourceRegistry;
    readonly context: ContextProviderRegistry;
    use(plugin: LokaScriptPlugin): void;
    reset(): void;
}
export interface LokaScriptPlugin {
    name: string;
    version?: string;
    commands?: CommandWithParseInput[];
    eventSources?: EventSource[];
    contextProviders?: Array<{
        name: string;
        provide: ContextProviderFn;
        options?: ContextProviderOptions;
    }>;
    setup?(registry: LokaScriptRegistry): void | Promise<void>;
    teardown?(registry: LokaScriptRegistry): void | Promise<void>;
}
export declare function createRegistry(options?: {
    commands?: CommandRegistryV2;
    eventSources?: EventSourceRegistry;
    context?: ContextProviderRegistry;
}): LokaScriptRegistry;
export declare function getDefaultRegistry(): LokaScriptRegistry;
export declare const commands: {
    register(command: CommandWithParseInput): void;
    has(name: string): boolean;
    names(): string[];
};
export declare const eventSources: {
    register(name: string, source: EventSource): void;
    has(name: string): boolean;
    names(): string[];
};
export declare const context: {
    register<T>(name: string, provide: ContextProviderFn<T>, options?: ContextProviderOptions<T>): void;
    has(name: string): boolean;
    names(): string[];
};
export declare function definePlugin(plugin: LokaScriptPlugin): LokaScriptPlugin;
export { RegistryIntegration, createRegistryIntegration, getDefaultRegistryIntegration, resetDefaultRegistryIntegration, type RegistryIntegrationOptions, } from './runtime-integration';
//# sourceMappingURL=index.d.ts.map