import { NotificationsUnion, Pipe } from '@leancodepl/pipe';
/**
 * Creates React hooks for real-time data subscriptions using "@leancodepl/pipe".
 *
 * @param pipe - Pipe instance from "@leancodepl/pipe"
 * @returns Object containing `createTopic` method for creating typed hooks
 * @example
 * ```typescript
 * const pipe = createPipe({ url: 'wss://api.example.com/pipe' });
 * const pipeClient = mkPipeClient({ pipe });
 *
 * const useChatTopic = pipeClient.createTopic('chat');
 * ```
 */
export declare function mkPipeClient({ pipe }: {
    pipe: Pipe;
}): {
    createTopic<TTopic, TNotifications extends Record<string, unknown>>(topicType: string): {
        (topic: TTopic, { onData, ...onDataByType }: UseSubscriptionOptions<TNotifications>): {
            data: NotificationsUnion<TNotifications> | undefined;
        };
        topic(topic: TTopic): import('rxjs').Observable<NotificationsUnion<TNotifications>>;
    };
};
export type UseSubscriptionOptions<TNotifications extends Record<string, unknown>> = {
    [K in NotificationsUnion<TNotifications>[0]]?: (data: Extract<NotificationsUnion<TNotifications>, [K, any]>[1]) => void;
} & {
    onData?: (data: NotificationsUnion<TNotifications>) => void;
};
//# sourceMappingURL=mkPipeClient.d.ts.map