export interface IFilesFolder {
	files: {
		totalItems: number;
		items: IFile[];
	};
	folders: IFolder[];
}

export interface IImageFolder {
	images: {
		currentPage: number;
		totalItems: number;
		items: IImage[];
	};
	folders: IFolder[];
}

export interface IFile {
	id: number;
	fileName: string;
	sizeBytes: number;
	uploadDate: Date;
	fileType: string;
	tags: string[];
	url: string;
	alt: string;
	title: string;
	site: number | null;
	folder: { folderId: number; folderName: string } | null;
	contentInUse: {
		pages: IFileUsePages[];
		simpleStructuredData: IFileUseItem[];
		globalPages: IFileUseItem[];
	};
}

export interface IImage {
	id: number;
	name: string;
	title: string;
	description: string;
	alt: string;
	tags: string[];
	url: string;
	thumb: string;
	publicId: string;
	damId: string;
	published: Date;
	size: number;
	width: number;
	height: number;
	orientation: string;
	site: number | null;
	file?: File;
	position?: string;
	folderId: number | null;
}

export interface IFileUsePages {
	siteId: number;
	siteName: string;
	pages: IFileUseItem[];
}

export interface IFileUseItem {
	id: number;
	title: string;
	structuredDataId?: string;
	published: Date;
}

export interface IFolder {
	id: number;
	folderName: string;
	parentId: number;
	site: number;
}

export interface IFolderTree {
	id: number;
	name: string;
	children: IFolderTree[];
	isExpanded?: boolean;
}

export interface IGetFolderParams {
	siteID: number | "global";
	folderID: number | null;
	loading?: boolean;
	search?: string;
	query?: string;
	thumbWidth?: number;
	thumbHeight?: number;
	pagination?: boolean;
	page?: number;
	itemsPerPage?: number;
	infinite?: boolean;
}
