import { SharedContracts, SpaceContracts } from '../../contracts'; import { SharedModels } from '../shared/shared-models'; export namespace SpaceModels { export type ModifySpaceOperation = 'replace'; type ModifySpaceProperties = { property_name: "name" | "codename"; value: string; } | { property_name: "web_spotlight_root_item"; value: SharedContracts.IReferenceObjectContract; } | { property_name: "collections"; value: SharedContracts.IReferenceObjectContract[]; } export type IModifySpaceData = { op: ModifySpaceOperation } & ModifySpaceProperties; export interface IAddSpaceData { name: string; codename?: string; web_spotlight_root_item?: SharedContracts.IReferenceObjectContract; collections?: SharedContracts.IReferenceObjectContract[]; } export class Space implements SharedModels.IBaseModel { public id!: string; public name!: string; public codename!: string; public webSpotlightRootItem?: SharedModels.ReferenceObject; public collections?: SharedModels.ReferenceObject[]; public _raw!: SpaceContracts.ISpaceContract; constructor(data: { id: string; name: string; codename: string; webSpotlightRootItem?: SharedModels.ReferenceObject; collections?: SharedModels.ReferenceObject[]; _raw: SpaceContracts.ISpaceContract; }) { Object.assign(this, data); } } }