import { Transform, TransformCallback, TransformOptions } from "stream";
import type { ClientDuplexStream } from "@grpc/grpc-js";
import { ReadReq, ReadResp } from "../../../generated/persistent_pb";
import { ConvertGrpcEvent } from "../../utils";
import type { PersistentAction, PersistentSubscriptionBase, ResolvedEvent } from "../../types";
type CreateGRPCStream = () => Promise<ClientDuplexStream<ReadReq, ReadResp>>;
export declare class PersistentSubscriptionImpl<E> extends Transform implements PersistentSubscriptionBase<E> {
    #private;
    protected convertGrpcEvent: ConvertGrpcEvent<ReadResp.ReadEvent, E>;
    id?: string;
    constructor(createGRPCStream: CreateGRPCStream, convertGrpcEvent: ConvertGrpcEvent<ReadResp.ReadEvent, E>, options: TransformOptions);
    private initialize;
    _transform(resp: ReadResp, _encoding: string, next: TransformCallback): void;
    ack(...events: ResolvedEvent[]): Promise<void>;
    nack(action: PersistentAction, reason: string, ...events: ResolvedEvent[]): Promise<void>;
    unsubscribe(): Promise<void>;
}
export {};
