export type BasePatchResult = { $id: number; original: T | null; }; export type RemoveAttributeResult = BasePatchResult & { operation: "removeAttribute"; attribute: string; }; export type RemoveResult = BasePatchResult & { operation: "remove"; value: T; }; export type AddAttributeResult = BasePatchResult & { operation: "addAttribute"; attribute: string; value: unknown; }; export type AddResult = BasePatchResult & { operation: "add"; value: T; }; export type ReplaceResult = BasePatchResult & { operation: "replaceAttribute"; attribute: string; value: unknown; oldValue: unknown; }; export type PatchRemoveResult = RemoveAttributeResult | RemoveResult; export type PatchAddResult = AddAttributeResult | AddResult; export type PatchError = null; export type PatchResult = PatchRemoveResult | PatchAddResult | ReplaceResult | PatchError;