import { SID_of } from '@strut/sid'; import OptimisticPromise from './OptimisticPromise.js'; import { IModel, ModelSpecWithCreate, NodeSpecWithCreate } from './INode.js'; export type ChangesetOptions = { returning: boolean; }; export type Changeset, D extends {} = Object> = | CreateChangeset | UpdateChangeset | DeleteChangeset; export type CreateChangeset, D extends {}> = { type: 'create'; updates: Partial; spec: ModelSpecWithCreate; options?: ChangesetOptions; id: SID_of; }; export type UpdateChangeset, D extends {}> = { type: 'update'; updates: Partial; spec: ModelSpecWithCreate; model: M; options?: ChangesetOptions; id: SID_of; }; export type DeleteChangeset, D extends {}> = { type: 'delete'; model: M; spec: ModelSpecWithCreate; options?: ChangesetOptions; id: SID_of; }; export type SavableChangeset, D extends {}> = { save(): OptimisticPromise; save0(): M; }; // export interface IChangesetArray, D> extends Array> { // save(): OptimisticPromise; // save0(): M[]; // }