/**
 * Core Signal Category - Functor implementation
 * Following category-theoretic laws for structure preservation
 */
export interface Signal<A> {
    readonly value: () => A;
    readonly map: <B>(f: (a: A) => B) => Signal<B>;
    readonly subscribe: (fn: (a: A) => void) => () => void;
}
export interface MutableSignal<A> extends Signal<A> {
    _set: (value: A) => void;
}
/**
 * Creates a basic signal with functor laws
 * Laws verified:
 * - map(id) ≡ id (identity)
 * - map(f ∘ g) ≡ map(f) ∘ map(g) (composition)
 */
export declare const signal: <A>(initial: A) => MutableSignal<A> & {
    _set: (value: A) => void;
};
/**
 * Identity function for functor law verification
 */
export declare const id: <A>(a: A) => A;
/**
 * Function composition for functor law verification
 */
export declare const compose: <A, B, C>(f: (b: B) => C, g: (a: A) => B) => (a: A) => C;
/**
 * Pure function - lifts a value into Signal context
 */
export declare const pure: <A>(value: A) => Signal<A>;
/**
 * Computed signal - creates a derived signal from a computation function
 */
export declare const computed: <A>(compute: () => A) => MutableSignal<A>;
