import { ChannelUserGrade, Message } from './sdk';
export interface VChatCloudAppProps {
    /**
     * 설치형 솔루션을 사용하시는 경우 사용중이신 서버의 주소를 입력해주세요.
     */
    url?: string;
    /**
     * CMS에서 사용하는 계정의 이메일입니다.
     */
    email?: string;
    /**
     * 접속한 채팅방의 `roomId`(=`channelKey`)입니다.
     */
    roomId: string;
    /**
     *    유저의 고유 키 입니다.
     */
    clientKey: string;
    /**
     *    유저의 닉네입입니다.
     */
    nickName: string;
    /**
     *    유저의 등급입니다.
     */
    grade?: ChannelUserGrade;
    /**
     * 유저의 정보로, 보통 JSON형태를 사용합니다.
     *
     * 필요한 데이터를 추가로 저장할 수 있습니다.
     */
    userInfo?: unknown;
    /**
     * 세션 종류를 지정합니다.
     *
     * - `login` : 로그인 페이지를 사용해서 유저가 설정한 데이터로 접속합니다.
     * - `parameter` : 지정한 파라미터로 바로 접속합니다.
     * - `private` : 지정한 파라미터로 비밀채팅방에 접속합니다.
     */
    sessionType: SessionType;
    /**
     * 지정할 곳의 `Selector`를 입력하거나, `DOMElement`객체를 전달합니다.
     *
     * 새 비밀 채팅방을 입장할 경우 `createPortal`을 통해
     * 비밀채팅방을 표시할 곳을 설정합니다.
     *
     * 지정하지 않은 상태에서 비밀채팅방을 생성하거나 입장하는 경우
     * 오류가 발생할 수 있습니다.
     */
    privateContainer?: string | HTMLElement;
    /**
     * 기본적으로 제공되는 logo가 아닌 다른 logo를 사용하고 싶다면 `URL`을 입력하세요.
     */
    logo?: string;
    /**
     * logo 하단 설명을 바꾸시려면 작성하세요.
     */
    description?: string;
    /**
     * footer 내용을 변경하려면 작성하세요.
     */
    footerDescription?: string;
}
export interface VChatCloudFile {
    id: string;
    name: string;
    type: string;
    size: number;
    expire: string;
}
export interface VChatCloudAPIFile {
    fileNm: string;
    fileSize: number;
    expire: string;
    fileKey: string;
    fileSizeText: string;
    fileExt: string;
    originFileNm: string;
}
export interface ToastProps {
    message: string;
    type: "error" | "warning" | "info";
    showTime?: number;
    id?: string;
}
export type MessageType = "join" | "message" | "notice" | "leave" | "custom" | "mute" | "unmute" | "whisper" | "kick" | "unkick" | "duplicate" | "personalKick" | "PersonalMute" | "PersonalUnMute" | "personalInvite";
export type ExtendedMessage = Message & {
    type: MessageType;
};
export type FileType = "image" | "video" | "file";
export type SessionType = "login" | "parameter" | "private";
export type ThemeType = "Light" | "Dark";
