export interface AuthInfoType {
	editable: boolean
	viewchange: boolean
	show: boolean
}
export interface SkillsType {
	id: string
	auth: AuthInfoType
	title: string
	max: number
	value: number
}
export interface CertificationType {
	id: string
	auth: AuthInfoType
	title: string
	author: string
	date: string
	link: string
	href: string
	certid: string
}
export interface SitesType {
	id: string
	auth: AuthInfoType
	title: string
	sub: string
	link: string
	type: string
	alt: string
	img: string
}
export interface LangsType {
	id: string
	title: string
	mode: string
}
export interface WorkExperienceType {
	[key: string]: any
	auth: AuthInfoType
	date: string
  where: string
  wheredef: string
  location: string
  position: string
  description: string
  tools: string[]
  tasks: string[]  
}
export interface TalksType {
	[key: string]: any
	auth: AuthInfoType
	date: string
  title: string
  org: string
  location: string
  description: string[]
}
export interface TeachingType {
	[key: string]: any
	auth: AuthInfoType
	date: string
  title: string
  org: string
  location: string
  description: string[]
}
export interface EducationType {
	[key: string]: any
	auth: AuthInfoType
	date: string
  title: string
  org: string
  location: string
	cert: string
  description: string[]
  tools: string[]
}
export interface ProjectType {
	[key: string]: any
	auth: AuthInfoType
	date: string
  name: string
  title: string
  img: string
  site: string
  code: string
  purpose: string
  for: string
  position: string
  license: string
  demo: string
  capture: string
  description: string
  features: string[]
  builtwith: string[]  
}
export interface ProfileType {
	[key: string]: unknown;
	auth: AuthInfoType
	desc: string
}
export interface OtherType {
	[key: string]: unknown;
	auth: AuthInfoType
	desc: string
}
export interface MissionHowType {
	[key: string]: unknown;
	auth: AuthInfoType
	desc: string
}
export interface DataCoreType {
	[key: string]: any
	name: string
  fullname: string
  title1: string
  title2: string
  imgalt: string
  imgsrc: string
  email: string
  phone: string
  address: string
  postalcode: string
  state: string
  city: string
  country: string
  birthdate: string
  status: string
  mission: string
  mission_how: MissionHowType[]
	profile: ProfileType[]
  certifications: CertificationType[]
  skills: SkillsType[]
  infra: SkillsType[]
  sites: SitesType[]
  langs: LangsType[]
}

export interface DataLangType {
	[key: string]: any
  imgalt: string
  title1: string
  title2: string
  country: string
  birthdate: string
  status: string
  mission: string
  mission_how: MissionHowType[]
	profile: ProfileType[]
  certifications: CertificationType[]
  work_experiences: WorkExperienceType[]
	projects: ProjectType[]
  education: EducationType[]
  talks: TalksType[]
  teaching: TeachingType[]
  others: OtherType[]
}
export interface DataLangsType {
	[key: string]: DataLangType
}
export interface ShowTalksType {
	[key: string]: unknown;
	auth: AuthInfoType
	date: boolean
	title: boolean
	org:  boolean
	location: boolean
	description: boolean
}
export interface ShowTeachingType {
	[key: string]: unknown;
	auth: AuthInfoType
	date: boolean
	title: boolean
	org:  boolean
	location: boolean
	description: boolean
}
export interface ShowWorkExperienceType {
	[key: string]: unknown;
	auth: AuthInfoType
	date: boolean
	where: boolean
	wheredef: boolean
	location: boolean
	position:  boolean
	description: boolean
	tools: boolean
	tasks: boolean
}
export interface ShowEducationType {
	[key: string]: unknown;
	auth: AuthInfoType
	date: boolean
	title: boolean
	org:  boolean
	location: boolean
	cert:  boolean
	description: boolean
	tools: boolean
}
export interface ShowProjectType {
	[key: string]: unknown;
	auth: AuthInfoType
  name: boolean
  img: boolean
  title: boolean
	purpose: boolean
  site: boolean
  code: boolean
	date: boolean
  for: boolean
  position: boolean
  license: boolean
  demo: boolean
  capture: boolean
  description: boolean
  features: boolean
  builtwith: boolean 
}
export interface ShowInfoType {
	[key: string]: any
	id: string
	ky: string
	auth: AuthInfoType
	write: boolean
	change: boolean
	admin: boolean
	// save: boolean
	fullname: boolean
	personal: boolean
  title: boolean
  image: boolean
  mission: boolean
  mission_how: boolean
  phone: boolean
  address: boolean
  status: boolean
  birthdate: boolean
  sites: boolean
  skills: boolean
  skills_itms: boolean
  infra: boolean
  certs: boolean
  langs: boolean
	profile: boolean
	work_experience_itms: boolean
	work_experience: ShowWorkExperienceType
	project_itms: boolean
	projects: ShowProjectType
	education_itms: boolean
  education: ShowEducationType
	talks_itms: boolean
  talks: ShowTalksType
	teaching_itms: boolean
  teaching: ShowTeachingType
	others_itms: boolean
	others: boolean
}

export interface HtmlAttrsType {
	[key: string]: any
	bold: string
	list: string
	text: string
	link: string
}
export interface OptionsSelectorType {
	title: string
	val: string
}
export interface InputBtnsType {
	id: string
	title: string
	typ: string
	show: boolean
}
export enum MessageBoxType {
  Save = 'save',
  Select = 'select',
  Input = 'input',
  OneInput = 'oneinput',
  NotSet = '',
}
export enum NavPosition {
	header = 'header',
	footer = 'footer',
}

export interface ModelType {
	[key: string]: any
	id: string
	title: string
	path: string
}
export interface ModelSelType {
	[key: string]: ModelType
}
export interface CVDataType {
	models: ModelType[]
	showinfo: ShowInfoType[]
	core: DataCoreType[]
  work_experience: WorkExperienceType[]
	projects: ProjectType[]
  education: EducationType[]
  talks: TalksType[]
  teaching: TeachingType[]
  others: OtherType[]
}
export interface CVLangDataType {
	[key: string]: CVDataType
}
export interface CVModelDataType {
	[key: string]: CVLangDataType
}
export interface CVPostDataType {
	u: string
	data: CVModelDataType
}