import type { DescMessage, DescMethodServerStreaming, DescMethodUnary, MessageShape, MessageValidType } from "@bufbuild/protobuf";
import { NotOK } from "./errors/external.js";
/** @internal */
export declare class AbortHandler {
    readonly signal: AbortSignal | undefined;
    constructor(signal: AbortSignal | undefined);
    throwIfAborted(): void;
    onAbort(listener: (error: NotOK) => void): void;
    error(): NotOK;
}
/** @internal */
export interface Transport {
    unary<I extends DescMessage, O extends DescMessage>(method: DescMethodUnary<I, O>, request: MessageValidType<I>, headers: Headers, abortHandler: AbortHandler): Promise<MessageShape<O>>;
    serverStream<I extends DescMessage, O extends DescMessage>(method: DescMethodServerStreaming<I, O>, request: MessageValidType<I>, headers: Headers, abortHandler: AbortHandler): AsyncGenerator<MessageShape<O>, void, undefined>;
}
/** @internal */
export type Instrumenter = (transport: Transport) => Transport;
/** @internal */
export declare function addInstrumenter(instrumenter: Instrumenter): void;
/** @internal */
export declare function removeInstrumenter(instrumenter: Instrumenter): void;
/** @internal */
export declare function instrument(transport: Transport): Transport;
//# sourceMappingURL=transport.d.ts.map