import type { UniqueID } from "@repo/rdx-ddd"; import type { Result } from "@repo/rdx-utils"; import type { AccessDefinition } from "../domain/access/access-definition"; import type { WorkProfile } from "../domain/work-profile.aggregate"; import type { WorkProfileError } from "../domain/work-profile-values"; export interface IWorkProfileInventoryService { list( companyId: UniqueID ): Promise; } export type WorkProfileContext = Readonly<{ profiles: readonly WorkProfile[]; people: readonly { id: UniqueID; active: boolean }[]; assets: readonly { id: UniqueID; available: boolean; isProfileHost?: boolean }[]; items: readonly { id: UniqueID; values: AccessDefinition }[]; actors: ReadonlyMap; today: string; }>; export interface IWorkProfileRepository { get(companyId: UniqueID): Promise>; save( companyId: UniqueID, action: (context: WorkProfileContext) => Result ): Promise>; }