import type { MessageCenter } from '../message-center/index.js'; import type { TokenDescriptor } from './token-types.js'; /** * Token Daemon 事件类型定义 */ export type TokenDaemonEventType = 'token:refreshed' | 'token:expired' | 'token:refresh-failed' | 'token:auto-suspended'; /** * Token 刷新成功事件 */ export interface TokenRefreshedEvent { provider: string; alias: string; filePath: string; displayName: string; timestamp: number; mode: 'auto' | 'manual'; } /** * Token 过期事件 */ export interface TokenExpiredEvent { provider: string; alias: string; filePath: string; displayName: string; expiresAt: number | null; timestamp: number; } /** * Token 刷新失败事件 */ export interface TokenRefreshFailedEvent { provider: string; alias: string; filePath: string; displayName: string; error: string; timestamp: number; mode: 'auto' | 'manual'; } /** * Token 自动暂停事件 */ export interface TokenAutoSuspendedEvent { provider: string; alias: string; filePath: string; displayName: string; failureStreak: number; suspendedAt: number; timestamp: number; } export type TokenDaemonEventData = TokenRefreshedEvent | TokenExpiredEvent | TokenRefreshFailedEvent | TokenAutoSuspendedEvent; /** * Token Daemon 消息总线集成器 * 负责将 Token Daemon 的事件发布到系统 MessageCenter */ export declare class TokenDaemonMessageBus { private messageCenter; private enabled; private subscriptions; /** * 附加到 MessageCenter */ attach(messageCenter: MessageCenter): void; /** * 从 MessageCenter 分离 */ detach(): void; /** * 订阅指定主题,返回订阅 ID */ subscribe(topic: string, handler: (data: unknown) => void): string; /** * 取消订阅 */ unsubscribe(subscriptionId: string): void; /** * 发布 token 刷新成功事件 */ notifyTokenRefreshed(token: TokenDescriptor, mode: 'auto' | 'manual'): void; /** * 发布 token 过期事件 */ notifyTokenExpired(token: TokenDescriptor): void; /** * 发布 token 刷新失败事件 */ notifyTokenRefreshFailed(token: TokenDescriptor, error: string | Error, mode: 'auto' | 'manual'): void; /** * 发布 token 自动暂停事件 */ notifyTokenAutoSuspended(token: TokenDescriptor, failureStreak: number, suspendedAt: number): void; /** * 获取当前状态 */ get isEnabled(): boolean; }