import type { TConversation, TMessage, TPreset, TMutation, TLoginUser, TUser, } from 'librechat-data-provider'; export type TSetOption = (param: number | string) => (newValue: number | string | boolean) => void; export type TSetExample = ( i: number, type: string, newValue: number | string | boolean | null, ) => void; export enum ESide { Top = 'top', Right = 'right', Bottom = 'bottom', Left = 'left', } export type TBaseSettingsProps = { conversation: TConversation | TPreset | null; className?: string; isPreset?: boolean; readonly?: boolean; }; export type TSettingsProps = TBaseSettingsProps & { setOption: TSetOption; }; export type TModels = { models: string[]; }; export type TModelSelectProps = TSettingsProps & TModels; export type TEditPresetProps = { open: boolean; onOpenChange: React.Dispatch>; preset: TPreset; title?: string; }; export type TSetOptionsPayload = { setOption: TSetOption; setExample: TSetExample; addExample: () => void; removeExample: () => void; setAgentOption: TSetOption; getConversation: () => TConversation | TPreset | null; checkPluginSelection: (value: string) => boolean; setTools: (newValue: string) => void; }; export type TPresetItemProps = { preset: TPreset; value: TPreset; onSelect: (preset: TPreset) => void; onChangePreset: (preset: TPreset) => void; onDeletePreset: (preset: TPreset) => void; }; export type TOnClick = (e: React.MouseEvent) => void; export type TGenButtonProps = { onClick: TOnClick; }; export type TAskProps = { text: string; parentMessageId?: string | null; conversationId?: string | null; messageId?: string | null; }; export type TOptions = { editedMessageId?: string | null; editedText?: string | null; isRegenerate?: boolean; isContinued?: boolean; isEdited?: boolean; }; export type TAskFunction = (props: TAskProps, options?: TOptions) => void; export type TMessageProps = { conversation?: TConversation | null; messageId?: string | null; message?: TMessage; messagesTree?: TMessage[]; currentEditId: string | number | null; isSearchView?: boolean; siblingIdx?: number; siblingCount?: number; scrollToBottom?: () => void; setCurrentEditId?: React.Dispatch> | null; setSiblingIdx?: ((value: number) => void | React.Dispatch>) | null; }; export type TInitialProps = { text: string; edit: boolean; error: boolean; unfinished: boolean; isSubmitting: boolean; isLast: boolean; }; export type TAdditionalProps = { ask: TAskFunction; message: TMessage; isCreatedByUser: boolean; siblingIdx: number; enterEdit: (cancel: boolean) => void; setSiblingIdx: (value: number) => void; }; export type TMessageContent = TInitialProps & TAdditionalProps; export type TText = Pick; export type TEditProps = Pick & Omit; export type TDisplayProps = TText & Pick & { showCursor?: boolean; }; export type TConfigProps = { userKey: string; setUserKey: React.Dispatch>; endpoint: string; }; export type TDangerButtonProps = { id: string; confirmClear: boolean; className?: string; disabled?: boolean; showText?: boolean; mutation?: TMutation; onClick: () => void; infoTextCode: string; actionTextCode: string; dataTestIdInitial: string; dataTestIdConfirm: string; confirmActionTextCode?: string; }; export type TDialogProps = { open: boolean; onOpenChange: (open: boolean) => void; }; export type TResError = { response: { data: { message: string } }; message: string; }; export type TAuthContext = { user: TUser | undefined; token: string | undefined; isAuthenticated: boolean; error: string | undefined; login: (data: TLoginUser) => void; logout: () => void; }; export type TUserContext = { user?: TUser | undefined; token: string | undefined; isAuthenticated: boolean; redirect?: string; }; export type TAuthConfig = { loginRedirect: string; }; export type IconProps = Pick & Pick & { size?: number; button?: boolean; message?: boolean; className?: string; endpoint?: string | null; };