UNPKG

@livechat/widget-core

Version:

LiveChat Chat Widget adapters implementation core

155 lines (146 loc) 6.5 kB
declare type ExtendedWindow = Window & { __lc: { license: number; group?: number; params?: Array<{ name: string; value: string; }>; chat_between_groups?: boolean; integration_name?: string; custom_identity_provider?: CustomIdentityProvider; }; LiveChatWidget: { on: typeof on; off: typeof on; once: typeof on; get: typeof get; call: typeof call; init: VoidFunction; }; LC_API?: { on_after_load?: VoidFunction; }; }; declare function on(name: 'ready', handler: EventHandlers['onReady']): void; declare function on(name: 'new_event', handler: EventHandlers['onNewEvent']): void; declare function on(name: 'form_submitted', handler: EventHandlers['onFormSubmitted']): void; declare function on(name: 'greeting_hidden', handler: EventHandlers['onGreetingHidden']): void; declare function on(name: 'rating_submitted', handler: EventHandlers['onRatingSubmitted']): void; declare function on(name: 'visibility_changed', handler: EventHandlers['onVisibilityChanged']): void; declare function on(name: 'greeting_displayed', handler: EventHandlers['onGreetingDisplayed']): void; declare function on(name: 'availability_changed', handler: EventHandlers['onAvailabilityChanged']): void; declare function on(name: 'customer_status_changed', handler: EventHandlers['onCustomerStatusChanged']): void; declare function on(name: 'rich_message_button_clicked', handler: EventHandlers['onRichMessageButtonClicked']): void; declare function get(name: 'state'): WidgetState; declare function get(name: 'chat_data'): ChatData; declare function get(name: 'customer_data'): CustomerData; declare function call(name: 'hide'): void; declare function call(name: 'maximize'): void; declare function call(name: 'minimize'): void; declare function call(name: 'destroy'): void; declare function call(name: 'hide_greeting'): void; declare function call(name: 'set_customer_name', payload: CustomerData['name']): void; declare function call(name: 'set_customer_email', payload: CustomerData['email']): void; declare function call(name: 'set_session_variables', payload: CustomerData['sessionVariables']): void; declare function call(name: 'update_session_variables', payload: CustomerData['sessionVariables']): void; declare type MutableCustomerData = { name: string; email: string; }; declare type CustomerData = MutableCustomerData & { id: string; isReturning: boolean; status: 'queued' | 'chatting' | 'browsing' | 'invited'; sessionVariables: Record<string, string>; }; declare type ConfigurationOptions = { license: string; group?: string; chatBetweenGroups?: boolean; sessionVariables?: CustomerData['sessionVariables']; customIdentityProvider?: CustomIdentityProvider; }; declare type ChatData = { chatId: string; threadId: string; }; declare type Greeting = { id: number; uniqueId: string; }; declare type ChatEvent = { timestamp: number; type: 'message' | 'rich_message' | 'file'; author: { id: string; type: 'customer' | 'agent'; }; greeting?: Greeting; }; declare type RichMessageButton = { eventId: string; postbackId: string; greeting?: Greeting; }; declare type WidgetState = { availability: 'online' | 'offline'; visibility: 'maximized' | 'minimized' | 'hidden'; }; declare type EventHandlers = { onReady?: (data: { state: WidgetState; customerData: CustomerData; }) => void; onAvailabilityChanged?: (data: Pick<WidgetState, 'availability'>) => void; onVisibilityChanged?: (data: Pick<WidgetState, 'visibility'>) => void; onCustomerStatusChanged?: (data: Pick<CustomerData, 'status'>) => void; onNewEvent?: (event: ChatEvent) => void; onFormSubmitted?: (data: { type: 'prechat' | 'postchat' | 'ticket'; }) => void; onRatingSubmitted?: (rating: 'good' | 'bad' | 'none') => void; onGreetingDisplayed?: (greeting: Greeting) => void; onGreetingHidden?: (greeting: Greeting) => void; onRichMessageButtonClicked?: (button: RichMessageButton) => void; }; declare type EventHandlerPayload<T extends keyof EventHandlers, E = Required<EventHandlers>[T]> = E extends (...args: any) => void ? Parameters<E>['0'] : never; declare type Token = { accessToken: string; entityId: string; expiresIn: number; tokenType: 'Bearer'; creationDate: number; licenseId: number; }; declare type CustomIdentityProvider = () => { getToken: () => Promise<Token>; getFreshToken: () => Promise<Token>; hasToken: () => Promise<boolean>; invalidate: () => Promise<void>; }; declare function getData(entity: 'state'): WidgetState; declare function getData(entity: 'chat'): ChatData; declare function getData(entity: 'customer'): CustomerData; declare type WidgetConfig = ConfigurationOptions & EventHandlers & { visibility?: WidgetState['visibility']; customerName?: CustomerData['name']; customerEmail?: CustomerData['email']; }; declare type WidgetInstance = { init: VoidFunction; destroy: VoidFunction; hideGreeting: VoidFunction; updateVisibility: (visibility?: WidgetState['visibility']) => void; updateEventHandlers: (eventHandlers: EventHandlers) => void; updateSessionVariables: (sessionVariables: WidgetConfig['sessionVariables']) => void; updateCustomerData: (customerData: Partial<MutableCustomerData>) => void; }; declare function createWidget(config: WidgetConfig): WidgetInstance; declare function assignConfiguration({ license, group, chatBetweenGroups, sessionVariables, customIdentityProvider, }: ConfigurationOptions): void; declare function assignCustomerData(customerData: Partial<MutableCustomerData>): void; declare function assignEventHandlers(method: 'on' | 'off' | 'once', eventHandlers: EventHandlers): void; declare function assignVisibility(visibility?: WidgetState['visibility']): void; declare function lcOnInit(callback: VoidFunction): VoidFunction; declare function lcOnDestroy(callback: VoidFunction): VoidFunction; export { ChatData, ChatEvent, ConfigurationOptions, CustomIdentityProvider, CustomerData, EventHandlerPayload, EventHandlers, ExtendedWindow, Greeting, MutableCustomerData, RichMessageButton, Token, WidgetConfig, WidgetInstance, WidgetState, assignConfiguration, assignCustomerData, assignEventHandlers, assignVisibility, createWidget, getData, lcOnDestroy, lcOnInit };