import type { AgentApprovalMode, AgentModel, StreamEvent } from "@/lib/chatStream";
import type { AgentArtifact, Message } from "../GlobalChatbox.types";

export type UseAgentChatSessionOptions = {
  projectId?: string | null;
  onToolCall: (
    event: StreamEvent & { type: "tool_call" },
    options: {
      assistantMessageId: string;
      appendArtifact: (messageId: string, artifact: AgentArtifact) => void;
    },
  ) => void;
  onBeforeSend?: () => void;
  getModel?: () => AgentModel | undefined;
  getApprovalMode?: () => AgentApprovalMode;
};

export type PromptRunOptions = {
  prompt: string;
  sessionIdOverride?: string;
  preparedMessages?: Message[];
  userMessage?: Message;
  assistantMessage?: Message;
};
