import type { Snippet } from 'svelte';
export interface ChatEntrySkeletonProps {
    isMobile?: boolean;
    messageCount?: number;
}
export interface ChatHeaderOverflowAction {
    id: string;
    label: string;
    icon?: string;
}
export type CaseToggleType = 'follow' | 'unfollow';
export interface ChatHeaderProps {
    logoUrl?: string;
    caseTitle?: string;
    user?: {
        name: string;
        profileImageUrl?: string;
        initials: string;
    };
    caseTypes?: string;
    assignedTo?: string;
    showAssignedTo?: boolean;
    showFollowCaseButton?: boolean;
    showBackArrow?: boolean;
    overflowActionsList?: ChatHeaderOverflowAction[];
    showOverflowActionButton?: boolean;
    caseStatus?: string;
    isFollowingCase?: boolean;
    showFollowOverflowAction?: boolean;
    showCloseOverflowAction?: boolean;
    onCloseCase?: () => void;
    onOverflowActionClicked?: (val: ChatHeaderOverflowAction) => void;
    onToggleFollowCase?: (val: CaseToggleType) => void;
    onBackArrowClicked?: () => void;
    leadingWidget?: Snippet;
    trailingWidget?: Snippet;
    caseDetailsWidget?: Snippet;
}
export interface ISlashCommand {
    name: string;
    cmdK: string;
    hint: string;
    viewer: string;
}
export interface IMentionableItem {
    id: string | number;
    name: string;
    avatar?: string;
}
export interface RichTextProps {
    value?: string;
    placeholder?: string;
    loading?: boolean;
    slashCommands?: ISlashCommand[];
    mentionableItems?: IMentionableItem[];
    onSend?: () => void;
    onSlash?: (val: ISlashCommand) => void;
    onMention?: (val: IMentionableItem) => void;
    class?: string;
}
export type CommandListType = 'slash' | 'mention';
export interface PreviewPageSrc {
    name: string;
    content: string;
    file: string;
}
export interface PreviewPageProps {
    open: boolean;
    fullImage?: boolean;
    showActions?: boolean;
    title: string;
    src?: PreviewPageSrc;
    onGetImage?: (val: PreviewPageSrc) => void;
}
export interface ICaseCategory {
    id: number;
    name: string;
    description: string;
    assignedTo: number[];
    visibleTo: number[];
    canClose: number[];
    autoAssign: boolean;
    parentId?: number;
    items?: ICaseCategory[];
}
export interface CategorySelectorClicked {
    selected: ICaseCategory;
    list: string[] | null;
}
export interface CategorySelectorProps {
    items?: ICaseCategory[];
    options?: ICaseCategory[];
    onClick?: (val: CategorySelectorClicked) => void;
}
export interface DraggableWindowProps {
    title: string;
    isOpen: boolean;
    isCollapsed: boolean;
    width?: string;
    height?: string;
    x?: number;
    y?: number;
    minWidth?: string;
    minHeight?: string;
    zIndex?: number;
    onBringToFront?: () => void;
}
export interface ChatInputMessage {
    content: string;
    contentType: 'text';
    files: File[];
    mentions: any[];
}
export interface ChatInputProps {
    clearMessage?: boolean;
    hideLoad?: boolean;
    slashCommands?: ISlashCommand[];
    mentionableItems?: IMentionableItem[];
    onMessage?: (val: ChatInputMessage) => void;
    onSlash?: (val: ISlashCommand) => void;
    previewPageTitle?: string;
    class?: string;
}
export interface ChatEntryMessage {
    mine: boolean;
    message: string;
    files?: string[];
    user?: {
        firstName: string;
        id: number | string;
        surname: string;
        otherNames?: string;
        staffNumber?: string;
    };
}
export interface ChatEntryPageProps {
    message: ChatEntryMessage;
    time: string;
    userId: number | string;
    textBorder?: boolean;
}
