import type { AMQPMessage } from "./amqp-message.js";
import type { ResolveBody } from "./amqp-publisher.js";
import type { ParserMap, CoderMap } from "./amqp-codec-registry.js";
/**
 * Callback invoked for each incoming RPC request.
 * Receives a decoded {@link AMQPMessage} and returns the response body.
 */
export type RPCHandler<P extends ParserMap = {}, KP extends keyof P & string = never> = (msg: AMQPMessage<P>) => ResolveBody<P, KP> | Promise<ResolveBody<P, KP>>;
/**
 * An RPC server that consumes messages from a queue and replies to each caller.
 *
 * Uses the session's queue and subscribe machinery, so the consumer is
 * automatically recovered after a reconnection.
 *
 * @example
 * ```ts
 * const session = await AMQPSession.connect("amqp://localhost")
 * const server = await session.rpcServer("my_rpc_queue", async (msg) => {
 *   return `processed:${msg.bodyString()}`
 * })
 * // later…
 * await session.stop()
 * ```
 */
export declare class AMQPRPCServer<P extends ParserMap = {}, C extends CoderMap = {}, KP extends keyof P & string = never, KC extends keyof C & string = never> {
    private readonly session;
    private subscription;
    /**
     * Cancel the consumer. The underlying queue remains declared.
     */
    close(): Promise<void>;
}
//# sourceMappingURL=amqp-rpc-server.d.ts.map