import { Fragment, Session } from 'koishi';
import { MailboxMessageData } from '../decoder/messages/MailboxMessage';
import { BroadcastMessage } from '../decoder/messages/BroadcastMessage';
import { Stock } from '../decoder/messages/Stock';
import { BankCallback } from '../decoder/messages/BankCallback';
import { MessageType } from '../decoder';
import { IIROSE_Bot } from './bot';
export interface kickData {
    username: string;
}
export interface cutOne {
    id?: string;
}
export interface setMaxUser {
    maxMember: number;
}
export interface whiteList {
    username: string;
    time: string;
    intro?: string;
}
export interface broadcast {
    message: string;
    color: string;
}
export interface move {
    roomId: string;
    roomPassword?: string;
}
export interface EventsCallBackOrigin {
    type: string;
    userId?: string;
    username?: string;
    timestamp?: number;
    author?: {
        userId: string;
        avatar: string;
        username: string;
    };
    platform: 'iirose';
    guildId?: string;
    selfId?: string;
    bot?: IIROSE_Bot;
    channelId?: string;
    send: (data: {
        public?: {
            message: Fragment;
        };
        private?: {
            message: Fragment;
            userId: string;
        };
    }) => void;
    data?: any;
}
export interface musicOrigin {
    type: 'music' | 'video';
    name: string;
    signer: string;
    cover: string;
    link: string;
    url: string;
    duration: number;
    bitRate: number;
    color: string;
    lyrics: string;
    origin: 'netease' | 'bilibili' | 'null' | 'undefined' | null;
}
export interface StockGet {
    (stockData: Stock): void;
}
export interface StockSession extends Stock {
    send?: (data: {
        public?: {
            message: Fragment;
        };
        private?: {
            message: Fragment;
            userId: string;
        };
    }) => void;
    bot?: IIROSE_Bot;
}
export interface Events {
    'iirose/guild-member-refresh'(session: Session): void;
    'iirose/guild-member-switchRoom'(session: Session, data: MessageType['switchRoom']): void;
    'iirose/music-play'(session: Session, data: MessageType['music']): void;
    'iirose/selfMove'(session: Session, data: MessageType['selfMove']): void;
    'iirose/roomNotice'(session: Session, data: Extract<MailboxMessageData, {
        type: 'roomNotice';
    }>): void;
    'iirose/follower'(session: Session, data: Extract<MailboxMessageData, {
        type: 'follower';
    }>): void;
    'iirose/like'(session: Session, data: Extract<MailboxMessageData, {
        type: 'like';
    }>): void;
    'iirose/dislike'(session: Session, data: Extract<MailboxMessageData, {
        type: 'dislike';
    }>): void;
    'iirose/payment'(session: Session, data: Extract<MailboxMessageData, {
        type: 'payment';
    }>): void;
    'iirose/broadcast'(session: Session, data: BroadcastMessage): void;
    'iirose/stock-update'(stockData: Stock): void;
    'iirose/bank-update'(bankData: BankCallback): void;
}
