/**
 * Zenith Memo - Computed/Derived Value
 *
 * A memo is a lazily-evaluated, cached computation that automatically
 * tracks its dependencies and only recomputes when those dependencies change.
 *
 * Features:
 * - Lazy evaluation (only computes when read)
 * - Automatic dependency tracking
 * - Cached value until dependencies change
 * - Read-only (no setter)
 *
 * @example
 * ```ts
 * const firstName = zenSignal('John')
 * const lastName = zenSignal('Doe')
 *
 * // Memo computes full name, tracks firstName and lastName
 * const fullName = zenMemo(() => `${firstName()} ${lastName()}`)
 *
 * console.log(fullName()) // "John Doe"
 *
 * firstName('Jane')
 * console.log(fullName()) // "Jane Doe" (recomputed)
 * console.log(fullName()) // "Jane Doe" (cached, no recomputation)
 * ```
 */
/**
 * Memo interface - callable getter
 */
export interface Memo<T> {
    /** Get the current computed value */
    (): T;
    /** Peek at cached value without tracking (may be stale) */
    peek(): T;
}
/**
 * Create a memoized computed value
 *
 * @param fn - The computation function
 * @returns A memo that can be read to get the computed value
 */
export declare function zenMemo<T>(fn: () => T): Memo<T>;
