/**
 */
import type { SerializedValue } from './types.js';
/**
 * Configuration options for the Serializer
 */
export interface SerializerOptions {
    /**
     * Additional global built-ins to skip during variable extraction
     * (beyond the standard JavaScript built-ins that are detected automatically)
     */
    customGlobalBuiltIns?: string[];
    /**
     * Whether to use caching for keyword/built-in detection
     * Default: true (recommended for performance)
     */
    enableCaching?: boolean;
}
export declare class Serializer {
    private refCounter;
    private refMap;
    private customGlobalBuiltIns;
    private keywordCache;
    private globalCache;
    private enableCaching;
    constructor(options?: SerializerOptions);
    /**
     * Deep serialize a value with circular reference detection
     */
    serialize(value: unknown, scope?: Record<string, unknown>): SerializedValue;
    /**
     * Deserialize a value back to its original form
     */
    deserialize(serialized: SerializedValue, refRegistry?: Map<string, unknown>): unknown;
    private deepSerialize;
    private serializeFunction;
    private extractReferencedVars;
    /**
     * Check if a name is a reserved JavaScript keyword
     * Uses caching for performance when enabled
     */
    private isReservedKeyword;
    /**
     * Check if a name is a global built-in
     * Dynamically detects built-ins at runtime with caching for performance
     */
    private isGlobalBuiltIn;
    /**
     * Detect all global built-ins at runtime
     * This is called once and cached for performance
     */
    private detectGlobalBuiltIns;
    /**
     * Check if a name is a property of the global object
     * Used when caching is disabled
     */
    private isGlobalProperty;
    private deepDeserialize;
    private deserializeFunction;
}
//# sourceMappingURL=serializer.d.ts.map