29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import type { OnlineDeviceInfo } from '@snowluma/protocol/events';
|
|
import type { BridgeContext } from './bridge-context';
|
|
|
|
export interface RosterWarmupResult {
|
|
friendsLoaded: boolean;
|
|
groupsLoaded: boolean;
|
|
}
|
|
|
|
export interface BridgeInterface extends BridgeContext {
|
|
readonly activePid: number | null;
|
|
/** Settles once for this Bridge session after first-login roster fetch. */
|
|
whenRosterWarmupSettled(): Promise<RosterWarmupResult>;
|
|
/** False only when every attached QQ process has a confirmed receive or
|
|
* request-path failure. An unarmed watchdog remains true for compatibility. */
|
|
readonly receiveHealthy: boolean;
|
|
/** Latest device snapshot observed on this Bridge lifecycle. `null` means
|
|
* QQ has not emitted its cache notification since SnowLuma attached. */
|
|
getOnlineClients(): readonly Readonly<OnlineDeviceInfo>[] | null;
|
|
}
|
|
|
|
export interface BridgeSessionListener {
|
|
started?(uin: string, bridge: BridgeInterface): void;
|
|
closed?(uin: string, bridge: BridgeInterface, pid: number): void;
|
|
}
|
|
|
|
export interface BridgeSessionSource {
|
|
subscribeSessions(listener: BridgeSessionListener): () => void;
|
|
}
|