import 'package:krow_core/core.dart';
import '../ui_entities/auth_mode.dart';

/// Represents the arguments required for the [VerifyOtpUseCase].
///
/// Encapsulates the verification ID and the SMS code needed to verify
/// a phone number during the authentication process.
class VerifyOtpArguments extends UseCaseArgument {
  /// The unique identifier received after requesting an OTP.
  final String verificationId;

  /// The one-time password (OTP) sent to the user's phone.
  final String smsCode;

  /// The authentication mode (login or signup).
  final AuthMode mode;

  /// Creates a [VerifyOtpArguments] instance.
  ///
  /// Both [verificationId] and [smsCode] are required.
  const VerifyOtpArguments({
    required this.verificationId,
    required this.smsCode,
    required this.mode,
  });

  @override
  List<Object> get props => <Object>[verificationId, smsCode, mode];
}
