{"version":3,"sources":["../../src/interpreter/errors/codes/color.ts","../../src/interpreter/errors/codes/config.ts","../../src/interpreter/errors/codes/functions.ts","../../src/interpreter/errors/codes/interpreter.ts","../../src/interpreter/errors/codes/lexer.ts","../../src/interpreter/errors/codes/operations.ts","../../src/interpreter/errors/codes/parser.ts","../../src/interpreter/errors/codes/processor.ts","../../src/interpreter/errors/codes/symbols.ts","../../src/interpreter/errors/codes/unit.ts","../../src/interpreter/errors/messages/en.ts","../../src/interpreter/errors/messages/index.ts","../../src/interpreter/errors/base.ts","../../src/interpreter/errors/utils.ts","../../src/interpreter/utils/type.ts","../../src/interpreter/utils/color.ts","../../src/interpreter/utils/string.ts","../../src/interpreter/symbols.ts"],"names":["ColorErrorCode","ConfigErrorCode","FunctionsErrorCode","InterpreterErrorCode","LexerErrorCode","OperationsErrorCode","ParserErrorCode","ProcessorErrorCode","SymbolsErrorCode","UnitErrorCode","__name","alphaValue","isNumber","SupportedFormats"],"mappings":"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","file":"chunk-OABJLZRZ.cjs","sourcesContent":["import type { SerializedError } from \"../utils\";\n\nexport enum ColorErrorCode {\n  // Initializer errors\n  INITIALIZER_CRASHED = \"COLOR_INITIALIZER_CRASHED\",\n  INITIALIZER_CONSTRUCT_FAILED = \"COLOR_INITIALIZER_CONSTRUCT_FAILED\",\n  INITIALIZER_NOT_FOUND = \"COLOR_INITIALIZER_NOT_FOUND\",\n\n  // Conversion errors\n  CONVERSION_TARGET_NOT_FOUND = \"COLOR_CONVERSION_TARGET_NOT_FOUND\",\n  SOURCE_URI_NOT_FOUND = \"COLOR_SOURCE_URI_NOT_FOUND\",\n  TARGET_URI_NOT_FOUND = \"COLOR_TARGET_URI_NOT_FOUND\",\n  CONVERSION_ERROR = \"COLOR_CONVERSION_ERROR\",\n\n  // Attribute errors\n  STRING_VALUE_ASSIGNMENT = \"COLOR_STRING_VALUE_ASSIGNMENT\",\n  ATTRIBUTE_CHAIN_TOO_LONG = \"COLOR_ATTRIBUTE_CHAIN_TOO_LONG\",\n\n  // Specification errors\n  MISSING_SPEC = \"COLOR_MISSING_SPEC\",\n  MISSING_SCHEMA = \"COLOR_MISSING_SCHEMA\",\n  MISSING_ATTRIBUTE_SCHEMA = \"COLOR_MISSING_ATTRIBUTE_SCHEMA\",\n\n  // Type errors\n  INVALID_ATTRIBUTE_TYPE = \"COLOR_INVALID_ATTRIBUTE_TYPE\",\n\n  // Alpha errors\n  INVALID_ALPHA_VALUE = \"COLOR_INVALID_ALPHA_VALUE\",\n}\n\nexport interface ColorErrorData {\n  [ColorErrorCode.INITIALIZER_CRASHED]: Record<string, never>;\n  [ColorErrorCode.INITIALIZER_CONSTRUCT_FAILED]: {\n    error: SerializedError;\n  };\n  [ColorErrorCode.INITIALIZER_NOT_FOUND]: {\n    keyword: string;\n  };\n  [ColorErrorCode.CONVERSION_TARGET_NOT_FOUND]: {\n    targetUri: string;\n  };\n  [ColorErrorCode.SOURCE_URI_NOT_FOUND]: {\n    colorType: string;\n  };\n  [ColorErrorCode.TARGET_URI_NOT_FOUND]: {\n    colorType: string;\n  };\n  [ColorErrorCode.CONVERSION_ERROR]: {\n    message: string;\n  };\n  [ColorErrorCode.STRING_VALUE_ASSIGNMENT]: {\n    attributes: string;\n    identifier: string;\n    colorType: string;\n  };\n  [ColorErrorCode.ATTRIBUTE_CHAIN_TOO_LONG]: {\n    attributes: string;\n    identifier: string;\n    colorType: string;\n  };\n  [ColorErrorCode.MISSING_SPEC]: {\n    identifier: string;\n    colorType: string;\n  };\n  [ColorErrorCode.MISSING_SCHEMA]: {\n    colorType: string;\n  };\n  [ColorErrorCode.MISSING_ATTRIBUTE_SCHEMA]: {\n    attribute: string;\n    identifier: string;\n    colorType: string;\n  };\n  [ColorErrorCode.INVALID_ATTRIBUTE_TYPE]: {\n    attributeType: string;\n    validTypes: string;\n  };\n  [ColorErrorCode.INVALID_ALPHA_VALUE]: {\n    alpha: number;\n  };\n}\n","export enum ConfigErrorCode {\n  NO_SPEC_FOUND = \"CFG_NO_SPEC_FOUND\",\n  NO_TYPE_FOUND = \"CFG_NO_TYPE_FOUND\",\n}\n\nexport interface ConfigErrorData {\n  [ConfigErrorCode.NO_SPEC_FOUND]: {\n    specName: string;\n  };\n  [ConfigErrorCode.NO_TYPE_FOUND]: {\n    typeName: string;\n  };\n}\n","import type { SerializedError } from \"../utils\";\n\nexport enum FunctionsErrorCode {\n  // Argument errors\n  EXPECTS_NUMBER_ARGUMENTS = \"FN_EXPECTS_NUMBER_ARGUMENTS\",\n  REQUIRES_MIN_ARGUMENTS = \"FN_REQUIRES_MIN_ARGUMENTS\",\n  EXPECTS_TYPE_ARGUMENT = \"FN_EXPECTS_TYPE_ARGUMENT\",\n\n  // Math errors\n  DIVISION_BY_ZERO = \"FN_DIVISION_BY_ZERO\",\n  ARGUMENT_OUT_OF_RANGE = \"FN_ARGUMENT_OUT_OF_RANGE\",\n  INVALID_BASE = \"FN_INVALID_BASE\",\n  PARSE_ERROR = \"FN_PARSE_ERROR\",\n\n  // Unit errors\n  UNIT_CONVERSION_FAILED = \"FN_UNIT_CONVERSION_FAILED\",\n\n  // Dynamic function errors\n  NO_CONFIG_AVAILABLE = \"FN_NO_CONFIG_AVAILABLE\",\n  FUNCTION_RETURNED_NULL = \"FN_FUNCTION_RETURNED_NULL\",\n  EXECUTION_ERROR = \"FN_EXECUTION_ERROR\",\n}\n\nexport interface FunctionsErrorData {\n  [FunctionsErrorCode.EXPECTS_NUMBER_ARGUMENTS]: {\n    functionName: string;\n  };\n  [FunctionsErrorCode.REQUIRES_MIN_ARGUMENTS]: {\n    functionName: string;\n    minArgs: number;\n  };\n  [FunctionsErrorCode.EXPECTS_TYPE_ARGUMENT]: {\n    functionName: string;\n    expectedType: string;\n    argumentPosition: string;\n  };\n  [FunctionsErrorCode.DIVISION_BY_ZERO]: {\n    functionName: string;\n  };\n  [FunctionsErrorCode.ARGUMENT_OUT_OF_RANGE]: {\n    functionName: string;\n    constraint: string;\n  };\n  [FunctionsErrorCode.INVALID_BASE]: {\n    functionName: string;\n    constraint: string;\n  };\n  [FunctionsErrorCode.PARSE_ERROR]: {\n    functionName: string;\n    value: string;\n    base: number;\n  };\n  [FunctionsErrorCode.UNIT_CONVERSION_FAILED]: {\n    functionName: string;\n    error: SerializedError;\n  };\n  [FunctionsErrorCode.NO_CONFIG_AVAILABLE]: {\n    functionName: string;\n  };\n  [FunctionsErrorCode.FUNCTION_RETURNED_NULL]: {\n    functionName: string;\n  };\n  [FunctionsErrorCode.EXECUTION_ERROR]: {\n    functionName: string;\n    error: SerializedError;\n  };\n}\n","export enum InterpreterErrorCode {\n  // Visit errors\n  UNKNOWN_NODE_TYPE = \"INT_UNKNOWN_NODE_TYPE\",\n\n  // Binary operation errors\n  ARITHMETIC_REQUIRES_NUMBER = \"INT_ARITHMETIC_REQUIRES_NUMBER\",\n  UNKNOWN_BINARY_OPERATOR = \"INT_UNKNOWN_BINARY_OPERATOR\",\n\n  // Unary operation errors\n  UNARY_MINUS_NULL = \"INT_UNARY_MINUS_NULL\",\n  UNARY_PLUS_NON_NUMBER = \"INT_UNARY_PLUS_NON_NUMBER\",\n  UNARY_NOT_NON_BOOLEAN = \"INT_UNARY_NOT_NON_BOOLEAN\",\n  UNKNOWN_UNARY_OPERATOR = \"INT_UNKNOWN_UNARY_OPERATOR\",\n\n  // Reference errors\n  UNKNOWN_REFERENCE = \"INT_UNKNOWN_REFERENCE\",\n  UNKNOWN_FUNCTION = \"INT_UNKNOWN_FUNCTION\",\n\n  // Variable errors\n  INVALID_VARIABLE_NAME = \"INT_INVALID_VARIABLE_NAME\",\n  VARIABLE_ALREADY_DEFINED = \"INT_VARIABLE_ALREADY_DEFINED\",\n  INVALID_VARIABLE_TYPE = \"INT_INVALID_VARIABLE_TYPE\",\n  INVALID_VALUE_FOR_VARIABLE = \"INT_INVALID_VALUE_FOR_VARIABLE\",\n  VARIABLE_NOT_FOUND = \"INT_VARIABLE_NOT_FOUND\",\n  ASSIGNMENT_VALUE_NULL = \"INT_ASSIGNMENT_VALUE_NULL\",\n  TYPE_MISMATCH = \"INT_TYPE_MISMATCH\",\n  CANNOT_ASSIGN_TYPE = \"INT_CANNOT_ASSIGN_TYPE\",\n\n  // Attribute/method errors\n  METHOD_RETURNED_NULL = \"INT_METHOD_RETURNED_NULL\",\n  METHOD_NOT_FOUND = \"INT_METHOD_NOT_FOUND\",\n  ATTRIBUTE_RETURNED_NULL = \"INT_ATTRIBUTE_RETURNED_NULL\",\n  ATTRIBUTE_NOT_FOUND = \"INT_ATTRIBUTE_NOT_FOUND\",\n  CANNOT_ACCESS_ATTRIBUTES = \"INT_CANNOT_ACCESS_ATTRIBUTES\",\n\n  // Control flow errors\n  MAX_ITERATIONS_EXCEEDED = \"INT_MAX_ITERATIONS_EXCEEDED\",\n  WHILE_CONDITION_NOT_BOOLEAN = \"INT_WHILE_CONDITION_NOT_BOOLEAN\",\n  IF_CONDITION_NOT_BOOLEAN = \"INT_IF_CONDITION_NOT_BOOLEAN\",\n  FOR_EACH_NOT_LIST = \"INT_FOR_EACH_NOT_LIST\",\n  FOR_EACH_VARIABLE_SHADOW = \"INT_FOR_EACH_VARIABLE_SHADOW\",\n  FOR_EACH_DUPLICATE_VARS = \"INT_FOR_EACH_DUPLICATE_VARS\",\n\n  // Template string errors\n  TEMPLATE_INVALID_TYPE = \"INT_TEMPLATE_INVALID_TYPE\",\n\n  // Unknown error\n  UNKNOWN_ERROR = \"INT_UNKNOWN_ERROR\",\n}\n\nexport interface InterpreterErrorData {\n  [InterpreterErrorCode.UNKNOWN_NODE_TYPE]: {\n    nodeType: string;\n  };\n  [InterpreterErrorCode.ARITHMETIC_REQUIRES_NUMBER]: {\n    operator: string;\n    leftType: string;\n    rightType: string;\n  };\n  [InterpreterErrorCode.UNKNOWN_BINARY_OPERATOR]: {\n    operator: string;\n    tokenType: string;\n  };\n  [InterpreterErrorCode.UNARY_MINUS_NULL]: {\n    symbolType: string;\n  };\n  [InterpreterErrorCode.UNARY_PLUS_NON_NUMBER]: {\n    value: string;\n  };\n  [InterpreterErrorCode.UNARY_NOT_NON_BOOLEAN]: {\n    value: string;\n  };\n  [InterpreterErrorCode.UNKNOWN_UNARY_OPERATOR]: {\n    operator: string;\n  };\n  [InterpreterErrorCode.UNKNOWN_REFERENCE]: {\n    reference: string;\n  };\n  [InterpreterErrorCode.UNKNOWN_FUNCTION]: {\n    functionName: string;\n  };\n  [InterpreterErrorCode.INVALID_VARIABLE_NAME]: {\n    name: string;\n  };\n  [InterpreterErrorCode.VARIABLE_ALREADY_DEFINED]: {\n    name: string;\n  };\n  [InterpreterErrorCode.INVALID_VARIABLE_TYPE]: {\n    typeName: string;\n    validTypes: string;\n  };\n  [InterpreterErrorCode.INVALID_VALUE_FOR_VARIABLE]: {\n    value: string;\n    type: string;\n    name: string;\n  };\n  [InterpreterErrorCode.VARIABLE_NOT_FOUND]: {\n    name: string;\n  };\n  [InterpreterErrorCode.ASSIGNMENT_VALUE_NULL]: {\n    identifier: string;\n  };\n  [InterpreterErrorCode.TYPE_MISMATCH]: {\n    value: string;\n    foundType: string;\n    expectedType: string;\n    identifier: string;\n  };\n  [InterpreterErrorCode.CANNOT_ASSIGN_TYPE]: {\n    valueType: string;\n    identifier: string;\n    variableType: string;\n  };\n  [InterpreterErrorCode.METHOD_RETURNED_NULL]: {\n    methodName: string;\n  };\n  [InterpreterErrorCode.METHOD_NOT_FOUND]: {\n    methodName: string;\n    value: string;\n    type: string;\n  };\n  [InterpreterErrorCode.ATTRIBUTE_RETURNED_NULL]: {\n    attributeName: string;\n  };\n  [InterpreterErrorCode.ATTRIBUTE_NOT_FOUND]: {\n    attributeName: string;\n    value: string;\n    type: string;\n  };\n  [InterpreterErrorCode.CANNOT_ACCESS_ATTRIBUTES]: {\n    type: string;\n  };\n  [InterpreterErrorCode.MAX_ITERATIONS_EXCEEDED]: Record<string, never>;\n  [InterpreterErrorCode.WHILE_CONDITION_NOT_BOOLEAN]: Record<string, never>;\n  [InterpreterErrorCode.IF_CONDITION_NOT_BOOLEAN]: Record<string, never>;\n  [InterpreterErrorCode.FOR_EACH_NOT_LIST]: {\n    actualType: string;\n  };\n  [InterpreterErrorCode.FOR_EACH_VARIABLE_SHADOW]: {\n    name: string;\n  };\n  [InterpreterErrorCode.FOR_EACH_DUPLICATE_VARS]: {\n    name: string;\n  };\n  [InterpreterErrorCode.TEMPLATE_INVALID_TYPE]: {\n    valueType: string;\n  };\n  [InterpreterErrorCode.UNKNOWN_ERROR]: Record<string, never>;\n}\n","export enum LexerErrorCode {\n  INVALID_CHARACTER = \"LEXER_INVALID_CHARACTER\",\n  UNTERMINATED_STRING = \"LEXER_UNTERMINATED_STRING\",\n  UNTERMINATED_REFERENCE = \"LEXER_UNTERMINATED_REFERENCE\",\n  EMPTY_VARIABLE_NAME = \"LEXER_EMPTY_VARIABLE_NAME\",\n  INVALID_HEX_COLOR_FORMAT = \"LEXER_INVALID_HEX_COLOR_FORMAT\",\n  EXPECTED_CHARACTER = \"LEXER_EXPECTED_CHARACTER\",\n  MULTIPLE_DECIMAL_POINTS = \"LEXER_MULTIPLE_DECIMAL_POINTS\",\n  UNTERMINATED_TEMPLATE_STRING = \"LEXER_UNTERMINATED_TEMPLATE_STRING\",\n}\n\nexport interface LexerErrorData {\n  [LexerErrorCode.INVALID_CHARACTER]: {\n    char: string;\n    position: number;\n    description?: string;\n  };\n  [LexerErrorCode.UNTERMINATED_STRING]: {\n    quoteType: string;\n  };\n  [LexerErrorCode.UNTERMINATED_REFERENCE]: Record<string, never>;\n  [LexerErrorCode.EMPTY_VARIABLE_NAME]: Record<string, never>;\n  [LexerErrorCode.INVALID_HEX_COLOR_FORMAT]: {\n    value: string;\n    expectedLength: string;\n  };\n  [LexerErrorCode.EXPECTED_CHARACTER]: {\n    expected: string;\n    got: string | null;\n  };\n  [LexerErrorCode.MULTIPLE_DECIMAL_POINTS]: {\n    value: string;\n  };\n  [LexerErrorCode.UNTERMINATED_TEMPLATE_STRING]: Record<string, never>;\n}\n","export enum OperationsErrorCode {\n  UNSUPPORTED_OPERAND_TYPE = \"OP_UNSUPPORTED_OPERAND_TYPE\",\n  CANNOT_MIX_UNITS = \"OP_CANNOT_MIX_UNITS\",\n  INCOMPATIBLE_TYPES = \"OP_INCOMPATIBLE_TYPES\",\n  CANNOT_COMPARE_UNITS = \"OP_CANNOT_COMPARE_UNITS\",\n  ORDERING_WITH_NULL = \"OP_ORDERING_WITH_NULL\",\n  LOGICAL_REQUIRES_BOOLEAN = \"OP_LOGICAL_REQUIRES_BOOLEAN\",\n  DIVISION_BY_ZERO = \"OP_DIVISION_BY_ZERO\",\n  UNIT_EXPONENT_NOT_SUPPORTED = \"OP_UNIT_EXPONENT_NOT_SUPPORTED\",\n}\n\nexport interface OperationsErrorData {\n  [OperationsErrorCode.UNSUPPORTED_OPERAND_TYPE]: {\n    type: string;\n  };\n  [OperationsErrorCode.CANNOT_MIX_UNITS]: {\n    units: string;\n  };\n  [OperationsErrorCode.INCOMPATIBLE_TYPES]: {\n    typeA: string;\n    typeB: string;\n  };\n  [OperationsErrorCode.CANNOT_COMPARE_UNITS]: {\n    unitA: string;\n    unitB: string;\n  };\n  [OperationsErrorCode.ORDERING_WITH_NULL]: Record<string, never>;\n  [OperationsErrorCode.LOGICAL_REQUIRES_BOOLEAN]: {\n    operator: string;\n  };\n  [OperationsErrorCode.DIVISION_BY_ZERO]: Record<string, never>;\n  [OperationsErrorCode.UNIT_EXPONENT_NOT_SUPPORTED]: {\n    unitA: string;\n    unitB: string;\n  };\n}\n","export enum ParserErrorCode {\n  UNEXPECTED_TOKEN = \"PARSER_UNEXPECTED_TOKEN\",\n  EXPECTED_TOKEN_TYPE = \"PARSER_EXPECTED_TOKEN_TYPE\",\n  UNEXPECTED_END = \"PARSER_UNEXPECTED_END\",\n  CONDITION_MUST_BE_BOOLEAN = \"PARSER_CONDITION_MUST_BE_BOOLEAN\",\n  INVALID_SYNTAX = \"PARSER_INVALID_SYNTAX\",\n  TOLERANT_REQUIRES_INLINE = \"PARSER_TOLERANT_REQUIRES_INLINE\",\n  UNALLOWED_INLINE_SYNTAX = \"PARSER_UNALLOWED_INLINE_SYNTAX\",\n}\n\nexport interface ParserErrorData {\n  [ParserErrorCode.UNEXPECTED_TOKEN]: {\n    token: string;\n  };\n  [ParserErrorCode.EXPECTED_TOKEN_TYPE]: {\n    expected: string;\n    got: string;\n  };\n  [ParserErrorCode.CONDITION_MUST_BE_BOOLEAN]: Record<string, never>;\n  [ParserErrorCode.INVALID_SYNTAX]: {\n    message?: string;\n  };\n  [ParserErrorCode.UNEXPECTED_END]: Record<string, never>;\n  [ParserErrorCode.TOLERANT_REQUIRES_INLINE]: Record<string, never>;\n  [ParserErrorCode.UNALLOWED_INLINE_SYNTAX]: {\n    originalError: string;\n  };\n}\n","export enum ProcessorErrorCode {\n  TOKEN_NOT_FOUND = \"PROC_TOKEN_NOT_FOUND\",\n  TOKEN_ALREADY_EXISTS = \"PROC_TOKEN_ALREADY_EXISTS\",\n  CIRCULAR_DEPENDENCY = \"PROC_CIRCULAR_DEPENDENCY\",\n  SUB_FIELD_NOT_RESOLVED = \"PROC_SUB_FIELD_NOT_RESOLVED\",\n  DEPENDENCY_ERROR = \"PROC_DEPENDENCY_ERROR\",\n  NO_THEMES_FOUND = \"PROC_NO_THEMES_FOUND\",\n  THEME_NOT_FOUND = \"PROC_THEME_NOT_FOUND\",\n  TOKEN_SET_NOT_FOUND = \"PROC_TOKEN_SET_NOT_FOUND\",\n  TOKEN_SET_INVALID = \"PROC_TOKEN_SET_INVALID\",\n  NO_SETS_TO_PROCESS = \"PROC_NO_SETS_TO_PROCESS\",\n  MULTIPLE_SETS_NO_SELECTION = \"PROC_MULTIPLE_SETS_NO_SELECTION\",\n  UNKNOWN_PARSING_ERROR = \"PROC_UNKNOWN_PARSING_ERROR\",\n  RESOLVER_NOT_INITIALIZED = \"PROC_RESOLVER_NOT_INITIALIZED\",\n}\n\nexport interface ProcessorErrorData {\n  [ProcessorErrorCode.TOKEN_NOT_FOUND]: {\n    tokenName: string;\n  };\n  [ProcessorErrorCode.TOKEN_ALREADY_EXISTS]: {\n    tokenName: string;\n  };\n  [ProcessorErrorCode.CIRCULAR_DEPENDENCY]: {\n    tokens: string | string[];\n  };\n  [ProcessorErrorCode.SUB_FIELD_NOT_RESOLVED]: {\n    fieldPath: string;\n  };\n  [ProcessorErrorCode.DEPENDENCY_ERROR]: {\n    tokenName: string;\n    chain: string;\n    rootCause: string;\n  };\n  [ProcessorErrorCode.NO_THEMES_FOUND]: {\n    themeName: string;\n  };\n  [ProcessorErrorCode.THEME_NOT_FOUND]: {\n    themeName: string;\n    availableThemes: string[];\n  };\n  [ProcessorErrorCode.TOKEN_SET_NOT_FOUND]: {\n    setName: string;\n  };\n  [ProcessorErrorCode.TOKEN_SET_INVALID]: {\n    setName: string;\n  };\n  [ProcessorErrorCode.NO_SETS_TO_PROCESS]: Record<string, never>;\n  [ProcessorErrorCode.MULTIPLE_SETS_NO_SELECTION]: {\n    setNames: string[];\n  };\n  [ProcessorErrorCode.UNKNOWN_PARSING_ERROR]: {\n    error?: string;\n  };\n  [ProcessorErrorCode.RESOLVER_NOT_INITIALIZED]: Record<string, never>;\n}\n","export enum SymbolsErrorCode {\n  // Type errors\n  VALUE_MUST_BE_TYPE = \"SYM_VALUE_MUST_BE_TYPE\",\n  VALUE_IS_NULL = \"SYM_VALUE_IS_NULL\",\n\n  // Method errors\n  METHOD_NOT_FOUND = \"SYM_METHOD_NOT_FOUND\",\n  MISSING_REQUIRED_ARGUMENT = \"SYM_MISSING_REQUIRED_ARGUMENT\",\n  ATTRIBUTE_NOT_FOUND = \"SYM_ATTRIBUTE_NOT_FOUND\",\n  CANNOT_SET_ATTRIBUTE = \"SYM_CANNOT_SET_ATTRIBUTE\",\n\n  // Number errors\n  INVALID_RADIX = \"SYM_INVALID_RADIX\",\n  RADIX_CONVERSION_ERROR = \"SYM_RADIX_CONVERSION_ERROR\",\n\n  // String errors\n  CANNOT_CONCATENATE = \"SYM_CANNOT_CONCATENATE\",\n  CANNOT_SPLIT = \"SYM_CANNOT_SPLIT\",\n\n  // List errors\n  INDEX_OUT_OF_RANGE = \"SYM_INDEX_OUT_OF_RANGE\",\n\n  // Dictionary errors\n  KEY_MUST_BE_STRING = \"SYM_KEY_MUST_BE_STRING\",\n\n  // Token errors\n  CANNOT_OPERATION_ON_TOKEN_TYPE = \"SYM_CANNOT_OPERATION_ON_TOKEN_TYPE\",\n\n  // Color errors\n  INVALID_HEX_COLOR = \"SYM_INVALID_HEX_COLOR\",\n  COLOR_MANAGER_NOT_AVAILABLE = \"SYM_COLOR_MANAGER_NOT_AVAILABLE\",\n  INVALID_COLOR_VALUE = \"SYM_INVALID_COLOR_VALUE\",\n}\n\nexport interface SymbolsErrorData {\n  [SymbolsErrorCode.VALUE_MUST_BE_TYPE]: {\n    expectedType: string;\n    actualType: string;\n  };\n  [SymbolsErrorCode.VALUE_IS_NULL]: {\n    expectedType: string;\n  };\n  [SymbolsErrorCode.METHOD_NOT_FOUND]: {\n    methodName: string;\n    type: string;\n  };\n  [SymbolsErrorCode.MISSING_REQUIRED_ARGUMENT]: {\n    argumentName: string;\n    methodName: string;\n  };\n  [SymbolsErrorCode.ATTRIBUTE_NOT_FOUND]: {\n    attributeName: string;\n    type: string;\n  };\n  [SymbolsErrorCode.CANNOT_SET_ATTRIBUTE]: {\n    attributeName: string;\n    type: string;\n  };\n  [SymbolsErrorCode.INVALID_RADIX]: {\n    radix: number;\n  };\n  [SymbolsErrorCode.RADIX_CONVERSION_ERROR]: {\n    base: number;\n    error: string;\n  };\n  [SymbolsErrorCode.CANNOT_CONCATENATE]: {\n    type: string;\n  };\n  [SymbolsErrorCode.CANNOT_SPLIT]: {\n    type: string;\n  };\n  [SymbolsErrorCode.INDEX_OUT_OF_RANGE]: {\n    operation: string;\n  };\n  [SymbolsErrorCode.KEY_MUST_BE_STRING]: {\n    type: string;\n  };\n  [SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE]: {\n    operation: string;\n    valueType: string;\n  };\n  [SymbolsErrorCode.INVALID_HEX_COLOR]: {\n    value: string;\n  };\n  [SymbolsErrorCode.COLOR_MANAGER_NOT_AVAILABLE]: Record<string, never>;\n  [SymbolsErrorCode.INVALID_COLOR_VALUE]: {\n    value: string;\n    type: string;\n  };\n}\n","import type { SerializedError } from \"../utils\";\n\nexport enum UnitErrorCode {\n  // Conversion errors\n  CONVERSION_CRASHED = \"UNIT_CONVERSION_CRASHED\",\n  SOURCE_URI_NOT_FOUND = \"UNIT_SOURCE_URI_NOT_FOUND\",\n  RELATIVE_REQUIRES_TWO_NUMBERS = \"UNIT_RELATIVE_REQUIRES_TWO_NUMBERS\",\n  NO_TO_ABSOLUTE_SCRIPT = \"UNIT_NO_TO_ABSOLUTE_SCRIPT\",\n  TO_ABSOLUTE_MUST_RETURN_NUMBER = \"UNIT_TO_ABSOLUTE_MUST_RETURN_NUMBER\",\n  CANNOT_CONVERT_MULTIPLE_RELATIVE = \"UNIT_CANNOT_CONVERT_MULTIPLE_RELATIVE\",\n  NO_VALID_CONVERSION_PATH = \"UNIT_NO_VALID_CONVERSION_PATH\",\n}\n\nexport interface UnitErrorData {\n  [UnitErrorCode.CONVERSION_CRASHED]: {\n    error: SerializedError;\n  };\n  [UnitErrorCode.SOURCE_URI_NOT_FOUND]: {\n    unit: string;\n  };\n  [UnitErrorCode.RELATIVE_REQUIRES_TWO_NUMBERS]: Record<string, never>;\n  [UnitErrorCode.NO_TO_ABSOLUTE_SCRIPT]: {\n    unit: string;\n  };\n  [UnitErrorCode.TO_ABSOLUTE_MUST_RETURN_NUMBER]: Record<string, never>;\n  [UnitErrorCode.CANNOT_CONVERT_MULTIPLE_RELATIVE]: Record<string, never>;\n  [UnitErrorCode.NO_VALID_CONVERSION_PATH]: Record<string, never>;\n}\n","import { ColorErrorCode } from \"../codes/color\";\nimport { ConfigErrorCode } from \"../codes/config\";\nimport { FunctionsErrorCode } from \"../codes/functions\";\nimport { InterpreterErrorCode } from \"../codes/interpreter\";\nimport { LexerErrorCode } from \"../codes/lexer\";\nimport { OperationsErrorCode } from \"../codes/operations\";\nimport { ParserErrorCode } from \"../codes/parser\";\nimport { ProcessorErrorCode } from \"../codes/processor\";\nimport { SymbolsErrorCode } from \"../codes/symbols\";\nimport { UnitErrorCode } from \"../codes/unit\";\nimport type { MessageMap } from \"./types\";\n\nexport const messages: MessageMap = {\n  // Lexer errors\n  [LexerErrorCode.INVALID_CHARACTER]: (data) =>\n    `Invalid character '${data.char}' at position ${data.position}.${data.description ? ` ${data.description}` : \"\"}`,\n\n  [LexerErrorCode.UNTERMINATED_STRING]: (data) =>\n    `Unterminated string, missing '${data.quoteType}'.`,\n\n  [LexerErrorCode.UNTERMINATED_REFERENCE]: \"Unterminated reference, missing '}'.\",\n\n  [LexerErrorCode.EMPTY_VARIABLE_NAME]: \"Empty variable name.\",\n\n  [LexerErrorCode.INVALID_HEX_COLOR_FORMAT]: (data) =>\n    `Invalid hex color format: ${data.value}. Length should be ${data.expectedLength}.`,\n\n  [LexerErrorCode.EXPECTED_CHARACTER]: (data) =>\n    `Expected character ${data.expected} got ${data.got}`,\n\n  [LexerErrorCode.MULTIPLE_DECIMAL_POINTS]: (data) =>\n    `Invalid number '${data.value}': multiple decimal points.`,\n\n  // Parser errors\n  [ParserErrorCode.UNEXPECTED_TOKEN]: (data) => `Unexpected token: ${data.token}`,\n\n  [ParserErrorCode.EXPECTED_TOKEN_TYPE]: (data) =>\n    `Expected token type ${data.expected} but got ${data.got}`,\n\n  [ParserErrorCode.CONDITION_MUST_BE_BOOLEAN]: \"If/elif condition must be a boolean\",\n\n  [ParserErrorCode.INVALID_SYNTAX]: (data) =>\n    data?.message ? String(data.message) : \"Invalid syntax\",\n\n  [ParserErrorCode.UNEXPECTED_END]: \"Unexpected end of input\",\n\n  [ParserErrorCode.TOLERANT_REQUIRES_INLINE]:\n    \"Tolerant mode only supports inline expressions. Use parse(true) for tolerant parsing.\",\n\n  [ParserErrorCode.UNALLOWED_INLINE_SYNTAX]: (data) =>\n    `Syntax not allowed in inline mode: ${data.originalError}`,\n\n  // Interpreter errors\n  [InterpreterErrorCode.UNKNOWN_NODE_TYPE]: (data) =>\n    `No visit method for AST node type: ${data.nodeType}`,\n\n  [InterpreterErrorCode.ARITHMETIC_REQUIRES_NUMBER]: (data) =>\n    `Arithmetic operator ${data.operator} requires Number or NumberWithUnit operands, got ${data.leftType} and ${data.rightType}.`,\n\n  [InterpreterErrorCode.UNKNOWN_BINARY_OPERATOR]: (data) =>\n    `Unknown binary operator: ${data.operator} or type ${data.tokenType}`,\n\n  [InterpreterErrorCode.UNARY_MINUS_NULL]: (data) =>\n    `Cannot apply unary '-' to a null ${data.symbolType}.`,\n\n  [InterpreterErrorCode.UNARY_PLUS_NON_NUMBER]: (data) =>\n    `Cannot apply unary '+' to non-number value: ${data.value}`,\n\n  [InterpreterErrorCode.UNARY_NOT_NON_BOOLEAN]: (data) =>\n    `Cannot apply NOT to non-boolean value: ${data.value}.`,\n\n  [InterpreterErrorCode.UNKNOWN_UNARY_OPERATOR]: (data) =>\n    `Unknown unary operator type: ${data.operator}`,\n\n  [InterpreterErrorCode.UNKNOWN_REFERENCE]: (data) => `Unknown reference: ${data.reference}`,\n\n  [InterpreterErrorCode.UNKNOWN_FUNCTION]: (data) => `Unknown function: '${data.functionName}'`,\n\n  [InterpreterErrorCode.INVALID_VARIABLE_NAME]: (data) =>\n    `Invalid variable name '${data.name}'. Use a simple name (and underscores) without '.', '-', '['.`,\n\n  [InterpreterErrorCode.VARIABLE_ALREADY_DEFINED]: (data) =>\n    `Variable '${data.name}' already defined. Use a different name.`,\n\n  [InterpreterErrorCode.INVALID_VARIABLE_TYPE]: (data) =>\n    `Invalid variable type '${data.typeName}'. Use a valid type. (${data.validTypes})`,\n\n  [InterpreterErrorCode.INVALID_VALUE_FOR_VARIABLE]: (data) =>\n    `Invalid value '${data.value}' ('${data.type}') for variable '${data.name}'. Use a valid value.`,\n\n  [InterpreterErrorCode.VARIABLE_NOT_FOUND]: (data) => `Variable '${data.name}' not found.`,\n\n  [InterpreterErrorCode.ASSIGNMENT_VALUE_NULL]: (data) =>\n    `Assignment value for '${data.identifier}' is null.`,\n\n  [InterpreterErrorCode.TYPE_MISMATCH]: (data) =>\n    `Invalid value '${data.value}' (Found '${data.foundType}', expected '${data.expectedType}') for variable '${data.identifier}'. Use a valid value.`,\n\n  [InterpreterErrorCode.CANNOT_ASSIGN_TYPE]: (data) =>\n    `Cannot assign ${data.valueType} to variable '${data.identifier}' of type ${data.variableType}.`,\n\n  [InterpreterErrorCode.METHOD_RETURNED_NULL]: (data) =>\n    `Method '${data.methodName}' returned null or undefined`,\n\n  [InterpreterErrorCode.METHOD_NOT_FOUND]: (data) =>\n    `Method '${data.methodName}' not found on '${data.value}' (${data.type})`,\n\n  [InterpreterErrorCode.ATTRIBUTE_RETURNED_NULL]: (data) =>\n    `Attribute '${data.attributeName}' returned null or undefined`,\n\n  [InterpreterErrorCode.ATTRIBUTE_NOT_FOUND]: (data) =>\n    `Attribute '${data.attributeName}' not found on '${data.value}' (${data.type})`,\n\n  [InterpreterErrorCode.CANNOT_ACCESS_ATTRIBUTES]: (data) =>\n    `Cannot access attributes on ${data.type}`,\n\n  [InterpreterErrorCode.MAX_ITERATIONS_EXCEEDED]: \"Max iterations exceeded in while loop.\",\n\n  [InterpreterErrorCode.WHILE_CONDITION_NOT_BOOLEAN]: \"While loop condition must be a boolean.\",\n\n  [InterpreterErrorCode.IF_CONDITION_NOT_BOOLEAN]: \"If/elif condition must be a boolean.\",\n\n  [InterpreterErrorCode.FOR_EACH_NOT_LIST]: (data) =>\n    `for...in requires a List, got ${data.actualType}.`,\n\n  [InterpreterErrorCode.FOR_EACH_VARIABLE_SHADOW]: (data) =>\n    `for...in variable '${data.name}' shadows an existing variable in this scope.`,\n\n  [InterpreterErrorCode.FOR_EACH_DUPLICATE_VARS]: (data) =>\n    `for...in item and index variables must have different names, both are '${data.name}'.`,\n\n  [InterpreterErrorCode.UNKNOWN_ERROR]: \"An unknown error occurred during interpretation.\",\n\n  // Operations errors\n  [OperationsErrorCode.UNSUPPORTED_OPERAND_TYPE]: (data) =>\n    `Unsupported operand type for unit decomposition: ${data.type}`,\n\n  [OperationsErrorCode.CANNOT_MIX_UNITS]: (data) => `Cannot mix units: ${data.units.join(\", \")}`,\n\n  [OperationsErrorCode.INCOMPATIBLE_TYPES]: (data) =>\n    `Cannot compare ${data.typeA} with ${data.typeB}. Incompatible types.`,\n\n  [OperationsErrorCode.CANNOT_COMPARE_UNITS]: (data) =>\n    `Cannot compare NumberWithUnit of different units: ${data.unitA} and ${data.unitB}`,\n\n  [OperationsErrorCode.ORDERING_WITH_NULL]: \"Cannot perform ordering comparison with null values.\",\n\n  [OperationsErrorCode.LOGICAL_REQUIRES_BOOLEAN]: (data) =>\n    `${data.operator} operator requires boolean operands.`,\n\n  [OperationsErrorCode.DIVISION_BY_ZERO]: \"Division by zero.\",\n\n  [OperationsErrorCode.UNIT_EXPONENT_NOT_SUPPORTED]: (data) =>\n    `Cannot raise ${data.unitA} to the power of ${data.unitB}. Unit exponents are not supported.`,\n\n  // Symbols errors\n  [SymbolsErrorCode.VALUE_MUST_BE_TYPE]: (data) =>\n    `Value must be ${data.expectedType}, got ${data.actualType}.`,\n\n  [SymbolsErrorCode.VALUE_IS_NULL]: (data) => `Value must be ${data.expectedType}, got null.`,\n\n  [SymbolsErrorCode.METHOD_NOT_FOUND]: (data) =>\n    `Method '${data.methodName}' not found or invalid arguments on type '${data.type}'.`,\n\n  [SymbolsErrorCode.MISSING_REQUIRED_ARGUMENT]: (data) =>\n    `Missing required argument '${data.argumentName}' for method '${data.methodName}'.`,\n\n  [SymbolsErrorCode.ATTRIBUTE_NOT_FOUND]: (data) =>\n    `Attribute '${data.attributeName}' not found on ${data.type}.`,\n\n  [SymbolsErrorCode.CANNOT_SET_ATTRIBUTE]: (data) =>\n    `Cannot set attribute '${data.attributeName}' on type '${data.type}'.`,\n\n  [SymbolsErrorCode.INVALID_RADIX]: (data) =>\n    `Invalid radix: ${data.radix}. Must be between 2 and 36.`,\n\n  [SymbolsErrorCode.RADIX_CONVERSION_ERROR]: (data) =>\n    `Error converting to base ${data.base}: ${data.error}.`,\n\n  [SymbolsErrorCode.CANNOT_CONCATENATE]: (data) => `Cannot concatenate ${data.type} to String.`,\n\n  [SymbolsErrorCode.CANNOT_SPLIT]: (data) => `Cannot split String by ${data.type}.`,\n\n  [SymbolsErrorCode.INDEX_OUT_OF_RANGE]: (data) => `Index out of range for ${data.operation}.`,\n\n  [SymbolsErrorCode.KEY_MUST_BE_STRING]: (data) =>\n    `Key must be a StringSymbol or string, got ${data.type}.`,\n\n  [SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE]: (data) =>\n    `Cannot ${data.operation} Token with ${data.valueType} value.`,\n\n  [SymbolsErrorCode.INVALID_HEX_COLOR]: (data) => `Invalid hex color format: ${data.value}`,\n\n  [SymbolsErrorCode.COLOR_MANAGER_NOT_AVAILABLE]: \"ColorManager not available\",\n\n  [SymbolsErrorCode.INVALID_COLOR_VALUE]: (data) =>\n    `Value ${data.value} must be string, attributes record, or null, got ${data.type}.`,\n\n  // Functions errors\n  [FunctionsErrorCode.EXPECTS_NUMBER_ARGUMENTS]: (data) =>\n    `${data.functionName}() expects number arguments.`,\n\n  [FunctionsErrorCode.REQUIRES_MIN_ARGUMENTS]: (data) =>\n    `${data.functionName}() requires at least ${data.minArgs} argument${data.minArgs === 1 ? \"\" : \"s\"}.`,\n\n  [FunctionsErrorCode.EXPECTS_TYPE_ARGUMENT]: (data) =>\n    `${data.functionName}() expects ${data.expectedType} as ${data.argumentPosition} argument.`,\n\n  [FunctionsErrorCode.DIVISION_BY_ZERO]: (data) => `${data.functionName}() division by zero.`,\n\n  [FunctionsErrorCode.ARGUMENT_OUT_OF_RANGE]: (data) =>\n    `${data.functionName}() argument must be ${data.constraint}.`,\n\n  [FunctionsErrorCode.INVALID_BASE]: (data) =>\n    `${data.functionName}() base must be ${data.constraint}.`,\n\n  [FunctionsErrorCode.PARSE_ERROR]: (data) =>\n    `Invalid string for ${data.functionName}: \"${data.value}\" with base ${data.base}.`,\n\n  [FunctionsErrorCode.UNIT_CONVERSION_FAILED]: (data) =>\n    `${data.functionName || \"function\"}() unit conversion failed${data.error ? `: ${data.error}` : \"\"}`,\n\n  [FunctionsErrorCode.NO_CONFIG_AVAILABLE]: (data) =>\n    `No config available for dynamic function '${data.functionName || \"unknown\"}'`,\n\n  [FunctionsErrorCode.FUNCTION_RETURNED_NULL]: (data) =>\n    `Dynamic function '${data.functionName || \"unknown\"}' returned null`,\n\n  [FunctionsErrorCode.EXECUTION_ERROR]: (data) =>\n    `Error executing dynamic function '${data.functionName || \"unknown\"}'${data.error ? `: ${data.error}` : \"\"}`,\n\n  // Config errors\n  [ConfigErrorCode.NO_SPEC_FOUND]: (data) => `No spec found for ${data.specName}`,\n\n  [ConfigErrorCode.NO_TYPE_FOUND]: (data) => `No type found for ${data.typeName}`,\n\n  // Processor errors\n  [ProcessorErrorCode.TOKEN_NOT_FOUND]: (data) => `Token '${data.tokenName}' not found`,\n\n  [ProcessorErrorCode.TOKEN_ALREADY_EXISTS]: (data) => `Token '${data.tokenName}' already exists.`,\n\n  [ProcessorErrorCode.CIRCULAR_DEPENDENCY]: (data) =>\n    `Circular dependency detected: ${Array.isArray(data.tokens) ? data.tokens.join(\", \") : data.tokens}`,\n\n  [ProcessorErrorCode.SUB_FIELD_NOT_RESOLVED]: (data) =>\n    `Sub-field '${data.fieldPath}' not resolved`,\n\n  [ProcessorErrorCode.DEPENDENCY_ERROR]: (data) =>\n    `Token '${data.tokenName}' failed due to dependency error: ${data.chain}\\nRoot cause: ${data.rootCause}`,\n\n  [ProcessorErrorCode.NO_THEMES_FOUND]: (data) => `No themes found for theme \"${data.themeName}\"`,\n\n  [ProcessorErrorCode.THEME_NOT_FOUND]: (data) =>\n    `Theme \"${data.themeName}\" not found. Available: ${data.availableThemes.join(\", \")}`,\n\n  [ProcessorErrorCode.TOKEN_SET_NOT_FOUND]: (data) => `Token set \"${data.setName}\" not found`,\n\n  [ProcessorErrorCode.TOKEN_SET_INVALID]: (data) => `Token set \"${data.setName}\" is not an object`,\n\n  [ProcessorErrorCode.NO_SETS_TO_PROCESS]: \"No sets to process\",\n\n  [ProcessorErrorCode.MULTIPLE_SETS_NO_SELECTION]: (data) =>\n    `Multiple sets found (${data.setNames.join(\", \")}) - specify activeSets or activeTheme`,\n\n  // Color errors\n  [ColorErrorCode.INITIALIZER_CRASHED]: \"Initializer crashed!\",\n\n  [ColorErrorCode.INITIALIZER_CONSTRUCT_FAILED]: (data) =>\n    `Could not construct initializer from schema${data.error ? `: ${data.error}` : \"\"}`,\n\n  [ColorErrorCode.INITIALIZER_NOT_FOUND]: (data) =>\n    `No initializer found for keyword '${data.keyword}'`,\n\n  [ColorErrorCode.CONVERSION_TARGET_NOT_FOUND]: (data) =>\n    `Conversion function crashed! No target spec found for ${data.targetUri}`,\n\n  [ColorErrorCode.SOURCE_URI_NOT_FOUND]: (data) =>\n    `No source URI found for color type '${data.colorType}'`,\n\n  [ColorErrorCode.TARGET_URI_NOT_FOUND]: (data) =>\n    `No target URI found for color type '${data.colorType}'`,\n\n  [ColorErrorCode.CONVERSION_ERROR]: (data) =>\n    data.message ? String(data.message) : \"Color conversion failed\",\n\n  [ColorErrorCode.STRING_VALUE_ASSIGNMENT]: (data) =>\n    `Cannot set attributes '${data.attributes}' for variable ${data.identifier} on Color type ${data.colorType}.`,\n\n  [ColorErrorCode.ATTRIBUTE_CHAIN_TOO_LONG]: (data) =>\n    `Attributes chain '${data.attributes}' for variable ${data.identifier} on Color type ${data.colorType} may not exceed one element.`,\n\n  [ColorErrorCode.MISSING_SPEC]: (data) =>\n    `No spec ${data.colorType} defined for variable ${data.identifier} on Color type ${data.colorType}.`,\n\n  [ColorErrorCode.MISSING_SCHEMA]: (data) => `No schema defined for Color type ${data.colorType}.`,\n\n  [ColorErrorCode.MISSING_ATTRIBUTE_SCHEMA]: (data) =>\n    `No schema found for key ${data.attribute} for variable ${data.identifier} on Color type ${data.colorType}.`,\n\n  [ColorErrorCode.INVALID_ATTRIBUTE_TYPE]: (data) =>\n    `Invalid attribute type '${data.attributeType}'. Use a valid type. (${data.validTypes})`,\n\n  [ColorErrorCode.INVALID_ALPHA_VALUE]: (data) =>\n    `Invalid alpha value '${data.alpha}'. Alpha must be between 0 and 1.`,\n\n  // Unit errors\n  [UnitErrorCode.CONVERSION_CRASHED]: (data) =>\n    `Conversion function crashed!${data.error ? ` ${data.error}` : \"\"}`,\n\n  [UnitErrorCode.SOURCE_URI_NOT_FOUND]: (data) => `No source URI found for unit '${data.unit}'`,\n\n  [UnitErrorCode.RELATIVE_REQUIRES_TWO_NUMBERS]: \"Relative conversion requires exactly 2 numbers\",\n\n  [UnitErrorCode.NO_TO_ABSOLUTE_SCRIPT]: (data) =>\n    `No to_absolute script found for relative unit '${data.unit}'`,\n\n  [UnitErrorCode.TO_ABSOLUTE_MUST_RETURN_NUMBER]: \"to_absolute script must return a number\",\n\n  [UnitErrorCode.CANNOT_CONVERT_MULTIPLE_RELATIVE]:\n    \"Cannot convert multiple relative units to a common format.\",\n\n  [UnitErrorCode.NO_VALID_CONVERSION_PATH]:\n    \"No valid conversion paths found for the provided inputs.\",\n};\n","import type { AllErrorCodes } from \"../base\";\nimport { messages } from \"./en\";\n\nexport const getMessage = (\n  code: AllErrorCodes | string,\n  data?: Record<string, unknown>,\n): string => {\n  const template = messages[code];\n  if (!template) {\n    return `Unknown error: ${code}`;\n  }\n  if (typeof template === \"function\") {\n    return template(data || {});\n  }\n  return template;\n};\n\nexport const isValidErrorCode = (code: string): code is AllErrorCodes => {\n  return code in messages;\n};\n\nexport type { MessageFunction, MessageMap, MessageTemplate } from \"./types\";\n","import type { Token } from \"@src/types\";\nimport type { ColorErrorCode } from \"./codes/color\";\nimport type { ConfigErrorCode } from \"./codes/config\";\nimport type { FunctionsErrorCode } from \"./codes/functions\";\nimport type { InterpreterErrorCode } from \"./codes/interpreter\";\nimport type { LexerErrorCode } from \"./codes/lexer\";\nimport type { OperationsErrorCode } from \"./codes/operations\";\nimport type { ParserErrorCode } from \"./codes/parser\";\nimport type { ProcessorErrorCode } from \"./codes/processor\";\nimport type { SymbolsErrorCode } from \"./codes/symbols\";\nimport type { UnitErrorCode } from \"./codes/unit\";\nimport { getMessage } from \"./messages\";\n\nexport interface ErrorOptions {\n  token?: Token;\n  line?: number;\n  data?: Record<string, unknown>;\n  cause?: unknown;\n}\n\nexport type AllErrorCodes =\n  | LexerErrorCode\n  | ParserErrorCode\n  | InterpreterErrorCode\n  | OperationsErrorCode\n  | SymbolsErrorCode\n  | FunctionsErrorCode\n  | ConfigErrorCode\n  | ProcessorErrorCode\n  | ColorErrorCode\n  | UnitErrorCode;\n\nexport type InterpreterErrorCodes =\n  | InterpreterErrorCode\n  | OperationsErrorCode\n  | SymbolsErrorCode\n  | FunctionsErrorCode\n  | ConfigErrorCode\n  | ColorErrorCode\n  | UnitErrorCode;\n\nexport class LanguageError extends Error {\n  public readonly code: string;\n  public readonly data: Record<string, unknown>;\n  public readonly line?: number;\n  public readonly token?: Token;\n  public readonly originalMessage: string;\n\n  constructor(code: string, options?: ErrorOptions) {\n    const message = getMessage(code, options?.data);\n    super(message, options?.cause ? { cause: options.cause } : undefined);\n\n    this.name = this.constructor.name;\n    this.code = code;\n    this.data = options?.data || {};\n    this.token = options?.token;\n\n    // Derive line from token if not explicitly provided\n    this.line = options?.line ?? options?.token?.line;\n\n    this.originalMessage = message;\n    this.message = this.formatMessage();\n  }\n\n  private formatMessage(): string {\n    let base = this.originalMessage;\n    if (this.line !== undefined) {\n      base = `Line ${this.line}: ${base}`;\n    }\n    if (this.token?.value) {\n      base += `\\nNear token: ${String(this.token.value)}`;\n    }\n    return base;\n  }\n}\n\nexport class LexerError extends LanguageError {\n  public readonly code: LexerErrorCode;\n\n  constructor(code: LexerErrorCode, options?: ErrorOptions) {\n    super(code, options);\n    this.name = \"LexerError\";\n    this.code = code;\n  }\n}\n\nexport class ParserError extends LanguageError {\n  public readonly code: ParserErrorCode;\n\n  constructor(code: ParserErrorCode, options?: ErrorOptions) {\n    super(code, options);\n    this.name = \"ParserError\";\n    this.code = code;\n  }\n}\n\nexport class InterpreterError extends LanguageError {\n  public readonly code: InterpreterErrorCodes;\n\n  constructor(code: InterpreterErrorCodes, options?: ErrorOptions) {\n    super(code, options);\n    this.name = \"InterpreterError\";\n    this.code = code;\n  }\n}\n\nexport class ProcessorError extends LanguageError {\n  public readonly code: ProcessorErrorCode;\n\n  constructor(code: ProcessorErrorCode, options?: ErrorOptions) {\n    super(code, options);\n    this.name = \"ProcessorError\";\n    this.code = code;\n  }\n}\n","import { InterpreterError, LanguageError, LexerError, ParserError, ProcessorError } from \"./base\";\n\n/**\n * Union type for serialized error data that can be passed in error data objects.\n * Used when wrapping errors from catch blocks.\n */\nexport type SerializedError = Error | LanguageError | string | { message: string; stack?: string };\n\nexport function isLanguageError(error: unknown): error is LanguageError {\n  return error instanceof LanguageError;\n}\n\nexport function isLexerError(error: unknown): error is LexerError {\n  return error instanceof LexerError;\n}\n\nexport function isParserError(error: unknown): error is ParserError {\n  return error instanceof ParserError;\n}\n\nexport function isInterpreterError(error: unknown): error is InterpreterError {\n  return error instanceof InterpreterError;\n}\n\nexport function isProcessorError(error: unknown): error is ProcessorError {\n  return error instanceof ProcessorError;\n}\n\n/**\n * Serializes an error into a structured format suitable for error data.\n * Preserves error information while ensuring it's serializable.\n */\nexport function serializeError(error: unknown): SerializedError {\n  if (error instanceof LanguageError) {\n    return error;\n  }\n  if (error instanceof Error) {\n    return error;\n  }\n  if (typeof error === \"string\") {\n    return error;\n  }\n  if (error && typeof error === \"object\" && \"message\" in error) {\n    return error as { message: string; stack?: string };\n  }\n  return String(error);\n}\n","// Optional --------------------------------------------------------------------\n\nexport const isSome = <T>(v: T | null | undefined): v is T => {\n  return v != null;\n};\n\nexport const isNone = (v: unknown): v is null | undefined => {\n  return v == null;\n};\n\n// Primitive type guards -------------------------------------------------------\n\nexport const isNull = (v: unknown): v is null => {\n  return v === null;\n};\n\nexport const isUndefined = (v: unknown): v is undefined => {\n  return v === undefined;\n};\n\nexport const isObject = (v: unknown): v is Record<string, unknown> => {\n  return typeof v === \"object\" && v !== null && !Array.isArray(v);\n};\n\nexport const isString = (v: unknown): v is string => {\n  return typeof v === \"string\";\n};\n\nexport const isNumber = (v: unknown): v is number => {\n  return typeof v === \"number\" && !Number.isNaN(v);\n};\n\nexport const isBoolean = (v: unknown): v is boolean => {\n  return typeof v === \"boolean\";\n};\n\nexport const isArray = <T = unknown>(v: unknown): v is T[] => {\n  return Array.isArray(v);\n};\n\nexport const isFunction = (v: unknown): v is (...args: unknown[]) => unknown => {\n  return typeof v === \"function\";\n};\n\nexport const isDate = (v: unknown): v is Date => {\n  return v instanceof Date && !Number.isNaN(v.getTime());\n};\n\n// Object ----------------------------------------------------------------------\n\nexport const isMap = (v: unknown): v is Map<unknown, unknown> => v instanceof Map;\n\nexport const isPlainObject = (v: unknown): v is Record<string, unknown> => {\n  if (!isObject(v)) return false;\n\n  // Objects created by the Object constructor or with null prototype\n  const proto = Object.getPrototypeOf(v);\n  return proto === Object.prototype || proto === null;\n};\n\nexport const hasProperty = <K extends string>(obj: unknown, key: K): obj is Record<K, unknown> => {\n  return isObject(obj) && key in obj;\n};\n\nexport const getKeyAlt = <K extends string, T>(\n  keys: readonly K[],\n  record: Partial<Record<K, T>>,\n): T | undefined => {\n  for (const key of keys) {\n    if (key in record) {\n      return record[key];\n    }\n  }\n  return undefined;\n};\n\nexport const isObjectWithKey = <K extends string>(\n  value: unknown,\n  key: K,\n): value is Record<K, unknown> => {\n  return isObject(value) && key in value;\n};\n\nexport const isNonEmptyObject = (v: unknown): boolean => {\n  return isObject(v) && Object.keys(v).length > 0;\n};\n\nexport const isSingleEntryObject = (v: unknown): boolean => {\n  return isObject(v) && Object.keys(v).length === 1;\n};\n\n// Array -----------------------------------------------------------------------\n\nexport const isNonEmptyArray = <T>(v: unknown): v is [T, ...T[]] => {\n  return isArray(v) && v.length > 0;\n};\n\nexport const ensureArray = <T>(v: T | T[] | null | undefined): T[] => {\n  if (isNone(v)) return [];\n  if (isArray<T>(v)) return v;\n  return [v];\n};\n\nexport const isOutOfBounds = <T>(value: unknown, index: number): boolean => {\n  if (!isArray<T>(value)) return true;\n  return index < 0 || index >= value.length;\n};\n\nexport const isOutOfBoundsInclusive = <T>(value: unknown, index: number): boolean => {\n  if (!isArray<T>(value)) return true;\n  return index < 0 || index > value.length;\n};\n\nexport const isEmpty = (v: unknown): boolean => {\n  if (isNone(v)) return true;\n  if (isString(v) || isArray(v)) return v.length === 0;\n  if (isObject(v)) return Object.keys(v).length === 0;\n  return false;\n};\n\n// Number parsing --------------------------------------------------------------\n\nexport const safeParseInt = (v: unknown): number | null => {\n  if (isNumber(v)) return Math.floor(v);\n  if (isString(v)) {\n    const parsed = parseInt(v, 10);\n    return Number.isNaN(parsed) ? null : parsed;\n  }\n  return null;\n};\n\nexport const safeParseFloat = (v: unknown): number | null => {\n  if (isNumber(v)) return v;\n  if (isString(v)) {\n    const parsed = parseFloat(v);\n    return Number.isNaN(parsed) ? null : parsed;\n  }\n  return null;\n};\n\n// Type Assertion Helpers ------------------------------------------------------\n\nexport const assertIsSome = <T>(v: T | null | undefined, message?: string): T => {\n  if (isNone(v)) {\n    throw new Error(message || \"Expected value to be defined\");\n  }\n  return v;\n};\n\nexport const assertIsType = <T>(v: unknown, guard: (v: unknown) => v is T, message?: string): T => {\n  if (!guard(v)) {\n    throw new Error(message || \"Type assertion failed\");\n  }\n  return v;\n};\n\nexport const optional = <T, R>(value: T | null | undefined, fn: (v: T) => R): R | undefined => {\n  return isSome(value) ? fn(value) : undefined;\n};\n\nexport const when = <A, B>(a: A, b: B): B | undefined => {\n  return a !== undefined && a !== null && a !== false ? b : undefined;\n};\n\nexport const withDefault = <T>(v: T | null | undefined, defaultValue: T): T => {\n  return isSome(v) ? v : defaultValue;\n};\n\nexport const isEqual = (a: unknown, b: unknown): boolean => {\n  if (a === b) return true;\n\n  if (isNone(a) || isNone(b)) return a === b;\n\n  if (isArray(a) && isArray(b)) {\n    if (a.length !== b.length) return false;\n    return a.every((item, index) => isEqual(item, b[index]));\n  }\n\n  if (isObject(a) && isObject(b)) {\n    const keysA = Object.keys(a);\n    const keysB = Object.keys(b);\n\n    if (keysA.length !== keysB.length) return false;\n\n    return keysA.every((key) => keysB.includes(key) && isEqual(a[key], b[key]));\n  }\n\n  return false;\n};\n\n// Conversion ------------------------------------------------------------------\n\nexport const nullToUndefined = <T>(v: T | null | undefined): T | undefined =>\n  isNull(v) ? undefined : v;\n","import { ColorErrorCode, InterpreterError, SymbolsErrorCode } from \"../errors\";\nimport { isString } from \"./type\";\n\nexport function isValidHex(value: string): boolean {\n  if (!isString(value)) return false;\n  if (!value.startsWith(\"#\")) return false;\n  const hexPart = value.substring(1);\n  // Support hex3 (#RGB), hex4 (#RGBA), hex6 (#RRGGBB), hex8 (#RRGGBBAA)\n  if (\n    !(hexPart.length === 3 || hexPart.length === 4 || hexPart.length === 6 || hexPart.length === 8)\n  )\n    return false;\n  for (let i = 0; i < hexPart.length; i++) {\n    const char = hexPart[i].toLowerCase();\n    if (!((char >= \"0\" && char <= \"9\") || (char >= \"a\" && char <= \"f\"))) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Parses a hex color string and extracts the color value and alpha.\n * Supports hex3 (#RGB), hex4 (#RGBA), hex6 (#RRGGBB), hex8 (#RRGGBBAA) formats.\n *\n * For backwards compatibility:\n * - hex3 and hex6 formats are preserved as-is (no alpha)\n * - hex4 is converted to hex6 with alpha extracted\n * - hex8 is converted to hex6 with alpha extracted\n *\n * Returns the color value and alpha (0-1 range, or null if not specified).\n */\nexport function parseHexWithAlpha(value: string): { color: string; alpha: number | null } {\n  if (!isValidHex(value)) {\n    throw new InterpreterError(SymbolsErrorCode.INVALID_HEX_COLOR, {\n      data: { value },\n    });\n  }\n\n  const hexPart = value.substring(1);\n\n  if (hexPart.length === 3) {\n    // #RGB - preserve as-is, no alpha\n    return { color: value, alpha: null };\n  }\n\n  if (hexPart.length === 4) {\n    // #RGBA -> #RRGGBB with alpha\n    const r = hexPart[0];\n    const g = hexPart[1];\n    const b = hexPart[2];\n    const a = hexPart[3];\n    const expanded = `${r}${r}${g}${g}${b}${b}`;\n    const alphaValue = Number.parseInt(a + a, 16) / 255;\n    return { color: `#${expanded}`, alpha: alphaValue };\n  }\n\n  if (hexPart.length === 6) {\n    // #RRGGBB - preserve as-is, no alpha\n    return { color: value, alpha: null };\n  }\n\n  // hexPart.length === 8\n  // #RRGGBBAA -> #RRGGBB with alpha\n  const colorPart = hexPart.substring(0, 6);\n  const alphaPart = hexPart.substring(6, 8);\n  const alphaValue = Number.parseInt(alphaPart, 16) / 255;\n  return { color: `#${colorPart}`, alpha: alphaValue };\n}\n\nexport function isValidAlpha(alpha: number | null): boolean {\n  return alpha === null || (alpha >= 0 && alpha <= 1);\n}\n\nexport function ensureValidAlpha(alpha: number | null): void {\n  if (!isValidAlpha(alpha)) {\n    throw new InterpreterError(ColorErrorCode.INVALID_ALPHA_VALUE, {\n      data: { alpha: alpha as number },\n    });\n  }\n}\n\nexport function isTransparent(alpha: number | null): alpha is number {\n  return alpha !== null && alpha < 1;\n}\n\n/**\n * Formats a hex color with alpha as hex8 format (#RRGGBBAA).\n * Expands hex3 (#RGB) to hex6 (#RRGGBB) before appending alpha.\n */\nexport function formatHex8(hexColor: string, alpha: number): string {\n  const alphaHex = Math.round(alpha * 255)\n    .toString(16)\n    .padStart(2, \"0\");\n\n  // Expand 3-char hex to 6-char if needed\n  let hex6 = hexColor;\n  if (hexColor.length === 4) {\n    // #RGB -> #RRGGBB\n    hex6 = `#${hexColor[1]}${hexColor[1]}${hexColor[2]}${hexColor[2]}${hexColor[3]}${hexColor[3]}`;\n  }\n\n  return `${hex6}${alphaHex}`;\n}\n","export enum CodePoint {\n  HYPHEN = 45,\n  UNDERSCORE = 95,\n  FORWARD_TICK = 180,\n  BACKWARD_TICK = 96,\n}\n\nexport const isAlpha = (char: string | null): boolean => {\n  if (char === null) return false;\n  const cp = char.codePointAt(0) ?? 0;\n  return (\n    (cp >= 65 && cp <= 90) || // A-Z\n    (cp >= 97 && cp <= 122) // a-z\n  );\n};\n\nexport const isNumber = (char: string | null): boolean => {\n  if (char === null) return false;\n  const cp = char.codePointAt(0) ?? 0;\n  return cp >= 48 && cp <= 57; // 0-9\n};\n\nexport const isAlphaNumeric = (char: string | null): boolean => {\n  if (char === null) return false;\n  return isAlpha(char) || isNumber(char);\n};\n\nexport const isSpace = (char: string | null) => {\n  if (char === null) return false;\n  return /\\s/.test(char);\n};\n\nexport const capitalize = (str: string): string =>\n  `${str.charAt(0).toUpperCase()}${str.slice(1).toLowerCase()}`;\n","import { type ISymbolType, SupportedFormats, type SymbolMetadata } from \"@src/types\";\nimport type { Config } from \"./config/config\";\nimport { InterpreterError, SymbolsErrorCode } from \"./errors\";\nimport { ensureValidAlpha, formatHex8, isValidHex } from \"./utils/color\";\nimport { capitalize } from \"./utils/string\";\nimport {\n  isArray,\n  isBoolean,\n  isMap,\n  isNone,\n  isNull,\n  isNumber,\n  isObject,\n  isObjectWithKey,\n  isOutOfBounds,\n  isOutOfBoundsInclusive,\n  isSome,\n  isString,\n  isUndefined,\n  nullToUndefined,\n} from \"./utils/type\";\n\n// Types -----------------------------------------------------------------------\n\nexport interface ToJsOptions {\n  /** Whether to recursively convert nested values (default: true) */\n  recursive?: boolean;\n  /** Whether to use toString() for structured types (default: false) */\n  stringify?: boolean;\n}\n\n// Utilities -------------------------------------------------------------------\n\nexport function isTokenscriptSymbol(value: unknown): value is ISymbolType {\n  return isObjectWithKey(value, \"getTypeName\");\n}\n\nexport function isList(value: TokenSymbol): boolean {\n  return isArray(value.value);\n}\n\nexport function isDictionary(value: TokenSymbol): boolean {\n  return isMap(value.value);\n}\n\nexport const typeEquals = (typeA: string | null, typeB: string | null) =>\n  typeA?.toLowerCase() === typeB?.toLowerCase();\n\n/**\n * Constructs captialized type name from `base` and `sub?`\n * E.g.: base = color, sub = hex => Color.Hex\n *       base = COLOR => Color\n */\nexport const typeName = (base: string, sub?: string): string => {\n  const baseStr = capitalize(base);\n  if (sub) {\n    const subStr = capitalize(sub);\n    return `${baseStr}.${subStr}`;\n  }\n  return baseStr;\n};\n\nexport const getResultTypeName = (result: unknown): string => {\n  if (isNull(result)) {\n    return \"Null\";\n  }\n  if (isString(result)) {\n    return \"String\";\n  }\n  if (isTokenscriptSymbol(result)) {\n    return result.getTypeName();\n  }\n  return \"Unknown\";\n};\n\nconst formatObjectEntries = (\n  data: Record<string, unknown> | Map<string, unknown> | Array<[string, unknown]>,\n): string => {\n  let entries: Array<[string, unknown]>;\n\n  if (isArray(data)) {\n    entries = data;\n  } else if (isMap(data)) {\n    entries = Array.from(data.entries());\n  } else {\n    entries = Object.entries(data);\n  }\n\n  const formattedEntries = entries.map(([key, value]) => `${key}: ${String(value)}`).join(\", \");\n  return `{${formattedEntries}}`;\n};\n\n// Dictionary and List Implementation Functions --------------------------------\n\nconst expectStringKey = (key: StringSymbol | string): string => {\n  if (isString(key)) {\n    return key;\n  }\n  if (key instanceof StringSymbol && isSome(key.value)) {\n    return key.value;\n  }\n  throw new InterpreterError(SymbolsErrorCode.KEY_MUST_BE_STRING, {\n    data: { type: typeof key },\n  });\n};\n\nexport const DictionaryImpl = {\n  get(value: Map<string, ISymbolType>, key: StringSymbol | string, config?: Config): ISymbolType {\n    const keyStr = expectStringKey(key);\n    const result = value.get(keyStr);\n    if (isSome(result)) {\n      return result;\n    }\n    return new NullSymbol(config);\n  },\n\n  set(value: Map<string, ISymbolType>, key: StringSymbol | string, val: ISymbolType): void {\n    const keyStr = expectStringKey(key);\n    value.set(keyStr, val.cloneIfMutable());\n  },\n\n  deleteKey(value: Map<string, ISymbolType>, key: StringSymbol | string): void {\n    const keyStr = expectStringKey(key);\n    value.delete(keyStr);\n  },\n\n  keys(value: Map<string, ISymbolType>, config?: Config): ListSymbol {\n    const keys = Array.from(value.keys()).map((key) => new StringSymbol(key, config));\n    return new ListSymbol(keys, false, config);\n  },\n\n  values(value: Map<string, ISymbolType>, config?: Config): ListSymbol {\n    const values = Array.from(value.values());\n    return new ListSymbol(values, false, config);\n  },\n\n  keyExists(\n    value: Map<string, ISymbolType>,\n    key: StringSymbol | string,\n    config?: Config,\n  ): BooleanSymbol {\n    const keyStr = expectStringKey(key);\n    return new BooleanSymbol(value.has(keyStr), config);\n  },\n\n  length(value: Map<string, ISymbolType>, config?: Config): NumberSymbol {\n    return new NumberSymbol(value.size, config);\n  },\n\n  clear(value: Map<string, ISymbolType>): void {\n    value.clear();\n  },\n\n  deepCopy(value: Map<string, ISymbolType>): Map<string, ISymbolType> {\n    const copiedMap = new Map<string, ISymbolType>();\n    for (const [key, val] of value.entries()) {\n      copiedMap.set(key, val.deepCopy());\n    }\n    return copiedMap;\n  },\n\n  toString(value: Map<string, ISymbolType>): string {\n    return formatObjectEntries(value);\n  },\n\n  hasAttribute(value: Map<string, ISymbolType>, attributeName: string): boolean {\n    return value.has(attributeName);\n  },\n\n  getAttribute(value: Map<string, ISymbolType>, attributeName: string): ISymbolType | null {\n    const val = value.get(attributeName);\n    return val !== undefined ? val : null;\n  },\n};\n\nexport const ListImpl = {\n  append(value: ISymbolType[], item: ISymbolType): void {\n    value.push(item.cloneIfMutable());\n  },\n\n  extend(value: ISymbolType[], ...items: ISymbolType[]): void {\n    for (const item of items) {\n      if (item instanceof ListSymbol) {\n        value.push(...item.value.map((element: ISymbolType) => element.cloneIfMutable()));\n      } else {\n        value.push(item.cloneIfMutable());\n      }\n    }\n  },\n\n  insert(value: ISymbolType[], indexSymbol: ISymbolType, item: ISymbolType): void {\n    const index = indexSymbol.value as number;\n    if (isOutOfBoundsInclusive(value, index)) {\n      throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n        data: { operation: \"insert\" },\n      });\n    }\n    value.splice(index, 0, item.cloneIfMutable());\n  },\n\n  deleteAt(value: ISymbolType[], indexSymbol: ISymbolType): void {\n    const index = indexSymbol.value as number;\n    if (isOutOfBounds(value, index)) {\n      throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n        data: { operation: \"deletion\" },\n      });\n    }\n    value.splice(index, 1);\n  },\n\n  length(value: ISymbolType[], config?: Config): NumberSymbol {\n    return new NumberSymbol(value.length, config);\n  },\n\n  indexOf(value: ISymbolType[], item: ISymbolType, config?: Config): NumberSymbol {\n    const idx = value.findIndex((el) => el.equals(item));\n    return new NumberSymbol(idx, config);\n  },\n\n  get(value: ISymbolType[], indexSymbol: ISymbolType): ISymbolType {\n    let index = indexSymbol.value as number;\n    if (index < 0) {\n      index = value.length + index;\n    }\n    if (isOutOfBounds(value, index)) {\n      throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n        data: { operation: \"get\" },\n      });\n    }\n    return value[index];\n  },\n\n  update(value: ISymbolType[], indexSymbol: ISymbolType, item: ISymbolType): void {\n    const index = indexSymbol.value as number;\n    if (isOutOfBounds(value, index)) {\n      throw new InterpreterError(SymbolsErrorCode.INDEX_OUT_OF_RANGE, {\n        data: { operation: \"update\" },\n      });\n    }\n    value[index] = item.cloneIfMutable();\n  },\n\n  join(value: ISymbolType[], separator: ISymbolType | undefined, config?: Config): StringSymbol {\n    const sep = separator?.value || \"\";\n    const stringElements = value.map((element) => {\n      if (element.value === null) {\n        return \"null\";\n      }\n      return element.toString();\n    });\n    return new StringSymbol(stringElements.join(sep), config);\n  },\n\n  deepCopy(value: ISymbolType[]): ISymbolType[] {\n    return value.map((element) => element.deepCopy());\n  },\n\n  toString(value: ISymbolType[], isImplicit: boolean = false): string {\n    const delimiter = isImplicit ? \" \" : \", \";\n    return value.map((x) => (x.value === null ? \"null\" : x.toString())).join(delimiter);\n  },\n};\n\n// Base Type -------------------------------------------------------------------\n\ntype SupportedMethods = Record<string, MethodDefinitionDef>;\n\ninterface MethodArgumentDef {\n  name: string;\n  type: any; // Could be ISymbolType constructor or a special marker like SymbolSelfType\n  optional?: boolean;\n}\n\ninterface MethodDefinitionDef {\n  name?: string;\n  function: (...args: any[]) => ISymbolType | null | undefined;\n  args: MethodArgumentDef[];\n  returnType: any; // Could be ISymbolType constructor or a special marker\n}\n\nexport abstract class BaseSymbolType implements ISymbolType {\n  abstract type: string;\n  public value: any | null;\n  public config?: Config;\n  static _SUPPORTED_METHODS?: SupportedMethods;\n\n  constructor(value: any, config?: Config) {\n    this.value = value;\n    this.config = config;\n  }\n\n  abstract validValue(value: any): boolean;\n\n  /**\n   * Forces creating a deepCopy of provided symbol no matter if it's immutable or not.\n   */\n  abstract deepCopy(): ISymbolType;\n\n  /**\n   * Returns a copy of the symbol if it's mutable, otherwise returns the same instance.\n   *\n   * This method is used to prevent reference sharing issues when storing symbols in\n   * containers like lists and dictionaries. Immutable symbols (Number, String, Boolean,\n   * NumberWithUnit, Null, hex ColorSymbol) can safely share references since they\n   * cannot be modified after creation. Mutable symbols (List, Dictionary, dynamic\n   * ColorSymbol) need to be deep copied to prevent unintended mutations.\n   *\n   * @returns For immutable symbols: returns `this` (same reference)\n   *          For mutable symbols: returns `this.deepCopy()` (new instance)\n   */\n  abstract cloneIfMutable(): ISymbolType;\n\n  abstract toJs(options?: ToJsOptions): JsValue;\n\n  toString(): string {\n    return String(this.value);\n  }\n\n  getTypeName(): string {\n    return this.type;\n  }\n\n  typeEquals(other: ISymbolType): boolean {\n    return typeEquals(this.type, other.type);\n  }\n\n  equals(other: ISymbolType): boolean {\n    return this.typeEquals(other) && this.value === other.value;\n  }\n\n  hasMethod?(methodName: string, args: ISymbolType[]): boolean {\n    const methodDefinition = (this.constructor as any)._SUPPORTED_METHODS?.[\n      methodName.toLowerCase()\n    ];\n    if (!methodDefinition) return false;\n    if (methodDefinition.args.length === 0) return true;\n\n    const requiredArgs = methodDefinition.args.filter((arg: MethodArgumentDef) => !arg.optional);\n\n    if (args.length < requiredArgs.length) {\n      return false;\n    }\n\n    if (args.length > methodDefinition.args.length) {\n      return false;\n    }\n\n    return true;\n  }\n\n  callMethod?(methodName: string, args: ISymbolType[]): ISymbolType | null | undefined {\n    const methodDefinition = (this.constructor as any)._SUPPORTED_METHODS?.[\n      methodName.toLowerCase()\n    ];\n    if (!methodDefinition || !this.hasMethod?.(methodName, args)) {\n      throw new InterpreterError(SymbolsErrorCode.METHOD_NOT_FOUND, {\n        data: { methodName, type: this.type },\n      });\n    }\n\n    if (methodDefinition.args.length === 0) {\n      return methodDefinition.function.call(this, ...args);\n    }\n\n    const processedArgs: ISymbolType[] = [];\n\n    methodDefinition.args.forEach((argDef: MethodArgumentDef, index: number) => {\n      if (args[index] !== undefined) {\n        processedArgs.push(args[index]);\n      } else if (!argDef.optional) {\n        throw new InterpreterError(SymbolsErrorCode.MISSING_REQUIRED_ARGUMENT, {\n          data: { argumentName: argDef.name, methodName },\n        });\n      }\n    });\n\n    return methodDefinition.function.call(this, ...processedArgs);\n  }\n\n  hasAttribute?(_attributeName: string): boolean {\n    return false;\n  }\n\n  getAttribute?(attributeName: string): ISymbolType | null {\n    throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n      data: { attributeName, type: this.type },\n    });\n  }\n\n  setAttribute?(attributeName: string, _value: ISymbolType): void {\n    throw new InterpreterError(SymbolsErrorCode.CANNOT_SET_ATTRIBUTE, {\n      data: { attributeName, type: this.type },\n    });\n  }\n}\n\n// Concrete Symbol Types -------------------------------------------------------\n\n/**\n * Null type to differentiate from null values from the host language\n * Methods returning `null` should return this type, also as empty variables should keep this.\n * Host language `null` or `undefined` will crash when used as values during intepretation.\n */\nexport class NullSymbol extends BaseSymbolType {\n  type = \"Null\";\n  static readonly type = \"Null\";\n\n  constructor(config?: Config) {\n    super(null, config);\n  }\n\n  validValue(val: any): boolean {\n    return isNone(val);\n  }\n\n  toString(): string {\n    return \"null\";\n  }\n\n  deepCopy(): NullSymbol {\n    return new NullSymbol(this.config);\n  }\n\n  cloneIfMutable(): NullSymbol {\n    return this;\n  }\n\n  equals(other: ISymbolType): boolean {\n    return other instanceof NullSymbol;\n  }\n\n  static empty(): NullSymbol {\n    return new NullSymbol();\n  }\n\n  toJs(_options?: ToJsOptions): null {\n    return null;\n  }\n}\n\ntype NumberValue = number | null;\n\nexport class NumberSymbol extends BaseSymbolType {\n  type = \"Number\";\n  static readonly type = \"Number\";\n  static _SUPPORTED_METHODS = {\n    to_string: {\n      name: \"to_string\",\n      function: function (this: NumberSymbol, radix?: NumberSymbol) {\n        return this.toStringSymbol(radix);\n      },\n      args: [\n        {\n          name: \"radix\",\n          type: \"Number\",\n          optional: true,\n        },\n      ],\n      returnType: \"String\",\n    },\n  };\n\n  public value: NumberValue;\n\n  constructor(value: number | NumberSymbol | NumberWithUnitSymbol | null, config?: Config) {\n    let safeValue: NumberValue;\n    if (isNumber(value)) {\n      safeValue = value;\n    } else if (value instanceof NumberSymbol || value instanceof NumberWithUnitSymbol) {\n      safeValue = value.value as number;\n    } else if (isNull(value)) {\n      safeValue = null;\n    } else {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n        data: { expectedType: \"int or float\", actualType: typeof value },\n      });\n    }\n    super(safeValue, config);\n    this.value = safeValue;\n  }\n\n  validValue(val: any): boolean {\n    return isNumber(val) || val instanceof NumberSymbol;\n  }\n\n  expectSafeValue(val: any): asserts val is number {\n    if (isNone(val)) {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n        data: { expectedType: \"int or float\" },\n      });\n    }\n  }\n\n  toString(): string {\n    return String(this.value);\n  }\n\n  deepCopy(): NumberSymbol {\n    return new NumberSymbol(this.value, this.config);\n  }\n\n  cloneIfMutable(): NumberSymbol {\n    return this;\n  }\n\n  static empty(): NumberSymbol {\n    return new NumberSymbol(null);\n  }\n\n  hasAttribute(attributeName: string): boolean {\n    return attributeName === \"value\";\n  }\n\n  getAttribute(attributeName: string): ISymbolType | null {\n    if (attributeName === \"value\") {\n      return new NumberSymbol(this.value, this.config);\n    }\n    throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n      data: { attributeName, type: \"Number\" },\n    });\n  }\n\n  // Direct translation of to_string method from token_interpreter/symbols.py\n  toStringSymbol(radix?: NumberSymbol): StringSymbol {\n    this.expectSafeValue(this.value);\n\n    if (radix) {\n      this.expectSafeValue(radix?.value);\n    } else {\n      return new StringSymbol(String(this.value), this.config);\n    }\n\n    const base = radix.value;\n    if (!Number.isInteger(base) || base < 2 || base > 36) {\n      throw new InterpreterError(SymbolsErrorCode.INVALID_RADIX, {\n        data: { radix: base },\n      });\n    }\n\n    let numValue: number;\n    if (base === 16) {\n      numValue = Math.round(this.value);\n      // For hexadecimal, round non-integer values (with .5 rounding down)\n      // Otherwise color conversion to hex wont work as expected\n      const fractionalPart = Math.abs(this.value % 1);\n      if (fractionalPart === 0.5) {\n        // .5 cases round down (towards negative infinity)\n        numValue = Math.floor(this.value);\n      } else {\n        // Normal rounding for other fractional parts\n        numValue = Math.round(this.value);\n      }\n    } else {\n      numValue = this.value;\n    }\n\n    try {\n      if (Number.isInteger(numValue) && radix) {\n        return new StringSymbol(numValue.toString(base), this.config);\n      } else {\n        return new StringSymbol(String(this.value), this.config);\n      }\n    } catch (e) {\n      throw new InterpreterError(SymbolsErrorCode.RADIX_CONVERSION_ERROR, {\n        data: { base, error: String(e) },\n      });\n    }\n  }\n\n  toJs(_options?: ToJsOptions): NumberValue {\n    return this.value;\n  }\n}\n\ntype StringValue = string | null;\n\nexport class StringSymbol extends BaseSymbolType {\n  type = \"String\";\n  static readonly type = \"String\";\n  static _SUPPORTED_METHODS = {\n    upper: {\n      function: function (this: StringSymbol) {\n        return this.upper();\n      },\n      args: [],\n      returnType: \"String\",\n    },\n    lower: {\n      function: function (this: StringSymbol) {\n        return this.lower();\n      },\n      args: [],\n      returnType: \"String\",\n    },\n    length: {\n      function: function (this: StringSymbol) {\n        return this.length();\n      },\n      args: [],\n      returnType: \"Number\",\n    },\n    concat: {\n      function: function (this: StringSymbol, other: StringSymbol) {\n        return this.concat(other);\n      },\n      args: [{ name: \"other\", type: \"String\" }],\n      returnType: \"String\",\n    },\n    split: {\n      function: function (this: StringSymbol, delimiter?: StringSymbol) {\n        return this.split(delimiter);\n      },\n      args: [{ name: \"delimiter\", type: \"String\", optional: true }],\n      returnType: \"List\",\n    },\n    trim: {\n      function: function (this: StringSymbol) {\n        return this.trim();\n      },\n      args: [],\n      returnType: \"String\",\n    },\n  };\n\n  public value: StringValue;\n\n  constructor(value: string | StringSymbol | null, config?: Config) {\n    let safeValue: string | null;\n    if (typeof value === \"string\") {\n      safeValue = value;\n    } else if (value instanceof StringSymbol) {\n      safeValue = value.value;\n    } else if (value === null) {\n      safeValue = null;\n    } else {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n        data: { expectedType: \"string\", actualType: typeof value },\n      });\n    }\n    super(safeValue, config);\n    this.value = safeValue;\n  }\n\n  validValue(val: any): boolean {\n    return typeof val === \"string\" || val instanceof StringSymbol;\n  }\n\n  expectSafeValue(val: any): asserts val is string {\n    if (val === null || val === undefined) {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n        data: { expectedType: \"string\" },\n      });\n    }\n  }\n\n  upper(): StringSymbol {\n    this.expectSafeValue(this.value);\n    return new StringSymbol(this.value.toUpperCase(), this.config);\n  }\n\n  deepCopy(): StringSymbol {\n    return new StringSymbol(this.value, this.config);\n  }\n\n  cloneIfMutable(): StringSymbol {\n    return this;\n  }\n\n  static empty(): StringSymbol {\n    return new StringSymbol(null);\n  }\n\n  lower(): StringSymbol {\n    this.expectSafeValue(this.value);\n    return new StringSymbol(this.value.toLowerCase(), this.config);\n  }\n\n  length(): NumberSymbol {\n    this.expectSafeValue(this.value);\n    return new NumberSymbol(this.value.length, this.config);\n  }\n\n  concat(other: StringSymbol): StringSymbol {\n    this.expectSafeValue(this.value);\n    if (other instanceof StringSymbol) {\n      other.expectSafeValue(other.value);\n      return new StringSymbol(this.value + other.value, this.config);\n    }\n    throw new InterpreterError(SymbolsErrorCode.CANNOT_CONCATENATE, {\n      data: { type: `String ${typeof other}` },\n    });\n  }\n\n  split(delimiter?: StringSymbol): ListSymbol {\n    this.expectSafeValue(this.value);\n    const strValue = this.value;\n\n    if (delimiter instanceof StringSymbol) {\n      const parts = strValue.split(delimiter.value as string);\n      return new ListSymbol(\n        parts.map((p) => new StringSymbol(p, this.config)),\n        false,\n        this.config,\n      );\n    } else if (typeof delimiter === \"string\") {\n      const parts = strValue.split(delimiter);\n      return new ListSymbol(\n        parts.map((p) => new StringSymbol(p, this.config)),\n        false,\n        this.config,\n      );\n    } else if (delimiter === undefined || delimiter === null) {\n      const parts = Array.from(strValue);\n      return new ListSymbol(\n        parts.map((p) => new StringSymbol(p, this.config)),\n        false,\n        this.config,\n      );\n    }\n\n    throw new InterpreterError(SymbolsErrorCode.CANNOT_SPLIT, {\n      data: { type: typeof delimiter },\n    });\n  }\n\n  trim(): StringSymbol {\n    this.expectSafeValue(this.value);\n    return new StringSymbol(this.value.trim(), this.config);\n  }\n\n  toJs(_options?: ToJsOptions): StringValue {\n    return this.value;\n  }\n}\n\ntype BooleanValue = boolean | null;\n\nexport class BooleanSymbol extends BaseSymbolType {\n  type = \"Boolean\";\n  static readonly type = \"Boolean\";\n\n  public value: BooleanValue;\n  constructor(value: boolean | BooleanSymbol | null, config?: Config) {\n    let safeValue: BooleanValue;\n    if (typeof value === \"boolean\") {\n      safeValue = value;\n    } else if (value instanceof BooleanSymbol) {\n      safeValue = value.value;\n    } else if (value === null) {\n      safeValue = null;\n    } else {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n        data: { expectedType: \"boolean\", actualType: typeof value },\n      });\n    }\n    super(safeValue, config);\n    this.value = safeValue;\n  }\n\n  validValue(val: any): boolean {\n    return typeof val === \"boolean\" || val instanceof BooleanSymbol;\n  }\n\n  expectSafeValue(val: any): asserts val is boolean {\n    if (val === null || val === undefined) {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n        data: { expectedType: \"boolean\" },\n      });\n    }\n  }\n\n  deepCopy(): BooleanSymbol {\n    return new BooleanSymbol(this.value, this.config);\n  }\n\n  cloneIfMutable(): BooleanSymbol {\n    return this;\n  }\n\n  static empty(): BooleanSymbol {\n    return new BooleanSymbol(null);\n  }\n\n  toJs(_options?: ToJsOptions): BooleanValue {\n    return this.value;\n  }\n}\n\nexport class ListSymbol extends BaseSymbolType {\n  type = \"List\";\n  static readonly type = \"List\";\n  static _SUPPORTED_METHODS = {\n    append: {\n      function: function (this: ListSymbol, item: ISymbolType) {\n        return this.append(item);\n      },\n      args: [{ name: \"item\", type: \"any\" }],\n      returnType: \"List\",\n    },\n    extend: {\n      function: function (this: ListSymbol, ...items: ISymbolType[]) {\n        return this.extend(...items);\n      },\n      args: [],\n      returnType: \"List\",\n    },\n    insert: {\n      function: function (this: ListSymbol, index: NumberSymbol, item: ISymbolType) {\n        return this.insert(index, item);\n      },\n      args: [\n        { name: \"index\", type: \"Number\" },\n        { name: \"item\", type: \"any\" },\n      ],\n      returnType: \"List\",\n    },\n    delete: {\n      function: function (this: ListSymbol, index: NumberSymbol) {\n        return this.delete(index);\n      },\n      args: [{ name: \"index\", type: \"Number\" }],\n      returnType: \"List\",\n    },\n    length: {\n      function: function (this: ListSymbol) {\n        return this.length();\n      },\n      args: [],\n      returnType: \"Number\",\n    },\n    index: {\n      function: function (this: ListSymbol, item: ISymbolType) {\n        return this.index(item);\n      },\n      args: [{ name: \"item\", type: \"any\" }],\n      returnType: \"Number\",\n    },\n    get: {\n      function: function (this: ListSymbol, index: NumberSymbol) {\n        return this.get(index);\n      },\n      args: [{ name: \"index\", type: \"Number\" }],\n      returnType: \"any\",\n    },\n    update: {\n      function: function (this: ListSymbol, index: NumberSymbol, item: ISymbolType) {\n        return this.update(index, item);\n      },\n      args: [\n        { name: \"index\", type: \"Number\" },\n        { name: \"item\", type: \"any\" },\n      ],\n      returnType: \"List\",\n    },\n    join: {\n      function: function (this: ListSymbol, separator?: StringSymbol) {\n        return this.join(separator);\n      },\n      args: [{ name: \"separator\", type: \"String\", optional: true }],\n      returnType: \"String\",\n    },\n  };\n\n  public value: ISymbolType[];\n  public isImplicit: boolean;\n\n  constructor(elements: ISymbolType[] | null, isImplicit = false, config?: Config) {\n    const safeElements = elements === null ? [] : elements;\n    super(safeElements, config);\n    this.value = safeElements;\n    this.isImplicit = isImplicit;\n  }\n\n  validValue(val: any): boolean {\n    return Array.isArray(val) || val instanceof ListSymbol;\n  }\n\n  toString(): string {\n    return ListImpl.toString(this.value, this.isImplicit);\n  }\n\n  append(item: ISymbolType): ListSymbol {\n    ListImpl.append(this.value, item);\n    return this;\n  }\n\n  extend(...items: ISymbolType[]): ListSymbol {\n    ListImpl.extend(this.value, ...items);\n    return this;\n  }\n\n  insert(indexSymbol: NumberSymbol, item: ISymbolType): ListSymbol {\n    ListImpl.insert(this.value, indexSymbol, item);\n    return this;\n  }\n\n  delete(indexSymbol: NumberSymbol): ListSymbol {\n    ListImpl.deleteAt(this.value, indexSymbol);\n    return this;\n  }\n\n  length(): NumberSymbol {\n    return ListImpl.length(this.value, this.config);\n  }\n\n  index(item: ISymbolType): NumberSymbol {\n    return ListImpl.indexOf(this.value, item, this.config);\n  }\n\n  get(indexSymbol: NumberSymbol): ISymbolType {\n    return ListImpl.get(this.value, indexSymbol);\n  }\n\n  update(indexSymbol: NumberSymbol, item: ISymbolType): ListSymbol {\n    ListImpl.update(this.value, indexSymbol, item);\n    return this;\n  }\n\n  join(separator?: StringSymbol): StringSymbol {\n    return ListImpl.join(this.value, separator, this.config);\n  }\n\n  deepCopy(): ListSymbol {\n    const copiedElements = ListImpl.deepCopy(this.value);\n    return new ListSymbol(copiedElements, this.isImplicit, this.config);\n  }\n\n  cloneIfMutable(): ListSymbol {\n    return this.deepCopy();\n  }\n\n  static empty(): ListSymbol {\n    return new ListSymbol(null);\n  }\n\n  getTypeName(): string {\n    return this.isImplicit ? typeName(this.type, \"Implicit\") : typeName(this.type);\n  }\n\n  toJs(options?: ToJsOptions): JsValue[] {\n    const { recursive = true } = options ?? {};\n    if (!recursive) return this.value as any;\n    return this.value.map((item) => item.toJs(options));\n  }\n}\n\ntype NumberWithUnitValue = number | null;\n\nexport class NumberWithUnitSymbol extends BaseSymbolType {\n  type = \"NumberWithUnit\";\n  static readonly type = \"NumberWithUnit\";\n  static _SUPPORTED_METHODS = {\n    to_string: {\n      name: \"to_string\",\n      function: function (this: NumberWithUnitSymbol) {\n        return this.toStringSymbol();\n      },\n      args: [\n        {\n          name: \"radix\",\n          type: \"Number\",\n          optional: true,\n        },\n      ],\n      returnType: \"String\",\n    },\n    to_number: {\n      function: function (this: NumberWithUnitSymbol) {\n        return this.to_number();\n      },\n      args: [],\n      returnType: \"Number\",\n    },\n  };\n\n  public value: NumberWithUnitValue;\n  public unit: SupportedFormats;\n\n  constructor(\n    value: number | NumberSymbol | null,\n    unit: SupportedFormats | string,\n    config?: Config,\n  ) {\n    let safeValue: NumberWithUnitValue;\n    if (typeof value === \"number\") {\n      safeValue = value;\n    } else if (value instanceof NumberSymbol) {\n      safeValue = value.value;\n    } else if (value === null) {\n      safeValue = null;\n    } else {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n        data: { expectedType: \"number or NumberSymbol\", actualType: typeof value },\n      });\n    }\n    super(safeValue, config);\n    this.value = safeValue;\n\n    if (typeof unit === \"string\" && !(Object.values(SupportedFormats) as string[]).includes(unit)) {\n      throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n        data: { attributeName: unit, type: \"Unit\" },\n      });\n    }\n    this.unit = typeof unit === \"string\" ? (unit as SupportedFormats) : unit;\n  }\n\n  validValue(val: any): boolean {\n    return val instanceof NumberWithUnitSymbol;\n  }\n\n  static fromRecord(\n    record: {\n      value: number | string;\n      unit: string;\n      type?: string;\n    },\n    config?: Config,\n  ): NumberWithUnitSymbol | undefined {\n    if (record === null || typeof record !== \"object\") return;\n    if (record.type !== \"NumberWithUnit\") return;\n    if (!record.value && !record.unit) return;\n    if (typeof record.value !== \"number\") return;\n\n    return new NumberWithUnitSymbol(record.value, record.unit, config);\n  }\n\n  toString(): string {\n    return `${this.value}${this.unit}`;\n  }\n\n  expectSafeValue(val: any): asserts val is number {\n    if (val === null || val === undefined) {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_IS_NULL, {\n        data: { expectedType: \"number\" },\n      });\n    }\n  }\n\n  toStringSymbol(): StringSymbol {\n    this.expectSafeValue(this.value);\n    return new StringSymbol(`${this.value}${this.unit}`, this.config);\n  }\n\n  to_number(): NumberSymbol {\n    this.expectSafeValue(this.value);\n    return new NumberSymbol(this.value, this.config);\n  }\n\n  equals(other: ISymbolType): boolean {\n    return (\n      other instanceof NumberWithUnitSymbol &&\n      this.value === other.value &&\n      this.unit.toLowerCase() === other?.unit.toLowerCase()\n    );\n  }\n\n  deepCopy(): NumberWithUnitSymbol {\n    return new NumberWithUnitSymbol(this.value, this.unit, this.config);\n  }\n\n  cloneIfMutable(): NumberWithUnitSymbol {\n    return this;\n  }\n\n  static empty(): NumberWithUnitSymbol {\n    return new NumberWithUnitSymbol(null, \"px\");\n  }\n\n  hasAttribute(attributeName: string): boolean {\n    return attributeName === \"value\";\n  }\n\n  getAttribute(attributeName: string): ISymbolType | null {\n    if (attributeName === \"value\") {\n      return new NumberSymbol(this.value, this.config);\n    }\n    throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n      data: { attributeName, type: \"NumberWithUnit\" },\n    });\n  }\n\n  getTypeName(): string {\n    return `${this.type}.${capitalize(this.unit)}`;\n  }\n\n  toJs(options?: ToJsOptions): string | { value: number | null; unit: string } {\n    const { stringify = false } = options ?? {};\n    if (stringify) return this.toString();\n    return { value: this.value, unit: this.unit };\n  }\n}\n\nexport class DictionarySymbol extends BaseSymbolType {\n  type = \"Dictionary\";\n  static readonly type = \"Dictionary\";\n  static _SUPPORTED_METHODS = {\n    get: {\n      function: function (this: DictionarySymbol, key: StringSymbol) {\n        return this.get(key);\n      },\n      args: [{ name: \"key\", type: \"String\", optional: false }],\n      returnType: \"any\",\n    },\n    set: {\n      function: function (this: DictionarySymbol, key: StringSymbol, value: ISymbolType) {\n        return this.set(key, value);\n      },\n      args: [\n        { name: \"key\", type: \"String\", optional: false },\n        { name: \"value\", type: \"any\", optional: false },\n      ],\n      returnType: \"Dictionary\",\n    },\n    delete: {\n      function: function (this: DictionarySymbol, key: StringSymbol) {\n        return this.delete(key);\n      },\n      args: [{ name: \"key\", type: \"String\", optional: false }],\n      returnType: \"Dictionary\",\n    },\n    keys: {\n      function: function (this: DictionarySymbol) {\n        return this.keys();\n      },\n      args: [],\n      returnType: \"List\",\n    },\n    values: {\n      function: function (this: DictionarySymbol) {\n        return this.values();\n      },\n      args: [],\n      returnType: \"List\",\n    },\n    key_exists: {\n      function: function (this: DictionarySymbol, key: StringSymbol) {\n        return this.keyExists(key);\n      },\n      args: [{ name: \"key\", type: \"String\", optional: false }],\n      returnType: \"Boolean\",\n    },\n    length: {\n      function: function (this: DictionarySymbol) {\n        return this.length();\n      },\n      args: [],\n      returnType: \"Number\",\n    },\n    clear: {\n      function: function (this: DictionarySymbol) {\n        return this.clear();\n      },\n      args: [],\n      returnType: \"Dictionary\",\n    },\n  };\n\n  public value: Map<string, ISymbolType>;\n\n  constructor(\n    value: Map<string, ISymbolType> | Record<string, ISymbolType> | DictionarySymbol | null,\n    config?: Config,\n  ) {\n    let safeValue: Map<string, ISymbolType> | null;\n    if (value instanceof DictionarySymbol) {\n      safeValue = value.value;\n    } else if (isMap(value)) {\n      safeValue = value;\n    } else if (isNull(value)) {\n      safeValue = new Map();\n    } else if (isObject(value)) {\n      safeValue = new Map(Object.entries(value));\n    } else {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n        data: { expectedType: \"dict\", actualType: typeof value },\n      });\n    }\n    super(safeValue, config);\n    this.value = safeValue;\n  }\n\n  validValue(val: any): boolean {\n    return isMap(val) || isNull(val);\n  }\n\n  toString(): string {\n    return DictionaryImpl.toString(this.value);\n  }\n\n  get(key: StringSymbol): ISymbolType {\n    return DictionaryImpl.get(this.value, key, this.config);\n  }\n\n  set(key: StringSymbol, value: ISymbolType): DictionarySymbol {\n    DictionaryImpl.set(this.value, key, value);\n    return this;\n  }\n\n  delete(key: StringSymbol): DictionarySymbol {\n    DictionaryImpl.deleteKey(this.value, key);\n    return this;\n  }\n\n  keys(): ListSymbol {\n    return DictionaryImpl.keys(this.value, this.config);\n  }\n\n  values(): ListSymbol {\n    return DictionaryImpl.values(this.value, this.config);\n  }\n\n  keyExists(key: StringSymbol): BooleanSymbol {\n    return DictionaryImpl.keyExists(this.value, key, this.config);\n  }\n\n  length(): NumberSymbol {\n    return DictionaryImpl.length(this.value, this.config);\n  }\n\n  clear(): DictionarySymbol {\n    DictionaryImpl.clear(this.value);\n    return this;\n  }\n\n  deepCopy(): DictionarySymbol {\n    const copiedMap = DictionaryImpl.deepCopy(this.value);\n    return new DictionarySymbol(copiedMap, this.config);\n  }\n\n  cloneIfMutable(): DictionarySymbol {\n    return this.deepCopy();\n  }\n\n  static empty(): DictionarySymbol {\n    return new DictionarySymbol(null);\n  }\n\n  hasAttribute(attributeName: string): boolean {\n    return DictionaryImpl.hasAttribute(this.value, attributeName);\n  }\n\n  getAttribute(attributeName: string): ISymbolType | null {\n    return DictionaryImpl.getAttribute(this.value, attributeName);\n  }\n\n  toJs(options?: ToJsOptions): Record<string, JsValue> {\n    const { recursive = true } = options ?? {};\n    const obj: Record<string, JsValue> = {};\n    for (const [key, child] of this.value.entries()) {\n      obj[key] = recursive ? child.toJs(options) : (child as any);\n    }\n    return obj;\n  }\n}\n\nexport type TokenValue = Map<string, ISymbolType> | ISymbolType[];\n\nexport class TokenSymbol extends BaseSymbolType {\n  type = \"Token\";\n  static readonly type = \"Token\";\n  static _SUPPORTED_METHODS = {\n    get: {\n      function: function (this: TokenSymbol, keyOrIndex: StringSymbol | NumberSymbol) {\n        return this.get(keyOrIndex);\n      },\n      args: [{ name: \"keyOrIndex\", type: \"String|Number\", optional: false }],\n      returnType: \"any\",\n    },\n    set: {\n      function: function (this: TokenSymbol, key: StringSymbol, value: ISymbolType) {\n        return this.set(key, value);\n      },\n      args: [\n        { name: \"key\", type: \"String\", optional: false },\n        { name: \"value\", type: \"any\", optional: false },\n      ],\n      returnType: \"Token\",\n    },\n    keys: {\n      function: function (this: TokenSymbol) {\n        return this.keys();\n      },\n      args: [],\n      returnType: \"List\",\n    },\n    values: {\n      function: function (this: TokenSymbol) {\n        return this.values();\n      },\n      args: [],\n      returnType: \"List\",\n    },\n    length: {\n      function: function (this: TokenSymbol) {\n        return this.length();\n      },\n      args: [],\n      returnType: \"Number\",\n    },\n    // List methods (when value is Array)\n    append: {\n      function: function (this: TokenSymbol, item: ISymbolType) {\n        return this.append(item);\n      },\n      args: [{ name: \"item\", type: \"any\" }],\n      returnType: \"Token\",\n    },\n    extend: {\n      function: function (this: TokenSymbol, ...items: ISymbolType[]) {\n        return this.extend(...items);\n      },\n      args: [],\n      returnType: \"Token\",\n    },\n    insert: {\n      function: function (this: TokenSymbol, index: NumberSymbol, item: ISymbolType) {\n        return this.insert(index, item);\n      },\n      args: [\n        { name: \"index\", type: \"Number\" },\n        { name: \"item\", type: \"any\" },\n      ],\n      returnType: \"Token\",\n    },\n    delete: {\n      function: function (this: TokenSymbol, index: NumberSymbol) {\n        return this.delete(index);\n      },\n      args: [{ name: \"index\", type: \"Number\" }],\n      returnType: \"Token\",\n    },\n    index: {\n      function: function (this: TokenSymbol, item: ISymbolType) {\n        return this.index(item);\n      },\n      args: [{ name: \"item\", type: \"any\" }],\n      returnType: \"Number\",\n    },\n    update: {\n      function: function (this: TokenSymbol, index: NumberSymbol, item: ISymbolType) {\n        return this.update(index, item);\n      },\n      args: [\n        { name: \"index\", type: \"Number\" },\n        { name: \"item\", type: \"any\" },\n      ],\n      returnType: \"Token\",\n    },\n    join: {\n      function: function (this: TokenSymbol, separator?: StringSymbol) {\n        return this.join(separator);\n      },\n      args: [{ name: \"separator\", type: \"String\", optional: true }],\n      returnType: \"String\",\n    },\n  };\n\n  public subType: string;\n  public value: TokenValue;\n  /**\n   * Optional metadata attached to this token.\n   * This is a reference that is preserved (not cloned) during deepCopy/cloneIfMutable operations.\n   * It is not accessible to the tokenscript language and is intended for external use\n   * (e.g., storing token IDs for tracing).\n   */\n  public metadata?: SymbolMetadata;\n\n  constructor(\n    subType: string,\n    value: TokenValue | Record<string, ISymbolType> | TokenSymbol | null,\n    config?: Config,\n    metadata?: SymbolMetadata,\n  ) {\n    let safeValue: TokenValue;\n    if (value instanceof TokenSymbol) {\n      safeValue = value.value;\n    } else if (isMap(value)) {\n      safeValue = value;\n    } else if (isObject(value)) {\n      safeValue = new Map(Object.entries(value));\n    } else if (isArray(value)) {\n      safeValue = value;\n    } else if (isNull(value)) {\n      safeValue = new Map();\n    } else {\n      throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n        data: { expectedType: \"Record or List\", actualType: typeof value },\n      });\n    }\n\n    super(safeValue, config);\n    this.value = safeValue;\n    this.subType = subType;\n    this.metadata = metadata;\n  }\n\n  validValue(val: any): boolean {\n    return isMap(val) || isArray(val) || isNull(val);\n  }\n\n  toString(): string {\n    if (isMap(this.value)) {\n      return DictionaryImpl.toString(this.value);\n    }\n    return ListImpl.toString(this.value);\n  }\n\n  get(keyOrIndex: StringSymbol | NumberSymbol | string | number): ISymbolType {\n    if (isArray(this.value)) {\n      const indexSymbol =\n        typeof keyOrIndex === \"number\" ? new NumberSymbol(keyOrIndex, this.config) : keyOrIndex;\n      if (!(indexSymbol instanceof NumberSymbol)) {\n        throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n          data: { operation: \"List get\", valueType: \"non-Number index\" },\n        });\n      }\n      return ListImpl.get(this.value, indexSymbol);\n    }\n    const keySymbol =\n      typeof keyOrIndex === \"string\" ? new StringSymbol(keyOrIndex, this.config) : keyOrIndex;\n    if (!(keySymbol instanceof StringSymbol)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"Dictionary get\", valueType: \"non-String key\" },\n      });\n    }\n    return DictionaryImpl.get(this.value, keySymbol, this.config);\n  }\n\n  set(key: StringSymbol, value: ISymbolType): TokenSymbol {\n    if (isArray(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"set key\", valueType: \"List\" },\n      });\n    }\n    DictionaryImpl.set(this.value, key, value);\n    return this;\n  }\n\n  keys(): ListSymbol {\n    if (isArray(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"get keys\", valueType: \"List\" },\n      });\n    }\n    return DictionaryImpl.keys(this.value, this.config);\n  }\n\n  values(): ListSymbol {\n    if (isMap(this.value)) {\n      return DictionaryImpl.values(this.value, this.config);\n    }\n    return new ListSymbol(this.value, false, this.config);\n  }\n\n  length(): NumberSymbol {\n    if (isMap(this.value)) {\n      return DictionaryImpl.length(this.value, this.config);\n    }\n    return ListImpl.length(this.value, this.config);\n  }\n\n  // List-specific methods\n  append(item: ISymbolType): TokenSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"append\", valueType: \"Dictionary\" },\n      });\n    }\n    ListImpl.append(this.value, item);\n    return this;\n  }\n\n  extend(...items: ISymbolType[]): TokenSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"extend\", valueType: \"Dictionary\" },\n      });\n    }\n    ListImpl.extend(this.value, ...items);\n    return this;\n  }\n\n  insert(indexSymbol: NumberSymbol, item: ISymbolType): TokenSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"insert\", valueType: \"Dictionary\" },\n      });\n    }\n    ListImpl.insert(this.value, indexSymbol, item);\n    return this;\n  }\n\n  delete(indexSymbol: NumberSymbol): TokenSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"delete\", valueType: \"Dictionary\" },\n      });\n    }\n    ListImpl.deleteAt(this.value, indexSymbol);\n    return this;\n  }\n\n  index(item: ISymbolType): NumberSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"get index\", valueType: \"Dictionary\" },\n      });\n    }\n    return ListImpl.indexOf(this.value, item, this.config);\n  }\n\n  update(indexSymbol: NumberSymbol, item: ISymbolType): TokenSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"update\", valueType: \"Dictionary\" },\n      });\n    }\n    ListImpl.update(this.value, indexSymbol, item);\n    return this;\n  }\n\n  join(separator?: StringSymbol): StringSymbol {\n    if (isMap(this.value)) {\n      throw new InterpreterError(SymbolsErrorCode.CANNOT_OPERATION_ON_TOKEN_TYPE, {\n        data: { operation: \"join\", valueType: \"Dictionary\" },\n      });\n    }\n    return ListImpl.join(this.value, separator, this.config);\n  }\n\n  deepCopy(): TokenSymbol {\n    if (isMap(this.value)) {\n      return new TokenSymbol(\n        this.subType,\n        DictionaryImpl.deepCopy(this.value),\n        this.config,\n        this.metadata,\n      );\n    }\n    return new TokenSymbol(this.subType, ListImpl.deepCopy(this.value), this.config, this.metadata);\n  }\n\n  cloneIfMutable(): TokenSymbol {\n    return this.deepCopy();\n  }\n\n  static empty(): TokenSymbol {\n    return new TokenSymbol(\"unknown\", null);\n  }\n\n  hasAttribute(attributeName: string): boolean {\n    if (attributeName === \"subType\" || attributeName === \"type\") {\n      return true;\n    }\n    if (isMap(this.value)) {\n      return DictionaryImpl.hasAttribute(this.value, attributeName);\n    }\n    return false;\n  }\n\n  getAttribute(attributeName: string): ISymbolType | null {\n    if (attributeName === \"subType\") {\n      return new StringSymbol(this.subType, this.config);\n    }\n    if (attributeName === \"type\") {\n      return new StringSymbol(this.type, this.config);\n    }\n    if (isMap(this.value)) {\n      return DictionaryImpl.getAttribute(this.value, attributeName);\n    }\n    return null;\n  }\n\n  getTypeName(): string {\n    return typeName(this.type, this.subType);\n  }\n\n  toJs(options?: ToJsOptions): JsValue[] | Record<string, JsValue> {\n    const { recursive = true } = options ?? {};\n    if (isMap(this.value)) {\n      const obj: Record<string, JsValue> = {};\n      const mapValue = this.value as Map<string, ISymbolType>;\n      for (const [key, child] of mapValue.entries()) {\n        obj[key] = recursive ? child.toJs(options) : (child as any);\n      }\n      return obj;\n    }\n    if (isArray(this.value)) {\n      const arrayValue = this.value as ISymbolType[];\n      return recursive ? arrayValue.map((item) => item.toJs(options)) : (arrayValue as any);\n    }\n    return {};\n  }\n}\n\nexport type dynamicColorValue = Record<string, ISymbolType>;\ntype ColorValue = string | dynamicColorValue | null;\n\nexport class ColorSymbol extends BaseSymbolType {\n  type = \"Color\";\n  static readonly type = \"Color\";\n  static _SUPPORTED_METHODS = {\n    to_string: {\n      name: \"to_string\",\n      function: function (this: ColorSymbol) {\n        return this.toStringSymbol();\n      },\n      args: [],\n      returnType: \"String\",\n    },\n  };\n\n  public subType: string | null = null;\n  public value: ColorValue;\n  public alpha: number | null = null;\n\n  static empty(): ColorSymbol {\n    return new ColorSymbol(null);\n  }\n\n  constructor(value: ColorValue, subType?: string, alpha?: number | null, config?: Config) {\n    const isHex = (isUndefined(subType) || subType?.toLowerCase() === \"hex\") && isString(value);\n    const isDynamic = isString(subType) && isObject(value);\n    const isValid = isNull(value) || isHex || isDynamic;\n\n    if (!isValid) {\n      throw new InterpreterError(SymbolsErrorCode.INVALID_COLOR_VALUE, {\n        data: { value: String(value), type: typeof value },\n      });\n    }\n\n    if (isHex) {\n      if (!isValidHex(value)) {\n        throw new InterpreterError(SymbolsErrorCode.INVALID_HEX_COLOR, {\n          data: { value: String(value) },\n        });\n      }\n    }\n\n    super(value, config);\n\n    this.value = value;\n    this.subType = isHex ? \"Hex\" : subType || null;\n\n    const alphaValue = alpha ?? null;\n    ensureValidAlpha(alphaValue);\n    this.alpha = alphaValue;\n  }\n\n  toStringSymbol(): StringSymbol {\n    if (this.config?.colorManager) {\n      const formatted = this.config.colorManager.formatColorMethod(this);\n      return new StringSymbol(formatted, this.config);\n    }\n    if (isObject(this.value)) {\n      return new StringSymbol(formatObjectEntries(this.value), this.config);\n    }\n    if (isString(this.value)) {\n      // For hex colors with alpha, output hex8 format\n      if (this.isHex() && this.alpha !== null) {\n        return new StringSymbol(formatHex8(this.value, this.alpha), this.config);\n      }\n      return new StringSymbol(this.value, this.config);\n    }\n    return new StringSymbol(\"\", this.config);\n  }\n\n  toString(): string {\n    return this.toStringSymbol().toString();\n  }\n\n  to(targetType: string): ColorSymbol {\n    if (!this.config?.colorManager) {\n      throw new InterpreterError(SymbolsErrorCode.COLOR_MANAGER_NOT_AVAILABLE);\n    }\n    return this.config.colorManager.convertToByType(this, targetType);\n  }\n\n  typeEquals(other: ISymbolType): boolean {\n    if (!typeEquals(this.type, other.type)) return false;\n    const otherColor = other as ColorSymbol;\n    // Edge-Case Color without type is equal to Hex only\n    if ((!this.subType && otherColor.isHex()) || (this.isHex() && !otherColor.subType)) return true;\n    return typeEquals(this.subType, (other as ColorSymbol).subType);\n  }\n\n  isHex(): boolean {\n    return typeEquals(this.subType, \"hex\");\n  }\n\n  validValue(val: any): boolean {\n    return val instanceof ColorSymbol || isNull(val) || isObject(val) || isValidHex(val);\n  }\n\n  equals(other: ISymbolType): boolean {\n    if (!this.typeEquals(other)) return false;\n\n    const otherColor = other as ColorSymbol;\n\n    if (this.alpha !== otherColor.alpha) return false;\n\n    // Compare non-hex\n    if (isObject(this.value) && isObject(otherColor.value)) {\n      const thisKeys = Object.keys(this.value);\n      const otherKeys = Object.keys(otherColor.value);\n\n      if (thisKeys.length !== otherKeys.length) return false;\n\n      for (const key of thisKeys) {\n        if (!this.value[key].equals(otherColor.value[key])) return false;\n      }\n      return true;\n    }\n\n    // Compare hex value directly\n    return this.value === otherColor.value;\n  }\n\n  deepCopy(): ColorSymbol {\n    if (isObject(this.value)) {\n      // For dynamic colors with object values, deep copy the object\n      const copiedValue: dynamicColorValue = {};\n      for (const [key, val] of Object.entries(this.value)) {\n        copiedValue[key] = val.deepCopy();\n      }\n      return new ColorSymbol(copiedValue, this.subType || undefined, this.alpha, this.config);\n    }\n    // For hex colors (string values), no deep copy needed\n    return new ColorSymbol(this.value, this.subType || undefined, this.alpha, this.config);\n  }\n\n  cloneIfMutable(): ColorSymbol {\n    if (isObject(this.value)) {\n      // Dynamic colors with object values are mutable, need deep copy\n      return this.deepCopy();\n    }\n    // Hex colors (string values) are immutable, return this\n    return this;\n  }\n\n  hasAttribute(attributeName: string): boolean {\n    if (attributeName === \"to\" || attributeName === \"alpha\") {\n      return true;\n    }\n\n    // For dynamic colors (object values), check if the attribute exists\n    if (isObject(this.value)) {\n      return attributeName in this.value;\n    }\n\n    // For hex colors and null values, no attributes are supported\n    return false;\n  }\n\n  getAttribute(attributeName: string): ISymbolType | null {\n    if (attributeName === \"to\") {\n      return this;\n    }\n\n    if (attributeName === \"alpha\") {\n      return this.alpha !== null\n        ? new NumberSymbol(this.alpha, this.config)\n        : new NullSymbol(this.config);\n    }\n\n    if (isObject(this.value)) {\n      const attributeValue = this.value[attributeName];\n      if (attributeValue !== undefined) {\n        return attributeValue;\n      }\n    }\n\n    throw new InterpreterError(SymbolsErrorCode.ATTRIBUTE_NOT_FOUND, {\n      data: { attributeName, type: \"Color\" },\n    });\n  }\n\n  hasMethod(methodName: string, args: ISymbolType[]): boolean {\n    // First check if it's a built-in method\n    if (super.hasMethod?.(methodName, args)) {\n      return true;\n    }\n\n    // Check if it's a color conversion method\n    if (this.config?.colorManager.hasInitializer(methodName)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  callMethod(methodName: string, args: ISymbolType[]): ISymbolType | null | undefined {\n    // First check if it's a built-in method\n    const methodDefinition = (this.constructor as any)._SUPPORTED_METHODS?.[\n      methodName.toLowerCase()\n    ];\n    if (methodDefinition && super.hasMethod?.(methodName, args)) {\n      return super.callMethod?.(methodName, args);\n    }\n\n    // Handle color conversion methods\n    if (this.config?.colorManager.hasInitializer(methodName)) {\n      return this.config.colorManager.convertToByType(this, methodName);\n    }\n\n    throw new InterpreterError(SymbolsErrorCode.METHOD_NOT_FOUND, {\n      data: { methodName, type: this.type },\n    });\n  }\n\n  getTypeName(): string {\n    return typeName(this.type, nullToUndefined(this.subType));\n  }\n\n  toJs(options?: ToJsOptions): string | Record<string, JsValue> {\n    const { stringify = false, recursive = true } = options ?? {};\n\n    if (stringify) {\n      return this.toString();\n    }\n\n    // For hex colors (string value)\n    if (isString(this.value)) {\n      return {\n        type: this.subType || \"hex\",\n        value: this.value,\n        alpha: this.alpha,\n      };\n    }\n\n    // For dynamic colors (object value)\n    if (isObject(this.value)) {\n      const result: Record<string, JsValue> = {\n        type: this.subType || \"unknown\",\n        alpha: this.alpha,\n      };\n\n      for (const [key, val] of Object.entries(this.value)) {\n        result[key] = recursive ? val.toJs(options) : (val as any);\n      }\n\n      return result;\n    }\n\n    // For null values\n    return {\n      type: this.subType || \"unknown\",\n      value: null,\n      alpha: this.alpha,\n    };\n  }\n}\n\n// Symbol Normalization Utilities ----------------------------------------------\n\nexport const jsValueToSymbolType = (value: any, config?: Config): ISymbolType => {\n  if (value instanceof BaseSymbolType) {\n    value.config = config;\n    return value;\n  }\n  if (isNone(value)) return new NullSymbol(config);\n  if (isNumber(value)) return new NumberSymbol(value, config);\n  if (isString(value)) {\n    if (isValidHex(value)) return new ColorSymbol(value, \"Hex\", null, config);\n    return new StringSymbol(value, config);\n  }\n  if (isBoolean(value)) return new BooleanSymbol(value, config);\n  if (isArray(value))\n    return new ListSymbol(\n      value.map((item) => jsValueToSymbolType(item, config)),\n      false,\n      config,\n    );\n\n  // Convert plain object to dictionary\n  if (isObject(value)) {\n    const dict = new Map<string, ISymbolType>();\n    for (const key in value) {\n      dict.set(key, jsValueToSymbolType(value[key], config));\n    }\n    return new DictionarySymbol(dict, config);\n  }\n\n  throw new InterpreterError(SymbolsErrorCode.VALUE_MUST_BE_TYPE, {\n    data: { expectedType: \"valid TokenScript type\", actualType: typeof value },\n  });\n};\n\nexport const nullableSymbolTypes = {\n  [NumberSymbol.type.toLowerCase()]: NumberSymbol,\n  [StringSymbol.type.toLowerCase()]: StringSymbol,\n  [BooleanSymbol.type.toLowerCase()]: BooleanSymbol,\n  [NumberWithUnitSymbol.type.toLowerCase()]: NumberWithUnitSymbol,\n  [ColorSymbol.type.toLowerCase()]: ColorSymbol,\n  [NullSymbol.type.toLowerCase()]: NullSymbol,\n} as const;\n\nexport const basicSymbolTypes = {\n  ...nullableSymbolTypes,\n  [ListSymbol.type.toLowerCase()]: ListSymbol,\n  [DictionarySymbol.type.toLowerCase()]: DictionarySymbol,\n  [TokenSymbol.type.toLowerCase()]: TokenSymbol,\n} as const;\n\nexport type BasicSymbolTypeConstructor = (typeof basicSymbolTypes)[keyof typeof basicSymbolTypes];\n\nexport const isNullableSymbol = (symbol: ISymbolType): boolean =>\n  symbol.type.toLowerCase() in nullableSymbolTypes;\n\nexport const hasNullValue = (symbol: ISymbolType): boolean =>\n  isNullableSymbol(symbol) && isNull(symbol.value);\n\n// Symbol to JS Value Conversion -----------------------------------------------\n\n/**\n * Represents a JavaScript value that can be produced from a TokenScript symbol.\n * This includes primitives, arrays, and plain objects (recursively).\n */\nexport type JsValue = string | number | boolean | null | JsValue[] | { [key: string]: JsValue };\n\n/**\n * Serializes an interpreter result (symbol or primitive) to a plain JavaScript value.\n */\nexport function serializeInterpreterResult(\n  value: ISymbolType | string | null,\n  options?: ToJsOptions,\n): unknown {\n  if (isString(value)) return value;\n  if (isNull(value)) return null;\n  if (isTokenscriptSymbol(value)) return value.toJs(options);\n  return value;\n}\n\n/**\n * Converts an interpreter result to a string representation.\n */\nexport function stringifyInterpreterResult(value: ISymbolType | string | null): string {\n  if (isString(value)) return value;\n  if (isTokenscriptSymbol(value)) return value.toString();\n  return String(value);\n}\n"]}