import { DialogState, Memori, Integration, Message, OpenSession, MemoriConfig, Tenant } from '@memori.ai/memori-api-client/src/types'; import { ArtifactData } from '../MemoriArtifactSystem/types/artifact.types'; import type { LayoutName } from '../../types/layout'; import React from 'react'; import Chat, { Props as ChatProps } from '../Chat/Chat'; import StartPanel, { Props as StartPanelProps } from '../StartPanel/StartPanel'; import Avatar, { Props as AvatarProps } from '../Avatar/Avatar'; import Header, { Props as HeaderProps } from '../Header/Header'; declare const getMemoriState: (integrationId?: string | undefined) => object | null; type MemoriTextEnteredEvent = CustomEvent<{ text: string; waitForPrevious?: boolean; hidden?: boolean; typingText?: string; useLoaderTextAsMsg?: boolean; hasBatchQueued?: boolean; }>; declare const typeMessage: (message: string, waitForPrevious?: boolean, hidden?: boolean, typingText?: string | undefined, useLoaderTextAsMsg?: boolean, hasBatchQueued?: boolean) => void; declare const typeMessageHidden: (message: string, waitForPrevious?: boolean, typingText?: string | undefined, useLoaderTextAsMsg?: boolean, hasBatchQueued?: boolean) => void; declare const typeBatchMessages: (messages: { message: string; waitForPrevious?: boolean | undefined; hidden?: boolean | undefined; typingText?: string | undefined; useLoaderTextAsMsg?: boolean | undefined; }[]) => void; type MemoriNewDialogStateEvent = CustomEvent; type ArtifactCreatedEvent = CustomEvent<{ artifact: ArtifactData; message: Message; }>; interface CustomEventMap { MemoriTextEntered: MemoriTextEnteredEvent; MemoriEndSpeak: CustomEvent; MemoriResetUIEffects: CustomEvent; MemoriNewDialogState: MemoriNewDialogStateEvent; artifactCreated: ArtifactCreatedEvent; } declare global { interface Document { addEventListener(type: K, listener: (this: Document, ev: CustomEventMap[K]) => void): void; removeEventListener(type: K, listener: (this: Document, ev: CustomEventMap[K]) => void): void; dispatchEvent(ev: CustomEventMap[K]): void; } interface Window { getMemoriState: typeof getMemoriState; typeMessage: typeof typeMessage; typeMessageHidden: typeof typeMessageHidden; typeBatchMessages: typeof typeBatchMessages; MemoriArtifactAPI?: { openArtifact: (artifact: ArtifactData) => void; createAndOpenArtifact: (content: string, mimeType?: string, title?: string) => void; createFromOutputElement: (outputElement: HTMLOutputElement) => string; closeArtifact: () => void; toggleFullscreen: () => void; getState: () => { currentArtifact: ArtifactData | null; isDrawerOpen: boolean; isFullscreen: boolean; }; }; } } export interface LayoutProps { Header?: typeof Header; headerProps?: HeaderProps; Avatar: typeof Avatar; avatarProps?: AvatarProps; Chat?: typeof Chat; chatProps?: ChatProps; StartPanel: typeof StartPanel; startPanelProps?: StartPanelProps; integrationStyle?: JSX.Element | null; integrationBackground?: JSX.Element | null; poweredBy?: JSX.Element | null; sessionId?: string; hasUserActivatedSpeak?: boolean; showUpload?: boolean; loading?: boolean; autoStart?: boolean; onSidebarToggle?: (isOpen: boolean) => void; avatar3dHidden?: boolean | string; } export interface Props { memori: Memori; ownerUserName?: string | null; ownerUserID?: string | null; tenantID: string; memoriConfigs?: MemoriConfig[]; memoriLang?: string; uiLang?: string; spokenLang?: string; multilingual?: boolean; integration?: Integration; layout?: LayoutName; customLayout?: React.FC; showShare?: boolean; showCopyButton?: boolean; showTranslationOriginal?: boolean; showInputs?: boolean; showDates?: boolean; showContextPerLine?: boolean; showMessageConsumption?: boolean; showSettings?: boolean; showClear?: boolean; showOnlyLastMessages?: boolean; showTypingText?: boolean; showLogin?: boolean; showUpload?: boolean; showChatHistory?: boolean; showReasoning?: boolean; avatar3dHidden?: boolean; preview?: boolean; embed?: boolean; height?: number | string; secret?: string; baseUrl?: string; apiURL?: string; engineURL?: string; initialContextVars?: { [key: string]: string; }; initialQuestion?: string; ogImage?: string; sessionID?: string; tenant?: Tenant; personification?: { name?: string; tag: string; pin: string; }; ttsProvider?: 'azure' | 'openai'; enableAudio?: boolean; defaultSpeakerActive?: boolean; disableTextEnteredEvents?: boolean; onStateChange?: (state?: DialogState) => void; additionalInfo?: OpenSession['additionalInfo'] & { [key: string]: string; }; customMediaRenderer?: ChatProps['customMediaRenderer']; additionalSettings?: JSX.Element | null; userAvatar?: string | JSX.Element; useMathFormatting?: boolean; autoStart?: boolean; applyVarsToRoot?: boolean; showFunctionCache?: boolean; authToken?: string; __WEBCOMPONENT__?: boolean; maxTotalMessagePayload?: number; maxTextareaCharacters?: number; } declare const MemoriWidget: ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenantID, memoriLang, uiLang, spokenLang, multilingual, integration, layout, customLayout, showShare, preview, embed, showCopyButton, showTranslationOriginal, showInputs, showDates, showContextPerLine, showMessageConsumption, showSettings, showTypingText, showClear, showLogin, showUpload, showOnlyLastMessages, showChatHistory, showReasoning, avatar3dHidden, height, secret, baseUrl, apiURL, engineURL, initialContextVars, initialQuestion, ttsProvider, ogImage, sessionID: initialSessionID, tenant, personification, authToken, enableAudio, defaultSpeakerActive, disableTextEnteredEvents, onStateChange, additionalInfo, additionalSettings, customMediaRenderer, userAvatar, __WEBCOMPONENT__, useMathFormatting, autoStart, applyVarsToRoot, showFunctionCache, maxTotalMessagePayload, maxTextareaCharacters, }: Props) => JSX.Element; export default MemoriWidget;