type FireworkKind = 'normal' | 'miku' | 'avatar';
interface DanmakuMessage {
    id: string;
    userId?: string;
    text: string;
    color?: string;
    timestamp: number;
}
interface FireworkPosition {
    x: number;
    y: number;
    z: number;
}
interface FireworkLaunchPayload {
    kind: FireworkKind;
    position?: FireworkPosition;
    color?: string;
    avatarUrl?: string;
    message?: DanmakuMessage;
}
interface FireworkEngineOptions {
    maxParticles?: number;
    maxActiveFireworks?: number;
    onError?: (error: Error) => void;
    onFpsReport?: (fps: number) => void;
}
interface MikuFireworks3DProps {
    width?: number | string;
    height?: number | string;
    className?: string;
    defaultKind?: FireworkKind;
    autoLaunchOnDanmaku?: boolean;
    maxParticles?: number;
    maxActiveFireworks?: number;
    defaultAvatarUrl?: string;
    realtime?: FireworksRealtimeConfig;
    onLaunch?: (payload: FireworkLaunchPayload) => void;
    onDanmakuSend?: (message: DanmakuMessage) => void;
    onError?: (error: Error) => void;
    onFpsReport?: (fps: number) => void;
    onRealtimeStateChange?: (state: FireworksRealtimeState) => void;
}
interface DanmakuSendResult {
    message: DanmakuMessage;
    launchKind?: FireworkKind;
}
interface DanmakuControllerOptions {
    onSend?: (message: DanmakuMessage) => void;
}
interface FireworksRealtimeUser {
    userId: string;
    nickname?: string;
    avatarUrl?: string;
}
interface FireworksRealtimeConfig {
    enabled?: boolean;
    serverUrl: string;
    roomId: string;
    user: FireworksRealtimeUser;
    protocols?: string | string[];
    reconnect?: boolean;
    reconnectIntervalMs?: number;
}
interface FireworksRealtimeState {
    connected: boolean;
    joined: boolean;
    onlineCount: number;
    roomId?: string;
}

export type { DanmakuMessage as D, FireworkKind as F, MikuFireworks3DProps as M, FireworkLaunchPayload as a, FireworkPosition as b, FireworkEngineOptions as c, DanmakuSendResult as d, DanmakuControllerOptions as e, FireworksRealtimeUser as f, FireworksRealtimeConfig as g, FireworksRealtimeState as h };
