// Code generated by tygo. DO NOT EDIT.

//////////
// source: WeeklyReport.go

/**
 * This is what should be submitted to the server, the username will be derived from the JWT token
 */
export interface NewWeeklyReport {
  /**
   * The name of the project, as it appears in the database
   */
  projectName: string;
  /**
   * The week number
   */
  week: number /* int */;
  /**
   * Total time spent on development
   */
  developmentTime: number /* int */;
  /**
   * Total time spent in meetings
   */
  meetingTime: number /* int */;
  /**
   * Total time spent on administrative tasks
   */
  adminTime: number /* int */;
  /**
   * Total time spent on personal projects
   */
  ownWorkTime: number /* int */;
  /**
   * Total time spent on studying
   */
  studyTime: number /* int */;
  /**
   * Total time spent on testing
   */
  testingTime: number /* int */;
}
export interface WeeklyReportList {
  /**
   * The name of the project, as it appears in the database
   */
  projectName: string;
  /**
   * The week number
   */
  week: number /* int */;
  /**
   * Total time spent on development
   */
  developmentTime: number /* int */;
  /**
   * Total time spent in meetings
   */
  meetingTime: number /* int */;
  /**
   * Total time spent on administrative tasks
   */
  adminTime: number /* int */;
  /**
   * Total time spent on personal projects
   */
  ownWorkTime: number /* int */;
  /**
   * Total time spent on studying
   */
  studyTime: number /* int */;
  /**
   * Total time spent on testing
   */
  testingTime: number /* int */;
  /**
   * The project manager who signed it
   */
  signedBy?: number /* int */;
}
export interface WeeklyReport {
  /**
   * The ID of the report
   */
  reportId: number /* int */;
  /**
   * The user id of the user who submitted the report
   */
  userId: number /* int */;
  /**
   * The name of the project, as it appears in the database
   */
  projectId: number /* int */;
  /**
   * The week number
   */
  week: number /* int */;
  /**
   * Total time spent on development
   */
  developmentTime: number /* int */;
  /**
   * Total time spent in meetings
   */
  meetingTime: number /* int */;
  /**
   * Total time spent on administrative tasks
   */
  adminTime: number /* int */;
  /**
   * Total time spent on personal projects
   */
  ownWorkTime: number /* int */;
  /**
   * Total time spent on studying
   */
  studyTime: number /* int */;
  /**
   * Total time spent on testing
   */
  testingTime: number /* int */;
  /**
   * The project manager who signed it
   */
  signedBy?: number /* int */;
}

//////////
// source: project.go

/**
 * Project is a struct that holds the information about a project
 */
export interface Project {
  id: number /* int */;
  name: string;
  description: string;
  owner: string;
}
/**
 * As it arrives from the client, Owner is derived from the JWT token
 */
export interface NewProject {
  name: string;
  description: string;
}
/**
 * Used to change the role of a user in a project.
 * If name is identical to the name contained in the token, the role can be changed.
 * If the name is different, only a project manager can change the role.
 */
export interface RoleChange {
  username: string;
  role: 'project_manager' | 'user';
  projectname: string;
}
export interface NameChange {
  id: number /* int */;
  name: string;
}

//////////
// source: users.go

/**
 * User struct represents a user in the system
 */
export interface User {
  userId: string;
  username: string;
  password: string;
}
/**
 * Should be used when registering, for example
 */
export interface NewUser {
  username: string;
  password: string;
}
/**
 * PublicUser represents a user that is safe to send over the API (no password)
 */
export interface PublicUser {
  userId: string;
  username: string;
}

export interface UserProjectMember {
	Username: string;
	UserRole: string;
}
/**
 * wrapper type for token
 */
export interface Token {
  token: string;
}
export interface StrNameChange {
  prevName: string;
  newName: string;
}
