import { V2NIMSubscribeUserStatusOption, V2NIMUnsubscribeUserStatusOption, V2NIMCustomUserStatusParams, V2NIMCustomUserStatusPublishResult, V2NIMUserStatusSubscribeResult, V2NIMUserStatus } from '../v2_def/v2_nim_struct_def';
import { EventEmitter } from 'eventemitter3';
export declare interface V2NIMSubscriptionListener {
    userStatusChanged: [V2NIMUserStatus];
}
/** @brief 订阅服务 */
export declare class V2NIMSubscriptionService extends EventEmitter<V2NIMSubscriptionListener> {
    instance: any;
    constructor();
    /**
     * @brief 订阅用户状态
     * @param option 订阅用户状态选项
     * @returns Promise<string[]>
     * @example
     * ```javascript
     * const result = await v2.subscriptionService.subscribeUserStatus({
     *     accountIds: ['account1', 'account2'],
     * })
     * ```
     */
    subscribeUserStatus(option: V2NIMSubscribeUserStatusOption): Promise<string[]>;
    /**
     * @brief 取消用户状态订阅
     * @param option 取消订阅用户状态选项
     * @returns Promise<string[]>
     * @example
     * ```javascript
     * const result = await v2.subscriptionService.unsubscribeUserStatus({
     *     accountIds: ['account1', 'account2'],
     * })
     * ```
     */
    unsubscribeUserStatus(option: V2NIMUnsubscribeUserStatusOption): Promise<string[]>;
    /**
     * @brief 发布用户自定义状态
     * @param params 发布自定义用户状态参数
     * @returns Promise<V2NIMCustomUserStatusPublishResult>
     * @example
     * ```javascript
     * const result = await v2.subscriptionService.publishCustomUserStatus({
     *     statusType: 10001,
     *     duration: 60
     * })
     * ```
     */
    publishCustomUserStatus(params: V2NIMCustomUserStatusParams): Promise<V2NIMCustomUserStatusPublishResult>;
    /** @brief 查询用户状态订阅关系
     * @param accountIds 账号列表
     * @returns Promise<V2NIMUserStatusSubscribeResult[]>
     * @example
     * ```javascript
     * const result = await v2.subscriptionService.queryUserStatusSubscriptions(['account1', 'account2'])
     * ```
     */
    queryUserStatusSubscriptions(accountIds: string[]): Promise<V2NIMUserStatusSubscribeResult[]>;
}
