/// import type { PrismLib, PrismTheme } from 'prism-react-renderer'; import type { ChatMode as ChatModeAPIType } from '../__generated__/graphql'; import type { WithStylesProps } from '../hocs/withStyles'; import type { BreadcrumbRules } from '../hooks/useBreadcrumbs'; import type { StringReplacementRule } from '../utils/processStringReplacement'; import type { FormConfig, SubmitCallback } from './Form/types'; import type { CustomIcon } from './Icons/BuiltInIconRenderer'; import type { CustomIcons } from './InkeepCustomIconTypes'; import type { InkeepCallbackEvent, UserType } from './InkeepEventTypes'; import type { ColorMode, SyntaxHighlighterTheme, UserTheme } from './InkeepThemeTypes'; import type { CustomCardSettings } from './SearchResults/TabConfiguration'; import type { Workflow } from './Workflows/InkeepWorkflowTypes'; export type { CustomCardSettings, FormConfig, InkeepCallbackEvent, PrismTheme, SubmitCallback, SyntaxHighlighterTheme, Workflow, }; export interface InkeepEmbeddedChatProps extends InkeepEmbeddedChatCoreProps, WithStylesProps { } export interface InkeepCustomTriggerProps extends InkeepCustomTriggerCoreProps, WithStylesProps { } export interface InkeepSearchBarProps extends InkeepSearchBarCoreProps, WithStylesProps { } export interface InkeepChatButtonProps extends InkeepChatButtonCoreProps, WithStylesProps { } export interface InkeepEmbeddedChatCoreProps { shouldAutoFocusInput?: boolean; isHidden?: boolean; baseSettings: InkeepWidgetBaseSettings; aiChatSettings?: InkeepAIChatSettings; } export interface InkeepCustomTriggerSettings { isOpen: boolean; onClose: () => void; onOpen?: () => void; } export type InkeepCustomTriggerCoreProps = InkeepCustomTriggerSettings & { baseSettings: InkeepWidgetBaseSettings; modalSettings?: InkeepModalSettings; searchSettings?: InkeepSearchSettings; aiChatSettings?: InkeepAIChatSettings; }; export interface InkeepSearchBarCoreProps { baseSettings: InkeepWidgetBaseSettings; modalSettings?: InkeepModalSettings; searchSettings?: InkeepSearchSettings; aiChatSettings?: InkeepAIChatSettings; } export interface InkeepChatButtonCoreProps { chatButtonType?: ChatButtonTypes; isPositionFixed?: boolean; fixedPositionXOffset?: string; fixedPositionYOffset?: string; chatButtonBgColor?: string; chatButtonBgColorDarkMode?: string; chatButtonPillText?: string; chatButtonCommandText?: string; baseSettings: InkeepWidgetBaseSettings; modalSettings?: InkeepModalSettings; searchSettings?: InkeepSearchSettings; aiChatSettings?: InkeepAIChatSettings; } export interface InkeepWidgetBaseSettings { apiKey?: string; integrationId: string; organizationId: string; organizationDisplayName?: string; primaryBrandColor: string; colorMode?: ColorMode; theme?: UserTheme; customIcons?: CustomIcons; userId?: string; userEmail?: string; userName?: string; userCohorts?: string[]; userToken?: string; userType?: UserType; filters?: SearchAndChatAttributeFilters; logEventCallback?: (event: InkeepCallbackEvent) => void; optOutAnalyticalCookies?: boolean; optOutAllAnalytics?: boolean; optOutFunctionalCookies?: boolean; remoteErrorLogsLevel?: RemoteErrorLogsLevel; consoleDebugLevel?: ConsoleDebugLevel; chatApiProxyDomain?: string; analyticsApiProxyDomain?: string; breadcrumbRules?: BreadcrumbRules; customCardSettings?: CustomCardSettings[]; stringReplacementRules?: StringReplacementRule[]; env?: 'DEVELOPMENT' | 'PRODUCTION'; highlighterTheme?: SyntaxHighlighterTheme; shadowHost?: HTMLElement | null; rootElement?: HTMLElement | null; tags?: string[]; prism?: PrismLib; appendQueryParamsToUrls?: UrlQueryParam; } export type UrlQueryParam = Record; type QueryValue = boolean | number | string; type QueryCondition = { $eq: QueryValue; } | { $in: (number | string)[]; }; type FilterQuery = Record | { $and: FilterQuery[]; } | { $or: FilterQuery[]; }; export interface SearchAndChatAttributeFilters { attributes?: FilterQuery; product?: string; productVersion?: string; } /** * Debugging levels: * 0 - None: No debugging information is logged. * 1 - Errors: Log errors, events, and exceptions. * 2 - Messages: Log messages in addition to errors, events, and exceptions. * 3 - Verbose: Log verbose information, including an error trace for every console.log. */ export declare enum ConsoleDebugLevel { None = 0, Errors = 1, Messages = 2, Verbose = 3 } /** * Remote error capture levels, which is sent to the Inkeep team for debugging and service monitoring purposes. * 0 - None: No remote error logging is performed. * 1 - AnonymousErrors: Capture errors, events, and exceptions without identifiable user information. * 2 - IdentifiableErrors: Capture errors, events, exceptions and logs that can contain identifiable user information. * 3 - ExtensiveTroubleShooting: Capture errors, events, exceptions and logs that can contain identifiable user information as well as extensive details on UX interactions and other session information. */ export declare enum RemoteErrorLogsLevel { None = 0, AnonymousErrors = 1, IdentifiableErrors = 2, ExtensiveTroubleShooting = 3 } export type InkeepRecordType = 'DISCOURSE' | 'DOCUMENTATION' | 'GITHUB_ISSUE' | 'STACKOVERFLOW'; export interface InkeepAIChatSettings { placeholder?: string; introMessage?: string; chatSubjectName?: string; botName?: string; botAvatarSrcUrl?: string; botAvatarDarkSrcUrl?: string; userAvatarSrcUrl?: string; shouldOpenLinksInNewTab?: boolean; quickQuestionsLabel?: string; quickQuestions?: string[]; shouldHighlightFirstQuickQuestion?: boolean; isChatSharingEnabled?: boolean; shareChatUrlBasePath?: string; chatId?: string; isViewOnly?: boolean; shouldScrollToBottomOnLoad?: boolean; alignMessagesToTop?: boolean; defaultChatMode?: ChatMode; toggleButtonSettings?: AIChatToggleButtonSettings; disclaimerSettings?: AIChatDisclaimerSettings; isControlledMessage?: boolean; handleMessageChange?: (query: string) => void; chatFunctionsRef?: React.Ref; includeAIAnnotations?: IncludeAIAnnotations; aiAnnotationPolicies?: AIAnnotationPolicies; getHelpCallToActions?: GetHelpCallToAction[]; messageAttributes?: JSONScalar; context?: string; guidance?: string; workflowsHeader?: string; workflows?: Workflow[]; actionButtonLabels?: AIChatActionButtonLabels; } interface JSONScalar { [key: string]: JSONScalar[] | Record | boolean | number | string | null; } export interface AIChatToggleButtonSettings { isChatModeToggleEnabled?: boolean; chatModeToggleValue?: ChatMode; chatModeToggleLabel?: string; chatModeToggleTooltip?: string; } export interface AIChatDisclaimerSettings { isDisclaimerEnabled?: boolean; disclaimerLabel?: string; disclaimerTooltip?: string; } export type ChatMode = `${ChatModeAPIType}`; export interface AIChatFunctions { submitCurrentInputMessage: () => void; updateInputMessage: (message: string) => void; submitNewMessage: (message: string) => void; clearChat: () => void; openForm: (formConfig: FormConfig) => void; } export declare const chatMethods: (keyof AIChatFunctions)[]; export interface BaseGetHelpCallToAction { icon: CustomIcon; name: string; } export type GetHelpCallToActionOpenUrl = BaseGetHelpCallToAction & { type?: 'OPEN_LINK'; url: string; }; export interface OpenFormAction { type: 'OPEN_FORM'; formConfig: FormConfig; } export interface InvokeCallbackAction { type: 'INVOKE_CALLBACK'; callback: () => void; shouldCloseModal?: boolean; } export type GetHelpCallToActionInvokeCallback = BaseGetHelpCallToAction & InvokeCallbackAction; export type GetHelpCallToActionOpenForm = BaseGetHelpCallToAction & OpenFormAction; export type GetHelpCallToAction = GetHelpCallToActionInvokeCallback | GetHelpCallToActionOpenForm | GetHelpCallToActionOpenUrl; export interface AIChatActionButtonLabels { clearButtonLabel?: string; shareButtonLabel?: string; getHelpButtonLabel?: string; stopButtonLabel?: string; } export interface IncludeAIAnnotations { shouldEscalateToSupport: boolean; } interface AIAnnotationPolicies { shouldEscalateToSupport?: ShouldEscalateToSupportPolicy[]; } interface ShouldEscalateToSupportPolicy { threshold: 'STANDARD' | 'STRICT'; action: ShowEscalateToSupportButtonAction; } export interface ShowEscalateToSupportButtonAction { type: 'SHOW_SUPPORT_BUTTON'; label?: string; icon?: CustomIcon; action: InvokeCallbackAction | OpenFormAction; } export interface InkeepSearchSettings { placeholder?: string; prefilledQuery?: string; shouldOpenLinksInNewTab?: boolean; searchFunctionsRef?: React.Ref; handleSearchQueryChange?: (query: string) => void; isControlledSearchQuery?: boolean; tabSettings?: InkeepTabSettings; maximumHitsLimit?: number; debounceTime?: number; submitOnEnterOnly?: boolean; } export interface InkeepTabSettings { isAllTabEnabled?: boolean; rootBreadcrumbsToUseAsTabs?: string[]; tabOrderByLabel?: string[]; disabledDefaultTabs?: string[]; alwaysDisplayedTabs?: string[]; } export type SearchViewTypes = 'SINGLE_PANE_NO_SPACE' | 'SINGLE_PANE_SPACED' | 'TWO_PANE'; export interface SearchFunctions { updateSearchQuery: (query: string) => void; } export interface InkeepModalSettings { defaultView?: ModalViewTypes; isModeSwitchingEnabled?: boolean; isShortcutKeyEnabled?: boolean; openShortcutKey?: string; onShortcutKeyPressed?: () => void; isAlignedToTop?: boolean; isAlignedToRight?: boolean; closeOnBlur?: boolean; switchToChatMessage?: string; switchToSearchMessage?: string; shouldAnimateSwitchToChatButton?: boolean; } export interface InkeepChatButtonSettings { chatButtonType?: ChatButtonTypes; chatButtonPillText?: string; chatButtonCommandText?: string; isPositionFixed?: boolean; fixedPositionXOffset?: string; fixedPositionYOffset?: string; chatButtonBgColor?: string; chatButtonBgColorDarkMode?: string; } export type ModalViewTypes = 'AI_CHAT' | 'SEARCH'; export type ModalPageTypes = 'aiChat' | 'searchResults'; export type ChatButtonTypes = 'ICON_TEXT_SHORTCUT' | 'ICON_TEXT' | 'ICON'; export declare const defaultInkeepWidgetBaseSettings: Partial; export declare const defaultInkeepAIChatSettings: Partial; export declare const defaultInkeepSearchSettings: Partial; export declare const defaultModalSettings: Partial; export declare const defaultChatButtonModalProps: Partial; export declare const defaultSearchBarModalProps: Partial;