import { Page, Cookie } from 'playwright'; export interface LoginStatus { isLoggedIn: boolean; cookies: Cookie[]; csrfToken?: string; username?: string; /** 结算单接口需要的额外请求头 */ settlementHeaders?: SettlementHeaders; } /** 结算单接口需要的额外请求头 */ export interface SettlementHeaders { clienttag?: string; 'settlement-env'?: string; 'x-ticket'?: string; 'x-token'?: string; } export declare class LoginDetector { private page; private context; private checkInterval; constructor(page: Page); /** * 检测是否存在 Admin-Token Cookie */ private hasAdminToken; /** * 检测是否在 Dashboard 页面(登录成功后的页面) */ private isOnDashboard; /** * 综合检测登录状态 * 登录成功的条件:有 Admin-Token Cookie(不再要求必须在 Dashboard 页面) */ checkLoginStatus(): Promise; /** * 尝试访问 Dashboard 页面验证登录状态 * 如果能访问成功(不跳转到登录页),则说明登录有效 */ verifyLoginByDashboard(): Promise; /** * 等待用户登录完成 * @param timeout 超时时间(毫秒),默认 5 分钟 */ waitForLogin(timeout?: number): Promise; /** * 停止登录检测 */ stopChecking(): void; /** * 从页面中提取 X-Csrf-Token * Token 通常存储在 localStorage 或页面的某个位置 */ extractCsrfToken(): Promise; /** * 通过拦截网络请求获取 X-Csrf-Token * 监听 API 请求中的 X-Csrf-Token 头 */ interceptCsrfToken(timeoutMs?: number): Promise; /** * 通过拦截网络请求获取结算单接口需要的请求头 * 监听结算单相关 API 请求中的特殊头 */ interceptSettlementHeaders(timeoutMs?: number): Promise; } //# sourceMappingURL=login-detector.d.ts.map