// swiftlint:disable all
// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen

#if os(OSX)
  import AppKit.NSImage
  internal typealias AssetColorTypeAlias = NSColor
  internal typealias AssetImageTypeAlias = NSImage
#elseif os(iOS) || os(tvOS) || os(watchOS)
  import UIKit.UIImage
  internal typealias AssetColorTypeAlias = UIColor
  internal typealias AssetImageTypeAlias = UIImage
#endif

// swiftlint:disable superfluous_disable_command
// swiftlint:disable file_length

// MARK: - Asset Catalogs

// swiftlint:disable identifier_name line_length nesting type_body_length type_name
internal enum Asset {
  internal enum Colors {
    internal static let inactiveMagenta = ColorAsset(name: "inactiveMagenta")
    internal static let inactiveWhite = ColorAsset(name: "inactiveWhite")
    internal static let inputFieldDisabled = ColorAsset(name: "inputFieldDisabled")
    internal static let inputFieldNormal = ColorAsset(name: "inputFieldNormal")
    internal static let darkMagenta = ColorAsset(name: "darkMagenta")
    internal static let magenta = ColorAsset(name: "magenta")
    internal static let black = ColorAsset(name: "black")
    internal static let onSurfaceDisabled = ColorAsset(name: "onSurfaceDisabled")
    internal static let onSurfaceHigh = ColorAsset(name: "onSurfaceHigh")
    internal static let onSurfaceMedium = ColorAsset(name: "onSurfaceMedium")
    internal static let onSurfaceOverlay = ColorAsset(name: "onSurfaceOverlay")
    internal static let transparentMagenta = ColorAsset(name: "transparentMagenta")
    internal static let transparentSlateGrey = ColorAsset(name: "transparentSlateGrey")
    internal static let white = ColorAsset(name: "white")
    internal static let darkSlateBlue = ColorAsset(name: "darkSlateBlue")
    internal static let lightSlateGrey = ColorAsset(name: "lightSlateGrey")
    internal static let nightBlue = ColorAsset(name: "nightBlue")
  }
  internal enum Images {
    internal static let socialAmazonIcon = ImageAsset(name: "social-amazon-icon")
    internal static let socialAppleIcon = ImageAsset(name: "social-apple-icon")
    internal static let socialBaiduIcon = ImageAsset(name: "social-baidu-icon")
    internal static let socialBattlenetIcon = ImageAsset(name: "social-battlenet-icon")
    internal static let socialDiscordIcon = ImageAsset(name: "social-discord-icon")
    internal static let socialFacebookIcon = ImageAsset(name: "social-facebook-icon")
    internal static let socialGithubIcon = ImageAsset(name: "social-github-icon")
    internal static let socialGoogleIcon = ImageAsset(name: "social-google-icon")
    internal static let socialKakaoIcon = ImageAsset(name: "social-kakao-icon")
    internal static let socialLinkedinIcon = ImageAsset(name: "social-linkedin-icon")
    internal static let socialMailruIcon = ImageAsset(name: "social-mailru-icon")
    internal static let socialMicrosoftIcon = ImageAsset(name: "social-microsoft-icon")
    internal static let socialMoreIcon = ImageAsset(name: "social-more-icon")
    internal static let socialMsnIcon = ImageAsset(name: "social-msn-icon")
    internal static let socialNaverIcon = ImageAsset(name: "social-naver-icon")
    internal static let socialOkIcon = ImageAsset(name: "social-ok-icon")
    internal static let socialPaypalIcon = ImageAsset(name: "social-paypal-icon")
    internal static let socialQqIcon = ImageAsset(name: "social-qq-icon")
    internal static let socialRedditIcon = ImageAsset(name: "social-reddit-icon")
    internal static let socialSteamIcon = ImageAsset(name: "social-steam-icon")
    internal static let socialTwitchIcon = ImageAsset(name: "social-twitch-icon")
    internal static let socialTwitterIcon = ImageAsset(name: "social-twitter-icon")
    internal static let socialVimeoIcon = ImageAsset(name: "social-vimeo-icon")
    internal static let socialVkIcon = ImageAsset(name: "social-vk-icon")
    internal static let socialWechatIcon = ImageAsset(name: "social-wechat-icon")
    internal static let socialWeiboIcon = ImageAsset(name: "social-weibo-icon")
    internal static let socialXboxIcon = ImageAsset(name: "social-xbox-icon")
    internal static let socialYahooIcon = ImageAsset(name: "social-yahoo-icon")
    internal static let socialYandexIcon = ImageAsset(name: "social-yandex-icon")
    internal static let socialYoutubeIcon = ImageAsset(name: "social-youtube-icon")
    internal static let balanceAddIcon = ImageAsset(name: "balance-add-icon")
    internal static let balanceCurrencyIcon = ImageAsset(name: "balance-currency-icon")
    internal static let balanceItemsIcon = ImageAsset(name: "balance-items-icon")
    internal static let menuAccountIcon = ImageAsset(name: "menu-account-icon")
    internal static let menuCharacterIcon = ImageAsset(name: "menu-character-icon")
    internal static let menuFriendsIcon = ImageAsset(name: "menu-friends-icon")
    internal static let menuHelpIcon = ImageAsset(name: "menu-help-icon")
    internal static let menuInventoryIcon = ImageAsset(name: "menu-inventory-icon")
    internal static let menuLogoutIcon = ImageAsset(name: "menu-logout-icon")
    internal static let menuProfileAvatar = ImageAsset(name: "menu-profile-avatar")
    internal static let menuStoreIcon = ImageAsset(name: "menu-store-icon")
    internal static let menuToggleIcon = ImageAsset(name: "menu-toggle-icon")
    internal static let avatarPlaceholderLarge = ImageAsset(name: "avatar-placeholder-large")
    internal static let avatarPlaceholder = ImageAsset(name: "avatar-placeholder")
    internal static let dismissButtonIcon = ImageAsset(name: "dismiss-button-icon")
    internal static let imagePlaceholder = ImageAsset(name: "image-placeholder")
    internal static let linkSocialNetworkIcon = ImageAsset(name: "link-social-network-icon")
    internal static let navigationBackIcon = ImageAsset(name: "navigation-back-icon")
    internal static let phoneIcon = ImageAsset(name: "phone-icon")
    internal static let textfieldIsSecure = ImageAsset(name: "textfield-is-secure")
    internal static let textfieldNotSecure = ImageAsset(name: "textfield-not-secure")
    internal static let timerIcon = ImageAsset(name: "timer-icon")
    internal static let xsollaLogoWithText = ImageAsset(name: "xsolla-logo-with-text")
  }
}
// swiftlint:enable identifier_name line_length nesting type_body_length type_name

// MARK: - Implementation Details

internal struct ColorAsset {
  internal fileprivate(set) var name: String

  @available(iOS 11.0, tvOS 11.0, watchOS 4.0, OSX 10.13, *)
  internal var color: AssetColorTypeAlias {
    return AssetColorTypeAlias(asset: self)
  }
}

internal extension AssetColorTypeAlias {
  @available(iOS 11.0, tvOS 11.0, watchOS 4.0, OSX 10.13, *)
  convenience init!(asset: ColorAsset) {
    let bundle = Bundle(for: BundleToken.self)
    #if os(iOS) || os(tvOS)
    self.init(named: asset.name, in: bundle, compatibleWith: nil)
    #elseif os(OSX)
    self.init(named: NSColor.Name(asset.name), bundle: bundle)
    #elseif os(watchOS)
    self.init(named: asset.name)
    #endif
  }
}

internal struct DataAsset {
  internal fileprivate(set) var name: String

  #if os(iOS) || os(tvOS) || os(OSX)
  @available(iOS 9.0, tvOS 9.0, OSX 10.11, *)
  internal var data: NSDataAsset {
    return NSDataAsset(asset: self)
  }
  #endif
}

#if os(iOS) || os(tvOS) || os(OSX)
@available(iOS 9.0, tvOS 9.0, OSX 10.11, *)
internal extension NSDataAsset {
  convenience init!(asset: DataAsset) {
    let bundle = Bundle(for: BundleToken.self)
    #if os(iOS) || os(tvOS)
    self.init(name: asset.name, bundle: bundle)
    #elseif os(OSX)
    self.init(name: NSDataAsset.Name(asset.name), bundle: bundle)
    #endif
  }
}
#endif

internal struct ImageAsset {
  internal fileprivate(set) var name: String

  internal var image: AssetImageTypeAlias {
    let bundle = Bundle(for: BundleToken.self)
    #if os(iOS) || os(tvOS)
    let image = AssetImageTypeAlias(named: name, in: bundle, compatibleWith: nil)
    #elseif os(OSX)
    let image = bundle.image(forResource: NSImage.Name(name))
    #elseif os(watchOS)
    let image = AssetImageTypeAlias(named: name)
    #endif
    guard let result = image else { fatalError("Unable to load image named \(name).") }
    return result
  }
}

internal extension AssetImageTypeAlias {
  @available(iOS 1.0, tvOS 1.0, watchOS 1.0, *)
  @available(OSX, deprecated,
    message: "This initializer is unsafe on macOS, please use the ImageAsset.image property")
  convenience init!(asset: ImageAsset) {
    #if os(iOS) || os(tvOS)
    let bundle = Bundle(for: BundleToken.self)
    self.init(named: asset.name, in: bundle, compatibleWith: nil)
    #elseif os(OSX)
    self.init(named: NSImage.Name(asset.name))
    #elseif os(watchOS)
    self.init(named: asset.name)
    #endif
  }
}

private final class BundleToken {}
