import { V2NIMConnectQualityInfo, V2NIMDataSyncDetail, V2NIMError, V2NIMKickedOfflineDetail, V2NIMLoginClient, V2NIMLoginOption } from '../v2_def/v2_nim_struct_def';
import { EventEmitter } from 'eventemitter3';
import { V2NIMReconnectDelayProvider } from '../v2_def/v2_nim_callback_def';
import { V2NIMConnectStatus, V2NIMDataSyncState, V2NIMDataSyncType, V2NIMLoginClientChange, V2NIMLoginStatus } from '../v2_def/v2_nim_enum_def';
export declare interface V2NIMLoginListener {
    /** 登录状态变更回调 */
    loginStatus: [V2NIMLoginStatus];
    /** 登录失败回调 */
    loginFailed: [V2NIMError];
    /** 被踢下线回调 */
    kickedOffline: [V2NIMKickedOfflineDetail];
    /** 登录客户端变更回调 */
    loginClientChanged: [V2NIMLoginClientChange, V2NIMLoginClient[]];
    /** 连接状态变更回调 */
    connectStatus: [V2NIMConnectStatus];
    /** 连接断开回调 */
    disconnected: [V2NIMError | null];
    /** 连接失败回调 */
    connectFailed: [V2NIMError];
    /** 数据同步回调 */
    dataSync: [V2NIMDataSyncType, V2NIMDataSyncState, V2NIMError | null];
    /** 连接质量变化回调。当前仅 QUIC 路径探测会触发，用于提示网络质量变差或已恢复，不改变连接状态。 */
    connectQuality: [V2NIMConnectQualityInfo];
}
export declare class V2NIMLoginService extends EventEmitter<V2NIMLoginListener> {
    instance: any;
    constructor();
    /**
     * @brief 登录接口
     * @param accountId 账号
     * @param token 密码
     * @param option 登录选项
     * @returns Promise<void>
     * @example
     * ```javascript
     * await v2.loginService.login('accountId', 'token', {})
     * ```
     */
    login(accountId: string, token: string, option: V2NIMLoginOption): Promise<void>;
    /**
     * @brief 登出接口
     * @returns Promise<void>
     * @example
     * ```javascript
     * await v2.loginService.logout()
     * ```
     */
    logout(): Promise<void>;
    /**
     * @brief 获取当前登录用户
     * @returns string 当前登录用户
     * @example
     * ```javascript
     * const user = v2.loginService.getLoginUser()
     * ```
     */
    getLoginUser(): string;
    /**
     * @brief 获取登录状态
     * @returns V2NIMLoginStatus 登录状态
     * @example
     * ```javascript
     * const status = v2.loginService.getLoginStatus()
     * ```
     */
    getLoginStatus(): V2NIMLoginStatus;
    /**
     * @brief 获取登录客户端列表
     * @returns V2NIMLoginClient[] 登录客户端列表
     * @example
     * ```javascript
     * const clients = v2.loginService.getLoginClients()
     * ```
     */
    getLoginClients(): V2NIMLoginClient[];
    /**
     * @brief 获取当前登录客户端
     * @returns V2NIMLoginClient 当前登录客户端
     * @example
     * ```javascript
     * const client = v2.loginService.getCurrentLoginClient()
     * ```
     */
    getCurrentLoginClient(): V2NIMLoginClient;
    /**
     * @brief 踢掉登录客户端下线
     * @param client 登录客户端
     * @returns Promise<void>
     * @example
     * ```javascript
     * const otherClients = v2.loginService.getLoginClients()
     * await v2.loginService.kickOffline(otherClients[0])
     * ```
     */
    kickOffline(client: V2NIMLoginClient): Promise<void>;
    /**
     * @brief 获取被踢下线原因
     * @returns V2NIMKickedOfflineDetail 被踢下线原因
     * @example
     * ```javascript
     * const detail = v2.loginService.getKickedOfflineDetail()
     * ```
     */
    getKickedOfflineDetail(): V2NIMKickedOfflineDetail;
    /**
     * @brief 获取连接状态
     * @returns V2NIMConnectStatus 连接状态
     * @example
     * ```javascript
     * const status = v2.loginService.getConnectStatus()
     * ```
     */
    getConnectStatus(): V2NIMConnectStatus;
    /**
     * @brief 获取数据同步状态
     * @returns V2NIMDataSyncDetail[]  数据同步状态列表
     * @example
     * ```javascript
     * const details = v2.loginService.getDataSync()
     * ```
     */
    getDataSync(): V2NIMDataSyncDetail[];
    /**
     * @brief 获取聊天室 link 地址
     * @param roomId 聊天室 ID
     * @returns Promise<Array<string>>
     * @example
     * ```javascript
     * const linkAddresses = await v2.loginService.getChatroomLinkAddress('roomId')
     * ```
     */
    getChatroomLinkAddress(roomId: string): Promise<Array<string>>;
    /**
     * @brief 设置获取重连延时回调
     * @param provider 获取重连延时回调
     * @returns void
     * @example
     * ```javascript
     * v2.loginService.setReconnectDelayProvider(provider)
     * ```
     */
    setReconnectDelayProvider(provider: V2NIMReconnectDelayProvider): void;
}
