import type { Protocol } from "./protocol.js"; export type ApplicationSupportStatus = "supported" | "unsupported"; export type ApplicationStage = "available" | "experimental" | "legacy" | "planned"; export interface ApplicationConnection { id: string; transport: "http" | "websocket" | "reverse-websocket" | "webhook" | "sse"; direction: "onebots-listens" | "onebots-connects"; endpoint: string; description: string; } export interface ApplicationProtocolCapability { application: string; protocol: string; status: ApplicationSupportStatus; connections: readonly ApplicationConnection[]; actions: readonly string[]; /** 框架正常工作时会调用、但并非由 Application 新增的协议或平台动作。 */ requiredActions?: readonly string[]; /** 已确认无法由当前协议或平台适配器提供的框架动作。 */ unsupportedActions?: readonly string[]; routes: readonly string[]; limitations: readonly string[]; } export interface ApplicationStartContext { protocol: Protocol; signal?: AbortSignal; next(): Promise; } export interface ApplicationStopContext { protocol: Protocol; force?: boolean; next(): Promise; } export interface ApplicationApplyContext { protocol: Protocol; action: string; params?: unknown; next(action?: string, params?: unknown): Promise; } export interface ApplicationDispatchContext { protocol: Protocol; event: unknown; next(event?: unknown): Promise; } export interface ApplicationProtocolExtension { capability: Omit; start?(context: ApplicationStartContext): void | Promise; stop?(context: ApplicationStopContext): void | Promise; apply?(context: ApplicationApplyContext): Promise; dispatch?(context: ApplicationDispatchContext): void | Promise; } export interface ApplicationDefinition { name: string; displayName: string; description: string; stage?: ApplicationStage; homepage?: string; createProtocolExtension(protocol: Protocol): ApplicationProtocolExtension | undefined; unsupportedProtocol?(protocol: Protocol): readonly string[]; } export interface ActiveApplicationInfo { name: string; displayName: string; description: string; stage: Exclude; homepage?: string; } /** @internal 由 registry module 在加载时绑定共享的插件注册事务守卫。 */ export declare function configureApplicationRegistryMutationGuard(guard: () => void): void; export interface ApplicationRegistryState { readonly definitions: ReadonlyMap; readonly active: readonly string[]; } export declare function defineApplication(definition: ApplicationDefinition): ApplicationDefinition; /** * Application 是作用于协议实例的运行时扩展。插件导入只负责 register,CLI 的 `-t` * 决定本次进程激活哪些定义;协议创建后按激活顺序组合扩展钩子。 */ export declare class ApplicationRegistry { private static definitions; private static active; private static attached; static register(definition: ApplicationDefinition): void; static has(name: string): boolean; static get(name: string): ApplicationDefinition | undefined; static getNames(): string[]; static activate(name: string): void; static deactivate(name: string): boolean; static getActiveNames(): string[]; static listActive(): ActiveApplicationInfo[]; /** 由 ProtocolRegistry.create 在工厂契约校验后调用。 */ static extend(protocol: Protocol): Protocol; static describeProtocol(protocol: Protocol): ApplicationProtocolCapability[]; /** @internal 供插件加载事务捕获状态。 */ static captureState(): ApplicationRegistryState; /** @internal 由宿主回滚失败的插件导入。 */ static restoreState(state: ApplicationRegistryState): void; /** @internal 仅供测试隔离进程级状态。 */ static clear(): void; }