export declare const toRpcSerialized: unique symbol;
declare type Primitive = undefined | null | void | boolean | number | string | BigInt;
declare type SerializableArray = SerializableData[];
declare type SerializationFuncObject = {
    [toRpcSerialized]: SerializationFunction;
};
declare type SerializableObject = {
    [key: string]: SerializableData;
} | SerializationFuncObject;
export declare type SerializableData = Primitive | SerializableArray | SerializableObject | Transferable | Error;
declare type SerializedArray = SerializedData[];
declare type SerializedObject = {
    [key: string]: SerializedData;
};
export declare type SerializedData = Primitive | SerializedArray | SerializedObject | Transferable;
declare type SerializationFunction = (data: SerializableData, xfer: Transferable[]) => SerializedData;
/**
 * Prepares `data` to be sent over a MessagePort by ensuring that all data is
 * of a type that can be sent and that all transferrables are `push`ed to
 * `xfer`.
 * @todo Make error stack sending configurable
 * @param data Data to serialize
 * @param xfer Destination array for transferrables
 * @returns The data in serialized format
 */
export declare function rpcSerialize(data: SerializableData, xfer: Transferable[]): SerializedData;
export {};
