import type { ChatBot } from '../ChatBot';
import { Base } from '../Base';
import { ChannelProfile } from '../ChannelProfile';
import { Channel } from '../Channel';
import type { EventSubConnection } from '../../enums';
import type { ChannelEvents } from '../../types';
/**
 * Represents the chatbot channel manager used to join to channels.
 */
export declare class ChannelManager<T extends EventSubConnection> extends Base<T> {
    /**
     * Creates a new instance of the channel manager.
     * @param chatbot The current instance of the chatbot.
     */
    constructor(chatbot: ChatBot<T>);
    /**
     * Join a channel and listen to messages.
     * @param id The id of the channel to join.
     * @param events The EventSub events you will listen  to. See {@link ChannelEvents}.
     * @returns A class representation of the channel profile which contains the events you are subscribed with. See {@link ChannelProfile}.
     */
    join(id: string, events?: ChannelEvents[]): Promise<ChannelProfile<T>>;
    /**
     * Leave a channel. You will no longer listen to messages and the other events you've subscribed.
     * @param id The id of the channel to leave.
     * @returns
     */
    leave(id: string): Promise<void>;
    /**
     * Fetches a channel by id.
     * @param id The id of the channel to fetch.
     * @returns A class representation of the channel. See {@link Channel}.
     */
    fetch(id: string): Promise<Channel<T>>;
}
