import React, { ReactNode } from "react";
import { PayloadStorage } from "./types";
type Subscriber = () => void;
interface Store {
    getSnapshot<E extends keyof PayloadStorage>(eventName: E): PayloadStorage[E] | undefined;
    subscribe<E extends keyof PayloadStorage>(eventName: E, callback: Subscriber): () => void;
    send(event: string, data: any): void;
    readyState: number;
    error: Event | null;
}
export declare const RLContext: React.Context<Store | null>;
export declare const RLProvider: React.FC<{
    url?: string;
    children: ReactNode;
}>;
/**
 * Subscribe to the full payload of an event.
 */
export declare function useEvent<E extends keyof PayloadStorage>(eventName: E): PayloadStorage[E] | undefined;
/**
 * Subscribe to a selected slice of the event payload. Re-renders only on actual changes.
 */
export declare function useEventSelector<E extends keyof PayloadStorage, U>(eventName: E, selector: (v: PayloadStorage[E] | undefined) => U, isEqual?: (a: U, b: U) => boolean): U;
export {};
