import type { UniqueID } from "@repo/rdx-ddd"; import type { Result } from "@repo/rdx-utils"; import type { PrinterConfiguration } from "../domain/printer-configuration.aggregate"; import type { PrinterConfigurationError } from "../domain/printer-configuration-values"; import type { WorkProfile } from "../domain/work-profile.aggregate"; export type PrinterContext = Readonly<{ configurations: readonly PrinterConfiguration[]; profiles: readonly WorkProfile[]; people: readonly { id: UniqueID; active: boolean }[]; assets: readonly { id: UniqueID; available: boolean }[]; actors: ReadonlyMap; }>; export interface IPrinterConfigurationRepository { remove(company: UniqueID, id: UniqueID): Promise>; get(company: UniqueID): Promise>; save( company: UniqueID, action: (context: PrinterContext) => Result ): Promise< Result< { configuration: PrinterConfiguration; context: PrinterContext }, PrinterConfigurationError > >; }