import type { Message } from '../../../gen/client'

export type MessageStreamDelta = {
  streamId: string
  conversationId: string
  userId: string
  createdAt: string
  clientMessageId?: string
  sequence: number
  delta: string
}

export type MessageStreamSnapshot = Omit<MessageStreamDelta, 'delta'> & {
  content: string
}

export type MessageStreamComplete = {
  streamId: string
  message: Message
}

export type MessageStreamAbort = {
  streamId: string
  conversationId: string
}

export type MessageStreamDeltaSignal = {
  type: 'message_stream_delta'
  data: MessageStreamDelta
}

export type MessageStreamCompleteSignal = {
  type: 'message_stream_complete'
  data: MessageStreamComplete
}

export type MessageStreamAbortSignal = {
  type: 'message_stream_abort'
  data: MessageStreamAbort
}
