import type { ChatBot } from './ChatBot';
import { Base } from './Base';
import type { EventSubConnection } from '../enums';
/**
 * The base class for a user.
 */
export declare class BaseUser<T extends EventSubConnection> extends Base<T> {
    /**
     * The id of the user.
     */
    readonly id: string;
    /**
     * The username of the user.
     */
    readonly username: string;
    /**
     * The display name of the user.
     */
    readonly displayName: string;
    /**
     * Creates a new instance of the base user.
     * @param chatbot The current instance of the chatbot.
     * @param data The base data of the user.
     */
    constructor(chatbot: ChatBot<T>, data: BaseUserData);
    /**
     * Gets the chatroom of the user.
     * @returns The chatroom of the user.
     */
    chatroom(): Promise<import("./ChatRoom").ChatRoom<T>>;
    /**
     * Fetches the current user from the API.
     * @returns The fetched user from the API.
     */
    fetch(): Promise<import("./User").User<T>>;
    /**
     * Returns the mention of the user.
     */
    toString(): string;
    /**
     * Fetches the current stream of the user from the API.
     * @returns The current stream or null if the stream is offline.
     */
    stream(): Promise<import("./Stream").Stream<T> | null>;
    /**
     * Checks whether the user is currently streaming.
     * @returns A boolean indicating whether the user is currently streaming.
     */
    inStream(): Promise<boolean>;
    channel(): Promise<import("./Channel").Channel<T>>;
    /**
     * Sends a whisper to the user.
     * @param message The message to send.
     * @returns
     */
    whisper(message: string): Promise<void>;
}
/**
 * The base data of an user.
 */
export interface BaseUserData {
    /**
     * The id of the user.
     */
    id: string;
    /**
     * The username of the user.
     */
    login: string;
    /**
     * The display name of the user.
     */
    display_name: string;
}
