/**
 * Micro-observable implementation following TC-39 Observable protocol.
 * ~25 lines of code for minimal footprint while maintaining spec compliance.
 */
declare global {
    interface SymbolConstructor {
        readonly observable: symbol;
    }
}
interface Observer<T> {
    next?: (value: T) => void;
    error?: (error: any) => void;
    complete?: () => void;
}
interface Subscription {
    unsubscribe(): void;
}
interface Observable<T> {
    subscribe(observer: Partial<Observer<T>>): Subscription;
    [Symbol.observable](): Observable<T>;
}
export declare class LixObservable<T> implements Observable<T[]> {
    private subscriber;
    constructor(subscriber: (observer: Observer<T[]>) => (() => void) | void);
    subscribe(observer: Partial<Observer<T[]>>): Subscription;
    [Symbol.observable](): LixObservable<T>;
    subscribeTakeFirst(observer: Partial<Observer<T | undefined>>): Subscription;
    subscribeTakeFirstOrThrow(observer: Partial<Observer<T>>): Subscription;
}
export {};
//# sourceMappingURL=lix-observable.d.ts.map