import { AnyRouter, ProcedureType, inferRouterContext, TRPCError, CombinedDataTransformer } from "@trpc/server";
import { TRPCClientOutgoingMessage } from "@trpc/server/rpc";
export declare function parseMessage(obj: unknown, transformer: CombinedDataTransformer): TRPCClientOutgoingMessage;
/**
 * Data channel "server" handler
 */
export type DataChannelHandlerOptions<TRouter extends AnyRouter> = {
    onError?: (opts: {
        error: TRPCError;
        type: ProcedureType | "unknown";
        path: string | undefined;
        input: unknown;
        ctx: undefined | inferRouterContext<TRouter>;
    }) => void;
    createContext?: () => inferRouterContext<TRouter> | Promise<inferRouterContext<TRouter>>;
    router: TRouter;
    dataChannel: RTCDataChannel;
};
export declare function applyDataChannelHandler<TRouter extends AnyRouter>(opts: DataChannelHandlerOptions<TRouter>): {
    /**
     * Don't use this, data channels can't be automatically reconnected.
     */
    broadcastReconnectNotification: () => never;
};
