import { Ent, EntConstructor, Viewer, ID, Data, PrivacyPolicy, Context } from "../core/base"; import { DataOperation, AssocEdgeInputOptions } from "../core/ent"; import { Queryer } from "../core/db"; export declare enum WriteOperation { Insert = "insert", Edit = "edit", Delete = "delete" } export interface Builder { existingEnt?: Ent; ent: EntConstructor; placeholderID: ID; readonly viewer: Viewer; build(): Promise>; operation: WriteOperation; editedEnt?(): Promise; } export interface Executor extends Iterable, Iterator { placeholderID: ID; resolveValue(val: any): Ent | null; execute(): Promise; preFetch?(queryer: Queryer, context?: Context): Promise; postFetch?(queryer: Queryer, context?: Context): Promise; executeObservers?(): Promise; } export interface Changeset { executor(): Executor; viewer: Viewer; placeholderID: ID; ent: EntConstructor; changesets?: Changeset[]; dependencies?: Map>; } export declare type TriggerReturn = void | Promise | void | Changeset[] | Changeset> | Promise>[]; export interface Trigger { changeset(builder: Builder, input: Data): TriggerReturn; } export interface Observer { observe(builder: Builder, input: Data): void | Promise; } export interface Validator { validate(builder: Builder, input: Data): Promise | void; } export interface Action { readonly viewer: Viewer; changeset(): Promise>; builder: Builder; getPrivacyPolicy(): PrivacyPolicy; triggers?: Trigger[]; observers?: Observer[]; validators?: Validator[]; getInput(): Data; valid(): Promise; validX(): Promise; viewerForEntLoad?(data: Data): Viewer | Promise; } export declare function saveBuilder(builder: Builder): Promise; export declare function saveBuilderX(builder: Builder): Promise; interface Orchestrator { addOutboundEdge(id2: ID | Builder, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): any; removeOutboundEdge(id2: ID, edgeType: string): any; viewer: Viewer; } export declare function setEdgeTypeInGroup(orchestrator: Orchestrator, inputEnumValue: string, id1: ID, id2: ID, nodeType: string, m: Map): Promise; export {};