/**
 * Zenith Signal - Atomic Reactive Value
 *
 * A signal is the most basic reactive primitive. It holds a single value
 * and notifies subscribers when the value changes.
 *
 * Features:
 * - Getter/setter model
 * - Automatic dependency tracking
 * - Fine-grained reactivity (no component re-rendering)
 *
 * @example
 * ```ts
 * const count = zenSignal(0)
 *
 * // Read value
 * console.log(count()) // 0
 *
 * // Write value
 * count(1)
 *
 * // Or use .value
 * count.value = 2
 * console.log(count.value) // 2
 * ```
 */
/**
 * Signal interface - callable getter/setter with .value accessor
 */
export interface Signal<T> {
    /** Get the current value (also tracks dependency) */
    (): T;
    /** Set a new value */
    (value: T): void;
    /** Get/set value via property */
    value: T;
    /** Peek at value without tracking */
    peek(): T;
    /** Subscribe to changes */
    subscribe(fn: (value: T) => void): () => void;
}
/**
 * Create a reactive signal
 *
 * @param initialValue - The initial value of the signal
 * @returns A signal that can be read and written
 */
export declare function zenSignal<T>(initialValue: T): Signal<T>;
