export interface IUserProfile {
  email: string;
  is_active: boolean;
  is_superuser: boolean;
  full_name?: string;
  id: number;
  available_time: number;
}

export interface IUserProfileUpdate {
  email?: string;
  full_name?: string;
  password?: string;
  is_active?: boolean;
  is_superuser?: boolean;
}

export interface IUserProfileCreate {
  email: string;
  full_name?: string;
  password: string;
  is_active?: boolean;
  is_superuser?: boolean;
}

export interface AppNotification {
  content: string;
  color?: string;
  showProgress?: boolean;
};

export interface MainState {
  token: string;
  isLoggedIn: boolean | null;
  logInError: boolean;
  userProfile: IUserProfile | null;
  dashboardMiniDrawer: boolean;
  dashboardShowDrawer: boolean;
  notifications: AppNotification[];
  videos: Video[];
  images: Image[];
  videosWebSocket: WebSocket;
};

export interface Video {
  id: number;
  title: string;
  stored_filename: string;
  progress_state: string;
}

export interface VideoCreate {
  title: string;
  anchor: string;
  style: string;
  lang: string;
}

export interface VideoUploaded {
  accepted: boolean;
  error_message: string | null;
  video_info: Video | null;
}

export interface ArticleCreate {
  title: string;
  link: string;
  content: string;
}

export interface Image {
  file_name: string;
  stored_file_name: string;
  content: string;
  state: string;
  link: any;
}

export interface ImageDownload {
  file_name: string;
  stored_file_name: string;
}

export interface YTViewsUserData {
  item: string,
  amount: number,
  email: string;
  name: string;
  phone: string;
  company: string | null;
  url: string;
  area: string;
  language: string;
  ages: string | null;
  target: string;
  theme: string;
  taxID: string | null;
}

export interface PaymentData {
  item: string;
  amount: number;
}

export interface VideoContent {
  title: string;
  text: string;
  caption: [];
}