import type { GetClipsOptions } from '@twitchfy/helix';
import { Base } from './Base';
import type { ChatRoom } from './ChatRoom';
import { BaseUser } from './BaseUser';
import type { ChatBot } from './ChatBot';
import { ChannelEmote } from './ChannelEmote';
import { Collection } from './Collection';
import type { EventSubConnection } from '../enums';
export declare class BaseChannel<T extends EventSubConnection = EventSubConnection> extends Base<T> {
    /**
       * The id of the channel.
       */
    readonly id: string;
    /**
       * The broadcaster of the channel.
       */
    readonly broadcaster: BaseUser<T>;
    /**
       * The chatroom of the channel.
       */
    readonly chatroom: ChatRoom<T>;
    constructor(chatbot: ChatBot<T>, data: BaseChannelData, chatroom: ChatRoom<T>);
    /**
       * The id of the broadcaster who owns the channel.
       */
    get broadcasterId(): string;
    /**
       * The id of the chatroom of the channel.
       */
    get chatroomId(): string;
    /**
       * The chatroom bans manager. See {@link BanManager}.
       */
    get bans(): import("./managers").BanManager<T>;
    /**
       * The chatroom timeouts manager. See {@link TimeoutManager}.
       */
    get timeouts(): import("./managers").TimeoutManager<T>;
    /**
       * The chatroom messages manager. See {@link MessageManager}.
       */
    get messages(): import("./managers").MessageManager<T>;
    /**
     * The chatroom warns manager. See {@link WarnsManager}.
     */
    get warns(): import("./managers").WarnsManager<T>;
    /**
     * The chatroom chatters manager. See {@link ChatterManager}.
     */
    get chatters(): import("./managers").ChatterManager<T>;
    /**
       * Fetches all the emotes of this channel.
       * @returns The a Collection containing all the emotes of the channel.
       */
    emotes(): Promise<Collection<string, ChannelEmote<T>>>;
    /**
       * Fetches the current stream of the channel from the API.
       * @returns The current stream or null if the stream is offline.
       */
    stream(): Promise<import("./Stream").Stream<T> | null>;
    /**
       * Fetches the clips of the channel from the API.
       * @param options The options to fetch the clips.
       * @returns An array containing the clips of the channel.
       */
    clips(options?: Omit<GetClipsOptions<true>, 'broadcaster_id'>): Promise<any>;
    isModerator(): Promise<any>;
    /**
       * Fetches the current channel from the API.
       * @returns The fetched channel from the API.
       */
    fetch(): Promise<import("./Channel").Channel<T>>;
}
export interface BaseChannelData {
    broadcaster_id: string;
    broadcaster_login: string;
    broadcaster_name: string;
}
