// Export the main classes that the main app will use
export 'payment_plugin_core.dart';
export 'payment_config.dart';
export 'domain/models/payment_configurations.dart';
export 'domain/models/stored_payment_method.dart';
export 'domain/models/payment_method.dart';
// For advanced usage, also export the repository
export 'domain/repositories/adyen_repository.dart';
// Export themes
export 'themes/light_theme.dart' show lightTheme;
export 'themes/dark_theme.dart' show darkTheme;
export 'themes/comwell_colors.dart';
// Export screens
export 'presentation/screens/payment_cards_page.dart';
export 'presentation/screens/payment_processing_page.dart';
// Export cubits
export 'presentation/app/bloc/payment_cubit.dart';
export 'presentation/app/bloc/payment_cards_cubit.dart';
// Export cubit states
export 'presentation/app/bloc/payment_processing_state.dart';
export 'presentation/app/bloc/payment_cards_state.dart';
/// Example usage in your main app:
///
/// ```dart
/// import 'package:payment_plugin/payment_plugin.dart';
/// import 'package:dio/dio.dart';
///
/// // 1. Create and configure your Dio instance in the main app
/// final dio = Dio(BaseOptions(
/// baseUrl: 'https://your-api.com',
/// ));
///
/// // Add your interceptors (auth, logging, etc.)
/// dio.interceptors.add(
/// InterceptorsWrapper(
/// onRequest: (options, handler) async {
/// final token = await authService.getToken();
/// options.headers['Authorization'] = 'Bearer $token';
/// return handler.next(options);
/// },
/// ),
/// );
///
/// // 2. Initialize the plugin with your configured Dio instance
/// await PaymentPlugin.initialize(
/// config: PaymentConfig(
/// dio: dio,
/// ),
/// );
///
/// // 3. Use it anywhere in your app via the singleton
/// final cards = await PaymentPlugin.instance.getCards();
///
/// // 4. Create payment sessions
/// final config = await PaymentPlugin.instance.sessionCheckout(
/// 'hotel123',
/// 'booking456',
/// false, // usePoints
/// );
///
/// // 5. Add cards
/// final cardConfig = await PaymentPlugin.instance.fetchSessionForAddingCard();
/// ```