/// <reference types="node" />
/// <reference types="node" />
import EventEmitter from 'events';
import { PassThrough } from 'stream';
import { Wasd } from './types/api';
export declare class WasdTv extends EventEmitter {
    private token;
    private _rest;
    private _socket;
    private _jwt;
    private _subs;
    private _originalOn;
    private _originalOff;
    constructor(token: string);
    private init;
    joinToChat(stream_id: number, channel_id: number): Promise<void>;
    leaveChat(stream_id: number): Promise<void>;
    sendMessage(stream_id: number, message: string, channel_id?: number, streamer_id?: number): void;
    sendSticker(stream_id: number, sticker_id: number, channel_id?: number, streamer_id?: number): void;
    private connectGuard;
    on<T extends Wasd.EventMap, V extends keyof Wasd.EventMap>(event: V, listener: (ctx: Pick<T, V>[V]) => void): this;
    off<T extends Wasd.EventMap, V extends keyof Wasd.EventMap>(event: V, listener: (ctx: Pick<T, V>[V]) => void): this;
    getJWT(): Promise<Wasd.JWT>;
    getChannelInfo(channel_name: string): Promise<Wasd.ChannelInfo>;
    getStreamChatMessages(stream_id: number, limit?: number, offset?: number): Promise<Wasd.RestMessage<Wasd.Message>[]>;
    getStreamChatStickers(stream_id: number, limit?: number, offset?: number): Promise<Wasd.RestMessage<Wasd.StickerMessage>[]>;
    getStreamChatSubscribers(stream_id: number, limit?: number, offset?: number): Promise<Wasd.RestMessage<Wasd.SubscribeMessage>[]>;
    getStreamChatHighlightedMessage(stream_id: number, limit?: number, offset?: number): Promise<Wasd.RestMessage<Wasd.HighlightedMessage>[]>;
    addModerator(channel_id: number, user_id: number): Promise<boolean>;
    deleteModerator(channel_id: number, user_id: number): Promise<boolean>;
    listModerator(streamer_id: number): Promise<Wasd.Moderator[]>;
    banUser(channel_id: number, user_id: number, stream_id: number, keep_messages?: boolean, duration?: number): Promise<boolean>;
    unbanUser(channel_id: number, user_id: number): Promise<boolean>;
    listBanned(streamer_id: number): Promise<Wasd.BannedUser[]>;
    getGifts(media_container_id: number): Promise<Wasd.Gift[]>;
    productsToSell(user_id: number): Promise<Wasd.Product[]>;
    getWebCustomBlocks(channel_id: number): Promise<Wasd.WebCustomBlock[]>;
    getPopularClips(): Promise<Wasd.Clip[]>;
    getClips(channel_id: number, limit?: number, offset?: number): Promise<Wasd.Clip[]>;
    getGames(limit?: number, offset?: number): Promise<Wasd.Game[]>;
    getMediaContainers(media_container_status?: Wasd.MediaStatus, media_container_type?: Wasd.MediaContainerType, game_id?: number, limit?: number, offset?: number): Promise<Wasd.MediaContainerExtra[]>;
    getChannelMediaContainers(media_container_status: Wasd.MediaStatus | undefined, media_container_type: "SINGLE" | undefined, channel_id: number, limit?: number, offset?: number): Promise<Wasd.MediaContainerExtra[]>;
    getChannelLinks(channel_id: number): Promise<Wasd.ChannelLink[]>;
    getProfile(): Promise<Wasd.User>;
    getNotifications(): Promise<Wasd.Notification[]>;
    searchGames(search_phrase: string, limit?: number, offset?: number): Promise<Wasd.SearchResult<Wasd.Game>>;
    searchProfile(search_phrase: string, limit?: number, offset?: number): Promise<Wasd.SearchResult<Wasd.UserProfile>>;
    searchChannel(search_phrase: string, limit?: number, offset?: number): Promise<Wasd.SearchResult<Wasd.Channel>>;
    searchMediaContainer(media_container_name?: string, media_container_status?: Wasd.MediaStatus, limit?: number, offset?: number): Promise<Wasd.SearchResult<Wasd.MediaContainerExtra>>;
    getTags(type?: Wasd.TagType, limit?: number, offset?: number): Promise<Wasd.Tag[]>;
    getStreamPushUrl(): Promise<Wasd.StreamPushUrl>;
    getStreamClosedViewUrl(): Promise<Wasd.StreamClosedViewUrl>;
    getBroadcastLimits(): Promise<Wasd.BroadcastLimits>;
    setSetting(setting_key: Wasd.SettingKey, setting_value: any): Promise<Wasd.Setting[]>;
    getPosts(user_id: number, limit?: number, offset?: number): Promise<Wasd.Post[]>;
    donwloadLiveMediaStream(user_id: number): PassThrough;
    downloadMediaByUrl(url: string): PassThrough;
    downloadVod(media_container: Wasd.MediaContainer): PassThrough;
    getMediaStreamMetadata(user_id: number): Promise<Wasd.MediaStreamMetadata>;
}
