export default TinyCryptoParser;
/**
 * TinyCryptoParser provides serialization and deserialization utilities for complex JavaScript data types.
 *
 * This class enables conversion of various JavaScript values (such as `Map`, `Set`, `Buffer`, `Date`, `BigInt`, `Symbol`, `HTMLElement`, and others)
 * into JSON-compatible formats, allowing safe encryption, transmission, or storage.
 * It also supports deserialization, restoring the original JavaScript objects from the serialized data.
 *
 * Unsupported types like `WeakMap`, `WeakSet`, `Promise`, and `Function` will throw explicit errors when an attempt is made to serialize them.
 *
 * It includes built-in validation to ensure the integrity of types during deserialization, providing stronger consistency guarantees
 * when handling critical data transformations.
 *
 * @class
 */
declare class TinyCryptoParser {
    /**
     * Add a new value type and its converter function.
     * @param {string} typeName
     * @param {(data: any) => any} getFunction
     * @param {(data: any) => SerializedData} convertFunction
     * @param {(data: any) => any} [serializeDeep]
     * @param {(data: any) => any} [deserializeDeep]
     */
    addValueType(typeName: string, getFunction: (data: any) => any, convertFunction: (data: any) => {
        __type: string;
        value?: any;
    }, serializeDeep?: (data: any) => any, deserializeDeep?: (data: any) => any): void;
    /**
     * Serializes a given data value into a JSON-compatible format based on its type.
     * This method converts various JavaScript data types into their serialized representation
     * that can be encrypted or stored. If the data type is unsupported, an error is thrown.
     *
     * @param {any} data - The data to be serialized.
     * @returns {string} The serialized data in JSON format.
     * @throws {Error} If the data type is unsupported for serialization.
     */
    serialize(data: any): string;
    /**
     * Deserializes a string back into its original JavaScript object based on the serialized type information.
     * This method checks the serialized type and converts the string back to its original JavaScript object
     * (such as a `Date`, `Buffer`, `RegExp`, etc.). If the type is unknown or unsupported, it returns the raw value.
     *
     * @param {string} text - The serialized data to be deserialized.
     * @param {string|null} [expectedType=null] - Optionally specify the expected type of the decrypted data. If provided, the method will validate the type of the deserialized value.
     * @returns {DeserializedData} An object containing the deserialized value and its type.
     * @throws {Error} If deserialization fails due to an invalid or unknown type.
     */
    deserialize(text: string, expectedType?: string | null): {
        /**
         * - The deserialized value, which can be any JavaScript type.
         */
        value: any;
        /**
         * - The type of the deserialized data (e.g., 'object', 'array', 'string', etc.).
         */
        type: string;
    };
    /**
     * Recursively serializes a given data value into a JSON-compatible format.
     * If the data is an object or array, it will traverse each entry and serialize them individually.
     *
     * @param {any} data - The data to be deeply serialized.
     * @returns {string} The deeply serialized data in JSON format.
     * @throws {Error} If the data type is unsupported for serialization.
     */
    serializeDeep(data: any): string;
    /**
     * Recursively deserializes a string back into its original value format.
     * If the data is an object or array, it will traverse each entry and deserialize them individually.
     *
     * @param {string} text - The serialized data to be deeply deserialized.
     * @param {string|null} [expectedType=null] - Optionally specify the expected type of the decrypted data.
     * @returns {DeserializedData} An object containing the deserialized value and its type.
     * @throws {Error} If deserialization fails due to an invalid or unknown type.
     */
    deserializeDeep(text: string, expectedType?: string | null): {
        /**
         * - The deserialized value, which can be any JavaScript type.
         */
        value: any;
        /**
         * - The type of the deserialized data (e.g., 'object', 'array', 'string', etc.).
         */
        type: string;
    };
    #private;
}
//# sourceMappingURL=TinyCryptoParser.d.mts.map