import React$1 from 'react';

type ChattrAssistantMessage$1 = {
    key?: string;
    content?: string;
    chattrBotName?: string;
};
declare function ChattrAssistantMessage$1({ key, content, chattrBotName, }: ChattrAssistantMessage$1): React$1.JSX.Element;

declare function ChattrCloseIcon$1(): React$1.JSX.Element;

declare function ChattrContainer$1({ children, }: {
    children: React$1.ReactNode;
}): React$1.JSX.Element;

type ChattrMessageProps = {
    role: 'user' | 'assistant';
    key?: string;
    content?: string;
    ui?: string;
    data?: {
        temperature: string;
        celcius: string;
        location: string;
        description: string;
        humidity: string;
        wind: string;
        clouds: string;
        state: string;
        url: string;
    };
};
type ChattrFormProps = {
    setMessage: React.Dispatch<React.SetStateAction<string>>;
    sendMessage: (event: React.MouseEvent | React.KeyboardEvent | React.FormEvent) => void;
    message: string;
    loading: boolean;
};

declare function ChattrFeed$1({ messages, userName, chattrBotName, loading, }: {
    messages: ChattrMessageProps[];
    userName?: string;
    chattrBotName?: string;
    loading?: boolean;
}): React$1.JSX.Element;
declare const _default$4: React$1.MemoExoticComponent<typeof ChattrFeed$1>;

declare function ChattrForm$1({ setMessage, sendMessage, message, loading, }: ChattrFormProps): React$1.JSX.Element;

declare function ChattrHeader$1({ toggle, chattrBotName, }: {
    toggle: () => void;
    chattrBotName?: string;
}): React$1.JSX.Element;
declare const _default$3: React$1.MemoExoticComponent<typeof ChattrHeader$1>;

declare function ChattrMessages$1({ message: { content, role, key }, userName, chattrBotName, }: {
    message: ChattrMessageProps;
    userName?: string;
    chattrBotName?: string;
}): React$1.JSX.Element;
declare const _default$2: React$1.MemoExoticComponent<typeof ChattrMessages$1>;

type ChattrUserMessage$1 = {
    key?: string;
    content?: string;
    userName?: string;
};
declare function ChattrUserMessage$1({ key, content, userName, }: ChattrUserMessage$1): React$1.JSX.Element;

/**
 * Chattrbot - A pre made chatbot solution with light/dark mode tailwind css classes. Uses basic chat functionality with chatgpt models.
 * @returns The entire Default Chattrbot component.
 */
declare function Chattrbot$1(): React$1.JSX.Element;

declare namespace index_d$1 {
  export { ChattrAssistantMessage$1 as ChattrAssistantMessage, ChattrCloseIcon$1 as ChattrCloseIcon, ChattrContainer$1 as ChattrContainer, _default$4 as ChattrFeed, ChattrForm$1 as ChattrForm, _default$3 as ChattrHeader, _default$2 as ChattrMessages, ChattrUserMessage$1 as ChattrUserMessage, Chattrbot$1 as Chattrbot };
}

declare function ChattrAssistantImage({ key, data, }: {
    key?: string;
    data?: {
        description: string;
        url: string;
    };
}): React$1.JSX.Element;

declare function ChattrAssistantMessage({ key, content, }: {
    key?: string;
    content?: string;
}): React$1.JSX.Element;

declare function ChattrAssistantVideo({ key, data, }: {
    key?: string;
    data?: {
        description: string;
        url: string;
    };
}): React$1.JSX.Element;

declare function ChattrAssistantWeather({ key, data, }: {
    key?: string;
    data?: {
        temperature: string;
        celcius: string;
        location: string;
        description: string;
        humidity: string;
        wind: string;
        clouds: string;
        state: string;
        url: string;
    };
}): React$1.JSX.Element;

declare function ChattrCloseIcon(): React$1.JSX.Element;

declare function ChattrContainer({ children, }: {
    children: React$1.ReactNode;
}): React$1.JSX.Element;

declare function ChattrFeed({ messages, loading, }: {
    messages: ChattrMessageProps[];
    loading: boolean;
}): React$1.JSX.Element;
declare const _default$1: React$1.MemoExoticComponent<typeof ChattrFeed>;

declare function ChattrForm({ setMessage, sendMessage, message, loading, }: ChattrFormProps): React$1.JSX.Element;

declare function ChattrHeader({ chattrBotName, role, toggle, }: {
    chattrBotName: string;
    role: string;
    toggle: () => void;
}): React$1.JSX.Element;

declare function ChattrLoader(): React$1.JSX.Element;

declare function ChattrMessages({ message: { content, role, key, ui, data }, }: {
    message: ChattrMessageProps;
}): React$1.JSX.Element;
declare const _default: React$1.MemoExoticComponent<typeof ChattrMessages>;

declare function ChattrUserMessage({ key, content, }: {
    key?: string;
    content?: string;
}): React$1.JSX.Element;

/**
 * Chattrbot - A pre made chatbot solution with light/dark mode tailwind css classes. Uses function calling features.
 * @returns The entire Minimalist Chattrbot component.
 */
declare function Chattrbot(): React$1.JSX.Element;

declare const index_d_ChattrAssistantImage: typeof ChattrAssistantImage;
declare const index_d_ChattrAssistantMessage: typeof ChattrAssistantMessage;
declare const index_d_ChattrAssistantVideo: typeof ChattrAssistantVideo;
declare const index_d_ChattrAssistantWeather: typeof ChattrAssistantWeather;
declare const index_d_ChattrCloseIcon: typeof ChattrCloseIcon;
declare const index_d_ChattrContainer: typeof ChattrContainer;
declare const index_d_ChattrForm: typeof ChattrForm;
declare const index_d_ChattrHeader: typeof ChattrHeader;
declare const index_d_ChattrLoader: typeof ChattrLoader;
declare const index_d_ChattrUserMessage: typeof ChattrUserMessage;
declare const index_d_Chattrbot: typeof Chattrbot;
declare namespace index_d {
  export { index_d_ChattrAssistantImage as ChattrAssistantImage, index_d_ChattrAssistantMessage as ChattrAssistantMessage, index_d_ChattrAssistantVideo as ChattrAssistantVideo, index_d_ChattrAssistantWeather as ChattrAssistantWeather, index_d_ChattrCloseIcon as ChattrCloseIcon, index_d_ChattrContainer as ChattrContainer, _default$1 as ChattrFeed, index_d_ChattrForm as ChattrForm, index_d_ChattrHeader as ChattrHeader, index_d_ChattrLoader as ChattrLoader, _default as ChattrMessages, index_d_ChattrUserMessage as ChattrUserMessage, index_d_Chattrbot as Chattrbot };
}

declare function ChattrOpenButton({ toggle }: {
    toggle: () => void;
}): React$1.JSX.Element;

declare function ChattrOpenIcon(): React$1.JSX.Element;

declare function create_image(description: string): Promise<{
    description: string;
    url: string;
}>;

declare function create_video(description: string): Promise<{
    description: string;
    url: object;
}>;

declare function get_current_weather(zipcode: string, state: string): Promise<{
    temperature: string;
    celcius: string;
    location: string;
    url: string;
    description: string;
    humidity: string;
    wind: string;
    clouds: string;
    state: string;
}>;

/**
 * Manages the open and closed states of the chattr UI.
 *
 * @returns An object containing the current state and a function to toggle it.
 *
 * @default isOpen false
 */
declare function useChattr(): {
    isOpen: boolean;
    toggle: () => void;
};

/**
 * Manages automatic scrolling of new content to the bottom of the ChattrFeed.
 *
 * @param messages An array of ChattrMessage objects.
 *
 * @returns The reference object used to manipulate the referenced DOM element (the `div`).
 *
 */
declare function useScroll(messages: ChattrMessageProps[]): React$1.RefObject<HTMLDivElement>;

export { type ChattrFormProps, type ChattrMessageProps, ChattrOpenButton, ChattrOpenIcon, index_d$1 as Default, index_d as Minimalist, create_image, create_video, get_current_weather, useChattr, useScroll };
