import { Protocol } from "./protocol.js"; import { Adapter } from "./adapter.js"; import { BaseApp } from "./base-app.js"; import { Account } from "./account.js"; import { type Schema } from "./config-validator.js"; import { type ApplicationRegistryState } from "./application.js"; export interface ExtensionRegistrationScopeOptions { timeoutMs?: number; } /** * 将一次插件导入标记为唯一可写的注册时段。 * * 插件在导入期间创建的定时器和 Promise 会继承同一上下文;导入完成后关闭共享标记, * 这些异步后代再尝试修改注册表时会被拒绝,避免迟到注册逃出宿主的验收与回滚边界。 */ export declare function runWithExtensionRegistrationScope(operation: () => Promise, options?: ExtensionRegistrationScopeOptions): Promise; export interface ExtensionRegistryState { readonly applications: ApplicationRegistryState; readonly adapters: { readonly factories: ReadonlyMap; readonly metadata: ReadonlyMap; readonly schemas: ReadonlyMap; }; readonly protocols: { readonly factories: ReadonlyMap>; readonly metadata: ReadonlyMap; readonly schemas: ReadonlyMap; }; } /** * Protocol Registry * Manages registration and retrieval of protocol implementations */ export declare class ProtocolRegistry { private static protocols; private static metadata; private static schemas; private static schemaSnapshots; /** * Register a protocol implementation * @param name Protocol name (e.g., 'onebot', 'milky', 'satori') * @param version Protocol version (e.g., 'v11', 'v12') * @param factory Protocol factory function * @param metadata Optional protocol metadata */ static register(name: string, version: string, factory: Protocol.Factory, metadata?: Partial): void; /** * Register a protocol config schema (key format: name.version) */ static registerSchema(key: string, schema: Schema): void; /** * Get a protocol config schema by key */ static getSchema(key: string): Schema | undefined; /** * Get all protocol config schemas */ static getAllSchemas(): Record; /** * Get a protocol factory * @param name Protocol name * @param version Protocol version */ static get(name: string, version: string): Protocol.Factory | undefined; /** * Check if a protocol version is registered */ static has(name: string, version?: string): boolean; /** * Get all registered protocol names */ static getProtocolNames(): string[]; /** * Get all versions for a protocol */ static getVersions(name: string): string[]; /** * Get protocol metadata */ static getMetadata(name: string): Protocol.Metadata | undefined; /** * Get all protocol metadata */ static getAllMetadata(): Protocol.Metadata[]; /** * Create a protocol instance */ static create(name: string, version: string, adapter: Adapter, account: Account, config: Record): Protocol; /** 验证第三方账号没有绕过注册表注入、遗漏或替换协议实例。 */ static assertAccountProtocols(account: Account, adapter: Adapter, config: Account.Config): void; /** * Unregister a protocol version */ static unregister(name: string, version?: string): boolean; /** * Clear all registered protocols */ static clear(): void; /** @internal 供插件加载事务捕获当前注册状态。 */ static captureState(): ExtensionRegistryState["protocols"]; /** @internal 恢复插件加载前的精确注册状态。 */ static restoreState(state: ExtensionRegistryState["protocols"], token?: symbol): void; } /** * Adapter Registry * Manages registration and retrieval of adapter implementations */ export declare class AdapterRegistry { private static adapters; private static metadata; private static schemas; private static schemaSnapshots; /** * Register an adapter implementation * @param name Adapter name/platform (e.g., 'wechat', 'dingtalk', 'qq') * @param factory Adapter factory/class * @param metadata Optional adapter metadata */ static register(name: string, factory: Adapter.Factory, metadata?: Partial): void; /** * Register an adapter config schema */ static registerSchema(name: string, schema: Schema): void; /** * Get an adapter config schema */ static getSchema(name: string): Schema | undefined; /** * Get all adapter config schemas */ static getAllSchemas(): Record; /** * Get an adapter factory * @param name Adapter name/platform */ static get(name: string): Adapter.Factory | undefined; /** * Check if an adapter is registered */ static has(name: string): boolean; /** * Get all registered adapter names */ static getAdapterNames(): string[]; /** * Get adapter metadata */ static getMetadata(name: string): Adapter.Metadata | undefined; /** * Get all adapter metadata */ static getAllMetadata(): Adapter.Metadata[]; /** * Create an adapter instance */ static create(name: string, app: T): Adapter; /** * Unregister an adapter */ static unregister(name: string): boolean; /** * Clear all registered adapters */ static clear(): void; /** @internal 供插件加载事务捕获当前注册状态。 */ static captureState(): ExtensionRegistryState["adapters"]; /** @internal 恢复插件加载前的精确注册状态。 */ static restoreState(state: ExtensionRegistryState["adapters"], token?: symbol): void; } /** 捕获 Adapter 与 Protocol 注册表,用于隔离一次插件初始化。 */ export declare function captureExtensionRegistryState(): ExtensionRegistryState; /** 回滚一次失败插件初始化造成的全部注册表修改。 */ export declare function restoreExtensionRegistryState(state: ExtensionRegistryState): void;