import { TUIConferenceInvitationManagerEvents, TUIInvitationRejectedReason } from '@tencentcloud/tuiroom-engine-js';
import { IRoomService } from '../types';

export * from '@tencentcloud/tuiroom-engine-js';
interface IConferenceInvitationManager {
    on(eventType: TUIConferenceInvitationManagerEvents, callback: (data?: any) => any): void;
    off(eventType: TUIConferenceInvitationManagerEvents, callback: (data?: any) => void): void;
    dispose(): void;
    inviteUsers(options: {
        userIdList: string[];
    }): Promise<void>;
    cancelInvitation(options: {
        roomId: string;
        userIdList: string[];
    }): Promise<void>;
    accept(options: {
        roomId: string;
    }): Promise<void>;
    reject(options: {
        roomId: string;
        reason: TUIInvitationRejectedReason;
    }): Promise<void>;
    getInvitationList(options: {
        roomId: string;
        cursor: string;
        count: number;
    }): Promise<void>;
}
export interface IConferenceInvitationManagerOptions {
    roomId: string;
}
export interface InviteParams {
    roomId: string;
    userIdList: string[];
    timeout: number;
    extensionInfo?: string;
}
export declare class ConferenceInvitationManager implements IConferenceInvitationManager {
    private service;
    private emitter;
    private isBeingInvited;
    constructor(service: IRoomService);
    dispose(): void;
    on(eventType: TUIConferenceInvitationManagerEvents, callback: (data?: any) => any): void;
    off(eventType: TUIConferenceInvitationManagerEvents, callback: (data?: any) => void): void;
    private emit;
    private bindEventContext;
    private bindEvent;
    private unbindEvent;
    private onReceiveInvitation;
    private onInvitationHandledByOtherDevice;
    private onInvitationAccepted;
    private onInvitationRejected;
    private onInvitationTimeout;
    private onInvitationAdded;
    private onInvitationStatusChanged;
    private onInvitationRevokedByAdmin;
    inviteUsers(options: {
        userIdList: string[];
    }): Promise<any>;
    cancelInvitation(options: {
        roomId: string;
        userIdList: string[];
    }): Promise<any>;
    accept(options: {
        roomId: string;
    }): Promise<any>;
    reject(options: {
        roomId: string;
        reason: TUIInvitationRejectedReason;
    }): Promise<any>;
    getInvitationList(options: {
        roomId: string;
        cursor: string;
        count: number;
    }): Promise<any>;
}
