import type { GetClip } from '@twitchfy/api-types';
import type { ChatBot } from './ChatBot';
import { BaseClip } from './BaseClip';
import { Video } from './Video';
import { BaseUserWithoutUsername } from './BaseUserWithoutUsername';
import type { EventSubConnection } from '../enums';
/**
 * Represents a Twitch clip.
 */
export declare class Clip<T extends EventSubConnection> extends BaseClip<T> {
    /**
     * The URL to embed the clip in a frame.
     */
    readonly embedURL: string;
    /**
     * The user who created the clip. The user will not have an username because Twitch limitations.
     */
    readonly creator: BaseUserWithoutUsername<T>;
    /**
     * The user who broadcasted the clip. The user will not have an username because Twitch limitations.
     */
    readonly broadcaster: BaseUserWithoutUsername<T>;
    /**
     * The Id of the game which was played in the clip.
     */
    readonly gameId: string;
    /**
     * The language of the clip.
     */
    readonly language: string;
    /**
     * The title of the clip.
     */
    readonly title: string;
    /**
     * The view count of the clip.
     */
    readonly viewCount: number;
    /**
     * The URL to the thumbnail of the clip.
     */
    readonly thumbnailURL: string;
    /**
     * The duration of the clip in seconds.
     */
    readonly duration: number;
    /**
     * The offset in the VOD where the clip starts. If the clip is not from a VOD, this will be null.
     */
    readonly vodOffset: number | null;
    /**
     * Whether the clip is featured.
     */
    readonly isFeatured: boolean;
    /**
     * The data of the clip returned from the API.
     */
    private data;
    /**
     * Creates a new instance of the clip.
     * @param chatbot The current instance of the chatbot.
     * @param data The data of the clip returned from the API.
     */
    constructor(chatbot: ChatBot<T>, data: GetClip);
    /**
     * When the clip was created. Returns a JavaScript Date object.
     */
    get createdAt(): Date;
    /**
     * The Id of the video of the clip.
     */
    get videoId(): string | null;
    /**
     * Fetches the video of the clip.
     * @returns The video of the clip. Returns null if the video doesn't exist.
     */
    video(): Promise<Video<T> | null>;
    /**
     * Fetches the stream of the broadcaster of the clip.
     * @returns The stream of the broadcaster of the clip. If the stream is offline, it will return null.
     */
    stream(): Promise<import("./Stream").Stream<T> | null>;
}
