import { StreamInfo } from 'nats';
import { Observable } from 'rxjs';
import { NatsClientConfig } from './nats-client-config.js';
import { NatsMessageRequest } from './nats-message-request.js';
import { NatsEventMessage } from './nats-event-message.js';
import { NatsMessageData } from './nats-message-data.js';
export declare class NatsClientService {
    private options;
    private logger;
    private connection$;
    private jsManager$;
    private jsClient$;
    private streamInfoMap;
    private jsonCodec;
    private readonly DEFAULT_TIMEOUT_MS;
    constructor(options: NatsClientConfig, logger?: Console);
    init(): Promise<void>;
    enqueueData(streamName: string, event: string, data: unknown): void;
    dequeueData<T>(streamName: string, event?: string, consumerName?: string, clientId?: string): Observable<T>;
    requestMessage(subject: string, data: NatsMessageData, timeoutMs?: number): Observable<unknown>;
    eventMessage(subject: string, data: NatsMessageData): void;
    subscribeToRequestMessage(subject: string, group: string): Observable<NatsMessageRequest>;
    subscribeToEventMessage(subject: string, group: string): Observable<NatsEventMessage>;
    consumerInfo(streamName: string): Observable<import("nats").ConsumerInfo>;
    purgeStream(streamName: string): Observable<import("nats").PurgeResponse>;
    streamInfo(streamName: string): Observable<StreamInfo>;
    private monitorClient;
    private initConnection;
    private initJetstream;
    private initStreams;
}
