/**
 * State management with observer pattern and diffing
 *
 * Uses a proxy-based approach with self-detection to avoid
 * creating nested proxies repeatedly.
 */
export type StatePath = string;
/**
 * Represents a change in state with full path information
 */
export interface StateChange {
    paths: StatePath[];
    newValues: Record<StatePath, any>;
}
/**
 * Options for state observer
 */
export interface StateObserverOptions {
    onChange: (change: StateChange) => void;
    pathPrefix?: string;
}
/**
 * Create an observable state object that tracks changes
 */
export declare function createObservableState<T extends object>(initialState: T, options?: StateObserverOptions): T;
/**
 * Helper to batch multiple state updates
 */
export declare function batchStateUpdates<T>(state: T, fn: () => void): void;
/**
 * Get a snapshot of the current state
 */
export declare function getStateSnapshot<T>(state: T): T;
/**
 * Check if a value is a Hypen state proxy
 */
export declare function isStateProxy(value: unknown): boolean;
/**
 * Get the raw (unwrapped) target from a proxy
 * Returns the value as-is if not a proxy
 */
export declare function unwrapProxy<T>(value: T): T;
