import { Class } from "./util/Core"; import { Delta } from "./Delta"; import { Id, Persistent, Num, Str, Value } from "./Value"; export declare type Versioned = Versioned_ & T; export interface Versioned_ { __id: Id; __ẟ: Delta; } export declare function versioned(v: T): v is Versioned; export declare function asVersioned(v: T): Versioned; export declare function at(C: Class, ...v̅: Persistent[]): (k: Id) => Versioned; export declare function create(C: Class, ...v̅: Persistent[]): (k: Id) => Versioned; export declare function reset(v: Value, C: Class, ...v̅: Persistent[]): void; export declare class Extern extends Id { id: number; } export declare const ν: () => Extern; export declare function num(val: number): (k: Id) => Versioned; export declare function str(val: string): (k: Id) => Versioned; export declare function newRevision(): void; export declare type MemoFunType = (...v̅: Persistent[]) => T; export declare function memo(f: MemoFunType, ...v̅: Persistent[]): T;