import { AnyObject, UnknownObject } from "./utils.js";
export type ChannelId = string;
export declare const Qualities: readonly ["lowest", "low", "medium", "high", "highest"];
export declare const BiliQualities: readonly [30000, 20000, 10000, 400, 250, 150, 80];
export declare const DouyuQualities: readonly [0, 2, 3, 4, 8];
export declare const HuYaQualities: readonly [0, 20000, 14100, 14000, 10000, 8000, 4200, 4000, 2000, 500];
export declare const DouYinQualities: readonly ["origin", "uhd", "hd", "sd", "ld", "ao"];
export type Quality = (typeof Qualities)[number] | (typeof BiliQualities)[number] | (typeof DouyuQualities)[number] | (typeof HuYaQualities)[number] | (typeof DouYinQualities)[number];
export interface MessageSender<E extends AnyObject = UnknownObject> {
    uid?: string;
    name: string;
    avatar?: string;
    extra?: E;
}
export interface Comment<E extends AnyObject = UnknownObject> {
    type: "comment";
    timestamp: number;
    text: string;
    mode?: number;
    color?: string;
    sender?: MessageSender;
    extra?: E;
}
export interface GiveGift<E extends AnyObject = UnknownObject> {
    type: "give_gift";
    timestamp: number;
    name: string;
    count: number;
    price: number;
    text?: string;
    cost?: number;
    color?: string;
    sender?: MessageSender;
    extra?: E;
}
export interface Guard<E extends AnyObject = UnknownObject> {
    type: "guard";
    timestamp: number;
    name: string;
    count: number;
    price: number;
    level: number;
    text?: string;
    cost?: number;
    color?: string;
    sender?: MessageSender;
    extra?: E;
}
export interface SuperChat<E extends AnyObject = UnknownObject> {
    type: "super_chat";
    timestamp: number;
    text: string;
    price: number;
    sender?: MessageSender;
    extra?: E;
}
export type Message = Comment | GiveGift | SuperChat | Guard;
