import * as Schema from "effect/Schema";
import * as Stream from "effect/Stream";
import type * as ArrowFlight from "../api/ArrowFlight.ts";
import * as Model from "../Model.ts";
declare const ProtocolMessageData_base: Schema.TaggedClass<ProtocolMessageData, "ProtocolMessageData", {
    readonly _tag: Schema.tag<"ProtocolMessageData">;
} & {
    batch: Schema.Schema<import("apache-arrow").RecordBatch<any>, Uint8Array<ArrayBufferLike>, never>;
    ranges: Schema.Array$<typeof Model.BlockRange>;
}>;
/**
 * Protocol message: Data event with batch and ranges.
 */
export declare class ProtocolMessageData extends ProtocolMessageData_base {
}
declare const ProtocolMessageReorg_base: Schema.TaggedClass<ProtocolMessageReorg, "ProtocolMessageReorg", {
    readonly _tag: Schema.tag<"ProtocolMessageReorg">;
} & {
    previous: Schema.Array$<typeof Model.BlockRange>;
    incoming: Schema.Array$<typeof Model.BlockRange>;
    invalidation: Schema.Array$<typeof Model.InvalidationRange>;
}>;
/**
 * Protocol message: Reorg event with previous, incoming, and invalidation ranges.
 */
export declare class ProtocolMessageReorg extends ProtocolMessageReorg_base {
}
declare const ProtocolMessageWatermark_base: Schema.TaggedClass<ProtocolMessageWatermark, "ProtocolMessageWatermark", {
    readonly _tag: Schema.tag<"ProtocolMessageWatermark">;
} & {
    ranges: Schema.Array$<typeof Model.BlockRange>;
}>;
/**
 * Protocol message: Watermark event with ranges.
 */
export declare class ProtocolMessageWatermark extends ProtocolMessageWatermark_base {
}
/**
 * Protocol messages emitted by the protocol stream.
 */
export type ProtocolMessage = ProtocolMessageData | ProtocolMessageReorg | ProtocolMessageWatermark;
export declare const createProtocolStream: (responses: Stream.Stream<Model.ResponseBatch, ArrowFlight.ArrowFlightError>, resume?: Model.BlockRanges) => Stream.Stream<ProtocolMessage, ArrowFlight.ArrowFlightError>;
export {};
//# sourceMappingURL=ProtocolStream.d.ts.map