import Koa from "koa"; import * as os from "os"; import "reflect-metadata"; import log4js from "log4js"; import type { Logger } from "log4js"; import { Server } from "http"; import yaml from "js-yaml"; declare const configure: typeof log4js.configure, connectLogger: typeof log4js.connectLogger; import { Router } from "./router.js"; import { LogLevel } from "./types.js"; import { Adapter } from "./adapter.js"; import { Protocol } from "./protocol.js"; import { Account } from "./account.js"; import { SqliteDB } from "./db.js"; import { LifecycleManager } from "./lifecycle.js"; import { Logger as EnhancedLogger } from "./logger.js"; import { MetricsCollector } from "./metrics.js"; import { type ApplicationIdentity } from "./app-observability.js"; export type { ApplicationIdentity } from "./app-observability.js"; import { type RuntimeOperation } from "./runtime-operation.js"; import { type ManagedRuntimeStart } from "./host-lifecycle-state.js"; import { type RuntimeConfigurationResult } from "./runtime-configuration.js"; export { configure, yaml, connectLogger }; export interface KoaOptions { env?: string; keys?: string[]; proxy?: boolean; subdomainOffset?: number; proxyIpHeader?: string; maxIpsCount?: number; } export declare class BaseApp extends Koa { config: Required; httpServer: Server; isStarted: boolean; /** 独占运行态操作期间保持 HTTP 存活,但 readiness 必须拒绝流量。 */ isReloading: boolean; private runtimeConfiguration?; private runtimeRecoveryRequired; /** 仅用于生命周期互斥,不代表全部账号的协议入口不可用。 */ get runtimeConfigurationInProgress(): boolean; /** 对外解释 isReloading 对应的具体运行态操作。 */ runtimeOperation: RuntimeOperation; isDisposed: boolean; logger: Logger; enhancedLogger: EnhancedLogger; lifecycle: LifecycleManager; readonly metrics: MetricsCollector; /** 构造时固化的运行目录,后续实例不能通过静态兼容配置改写它。 */ readonly configDir: string; readonly configFileName: string; readonly configPath: string; readonly dataDir: string; readonly logFile: string; private securityAuditMiddleware?; static get configPath(): string; static get dataDir(): string; static get logFile(): string; db: SqliteDB; adapters: Map; router: Router; readonly applicationIdentity: Readonly; get info(): { system_platform: NodeJS.Platform; system_arch: NodeJS.Architecture; system_cpus: os.CpuInfo[]; system_version: string; system_uptime: number; username: string; total_memory: number; free_memory: number; process_id: number; process_parent_id: number; process_cwd: string; process_use_memory: number; node_version: string; application_name: string; application_version: string; instance_id: string; started_at: string; core_version: string; /** @deprecated 使用 core_version。 */ sdk_version: string; uptime: number; }; constructor(config?: BaseApp.Config, applicationIdentity?: ApplicationIdentity); init(): void; getLogger(patform: string): log4js.Logger; /** * 获取增强的 Logger 实例 */ getEnhancedLogger(name: string): EnhancedLogger; /** 管理端 API:当前解析后的站点根静态目录。 */ getPublicStaticRoot(): string | null; get adapterConfigs(): Map; private initAdapters; addAccount

(config: Account.Config

): Promise; updateAccount

(config: Adapter.Configs[P]): Promise; removeAccount(p: string, uin: string, force?: boolean): Promise; /** 配置由核心账号操作成功落盘后的扩展钩子。 */ protected onConfigPersisted(_configPath: string, _content: string): void; /** 主程序可拒绝从尚未应用或已经漂移的磁盘配置开始账号事务。 */ protected assertAccountConfigSourceCurrent(_configPath: string, _source: string | undefined): void; /** 主程序可覆写此钩子,以当前已加载插件的 Schema 校验单账号候选配置。 */ protected validateAccountConfigCandidate(_configKey: string, _config: Account.Config): void; get accounts(): Account[]; findOrCreateAdapter

(platform: P): Adapter; /** * 适配器首次创建后的钩子,子类可覆写以订阅该适配器事件(如 verification:request) */ protected onAdapterCreated(_adapter: Adapter): void; protected assertCanStart(): void; private startAdapters; private stopAdapters; protected rollbackFailedStart(error: unknown): Promise; /** 宿主可限定传输监听地址;平台与协议仍使用同一个真实 HTTP Server。 */ protected listenHttpServer(signal?: AbortSignal): Promise; start(): Promise; /** 私有管理传输就绪;账号与协议仍由 accountsSettled 表达完成状态。 */ protected startManagedRuntime(): Promise; private ensureStartup; private startAttempt; reload(config: BaseApp.Config): Promise; /** 管理服务提交配置快照;不写文件,也不撤销其他账号的 readiness。 */ applyRuntimeConfiguration(config: BaseApp.Config): Promise; stop(): Promise; private stopAttempt; } export declare namespace BaseApp { type AdapterConfig = { [P in keyof Adapter.Configs as `${P}.${string}`]?: Adapter.Configs[P] & Partial; }; type Config = { port?: number; path?: string; database?: string; timeout?: number; username?: string; password?: string; /** 管理端 Bearer 鉴权码,配置后可使用 Authorization: Bearer 访问 API,无需用户名密码 */ access_token?: string; log_level?: LogLevel; /** 站点根静态目录,相对配置文件所在目录(configDir)或绝对路径;用于企业微信等可信域名校验文件 */ public_static_dir?: string; general?: Protocol.Configs; } & KoaOptions & AdapterConfig; const defaultConfig: Config; let configDir: string; /** 当前运行时配置文件名;与 configDir 分开保存,以保持自定义 -c 路径身份。 */ let configFileName: string; }