import { ClientProxy, ReadPacket, WritePacket, OutgoingEvent, Serializer } from '@nestjs/microservices';
import { Writer, ConnectionConfigOptions } from 'nsqjs';
export type Publishable = Parameters<typeof Writer.prototype.publish>[1];
export type NSQClientOpitons = ConnectionConfigOptions & ({
    nsqdHost: string;
    nsqdPort: number;
} | {
    nsqdURL: string;
}) & {
    serializer?: Serializer<OutgoingEvent, Publishable>;
};
export declare class NSQClient extends ClientProxy {
    private readonly opts;
    private readonly writer;
    private readonly logger;
    private connected?;
    constructor(opts: NSQClientOpitons);
    connect(): Promise<void>;
    close(): Promise<void>;
    publish(_packet: ReadPacket<unknown>, _callback: (packet: WritePacket<unknown>) => void): () => void;
    dispatchEvent(packet: ReadPacket<unknown>): Promise<any>;
    unwrap<T>(): T;
}
