import { BaseMessage, Group, MessageReceipt } from '@cometchat/chat-sdk-javascript';
import { Ref } from 'vue';
import { Conversation, Message } from '../offline/types';
export interface ChatInstallOptions {
    environment: Environment;
    language?: Language;
    themeMode: ThemeMode;
    accessToken?: Ref<string | null | undefined> | null | undefined | string;
    loggerCallback?: (entry: LogEntry) => void;
}
export * from './logger';
export interface ChatInstance {
    componentId: string;
    replyToMessage: BaseMessage | null;
    captionedAttachment: {
        fileObject?: File;
        dimensions?: {
            width: number;
            height: number;
        };
    } | null;
    decoyAttachment: {
        fileObject?: File;
        dimensions?: {
            width: number;
            height: number;
        };
    } | null;
    scheduledMessageChat?: Group;
    showScheduledMessagesChat: boolean;
    showAlert: boolean;
    showRescheduleAlert: boolean;
    userInput: string | null;
    rescheduleInfo: {
        rescheduleMuid: string;
        messageId: number;
    } | null;
}
export interface View {
    componentName: string;
    props?: Record<string, any>;
}
export type Language = 'nb' | 'no' | 'ar' | 'de' | 'en' | 'es' | 'fr' | 'hi' | 'ms' | 'pt' | 'ru' | 'zh' | 'zh-tw' | 'sv' | 'lt';
export type Environment = 'prod' | 'sandbox';
export type ChatEnvironmentConfig = {
    region: string;
    appId: string;
    chatApiBaseUrl: string;
};
export interface UserChatInfo {
    chatUid: string;
    name: string;
    unreadMessageCount: number;
    lastMessage?: MessageInfo;
    membersCount: number;
    tags: string[];
    muteSettings?: Date | null;
}
export interface MessageInfo {
    text?: string;
    type: string;
    senderName: string;
    sentAt: Date;
    messageReceipts?: MessageReceipt[];
}
export interface ParticipantInfo {
    uid: string;
    displayName: string;
    avatar: string;
    role: string;
}
export interface DispatchData {
    muid: string;
    originalChatUid: string;
    scheduleDate: string;
    messageId: number;
}
export type ThemeMode = 'dark' | 'light';
export type LogEntry = {
    logUid: string;
    correlationUid?: string;
    message: string;
    severity: LogSeverity;
    userMetadata?: Record<string, any>;
    timestamp: string;
};
export declare enum LogSeverity {
    DEBUG = "Debug",
    INFO = "Info",
    WARN = "Warn",
    ERROR = "Error"
}
export interface SearchedItems {
    conversations: Conversation[];
    messages: Message[];
}
export interface ParticipantSettings {
    chatUid: string;
    personUid: string;
    mutedUntil: Date | null;
}
