export interface Memo { value: T; clear(): void; } /** * Lazily-computed cached value with explicit dependency edges. * * Pass upstream memos via `deps` (a thunk, so it can reference sibling fields * regardless of declaration order). Clearing any dep cascades to this memo, so * mutations only need to clear the single root that changed. */ export default function memo(action: () => T, deps?: () => Memo[]): Memo;