import { PayloadAction } from '../action'; import { NodeId } from '@trrack/core'; import { Artifact, CurrentChangeHandler, Metadata, ProvenanceGraphStore, ProvenanceNode, RootNode, SideEffects, UnsubscribeCurrentChangeListener } from '../graph'; import { ProvenanceGraph } from '../graph/graph-slice'; import { Registry } from '../registry'; import { TrrackEvents } from './trrack-events'; export type RecordActionArgs = { label: string; state: State; eventType: Event; sideEffects: SideEffects; onlySideEffects?: boolean; }; export type TrrackTreeNode = Omit, 'children'> & { name: string; children: TrrackTreeNode[]; }; export interface Trrack { registry: Registry; isTraversing: boolean; getState(node?: ProvenanceNode): State; graph: ProvenanceGraphStore; current: ProvenanceNode; root: RootNode; record(args: RecordActionArgs): void; apply(label: string, act: PayloadAction): Promise; to(node: NodeId): Promise; metadata: { add(metadata: Record, node?: NodeId): void; latestOfType(type: string, node?: NodeId): Metadata | undefined; allOfType(type: string, node?: NodeId): Metadata[] | undefined; latest(node?: NodeId): Record | undefined; all(node?: NodeId): Record | undefined; types(node?: NodeId): string[]; }; artifact: { add(artifact: A, node?: NodeId): void; latest(node?: NodeId): Artifact | undefined; all(node?: NodeId): Artifact[] | undefined; }; annotations: { add(annotation: string, node?: NodeId): void; latest(node?: NodeId): string | undefined; all(node?: NodeId): string[] | undefined; }; bookmarks: { add(node?: NodeId): void; remove(node?: NodeId): void; is(node?: NodeId): boolean; toggle(node?: NodeId): void; }; undo(): Promise; redo(to?: 'latest' | 'oldest'): Promise; currentChange(listener: CurrentChangeHandler, skipOnNew?: boolean): UnsubscribeCurrentChangeListener; done(): void; tree(): TrrackTreeNode; on(event: TrrackEvents, listener: (args?: unknown) => void): void; export(): string; exportObject(): ProvenanceGraph; import(graphString: string): void; importObject(graph: ProvenanceGraph): void; }