import { A as Adapter } from '../adapter-6ny_hedX.js';

/**
 * Join multiple adapters into one.
 */
declare function createClusterAdapter<TMessage>(adapter: Adapter<TMessage>, ...adapters: Adapter<TMessage>[]): Adapter<TMessage>;

/**
 * Create an adapter that logs all messages.
 */
declare function createDebugLogAdapter<TMessage>(adapter: Adapter<TMessage>, name: string): Adapter<TMessage>;

/**
 * Create an adapter that proxies all messages from one adapter to another.
 */
declare function createProxyAdapter<TMessage>(source: Adapter<TMessage>, destination: Adapter<TMessage>): Adapter<TMessage>;

/**
 * A serializer is a pair of functions that allows to serialize and deserialize messages.
 */
type Serializer = {
    stringify: (message: unknown) => string;
    parse: (message: string) => unknown;
};
/**
 * Wrap an adapter with a serializer to allow to send and receive messages of any type.
 */
declare function createSerializedAdapter<TMessage>(adapter: Adapter<string>, serializer: Serializer): Adapter<TMessage>;

export { type Serializer, createClusterAdapter, createDebugLogAdapter, createProxyAdapter, createSerializedAdapter };
