/**
 * 认证核心逻辑
 * 实现OAuth2授权码模式的完整流程
 */
import { EventType, RouterInfo, SDKConfig, UserInfo } from '../types';
import { Storage } from '../utils/storage';
/**
 * 认证核心类
 */
export declare class Auth {
    private config;
    private tokenManager;
    private httpClient;
    private storage;
    private eventHandlers;
    private userInfoCache;
    /**
     * 构造函数
     * @param storage 存储实例
     */
    constructor(storage: Storage);
    /**
     * 初始化SDK配置
     * @param config SDK配置选项
     */
    init(config: SDKConfig): void;
    getToken(): string | null;
    /**
     * 触发登录流程
     * @param redirectUri 可选的重定向URL，覆盖初始化时的配置
     */
    login(redirectUri?: string): Promise<void>;
    /**
     * 退出登录
     */
    logout(): Promise<void>;
    /**
     * 处理授权回调
     * @returns Promise<UserInfo> 用户信息
     */
    handleCallback(): Promise<void>;
    getRoutes(): Promise<RouterInfo>;
    /**
     * 获取用户信息
     * @returns UserInfo 用户信息
     */
    getUserInfo(): UserInfo;
    /**
     * 检查用户是否有指定角色
     * @param role 角色编码或角色编码列表
     * @returns Promise<boolean> 是否有指定角色
     */
    hasRole(role: string | string[]): Promise<boolean>;
    /**
     * 检查用户是否有所有指定角色
     * @param roles 角色编码列表
     * @returns Promise<boolean> 是否有所有指定角色
     */
    hasAllRoles(roles: string[]): Promise<boolean>;
    /**
     * 检查用户是否有指定权限
     * @param permission 权限标识或权限标识列表
     * @returns Promise<boolean> 是否有指定权限
     */
    hasPermission(permission: string | string[]): Promise<boolean>;
    /**
     * 检查用户是否有所有指定权限
     * @param permissions 权限标识列表
     * @returns Promise<boolean> 是否有所有指定权限
     */
    hasAllPermissions(permissions: string[]): Promise<boolean>;
    /**
     * 检查用户是否已认证
     * @returns boolean 是否已认证
     */
    isAuthenticated(): boolean;
    /**
     * 事件监听
     * @param event 事件类型
     * @param callback 回调函数
     */
    on(event: EventType, callback: Function): void;
    /**
     * 移除事件监听
     * @param event 事件类型
     * @param callback 回调函数
     */
    off(event: EventType, callback: Function): void;
    /**
     * 触发事件
     * @param event 事件类型
     * @param data 事件数据
     */
    private emit;
    /**
     * 检查当前URL是否为授权回调
     * @returns boolean 是否为授权回调
     */
    isCallback(): boolean;
}
//# sourceMappingURL=auth.d.ts.map