// Copyright (c) 2025, the Dart project authors. All rights reserved. // Defines the request for service extension calls over WebSocket. import 'dart:convert'; import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; part 'service_extension_request.g.dart'; abstract class ServiceExtensionRequest implements Built { String get id; String get method; String get argsJson; // Store args as JSON string for built_value compatibility // Helper method to get args as Map Map get args => argsJson.isEmpty ? {} : json.decode(argsJson) as Map; ServiceExtensionRequest._(); factory ServiceExtensionRequest([ void Function(ServiceExtensionRequestBuilder) updates, ]) = _$ServiceExtensionRequest; // Convenient factory method to create with args Map factory ServiceExtensionRequest.fromArgs({ required String id, required String method, required Map args, }) => ServiceExtensionRequest( (b) => b ..id = id ..method = method ..argsJson = json.encode(args), ); static Serializer get serializer => _$serviceExtensionRequestSerializer; }