// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.3.2 effective-4.2 (swiftlang-1200.0.45 clang-1200.0.32.28)
// swift-module-flags: -target arm64-apple-ios9.0 -enable-objc-interop -enable-library-evolution -swift-version 4.2 -enforce-exclusivity=checked -O -module-name FlybitsPushSDK
@_exported import FlybitsPushSDK
import FlybitsSDK
import Foundation
import Swift
import UIKit
import UserNotifications
@objc public enum PushMessageCategory : Swift.Int {
  case custom
  case core
  case context
  case kernel
  case push
  public var description: Swift.String {
    get
  }
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@objc public enum PushMessageEntity : Swift.Int {
  case custom
  case group, experience, content, contentData, relevantContent
  case rule
  public var description: Swift.String {
    get
  }
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@objc public enum PushMessageAction : Swift.Int {
  case custom
  case content
  case website
  case openConciergeNotifications
  case openContent
  case openContentAndOpenConciergeNotifications
  case created, updated, deleted
  case changed
  public var description: Swift.String {
    get
  }
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@objc public class PushMessage : ObjectiveC.NSObject, FlybitsSDK.ResponseObjectSerializable {
  public struct Constants {
    public static let Version: Swift.String
    public static let Category: Swift.String
    public static let Entity: Swift.String
    public static let Action: Swift.String
    public static let Timestamp: Swift.String
    public static let Alert: Swift.String
    public static let Title: Swift.String
    public static let Body: Swift.String
    public static let ID: Swift.String
    public static let Result: Swift.String
    public static let type: Swift.String
    public static let APS: Swift.String
    public struct PushPayloadTypeIds {
    }
  }
  @objc(identifier) final public let id: Swift.String
  final public let version: Swift.Int
  final public let category: FlybitsPushSDK.PushMessageCategory
  final public let entity: FlybitsPushSDK.PushMessageEntity
  public var action: FlybitsPushSDK.PushMessageAction {
    get
  }
  public var rawAction: Swift.String {
    get
  }
  final public let timestamp: Foundation.TimeInterval
  final public let alert: Swift.String
  final public let title: Swift.String
  final public let body: [Swift.String : Any]?
  final public let aps: [Swift.String : Any]?
  final public let templateTypeID: Swift.String?
  public var notificationType: Foundation.Notification.Name {
    get
  }
  public var completeNotificationType: Foundation.Notification.Name {
    get
  }
  required public init?(responseData: Any)
  public static func NotificationType(_ entity: FlybitsPushSDK.PushMessageEntity, action: FlybitsPushSDK.PushMessageAction) -> Foundation.Notification.Name
  public static func NotificationType<T>(_ entity: T, action: FlybitsPushSDK.PushMessageAction) -> Foundation.Notification.Name where T : FlybitsPushSDK.PushConfigurable
  public static func CompleteNotificationType(_ entity: FlybitsPushSDK.PushMessageEntity, action: FlybitsPushSDK.PushMessageAction, rawAction: Swift.String) -> Foundation.Notification.Name
  public static func CompleteNotificationType<T>(_ entity: T, action: FlybitsPushSDK.PushMessageAction) -> Foundation.Notification.Name where T : FlybitsPushSDK.PushConfigurable
  @objc override dynamic public var description: Swift.String {
    @objc get
  }
  @objc override dynamic public var debugDescription: Swift.String {
    @objc get
  }
  public static func pushPayloadAction(for userInfo: [Swift.String : Any]) -> FlybitsPushSDK.PushMessageAction?
  public static func pushPayload<T>(for userInfo: [Swift.String : Any]) -> T? where T : FlybitsPushSDK.PushPayload
  @objc deinit
  @objc override dynamic public init()
}
@objc open class PushPayload : ObjectiveC.NSObject, FlybitsSDK.ResponseObjectSerializable {
  final public let rawPayload: [Swift.String : Any]
  final public let typeID: Swift.String
  public var requestID: Swift.String?
  required public init?(responseData: Any)
  @objc deinit
  @objc override dynamic public init()
}
@_inheritsConvenienceInitializers @objc public class PushPayloadWebsite : FlybitsPushSDK.PushPayload {
  final public let urlString: Swift.String
  public var url: Foundation.URL?
  required public init?(responseData: Any)
  @objc deinit
}
@_inheritsConvenienceInitializers @objc public class PushPayloadContent : FlybitsPushSDK.PushPayload {
  final public let value: Swift.String
  public var entity: Swift.String?
  public var metadata: [Swift.String : Any]?
  required public init?(responseData: Any)
  @objc deinit
}
@_inheritsConvenienceInitializers @objc public class PushPayloadOpenContent : FlybitsPushSDK.PushPayloadContent {
  @objc deinit
  required public init?(responseData: Any)
}
@_inheritsConvenienceInitializers @objc public class PushPayloadOpenConciergeNotifications : FlybitsPushSDK.PushPayloadContent {
  @objc deinit
  required public init?(responseData: Any)
}
@_inheritsConvenienceInitializers @objc public class PushPayloadOpenContentAndConcierge : FlybitsPushSDK.PushPayloadContent {
  @objc deinit
  required public init?(responseData: Any)
}
@_inheritsConvenienceInitializers @objc public class PushScope : ObjectiveC.NSObject, FlybitsSDK.FlybitsScope {
  public static var hasReceivedContent: Swift.Bool {
    get
    set
  }
  public var scopeName: Swift.String {
    get
  }
  @objc public var identifier: Swift.String {
    get
  }
  @objc public func onStart(currentActiveUserIsOptedIn: Swift.Bool)
  @objc public func onStop()
  @objc public func onConnected(user: FlybitsSDK.User)
  @objc public func onDisconnected(jwtToken: Swift.String)
  @objc public func onAccountDestroyed(jwtToken: Swift.String)
  @objc public func onOptIn()
  @objc public func onOptOut()
  @objc required convenience public init?(coder aDecoder: Foundation.NSCoder)
  @objc public func encode(with aCoder: Foundation.NSCoder)
  public func onCachedDataRetrieved(data: Swift.AnyObject)
  public static func trackNotificationStatus(granted: Swift.Bool)
  @objc deinit
  @objc override dynamic public init()
}
@available(*, deprecated, message: "PushContentAnalyticsContext will be updated in v4.0")
public class PushContentAnalyticsContext : FlybitsSDK.FulfillableAnalyticsContext {
  public var viewed: Swift.Bool?
  public var engaged: Swift.Bool?
  public var componentEngaged: Swift.Bool?
  public var componentId: Swift.String
  public var pushId: Swift.String
  public var contentId: Swift.String
  public var fulfilled: Swift.Bool?
  public var componentFulfilled: Swift.Bool?
  public var pluginId: Swift.String {
    get
  }
  public init(componentId: Swift.String, contentId: Swift.String, pushId: Swift.String)
  public func valuesDictionary() -> [Swift.String : Swift.Bool]
  @objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc public class APNSPreferences : ObjectiveC.NSObject, FlybitsSDK.ResponseObjectSerializable, FlybitsSDK.DictionaryConvertible {
  public var requiresSave: Swift.Bool {
    get
  }
  public var isLoaded: Swift.Bool {
    get
  }
  @objc override dynamic public var description: Swift.String {
    @objc get
  }
  @objc override dynamic public var debugDescription: Swift.String {
    @objc get
  }
  required public init?(responseData: Any)
  public func isPushDisabled<T>(for element: T) -> Swift.Bool where T : FlybitsPushSDK.PushConfigurable
  public func isPushDisabled(for topic: Swift.String) -> Swift.Bool
  public func enablePush<T>(for element: T) where T : FlybitsPushSDK.PushConfigurable
  public func enablePush(for topic: Swift.String)
  public func disablePush<T>(for element: T) where T : FlybitsPushSDK.PushConfigurable
  public func disablePush(for topic: Swift.String)
  public func save()
  public func load()
  public func clearAllKeywords()
  public func toDictionary() throws -> [Swift.String : Any]
  @objc deinit
}
public enum PushError : Swift.Int, FlybitsSDK.ErrorConformable {
  case apnsTokenLength
  public static let Domain: Swift.String
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
public enum APNSPreferenceError : Swift.Int, FlybitsSDK.ErrorConformable {
  case parseError
  public static let Domain: Swift.String
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@_inheritsConvenienceInitializers @objc public class PushManagerErrorConstants : ObjectiveC.NSObject {
  public static var FetchEmpty: Swift.String {
    get
  }
  public static var Parse: Swift.String {
    get
  }
  public static var PayloadEmpty: Swift.String {
    get
  }
  public static var PayloadData: Swift.String {
    get
  }
  public static var PayloadFormat: Swift.String {
    get
  }
  public static var TokenRegistration: Swift.String {
    get
  }
  @objc deinit
  @objc override dynamic public init()
}
@_inheritsConvenienceInitializers @objc public class PushManagerConstants : ObjectiveC.NSObject {
  public static var PushConnected: Foundation.Notification.Name {
    get
  }
  public static var PushDisconnected: Foundation.Notification.Name {
    get
  }
  public static var PushFetchError: Swift.String {
    get
  }
  public static var PushMessageContent: Swift.String {
    get
  }
  public static var PushErrorData: Swift.String {
    get
  }
  public static var PushErrorTopic: Foundation.Notification.Name {
    get
  }
  public static var PushPreferencesErrorTopic: Foundation.Notification.Name {
    get
  }
  public static var PushPreferencesUpdatedTopic: Foundation.Notification.Name {
    get
  }
  public static var PushErrorType: Swift.String {
    get
  }
  public static var PushFetchedContent: Swift.String {
    get
  }
  public static var PushSourceNetwork: Swift.String {
    get
  }
  public static var SourceContent: Swift.String {
    get
  }
  public static var PushTokenError: Foundation.Notification.Name {
    get
  }
  public static var PushTokenUpdated: Foundation.Notification.Name {
    get
  }
  public static var UnderlyingErrors: Swift.String {
    get
  }
  @objc deinit
  @objc override dynamic public init()
}
@objc public protocol PushConfigurable {
  @objc var identifier: Swift.String { get }
  @objc var pushEntityType: FlybitsPushSDK.PushMessageEntity { get }
  @objc var route: Swift.String { get }
  @objc func subscribeToPush()
  @objc func unsubscribeFromPush()
}
@objc public enum PushServiceLevel : Swift.Int {
  case none = 0
  case foreground = 1
  case background = 2
  case both = 3
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@objc public class PushConfiguration : ObjectiveC.NSObject {
  public var serviceLevel: FlybitsPushSDK.PushServiceLevel
  public var autoFetchData: Swift.Bool
  public var autoReconnect: Swift.Bool
  public var deviceRegistrationData: [Swift.String : Any]?
  public var autoSavePushPreferences: Swift.Bool
  public var apnsToken: Foundation.Data? {
    get
    set
  }
  @available(*, deprecated, message: "Please use init(serviceLevel: PushServiceLevel, autoFetchData: Bool, autoReconnect: Bool, deviceRegistrationData: [String: Any]?) initializer")
  public init(serviceLevel: FlybitsPushSDK.PushServiceLevel = .background, apnsToken: Foundation.Data? = nil, autoFetchData: Swift.Bool = true, autoReconnect: Swift.Bool = true, deviceRegistrationData: [Swift.String : Any]? = nil)
  public init(serviceLevel: FlybitsPushSDK.PushServiceLevel = .background, autoFetchData: Swift.Bool = true, autoReconnect: Swift.Bool = true, deviceRegistrationData: [Swift.String : Any]? = nil)
  @available(*, deprecated, message: "Please use configuration(with serviceLevel: PushServiceLevel) method")
  @objc(configurationWithServiceLevel:andAPNSToken:) public static func configuration(with serviceLevel: FlybitsPushSDK.PushServiceLevel = .background, apnsToken: Foundation.Data? = nil) -> FlybitsPushSDK.PushConfiguration
  public static func configuration(with serviceLevel: FlybitsPushSDK.PushServiceLevel = .background) -> FlybitsPushSDK.PushConfiguration
  public func clearDeviceRegistrationData()
  @objc deinit
  @objc override dynamic public init()
}
@objc public enum PushSource : Swift.Int {
  case apns
  case mqtt
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@_hasMissingDesignatedInitializers @objc public class PushManager : ObjectiveC.NSObject {
  public static let shared: FlybitsPushSDK.PushManager
  public var configuration: FlybitsPushSDK.PushConfiguration {
    get
  }
  final public let backgroundPreferences: FlybitsPushSDK.APNSPreferences
  @discardableResult
  @objc(receivedNotification:fetchCompletionHandler:) public func received(_ notification: [Swift.String : Any], fetchCompletionHandler completionHandler: ((UIKit.UIBackgroundFetchResult) -> Swift.Void)? = nil) -> Swift.Bool
  @discardableResult
  @objc public func unsubscribedTopics(completion: @escaping ([Swift.String]?, Swift.Error?) -> Swift.Void) -> FlybitsSDK.FlybitsRequest
  @discardableResult
  @objc public func unsubscribeTo(topic: Swift.String, completion: (([Swift.String]?, Swift.Error?) -> Swift.Void)?) -> FlybitsSDK.FlybitsRequest
  @discardableResult
  @objc public func subscribeTo(topic: Swift.String, completion: (([Swift.String]?, Swift.Error?) -> Swift.Void)?) -> FlybitsSDK.FlybitsRequest
  @discardableResult
  @objc public func userNotifications(completion: @escaping ([FlybitsPushSDK.PushMessage]?, Swift.Error?) -> Swift.Void) -> FlybitsSDK.FlybitsRequest
  @discardableResult
  @objc public static func setPreferredLanguage(code: Swift.String, completion: @escaping (Swift.Error?) -> Swift.Void) -> FlybitsSDK.FlybitsRequest
  @discardableResult
  @objc public static func setPreferredLanguages(codes: [Swift.String], completion: @escaping (Swift.Error?) -> Swift.Void) -> FlybitsSDK.FlybitsRequest
  @objc(isFlybitsNotification:) public func isFlybits(_ notification: [Swift.String : Any]) -> Swift.Bool
  @objc(isSilentNotification:) public func isSilent(_ notification: Foundation.Notification) -> Swift.Bool
  public static func removeDeviceToken(completion: @escaping (Foundation.NSError?) -> Swift.Void) -> FlybitsSDK.FlybitsRequest?
  @discardableResult
  public static func uploadToken(_ token: Foundation.Data, completion: @escaping (Foundation.NSError?) -> Swift.Void) -> FlybitsSDK.FlybitsRequest
  @objc override dynamic public init()
  @objc deinit
}
public enum PushRequest : FlybitsSDK.Requestable {
  case removeNotification(id: Swift.String, completion: (Swift.Bool, Foundation.NSError?) -> Swift.Void)
  case notificationHistory(query: FlybitsPushSDK.PushQuery, completion: (FlybitsSDK.Paged<FlybitsPushSDK.PushMessage>?, Foundation.NSError?) -> Swift.Void)
  public var requestType: FlybitsSDK.FlybitsRequestType {
    get
  }
  public var method: FlybitsSDK.HTTPMethod {
    get
  }
  public var encoding: FlybitsSDK.HTTPEncoding {
    get
  }
  public var path: Swift.String {
    get
  }
  public var parameters: [Swift.String : Any]? {
    get
  }
  public func execute() -> FlybitsSDK.FlybitsRequest
}
@available(*, deprecated, message: "PushAnalyticsContext will be updated in v4.0")
public class PushAnalyticsContext : FlybitsSDK.AnalyticsContext {
  public var viewed: Swift.Bool?
  public var engaged: Swift.Bool?
  public var componentEngaged: Swift.Bool?
  public var componentId: Swift.String
  public var pushId: Swift.String
  public var pluginId: Swift.String {
    get
  }
  public init(componentId: Swift.String, pushId: Swift.String)
  public func valuesDictionary() -> [Swift.String : Swift.Bool]
  @objc deinit
}
@objc public class PushTemplateOptions : ObjectiveC.NSObject {
  public var max: Swift.Int {
    get
  }
  public var delay: Swift.Int {
    get
  }
  public var cooldown: Swift.Int {
    get
  }
  public init(max: Swift.Int, delay: Swift.Int, cooldown: Swift.Int)
  @objc deinit
  @objc override dynamic public init()
}
@objc public enum RuleResult : Swift.Int {
  case `true` = 1
  case `false` = 2
  case trueOrFalse = 3
  public typealias RawValue = Swift.Int
  public init?(rawValue: Swift.Int)
  public var rawValue: Swift.Int {
    get
  }
}
@objc final public class PushTemplate : ObjectiveC.NSObject, FlybitsSDK.ResponseObjectSerializable, FlybitsSDK.DictionaryConvertible {
  final public var identifier: Swift.String?
  final public var name: Swift.String
  final public var title: Swift.String
  final public var message: Swift.String
  final public var action: Swift.String?
  final public var options: FlybitsPushSDK.PushTemplateOptions?
  final public var customFields: [Swift.String : Swift.String]?
  final public var users: [Swift.String : Swift.String]? {
    get
  }
  final public var rules: [Swift.String : Swift.Int]? {
    get
  }
  final public func addUser(userID: Swift.String, deviceID: Swift.String) -> FlybitsPushSDK.PushTemplate
  final public func addRule(ruleID: Swift.String, result: FlybitsPushSDK.RuleResult) -> FlybitsPushSDK.PushTemplate
  convenience public init?(responseData: Any)
  public init(name: Swift.String, title: Swift.String, message: Swift.String)
  final public func toDictionary() throws -> [Swift.String : Any]
  @objc deinit
  @objc override dynamic public init()
}
public enum PushTemplateRequest : FlybitsSDK.Requestable {
  case create(pushTemplate: FlybitsPushSDK.PushTemplate, completion: (FlybitsPushSDK.PushTemplate?, Foundation.NSError?) -> Swift.Void)
  case query(FlybitsPushSDK.PushQuery, completion: (FlybitsSDK.Paged<FlybitsPushSDK.PushTemplate>?, Foundation.NSError?) -> Swift.Void)
  case delete(identifier: Swift.String, completion: (Foundation.NSError?) -> Swift.Void)
  public var requestType: FlybitsSDK.FlybitsRequestType {
    get
  }
  public var method: FlybitsSDK.HTTPMethod {
    get
  }
  public var encoding: FlybitsSDK.HTTPEncoding {
    get
  }
  public var path: Swift.String {
    get
  }
  public var parameters: [Swift.String : Any]? {
    get
  }
  public func execute() -> FlybitsSDK.FlybitsRequest
}
@objc public class PushQuery : ObjectiveC.NSObject, FlybitsSDK.FlybitsQuery {
  public var pager: FlybitsSDK.Pager?
  required public init(_ pager: FlybitsSDK.Pager?)
  public var start: Foundation.NSDate?
  public var end: Foundation.NSDate?
  public var sortOrder: FlybitsSDK.Utilities.SortOrder
  public func toDictionary() throws -> [Swift.String : Any]
  @objc deinit
  @objc override dynamic public init()
}
extension FlybitsPushSDK.PushMessageCategory : Swift.Equatable {}
extension FlybitsPushSDK.PushMessageCategory : Swift.Hashable {}
extension FlybitsPushSDK.PushMessageCategory : Swift.RawRepresentable {}
extension FlybitsPushSDK.PushMessageEntity : Swift.Equatable {}
extension FlybitsPushSDK.PushMessageEntity : Swift.Hashable {}
extension FlybitsPushSDK.PushMessageEntity : Swift.RawRepresentable {}
extension FlybitsPushSDK.PushMessageAction : Swift.Equatable {}
extension FlybitsPushSDK.PushMessageAction : Swift.Hashable {}
extension FlybitsPushSDK.PushMessageAction : Swift.RawRepresentable {}
extension FlybitsPushSDK.PushError : Swift.Equatable {}
extension FlybitsPushSDK.PushError : Swift.Hashable {}
extension FlybitsPushSDK.APNSPreferenceError : Swift.Equatable {}
extension FlybitsPushSDK.APNSPreferenceError : Swift.Hashable {}
extension FlybitsPushSDK.PushServiceLevel : Swift.Equatable {}
extension FlybitsPushSDK.PushServiceLevel : Swift.Hashable {}
extension FlybitsPushSDK.PushServiceLevel : Swift.RawRepresentable {}
extension FlybitsPushSDK.PushSource : Swift.Equatable {}
extension FlybitsPushSDK.PushSource : Swift.Hashable {}
extension FlybitsPushSDK.PushSource : Swift.RawRepresentable {}
extension FlybitsPushSDK.RuleResult : Swift.Equatable {}
extension FlybitsPushSDK.RuleResult : Swift.Hashable {}
extension FlybitsPushSDK.RuleResult : Swift.RawRepresentable {}
