import * as vue from 'vue';
import { Ref } from 'vue';
import { WidgetState, CustomerData, ChatData, Greeting, WidgetInstance } from '@livechat/widget-core';
export { ChatData, ChatEvent, CustomerData, EventHandlerPayload, RichMessageButton, WidgetConfig, WidgetState } from '@livechat/widget-core';

declare function useWidgetIsReady(): Ref<boolean>;

declare function useWidgetState(): Ref<WidgetState | null>;

declare function useWidgetCustomerData(): Ref<CustomerData | null>;

declare function useWidgetChatData(): Ref<ChatData | null>;

declare function useWidgetGreeting(): Ref<Greeting | null>;

declare const TextWidget: vue.DefineComponent<{
    license: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    organizationId: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    group: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    visibility: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    customerName: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    customerEmail: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    sessionVariables: {
        type: ObjectConstructor;
        required: false;
        default: undefined;
    };
    chatBetweenGroups: {
        type: BooleanConstructor;
        required: false;
        default: undefined;
    };
    customIdentityProvider: {
        type: FunctionConstructor;
        required: false;
        default: undefined;
    };
}, unknown, {
    widget: WidgetInstance | null;
}, {}, {
    setupWidget(): void;
    reinitialize(): void;
}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("ready" | "new-event" | "form-submitted" | "rating-submitted" | "greeting-hidden" | "greeting-displayed" | "visibility-changed" | "customer-status-changed" | "rich-message-button-clicked" | "availability-changed")[], "ready" | "new-event" | "form-submitted" | "rating-submitted" | "greeting-hidden" | "greeting-displayed" | "visibility-changed" | "customer-status-changed" | "rich-message-button-clicked" | "availability-changed", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<{
    license?: unknown;
    organizationId?: unknown;
    group?: unknown;
    visibility?: unknown;
    customerName?: unknown;
    customerEmail?: unknown;
    sessionVariables?: unknown;
    chatBetweenGroups?: unknown;
    customIdentityProvider?: unknown;
} & {} & {
    visibility?: string | undefined;
    sessionVariables?: Record<string, any> | undefined;
    license?: string | undefined;
    organizationId?: string | undefined;
    group?: string | undefined;
    chatBetweenGroups?: boolean | undefined;
    customerName?: string | undefined;
    customerEmail?: string | undefined;
    customIdentityProvider?: Function | undefined;
}> & {
    onReady?: ((...args: any[]) => any) | undefined;
    "onNew-event"?: ((...args: any[]) => any) | undefined;
    "onForm-submitted"?: ((...args: any[]) => any) | undefined;
    "onRating-submitted"?: ((...args: any[]) => any) | undefined;
    "onGreeting-hidden"?: ((...args: any[]) => any) | undefined;
    "onGreeting-displayed"?: ((...args: any[]) => any) | undefined;
    "onVisibility-changed"?: ((...args: any[]) => any) | undefined;
    "onCustomer-status-changed"?: ((...args: any[]) => any) | undefined;
    "onRich-message-button-clicked"?: ((...args: any[]) => any) | undefined;
    "onAvailability-changed"?: ((...args: any[]) => any) | undefined;
}, {
    visibility: string;
    sessionVariables: Record<string, any>;
    license: string;
    organizationId: string;
    group: string;
    chatBetweenGroups: boolean;
    customerName: string;
    customerEmail: string;
    customIdentityProvider: Function;
}>;
declare const LiveChatWidget: vue.DefineComponent<{
    license: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    organizationId: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    group: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    visibility: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    customerName: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    customerEmail: {
        type: StringConstructor;
        required: false;
        default: undefined;
    };
    sessionVariables: {
        type: ObjectConstructor;
        required: false;
        default: undefined;
    };
    chatBetweenGroups: {
        type: BooleanConstructor;
        required: false;
        default: undefined;
    };
    customIdentityProvider: {
        type: FunctionConstructor;
        required: false;
        default: undefined;
    };
}, unknown, {
    widget: WidgetInstance | null;
}, {}, {
    setupWidget(): void;
    reinitialize(): void;
}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("ready" | "new-event" | "form-submitted" | "rating-submitted" | "greeting-hidden" | "greeting-displayed" | "visibility-changed" | "customer-status-changed" | "rich-message-button-clicked" | "availability-changed")[], "ready" | "new-event" | "form-submitted" | "rating-submitted" | "greeting-hidden" | "greeting-displayed" | "visibility-changed" | "customer-status-changed" | "rich-message-button-clicked" | "availability-changed", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<{
    license?: unknown;
    organizationId?: unknown;
    group?: unknown;
    visibility?: unknown;
    customerName?: unknown;
    customerEmail?: unknown;
    sessionVariables?: unknown;
    chatBetweenGroups?: unknown;
    customIdentityProvider?: unknown;
} & {} & {
    visibility?: string | undefined;
    sessionVariables?: Record<string, any> | undefined;
    license?: string | undefined;
    organizationId?: string | undefined;
    group?: string | undefined;
    chatBetweenGroups?: boolean | undefined;
    customerName?: string | undefined;
    customerEmail?: string | undefined;
    customIdentityProvider?: Function | undefined;
}> & {
    onReady?: ((...args: any[]) => any) | undefined;
    "onNew-event"?: ((...args: any[]) => any) | undefined;
    "onForm-submitted"?: ((...args: any[]) => any) | undefined;
    "onRating-submitted"?: ((...args: any[]) => any) | undefined;
    "onGreeting-hidden"?: ((...args: any[]) => any) | undefined;
    "onGreeting-displayed"?: ((...args: any[]) => any) | undefined;
    "onVisibility-changed"?: ((...args: any[]) => any) | undefined;
    "onCustomer-status-changed"?: ((...args: any[]) => any) | undefined;
    "onRich-message-button-clicked"?: ((...args: any[]) => any) | undefined;
    "onAvailability-changed"?: ((...args: any[]) => any) | undefined;
}, {
    visibility: string;
    sessionVariables: Record<string, any>;
    license: string;
    organizationId: string;
    group: string;
    chatBetweenGroups: boolean;
    customerName: string;
    customerEmail: string;
    customIdentityProvider: Function;
}>;

export { LiveChatWidget, TextWidget, useWidgetChatData, useWidgetCustomerData, useWidgetGreeting, useWidgetIsReady, useWidgetState };
