import { createContext, useContext } from 'react'

import { AiAssistantOptions, ChatReq, ChatRes } from '../sql-code-editor/extensions/ai-assistant'

type ChatCtxValue = {
  chat: (req: ChatReq) => Promise<ChatRes>
  cancelChat: () => void
  fileId: number
  onEvent: AiAssistantOptions['onEvent']
}

export const ChatContext = createContext<ChatCtxValue | null>(null)

export const useChatContext = () => {
  const context = useContext(ChatContext)

  if (!context) {
    throw new Error('useChatContext must be used within a provider')
  }

  return context
}
