/* eslint-disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

export type FullState = FullState1;
export type Name = string;
export type Hide = boolean;
export type Description = string;
export type SystemMessage = string;
export type Role = "assistant" | "user" | "system" | "function";
export type Content = string;
export type Name1 = string;
export type Summary = string;
export type Name2 = string;
export type Arguments = string;
export type ChatContext = ChatMessage[];
export type ManageOwnChatContext = boolean;
export type Depth = number;
export type Deleted = boolean;
export type Active = boolean;
export type Timeline = HistoryNode[];
export type CurrentIndex = number;
export type Active1 = boolean;
export type UserInputQueue = string[];
export type DefaultModel = string;
export type Filepath = string;
export type Line = number;
export type Character = number;
export type Contents = string;
export type Editing = boolean;
export type Pinned = boolean;
export type HighlightedRanges = HighlightedRangeContext[];
export type Name3 = string;
export type Description1 = string;
export type SlashCommands = SlashCommandDescription[];
export type AddingHighlightedCode = boolean;

/**
 * A full state of the program, including the history
 */
export interface FullState1 {
  history: History;
  active: Active1;
  user_input_queue: UserInputQueue;
  default_model: DefaultModel;
  highlighted_ranges: HighlightedRanges;
  slash_commands: SlashCommands;
  adding_highlighted_code: AddingHighlightedCode;
  [k: string]: unknown;
}
/**
 * A history of steps taken and their results
 */
export interface History {
  timeline: Timeline;
  current_index: CurrentIndex;
  [k: string]: unknown;
}
/**
 * A point in history, a list of which make up History
 */
export interface HistoryNode {
  step: Step;
  observation?: Observation;
  depth: Depth;
  deleted?: Deleted;
  active?: Active;
  [k: string]: unknown;
}
export interface Step {
  name?: Name;
  hide?: Hide;
  description?: Description;
  system_message?: SystemMessage;
  chat_context?: ChatContext;
  manage_own_chat_context?: ManageOwnChatContext;
  [k: string]: unknown;
}
export interface ChatMessage {
  role: Role;
  content?: Content;
  name?: Name1;
  summary: Summary;
  function_call?: FunctionCall;
  [k: string]: unknown;
}
export interface FunctionCall {
  name: Name2;
  arguments: Arguments;
  [k: string]: unknown;
}
export interface Observation {
  [k: string]: unknown;
}
/**
 * Context for a highlighted range
 */
export interface HighlightedRangeContext {
  range: RangeInFileWithContents;
  editing: Editing;
  pinned: Pinned;
  [k: string]: unknown;
}
/**
 * A range in a file with the contents of the range.
 */
export interface RangeInFileWithContents {
  filepath: Filepath;
  range: Range;
  contents: Contents;
  [k: string]: unknown;
}
/**
 * A range in a file. 0-indexed.
 */
export interface Range {
  start: Position;
  end: Position;
  [k: string]: unknown;
}
export interface Position {
  line: Line;
  character: Character;
  [k: string]: unknown;
}
export interface SlashCommandDescription {
  name: Name3;
  description: Description1;
  [k: string]: unknown;
}