import { AssetFolderContracts, SharedContracts } from '../../contracts'; import { SharedModels } from '../shared/shared-models'; export namespace AssetFolderModels { export class AssetFolder implements SharedModels.IBaseModel { public id: string; public name: string; public externalId?: string; public folders: AssetFolder[]; public codename: string; public _raw!: AssetFolderContracts.IAssetFolderContract; constructor(data: { id: string; name: string; externalId?: string; folders: AssetFolder[]; codename: string; _raw: AssetFolderContracts.IAssetFolderContract; }) { this.id = data.id; this.name = data.name; this.externalId = data.externalId; this.folders = data.folders; this.codename = data.codename; this._raw = data._raw; } } export interface IAssetFolderValue { name: string; folders?: IAssetFolderValue[]; external_id?: string; codename?: string; } export interface IAddAssetFoldersData { folders: IAssetFolderValue[]; } export type IModifyAssetFolderData = AddIntoOperation | RemoveOperation | RenameOperation; export type AddIntoOperation = { op: 'addInto'; reference?: SharedContracts.IReferenceObjectContract; value: IAssetFolderValue; before?: SharedContracts.IReferenceObjectContract; after?: SharedContracts.IReferenceObjectContract; }; export type RemoveOperation = { op: 'remove'; reference: SharedContracts.IReferenceObjectContract; }; export type RenameOperation = { op: 'rename'; reference: SharedContracts.IReferenceObjectContract; value: string; }; }