import React, { PropsWithChildren } from 'react';

type ZendeskProviderProps = {
    apiKey: string;
    onOpen?: () => void;
    onClose?: () => void;
    onUnreadMessages?: (count: number) => void;
    onResetWidget?: () => void;
};
type ZendeskConversationField = {
    id: string;
    value: string | number | boolean;
};
type ZendeskContextValues = {
    show: () => void;
    hide: () => void;
    open: () => void;
    close: () => void;
    setLocale: (newLocale: string) => void;
    setZIndex: (newZIndex: number) => void;
    setCookies: (isEnabled: boolean) => void;
    setConversationFields: (conversationFields: Array<ZendeskConversationField>) => void;
    setConversationTags: (conversationTags: Array<string>) => void;
    loginUser: (jwtToken: string) => void;
    logoutUser: () => void;
    resetWidget: () => void;
    isOpen: boolean;
    unreadMessages: number | undefined;
};
type ZendeskMethod = "show" | "hide" | "open" | "close" | "unreadMessages" | "locale" | "zIndex" | "cookies" | "conversationFields" | "conversationTags" | "loginUser" | "logoutUser" | "resetWidget";

declare const ZendeskProvider: React.FC<PropsWithChildren<ZendeskProviderProps>>;

declare function useZendesk(): ZendeskContextValues;

export { type ZendeskContextValues, type ZendeskConversationField, type ZendeskMethod, ZendeskProvider, type ZendeskProviderProps, useZendesk };
