text: //
  //  CardIOCreditCardInfo.h
  //  Version 5.0.4
  //
  //  See the file "LICENSE.md" for the full license governing this code.
  //
  
  #import <Foundation/Foundation.h>
  #import <UIKit/UIKit.h>
  
  /// CardIOCreditCardType Identifies type of card.
  typedef NS_ENUM(NSInteger, CardIOCreditCardType) {
    /// The card number does not correspond to any recognizable card type.
    CardIOCreditCardTypeUnrecognized = 0,
    /// The card number corresponds to multiple card types (e.g., when only a few digits have been entered).
    CardIOCreditCardTypeAmbiguous = 1,
    /// American Express
    CardIOCreditCardTypeAmex = '3',
    /// Japan Credit Bureau
    CardIOCreditCardTypeJCB = 'J',
    /// VISA
    CardIOCreditCardTypeVisa = '4',
    /// MasterCard
    CardIOCreditCardTypeMastercard = '5',
    /// Discover Card
    CardIOCreditCardTypeDiscover = '6'
  };
  
  
  /// Container for the information about a card.
  @interface CardIOCreditCardInfo : NSObject<NSCopying>
  
  /// Card number.
  @property(nonatomic, copy, readwrite) NSString *cardNumber;
  
  /// Card number with all but the last four digits obfuscated.
  @property(nonatomic, copy, readonly) NSString *redactedCardNumber;
  
  /// January == 1
  /// @note expiryMonth & expiryYear may be 0, if expiry information was not requested.
  @property(nonatomic, assign, readwrite) NSUInteger expiryMonth;
  
  /// The full four digit year.
  /// @note expiryMonth & expiryYear may be 0, if expiry information was not requested.
  @property(nonatomic, assign, readwrite) NSUInteger expiryYear;
  
  /// Security code (aka CSC, CVV, CVV2, etc.)
  /// @note May be nil, if security code was not requested.
  @property(nonatomic, copy, readwrite) NSString *cvv;
  
  /// Postal code. Format is country dependent.
  /// @note May be nil, if postal code information was not requested.
  @property(nonatomic, copy, readwrite) NSString *postalCode;
  
  /// Was the card number scanned (as opposed to entered manually)?
  @property(nonatomic, assign, readwrite) BOOL scanned;
  
  /// The rectified card image; usually 428x270.
  @property(nonatomic, strong, readwrite) UIImage *cardImage;
  
  /// Derived from cardNumber.
  /// @note CardIOCreditInfo objects returned by either of the delegate methods
  ///       userDidProvideCreditCardInfo:inPaymentViewController:
  ///       or cardIOView:didScanCard:
  ///       will never return a cardType of CardIOCreditCardTypeAmbiguous.
  @property(nonatomic, assign, readonly) CardIOCreditCardType cardType;
  
  /// Convenience method which returns a card type string suitable for display (e.g. "Visa", "American Express", "JCB", "MasterCard", or "Discover").
  /// Where appropriate, this string will be translated into the language specified.
  /// @param cardType The card type.
  /// @param languageOrLocale See CardIOPaymentViewController.h for a detailed explanation of languageOrLocale.
  /// @return Card type string suitable for display.
  + (NSString *)displayStringForCardType:(CardIOCreditCardType)cardType usingLanguageOrLocale:(NSString *)languageOrLocale;
  
  /// Returns a 36x25 credit card logo, at a resolution appropriate for the device.
  /// @param cardType The card type.
  /// @return 36x25 credit card logo.
  + (UIImage *)logoForCardType:(CardIOCreditCardType)cardType;
  
  @end
  