import { EventEmitter } from "node:events";
import { Adapter } from "./adapter.js";
import { Logger } from "log4js";
import { Protocol, type ProtocolLifecycleStatus } from "./protocol.js";
import { CommonEvent } from "./types.js";
import type { RouterRegistrationScope } from "./router.js";
import { type AccountOperationDrain } from "./account-operations.js";
export interface ProtocolRuntimeInfo {
name: string;
version: string;
path: string;
lifecycleStatus: ProtocolLifecycleStatus;
}
export declare class NotFoundError extends Error {
message: string;
}
export declare class Account
extends EventEmitter {
#private;
adapter: Adapter;
client: C;
config: Account.Config;
status: AccountStatus;
avatar: string;
nickname: string;
dependency: string;
protocols: Protocol[];
get account_id(): any;
/** 热配置不能与尚未完成的平台登录事务交错。 */
get isStarting(): boolean;
runOperation(operation: () => T | Promise): Promise;
beginOperationDrain(): AccountOperationDrain;
get app(): import("./base-app.js").BaseApp;
get platform(): string | number;
get logger(): Logger;
get info(): {
uin: any;
status: AccountStatus;
platform: string | number;
avatar: string;
nickname: string;
dependency: string;
urls: string[];
protocols: ProtocolRuntimeInfo[];
startupTimeoutSeconds: number;
};
get startupTimeoutSeconds(): number;
get protocolConfigs(): Protocol.FullConfig[];
constructor(adapter: Adapter, client: C, config: Account.Config);
/** 构造与启动各自捕获协议资源;协议变更不触碰账号自身路由。 */
createProtocol(name: string, version: string, config: Record): Protocol;
startProtocol(protocol: Protocol, signal?: AbortSignal): Promise;
stopProtocol(protocol: Protocol, force?: boolean): Promise;
/** @internal 由 BaseApp 在账号构造完成后绑定路由所有权。 */
attachRouteScope(scope: RouterRegistrationScope): void;
get path(): string;
/**
* 在全局 timeout 边界内启动账号监听器和协议出口。
* start 监听器会收到 AbortSignal;超时或 stop 时扩展应据此取消底层异步工作。
*/
start(): Promise;
stop(force?: boolean): Promise;
getGroupList(): Promise;
getFriendList(): Promise;
/** 将事件发往各协议,但不把完成状态反馈给调用方。可靠接入应使用 dispatchAwaited。 */
dispatch(commonEvent: CommonEvent.Base): void;
/**
* 将事件发往全部协议并等待完成。单个协议失败不会阻止其他协议获得本次投递,
* 但最终会向接入层传播失败,使 Webhook、队列或 Stream 可以请求平台重投。
*/
dispatchAwaited(commonEvent: CommonEvent.Base): Promise;
private dispatchProtocolsAwaited;
/**
* 顺序投递同一原始事件拆出的 canonical 事件,并确保单项失败不阻止其余项。
* 全部项均获得投递机会后,再将失败聚合反馈给可靠接入层。
*/
dispatchManyAwaited(commonEvents: readonly CommonEvent.Base[]): Promise;
}
export declare enum AccountStatus {
Pending = "pending",// 上线中
Online = "online",// 已上线
OffLine = "offline"
}
export declare namespace Account {
type Filters = {};
type Config = Adapter.Configs[P] & Partial & {
platform: string;
account_id: string;
};
const UnsupportedMethodError: Error;
const UnsupportedVersionError: Error;
}
export declare const BOOLS: string[];