export type OpenClawWizardStepType =
  | 'note'
  | 'select'
  | 'text'
  | 'confirm'
  | 'multiselect'
  | 'progress'
  | 'action'

export interface OpenClawWizardOption {
  value: unknown
  label: string
  hint: string | null
}

export interface OpenClawWizardDeviceCode {
  code: string
  expiresInMinutes: number | null
  message: string | null
}

export interface OpenClawWizardStep {
  id: string
  type: OpenClawWizardStepType
  title: string | null
  message: string | null
  options: OpenClawWizardOption[]
  initialValue: unknown
  placeholder: string | null
  sensitive: boolean
  executor: string | null
  externalUrl: string | null
  deviceCode: OpenClawWizardDeviceCode | null
  canAnswer: boolean
  blockedReason: string | null
}

export interface OpenClawWizardResult {
  ok: boolean
  state: string
  message: string
  sessionId: string | null
  done: boolean
  status: string | null
  error: string | null
  step: OpenClawWizardStep | null
  recovery: string | null
  completedAt: string
}

export type OpenClawWizardMode = 'local' | 'remote'

export interface OpenClawWizardAnswer {
  stepId: string
  value?: unknown
  hasAnswer: boolean
}
