import '../core/api_client.dart'; class PaymentGatewayService { final ApiClient _api; PaymentGatewayService(this._api); // Admin CRUD Future>> listAdmin() async { final res = await _api.get>('/admin/payment-gateways'); final body = res.data; final items = (body is Map) ? body['data'] : body; if (items is List) { return items.map>((e) => Map.from(e as Map)).toList(); } return const >[]; } Future> createAdmin({ required String provider, required String displayName, required Map config, bool isActive = true, bool isSandbox = true, }) async { final res = await _api.post>('/admin/payment-gateways', data: { 'provider': provider, 'display_name': displayName, 'is_active': isActive, 'is_sandbox': isSandbox, 'config': config, }); final body = res.data as Map; return Map.from(body['data'] as Map); } Future> updateAdmin({ required int gatewayId, String? provider, String? displayName, bool? isActive, bool? isSandbox, Map? config, }) async { final res = await _api.put>('/admin/payment-gateways/$gatewayId', data: { if (provider != null) 'provider': provider, if (displayName != null) 'display_name': displayName, if (isActive != null) 'is_active': isActive, if (isSandbox != null) 'is_sandbox': isSandbox, if (config != null) 'config': config, }); final body = res.data as Map; return Map.from(body['data'] as Map); } Future deleteAdmin(int gatewayId) async { await _api.delete('/admin/payment-gateways/$gatewayId'); } // Business visible gateways Future>> listBusinessGateways(int businessId) async { final res = await _api.get>('/businesses/$businessId/wallet/gateways'); final body = res.data; final items = (body is Map) ? body['data'] : body; if (items is List) { return items.map>((e) => Map.from(e as Map)).toList(); } return const >[]; } }