import { ChannelManageSession } from '../channel/channel-session' ; import { ChatLogged , ChatLoggedType } from '../chat/chat' ; import { RelayEventType } from '../relay' ; import { AsyncCommandResult } from '../request' ; import { ChannelUser } from '../user/channel-user' ; import { OpenChannelUserInfo } from '../user/channel-user-info' ; import { OpenChannelInfo } from './open-channel-info' ; import { OpenLink , OpenLinkProfiles } from '.' ; import { OpenChannelUserPerm } from './open-link-type' ; import { OpenLinkChannelUserInfo , OpenLinkKickedUserInfo } from './open-link-user-info' ; import { Channel } from '../channel' ; import { OpenLinkComponent } from '..' ; import { OpenChannel } from './open-channel' ; import { ChatOnRoomRes } from '../packet/chat' ; /**
 * Classes which provides openchannel session operations should implement this.
 */ export interface OpenChannelSession { /**
     * Send CHATONROOM and get room infos.
     * Official client sends this and update some infos before opening chatroom window.
     */ chatON ( ) : AsyncCommandResult < Readonly < ChatOnRoomRes > > ; param chat markRead ( chat ) : AsyncCommandResult ; /**
     * Get latest open channel info
     */ getLatestChannelInfo ( ) : AsyncCommandResult < OpenChannelInfo > ; see ChannelSession . getLatestUserInfo param channelUser getLatestUserInfo ( ... channelUsers ) : AsyncCommandResult < OpenChannelUserInfo [ ] > ; see ChannelSession . getAllLatestUserInfo param channelUser getAllLatestUserInfo ( ) : AsyncCommandResult < OpenChannelUserInfo [ ] > ; see OpenLinkSession . getKickList getKickList ( ) : AsyncCommandResult < OpenLinkKickedUserInfo [ ] > ; see OpenLinkSession . removeKicked param user removeKicked ( user ) : AsyncCommandResult ; see OpenLinkSession . react param flag react ( flag ) : AsyncCommandResult ; see OpenLinkSession . getReaction getReaction ( ) : AsyncCommandResult < [ number , boolean ] > ; param user kickUser ( user ) : AsyncCommandResult ; param user blockUser ( user ) : AsyncCommandResult ; /**
     * Get latest channel openlink
     */ getLatestOpenLink ( ) : AsyncCommandResult < OpenLink > ; param chat createEvent ( chat , type , count ) : AsyncCommandResult ; param user param perm setUserPerm ( user , perm ) : AsyncCommandResult ; param user handoverHost ( user ) : AsyncCommandResult ; param profile returns changeProfile ( profile ) : AsyncCommandResult < Readonly < OpenLinkChannelUserInfo > | null > ; param chat hideChat ( chat ) : AsyncCommandResult ; } /**
 * Classes which can manage open channels should implement this.
 */ export interface OpenChannelManageSession extends ChannelManageSession { param channel leaveKicked ( channel ) : AsyncCommandResult ; param link param profile param passcode joinChannel ( link , profile , passcode ? ) : AsyncCommandResult < OpenChannel > ; }