import { SetChannelMeta } from '../../channel'; import { ChannelMetaType } from '../../channel/meta'; import { ChatFeeds, ChatLogged, ChatLoggedType, DeleteAllFeed, KnownChatType, OpenKickFeed, OpenLinkDeletedFeed, OpenRewriteFeed, TypedChatlog } from '../../chat'; import { InformedOpenLink, OpenLink, OpenLinkChannelUserInfo } from '../../openlink'; import { KickoutType } from '../../packet/chat'; import { RelayEventType } from '../../relay'; import { DefaultRes } from '../../request'; import { TalkChatData } from '../chat'; export interface ChatEvent { 'chat': (data: TalkChatData, channel: T) => void; 'chat_read': (chat: Readonly, channel: T, reader?: U) => void; 'chat_deleted': (feedChatlog: Readonly>, channel: T, feed: DeleteAllFeed) => void; } export interface ChannelEvent { 'meta_change': (channel: T, type: ChannelMetaType, newMeta: SetChannelMeta) => void; 'user_join': (feedChatlog: Readonly>, channel: T, user: U, feed: ChatFeeds) => void; 'user_left': (feedChatlog: Readonly>, channel: T, user: U, feed: ChatFeeds) => void; } export interface ChannelListEvent { 'channel_join': (channel: T) => void; 'channel_left': (channel: T) => void; } export interface RootChannelListEvent { 'channel_added': (channel: T) => void; } export interface OpenChannelEvent { 'profile_changed': (channel: T, lastInfo: U, user: OpenLinkChannelUserInfo) => void; 'perm_changed': (channel: T, lastInfo: U, user: U) => void; 'host_handover': (channel: T, lastLink: OpenLink, link: OpenLink) => void; 'channel_link_deleted': (feedChatlog: Readonly>, channel: T, feed: OpenLinkDeletedFeed) => void; 'message_hidden': (feedChatlog: Readonly>, channel: T, feed: OpenRewriteFeed) => void; 'chat_event': (channel: T, author: U, type: RelayEventType, count: number, chat: ChatLoggedType) => void; } export interface OpenChannelListEvent { 'channel_kicked': (feedChatlog: Readonly>, channel: T, feed: OpenKickFeed) => void; } export interface OpenLinkEvent { 'link_created': (link: InformedOpenLink) => void; 'link_deleted': (link: InformedOpenLink) => void; } export interface ClientEvent { 'switch_server': () => void; 'disconnected': (reason: KickoutType) => void; 'push_packet': (method: string, data: DefaultRes) => void; 'error': (error: unknown) => void; } export declare type ClientEvents = ClientEvent & ChannelListEvents; export declare type ChannelListEvents = OpenChannelListEvents & NormalChannelListEvents & RootChannelListEvent; export declare type NormalChannelListEvents = ChannelListEvent & ChannelEvents; export declare type OpenChannelListEvents = OpenLinkListEvents & ChannelListEvent & OpenChannelEvents & OpenChannelListEvent; export declare type OpenLinkListEvents = OpenLinkEvent; export declare type ChannelEvents = ChannelEvent & ChatEvent; export declare type OpenChannelEvents = ChannelEvents & OpenChannelEvent;