import { Message, MethodKind } from "@bufbuild/protobuf";
import type { HandlerContext, MethodImplSpec } from "../implementation.js";
import type { AsyncIterableTransform } from "./async-iterable.js";
import type { Interceptor } from "../interceptor.js";
/**
 * Invoke a user-provided implementation of a unary RPC. Returns a normalized
 * output message.
 *
 * @private Internal code, does not follow semantic versioning.
 */
export declare function invokeUnaryImplementation<I extends Message<I>, O extends Message<O>>(spec: MethodImplSpec<I, O> & {
    kind: MethodKind.Unary;
}, context: HandlerContext, input: I, interceptors: Interceptor[]): Promise<O>;
/**
 * Return an AsyncIterableTransform that invokes a user-provided implementation,
 * giving it input from an asynchronous iterable, and returning its output as an
 * asynchronous iterable.
 *
 * @private Internal code, does not follow semantic versioning.
 */
export declare function transformInvokeImplementation<I extends Message<I>, O extends Message<O>>(spec: MethodImplSpec<I, O>, context: HandlerContext, interceptors: Interceptor[]): AsyncIterableTransform<I, O>;
