export interface HelpCenterProps {
    helpScreenId: string;
    primaryColor?: string;
    language?: 'ar' | 'en';
    user?: UserData;
    showArrow?: boolean;
    messageLabel?: string | null;
}
export interface Theme {
    primary: string;
    secondary: string;
    text: string;
    background: string;
    error: string;
    success: string;
}
export interface UserData {
    id: string;
    name: string;
    email: string;
    avatar?: string;
}
export interface Message {
    id: number;
    senderType: number;
    messageContent: string;
    sentAt: Date;
    isSeen: boolean;
    attachmentIds?: string[];
    attachmentUrls?: string[];
}
export interface ChatSession {
    id: string;
    messages: Message[];
    participants: UserData[];
    status: 'active' | 'closed';
    createdAt: Date;
    updatedAt: Date;
}
export interface ChatSessionData {
    helpScreenId: string;
    user: UserData;
    initialMessage?: string;
}
export interface HelpCenterConfig {
    baseUrl: string;
    getToken: () => Promise<{
        token: string;
        expiresIn: number;
    }>;
    helpScreenId: string;
    user?: UserData;
    theme?: Partial<Theme>;
    onMessageReceived?: (message: Message) => void;
    onSessionClosed?: () => void;
    onError?: (error: Error) => void;
}
export interface HelpScreenOption {
    id: string;
    title: string;
    paragraphs?: string[];
    nestedOptions?: HelpScreenOption[];
    chatWithUs?: boolean;
}
export interface HelpScreen {
    id: string;
    title: string;
    options: HelpScreenOption[];
}
export interface ApiResponse<T> {
    data: T;
    success: boolean;
    error?: string;
}
export interface TokenResponse {
    token: string;
    expiresIn: number;
}
export interface HelpScreenData {
    id: string;
    tenantId: string;
    tenant: {
        id: string;
        name: string;
        key: string;
        logoUrl: string;
        settings: {
            description: string;
        };
    };
    title: string;
    description: string;
    options: Option[];
    chatWithUs: boolean;
}
export interface Option {
    id: string;
    helpScreenId: string;
    parentOptionId: string | null;
    parentOption: Option | null;
    files: unknown[];
    nestedOptions: Option[];
    title: string;
    paragraphs: string[];
    chatWithUs: boolean;
    assistantId?: string;
    assistant?: {
        id: string;
        tenantId: string;
        tenant: {
            id: string;
            name: string;
            key: string;
        };
        name: string;
        openAIAssistantId: string;
        greeting: string;
        closing: string;
    };
    hasNestedOptions: boolean;
    order: number;
}
export interface ReviewProps {
    comment?: string;
    rating: number;
}
export interface PresignUploadRequestDto {
    name: string;
    contentType: string;
    sizeBytes: number;
    pathData: {
        type: number;
        chatSessionId: string;
    };
}
export interface PresignUploadResponse {
    id: string;
    uploadUrl: string;
    path: string;
    expiresAt: string;
}
export interface PresignDownloadResponse {
    id: string;
    name: string;
    downloadUrl: string;
    contentType: string;
    expiresAt: string;
}
