import type { HelixUser } from '@twurple/api';
import { DataObject } from '@twurple/common';
import { EventSubChannelHypeTrainContribution } from './common/EventSubChannelHypeTrainContribution';
import { type EventSubChannelHypeTrainBeginV2EventData } from './EventSubChannelHypeTrainBeginV2Event.external';
import type { EventSubChannelHypeTrainType } from './common/EventSubChannelHypeTrainType';
import { EventSubChannelHypeTrainSharedParticipant } from './common/EventSubChannelHypeTrainSharedParticipant';
/**
 * An EventSub event representing a Hype Train starting in a channel.
 */
export declare class EventSubChannelHypeTrainBeginV2Event extends DataObject<EventSubChannelHypeTrainBeginV2EventData> {
    /**
     * The ID of the Hype Train.
     */
    get id(): string;
    /**
     * The ID of the broadcaster.
     */
    get broadcasterId(): string;
    /**
     * The name of the broadcaster.
     */
    get broadcasterName(): string;
    /**
     * The display name of the broadcaster.
     */
    get broadcasterDisplayName(): string;
    /**
     * Gets more information about the broadcaster.
     */
    getBroadcaster(): Promise<HelixUser>;
    /**
     * The type of the Hype Train.
     */
    get type(): EventSubChannelHypeTrainType;
    /**
     * The level the Hype Train started on.
     */
    get level(): number;
    /**
     * The total points already contributed to the Hype Train.
     */
    get total(): number;
    /**
     * The number of points contributed to the Hype Train at the current level.
     */
    get progress(): number;
    /**
     * The number of points required to reach the next level.
     */
    get goal(): number;
    /**
     * The contributors with the most points contributed.
     */
    get topContributors(): EventSubChannelHypeTrainContribution[];
    /**
     * Indicates if the Hype Train is shared.
     *
     * When `true`, {@link EventSubChannelHypeTrainBeginV2Event#sharedTrainParticipants} will contain the list of
     * broadcasters the train is shared with.
     */
    get isSharedTrain(): boolean;
    /**
     * The list of broadcasters in the shared Hype Train.
     *
     * Empty if {@link EventSubChannelHypeTrainBeginV2Event#isSharedTrain} is `false`.
     */
    get sharedTrainParticipants(): EventSubChannelHypeTrainSharedParticipant[];
    /**
     * The all-time high level this type of Hype Train has reached for this broadcaster.
     */
    get allTimeHighLevel(): number;
    /**
     * The all-time high total this type of Hype Train has reached for this broadcaster.
     */
    get allTimeHighTotal(): number;
    /**
     * The time when the Hype Train started.
     */
    get startDate(): Date;
    /**
     * The time when the Hype Train is expected to expire, unless a change of level occurs to extend the expiration.
     */
    get expiryDate(): Date;
}
//# sourceMappingURL=EventSubChannelHypeTrainBeginV2Event.d.ts.map