import type { KaijiBotConfig } from "../../../src/config/config.js";
import { createPluginRegistry, type PluginRecord } from "../../../src/plugins/registry.js";
import type { KaijiBotPluginApi } from "../../../src/plugins/types.js";
export { registerProviderPlugins as registerProviders, requireRegisteredProvider as requireProvider, } from "../../../src/test-utils/plugin-registration.js";
export declare function uniqueSortedStrings(values: readonly string[]): string[];
export declare function assertNoImportTimeSideEffects(params: {
    moduleId: string;
    forbiddenSeam: string;
    calls: readonly (readonly unknown[])[];
    why: string;
    fixHint: string;
}): void;
export declare function createPluginRegistryFixture(config?: KaijiBotConfig): {
    config: KaijiBotConfig;
    registry: {
        registry: import("../../../src/plugins/registry-types.ts").PluginRegistry;
        createApi: (record: PluginRecord, params: {
            config: KaijiBotPluginApi["config"];
            pluginConfig?: Record<string, unknown>;
            hookPolicy?: {
                allowPromptInjection?: boolean;
            };
            registrationMode?: import("../../../src/plugins/types.js").PluginRegistrationMode;
        }) => KaijiBotPluginApi;
        pushDiagnostic: (diag: import("../../../src/plugins/types.js").PluginDiagnostic) => void;
        registerTool: (record: PluginRecord, tool: import("../../../src/plugins/types.js").AnyAgentTool | import("../../../src/plugins/types.js").KaijiBotPluginToolFactory, opts?: {
            name?: string;
            names?: string[];
            optional?: boolean;
        }) => void;
        registerChannel: (record: PluginRecord, registration: import("../../../src/plugins/types.js").KaijiBotPluginChannelRegistration | import("@kaijibot/feishu/runtime-api.ts").ChannelPlugin, mode?: import("../../../src/plugins/types.js").PluginRegistrationMode) => void;
        registerProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").ProviderPlugin) => void;
        registerCliBackend: (record: PluginRecord, backend: import("../../../src/plugins/types.js").CliBackendPlugin) => void;
        registerSpeechProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").SpeechProviderPlugin) => void;
        registerRealtimeTranscriptionProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").RealtimeTranscriptionProviderPlugin) => void;
        registerRealtimeVoiceProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").RealtimeVoiceProviderPlugin) => void;
        registerMediaUnderstandingProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").MediaUnderstandingProviderPlugin) => void;
        registerImageGenerationProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").ImageGenerationProviderPlugin) => void;
        registerVideoGenerationProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").VideoGenerationProviderPlugin) => void;
        registerMusicGenerationProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").MusicGenerationProviderPlugin) => void;
        registerWebSearchProvider: (record: PluginRecord, provider: import("../../../src/plugins/types.js").WebSearchProviderPlugin) => void;
        registerGatewayMethod: (record: PluginRecord, method: string, handler: import("../../../src/gateway/server-methods/types.ts").GatewayRequestHandler, opts?: {
            scope?: import("../../../src/gateway/operator-scopes.ts").OperatorScope;
        }) => void;
        registerCli: (record: PluginRecord, registrar: import("../../../src/plugins/types.js").KaijiBotPluginCliRegistrar, opts?: {
            commands?: string[];
            descriptors?: import("../../../src/plugins/types.js").KaijiBotPluginCliCommandDescriptor[];
        }) => void;
        registerReload: (record: PluginRecord, registration: import("../../../src/plugins/types.js").KaijiBotPluginReloadRegistration) => void;
        registerNodeHostCommand: (record: PluginRecord, nodeCommand: import("../../../src/plugins/types.js").KaijiBotPluginNodeHostCommand) => void;
        registerSecurityAuditCollector: (record: PluginRecord, collector: import("../../../src/plugins/types.js").KaijiBotPluginSecurityAuditCollector) => void;
        registerService: (record: PluginRecord, service: import("../../../src/plugins/types.js").KaijiBotPluginService) => void;
        registerCommand: (record: PluginRecord, command: import("../../../src/plugins/types.js").KaijiBotPluginCommandDefinition) => void;
        registerHook: (record: PluginRecord, events: string | string[], handler: Parameters<typeof import("../../../src/hooks/internal-hooks.ts").registerInternalHook>[1], opts: import("../../../src/plugins/types.js").KaijiBotPluginHookOptions | undefined, config: KaijiBotPluginApi["config"]) => void;
        registerTypedHook: <K extends import("../../../src/plugins/types.js").PluginHookName>(record: PluginRecord, hookName: K, handler: import("../../../src/plugins/types.js").PluginHookHandlerMap[K], opts?: {
            priority?: number;
        }, policy?: {
            allowPromptInjection?: boolean;
        }) => void;
    };
};
export declare function registerTestPlugin(params: {
    registry: ReturnType<typeof createPluginRegistry>;
    config: KaijiBotConfig;
    record: PluginRecord;
    register(api: KaijiBotPluginApi): void;
}): void;
export declare function registerVirtualTestPlugin(params: {
    registry: ReturnType<typeof createPluginRegistry>;
    config: KaijiBotConfig;
    id: string;
    name: string;
    source?: string;
    kind?: PluginRecord["kind"];
    contracts?: PluginRecord["contracts"];
    register(this: void, api: KaijiBotPluginApi): void;
}): void;
