import { Nullable } from "./nullable";
// Code generated by tygo. DO NOT EDIT.

//////////
// source: activity_dto.go

export interface ActivityDto {
  id: string;
  createdAt: string;
  updatedAt: string;
  lastEditorID: string;
  name: string;
  billingRate: number /* float64 */;
}
export interface ActivityCreateDto {
  name: string;
  billingRate: number /* float64 */;
}
export interface ActivityUpdateDto {
  id: string;
  createdAt?: string;
  updatedAt?: string;
  lastEditorID?: string;
  name?: string;
  billingRate?: number /* float64 */;
}

//////////
// source: auth_dto.go

/**
 * LoginDto represents the login request
 */
export interface LoginDto {
  email: string;
  password: string;
}
/**
 * TokenDto represents the response after successful authentication
 */
export interface TokenDto {
  token: string;
  user: UserDto;
}

//////////
// source: company_dto.go

export interface CompanyDto {
  id: string;
  createdAt: string;
  updatedAt: string;
  lastEditorID: string;
  name: string;
}
export interface CompanyCreateDto {
  name: string;
}
export interface CompanyUpdateDto {
  id: string;
  createdAt?: string;
  updatedAt?: string;
  lastEditorID?: string;
  name?: string;
}

//////////
// source: customer_dto.go

export interface CustomerDto {
  id: string;
  createdAt: string;
  updatedAt: string;
  lastEditorID: string;
  name: string;
  companyId?: string;
  owningUserID?: string;
}
export interface CustomerCreateDto {
  name: string;
  companyId?: string;
}
export interface CustomerUpdateDto {
  id: string;
  createdAt?: string;
  updatedAt?: string;
  lastEditorID?: string;
  name?: string;
  companyId?: Nullable<string>;
  owningUserID?: Nullable<string>;
}

//////////
// source: project_dto.go

export interface ProjectDto {
  id: string;
  createdAt: string;
  updatedAt: string;
  lastEditorID: string;
  name: string;
  customerId: string;
}
export interface ProjectCreateDto {
  name: string;
  customerId: string;
}
export interface ProjectUpdateDto {
  id: string;
  createdAt?: string;
  updatedAt?: string;
  lastEditorID?: string;
  name?: string;
  customerId?: string;
}

//////////
// source: timeentry_dto.go

export interface TimeEntryDto {
  id: string;
  createdAt: string;
  updatedAt: string;
  lastEditorID: string;
  userId: string;
  projectId: string;
  activityId: string;
  start: string;
  end: string;
  description: string;
  billable: number /* int */; // Percentage (0-100)
}
export interface TimeEntryCreateDto {
  userId: string;
  projectId: string;
  activityId: string;
  start: string;
  end: string;
  description: string;
  billable: number /* int */; // Percentage (0-100)
}
export interface TimeEntryUpdateDto {
  id: string;
  createdAt?: string;
  updatedAt?: string;
  lastEditorID?: string;
  userId?: string;
  projectId?: string;
  activityId?: string;
  start?: string;
  end?: string;
  description?: string;
  billable?: number /* int */; // Percentage (0-100)
}

//////////
// source: user_dto.go

export interface UserDto {
  id: string;
  createdAt: string;
  updatedAt: string;
  lastEditorID: string;
  email: string;
  role: string;
  companyId?: string;
  hourlyRate: number /* float64 */;
}
export interface UserCreateDto {
  email: string;
  password: string;
  role: string;
  companyId?: string;
  hourlyRate: number /* float64 */;
}
export interface UserUpdateDto {
  id: string;
  createdAt?: string;
  updatedAt?: string;
  lastEditorID?: string;
  email?: string;
  password?: string;
  role?: string;
  companyId?: Nullable<string>;
  hourlyRate?: number /* float64 */;
}
