• Returns {
        messages: Message[];
        isTyping: boolean;
        sendMessage: (
            text: string,
            providerType: ProviderType,
            apiKey: null | string,
            options?: { baseUrl?: string; modelName?: string },
        ) => Promise<void>;
        sendImageMessage: (
            prompt: string,
            options: ImageGenOptions,
        ) => Promise<void>;
        handlePageContext: (content: string, isSelection?: boolean) => void;
        generatePromptFromAction: (action: string) => string;
        lastPageContext: string;
        addMessage: (
            role: Role,
            content: string,
            actions?: any[],
            imageUrl?: string,
        ) => Message;
        updateLastMessage: (content: string) => void;
        updateLastMessageImage: (imageUrl: string, content?: string) => void;
        setIsTyping: Dispatch<SetStateAction<boolean>>;
    }