import { Subject } from 'rxjs'; declare class Change { previousValue: T; currentValue: T; constructor(previousValue: T, currentValue: T); } type Changes = T extends (infer I)[] ? Change[] | { [index: number]: Changes; } : T extends object ? { [P in keyof T as T[P] extends Subject ? never : P]?: Changes; } : Change; export { Change, Changes };