Serializes the interaction data to JSON format.
Used for logging, debugging, and network transmission. Must return a JSON-serializable map.
Map<String, dynamic> toJson();