export declare type ChangeTraceLeaf = { from: T | undefined; to: T | undefined; }; export declare type ChangeTraceNode = { subs: (T extends any[] ? { [index: number]: ChangeTrace; } : Partial<{ [K in keyof T]: ChangeTrace; }>) | {}; }; export declare type ChangeTrace = ChangeTraceLeaf | ChangeTraceNode; export interface Change { value: T | undefined; trace?: ChangeTrace | undefined; } export declare function isLeaf(c: ChangeTrace | undefined): c is ChangeTraceLeaf | undefined;