diff --git a/Samples/Common Files For Swift & ObjC/Storyboards/Base.lproj/LaunchScreen.storyboard b/Samples/Common Files For Swift & ObjC/Storyboards/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..865e932
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Storyboards/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Samples/Common Files For Swift & ObjC/Storyboards/Base.lproj/Main.storyboard b/Samples/Common Files For Swift & ObjC/Storyboards/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..3759106
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Storyboards/Base.lproj/Main.storyboard
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/AppDelegate.swift b/Samples/Common Files For Swift & ObjC/Supporting Files/AppDelegate.swift
new file mode 100644
index 0000000..bf458a9
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/AppDelegate.swift
@@ -0,0 +1,20 @@
+//
+// AppDelegate.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Shubham Garg on 14/06/21.
+//
+
+import UIKit
+import PayUNativeOtpAssist
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+var window: UIWindow?
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ PayUOtpAssist.start()
+ return true
+ }
+}
+
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AccentColor.colorset/Contents.json b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..9f5ddd8
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,134 @@
+{
+ "images" : [
+ {
+ "filename" : "ipad_notification20x20@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "iphone_notification20x20@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "ipad_settings29x29.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "ipad_settings29x29@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "iphone_settings29x29@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "ipad_spotlight40x40@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "iphone_spotlight40x40@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-50@2x.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "57x57"
+ },
+ {
+ "filename" : "Icon-76@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "57x57"
+ },
+ {
+ "filename" : "iphone_app60x60@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "iphone_app60x60@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "ipad_notification20x20.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-40.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "ipad_settings29x29-1.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "ipad_settings29x29@2x-1.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "iphone_notification20x20@2x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "ipad_spotlight40x40@2x-1.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "ipad_app76x76.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "ipad_app76x76@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "Icon-83.5@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "83.5x83.5"
+ },
+ {
+ "filename" : "iTunesArtwork.png",
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-40.png
new file mode 100644
index 0000000..f17a256
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-40.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-50@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-50@2x.png
new file mode 100644
index 0000000..5b2b58b
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-50@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
new file mode 100644
index 0000000..644a49c
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
new file mode 100644
index 0000000..0a3af02
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png
new file mode 100644
index 0000000..e42ebb3
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_app76x76.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_app76x76.png
new file mode 100644
index 0000000..168ac56
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_app76x76.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_app76x76@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_app76x76@2x.png
new file mode 100644
index 0000000..a320e66
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_app76x76@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_notification20x20.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_notification20x20.png
new file mode 100644
index 0000000..018ac43
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_notification20x20.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_notification20x20@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_notification20x20@2x.png
new file mode 100644
index 0000000..d7f110a
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_notification20x20@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29-1.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29-1.png
new file mode 100644
index 0000000..4f77cc1
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29-1.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29.png
new file mode 100644
index 0000000..4f77cc1
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29@2x-1.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29@2x-1.png
new file mode 100644
index 0000000..e9e03eb
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29@2x-1.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29@2x.png
new file mode 100644
index 0000000..e9e03eb
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_settings29x29@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_spotlight40x40@2x-1.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_spotlight40x40@2x-1.png
new file mode 100644
index 0000000..9377b86
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_spotlight40x40@2x-1.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_spotlight40x40@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_spotlight40x40@2x.png
new file mode 100644
index 0000000..9377b86
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/ipad_spotlight40x40@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_app60x60@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_app60x60@2x.png
new file mode 100644
index 0000000..a86ef68
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_app60x60@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_app60x60@3x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_app60x60@3x.png
new file mode 100644
index 0000000..e46ef8e
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_app60x60@3x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_notification20x20@2x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_notification20x20@2x.png
new file mode 100644
index 0000000..d7f110a
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_notification20x20@2x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_notification20x20@3x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_notification20x20@3x.png
new file mode 100644
index 0000000..98e8985
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_notification20x20@3x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_settings29x29@3x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_settings29x29@3x.png
new file mode 100644
index 0000000..8576ad3
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_settings29x29@3x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_spotlight40x40@3x.png b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_spotlight40x40@3x.png
new file mode 100644
index 0000000..a86ef68
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/AppIcon.appiconset/iphone_spotlight40x40@3x.png differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/Contents.json b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/logo.imageset/AKR.jpg b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/logo.imageset/AKR.jpg
new file mode 100644
index 0000000..8a6f1fd
Binary files /dev/null and b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/logo.imageset/AKR.jpg differ
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/logo.imageset/Contents.json b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/logo.imageset/Contents.json
new file mode 100644
index 0000000..7bab8ad
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Assets.xcassets/logo.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "AKR.jpg",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Constants/SampleAppConstants.swift b/Samples/Common Files For Swift & ObjC/Supporting Files/Constants/SampleAppConstants.swift
new file mode 100644
index 0000000..e119d1d
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Constants/SampleAppConstants.swift
@@ -0,0 +1,28 @@
+//
+// Constants.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import Foundation
+
+@objc class SampleAppConstants: NSObject {
+ @objc static let key = "key"
+ @objc static let salt = "salt"
+ @objc static let amount = "amount"
+ @objc static let email = "email"
+ @objc static let cardNumber = "cardNumber"
+ @objc static let cardExpiryMonth = "cardExpiryMonth"
+ @objc static let cardExpiryYear = "cardExpiryYear"
+ @objc static let saveCard = "saveCard"
+ @objc static let cardName = "cardName"
+ @objc static let cvv = "cvv"
+ @objc static let cardToken = "cardToken"
+ @objc static let userCredential = "userCredential"
+ @objc static let cardHash = "card_hash"
+ @objc static let bankcode = "bankcode"
+
+}
+
+let kCardDetailsViewController = "CardDetailsViewController"
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Custom Classes/Loader.swift b/Samples/Common Files For Swift & ObjC/Supporting Files/Custom Classes/Loader.swift
new file mode 100644
index 0000000..a1248bf
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Custom Classes/Loader.swift
@@ -0,0 +1,53 @@
+//
+// Loader.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import Foundation
+import UIKit
+
+class Loader: UIView {
+
+ static let shared: Loader = {
+ let instance = Loader()
+ return instance
+ }()
+
+ private let loader = UIActivityIndicatorView()
+
+ private override init(frame: CGRect) {
+ super.init(frame: frame)
+ prepared()
+ }
+
+ required init?(coder aDecoder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ func prepared() {
+ self.backgroundColor = UIColor.white.withAlphaComponent(0.5)
+ self.frame = UIScreen.main.bounds
+ loader.frame = UIScreen.main.bounds
+ loader.style = .whiteLarge
+ loader.center = self.center
+ loader.color = .gray
+ self.addSubview(loader)
+
+ }
+
+ func show() {
+ let application = UIApplication.shared.delegate as! AppDelegate
+ application.window?.addSubview(self)
+
+ loader.startAnimating()
+ loader.bringSubviewToFront((application.window?.rootViewController?.view)!)
+ }
+
+ func hide() {
+ self.removeFromSuperview()
+ loader.stopAnimating()
+ }
+
+}
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Custom Classes/SavedCardsAPI.swift b/Samples/Common Files For Swift & ObjC/Supporting Files/Custom Classes/SavedCardsAPI.swift
new file mode 100644
index 0000000..5599abf
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Custom Classes/SavedCardsAPI.swift
@@ -0,0 +1,60 @@
+//
+// SavedCards.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import Foundation
+import PayUBizCoreKit
+
+struct StoredCard {
+ var name: String!
+ var number: String!
+ var month: String!
+ var year: String!
+ var cvv: String?
+ var token: String!
+ var bin: String!
+ var cardType: String!
+ var customObj: Any?
+}
+
+class SavedCardsAPI {
+
+ class func fetchAll(paymentParam: PayUModelPaymentParams, completion: @escaping (([StoredCard])->())) {
+
+ PayUWebServiceResponse().getPayUPaymentRelatedDetail(forMobileSDK: paymentParam) { (paymentRelatedDetails, error, extraParam) in
+
+ var paymentOptions = [StoredCard]()
+ if let paymentRelatedDetails = paymentRelatedDetails {
+
+ if (paymentRelatedDetails.availablePaymentOptionsArray.contains(PAYMENT_PG_STOREDCARD)) {
+ for eachStoredCard in paymentRelatedDetails.storedCardArray {
+ if let eachStoredCard = eachStoredCard as? PayUModelStoredCard {
+ var savedCard = StoredCard()
+ savedCard.number = eachStoredCard.cardNo
+ savedCard.month = eachStoredCard.expiryMonth
+ savedCard.year = eachStoredCard.expiryYear
+ savedCard.name = eachStoredCard.nameOnCard
+ savedCard.customObj = eachStoredCard
+ savedCard.token = eachStoredCard.cardToken
+ savedCard.bin = eachStoredCard.cardBin
+ savedCard.cardType = eachStoredCard.cardType
+ paymentOptions.append(savedCard)
+ }
+ }
+ }
+ }
+
+ completion(paymentOptions)
+ }
+ }
+
+ class func saveCard(paymentParam: PayUModelPaymentParams) {
+ PayUWebServiceResponse().saveUserCard(paymentParam) { (storedCard, errorMessage, otherInfo) in
+ print(storedCard, errorMessage, otherInfo)
+ }
+ }
+
+}
diff --git a/Samples/Common Files For Swift & ObjC/Supporting Files/Extensions/Date.swift b/Samples/Common Files For Swift & ObjC/Supporting Files/Extensions/Date.swift
new file mode 100644
index 0000000..155606d
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/Supporting Files/Extensions/Date.swift
@@ -0,0 +1,38 @@
+//
+// Date.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import Foundation
+
+enum TimeZoneType {
+ case gmt
+ case utc
+ case local
+}
+
+enum DateFormat: String {
+ case mm = "MM"
+ case yyyy = "yyyy"
+ case mmyyyy = "MM/yyyy"
+}
+
+extension Date {
+
+ func stringFromDate(format: DateFormat, type: TimeZoneType) -> String {
+ let dateFormatter = DateFormatter()
+ dateFormatter.dateFormat = format.rawValue
+ switch type {
+ case .gmt:
+ dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
+ case .utc:
+ dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
+ case .local:
+ dateFormatter.timeZone = .current
+ }
+ return dateFormatter.string(from: self)
+ }
+
+}
diff --git a/Samples/Common Files For Swift & ObjC/View Controllers/BaseViewController.swift b/Samples/Common Files For Swift & ObjC/View Controllers/BaseViewController.swift
new file mode 100644
index 0000000..f480d48
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/View Controllers/BaseViewController.swift
@@ -0,0 +1,85 @@
+//
+// BaseViewController.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import UIKit
+
+class BaseViewController: UIViewController {
+
+ // MARK: - Class Life Cycle -
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ }
+
+ override func viewWillAppear(_ animated: Bool) {
+ super.viewWillAppear(animated)
+ registerKeyboardNotification()
+ }
+
+ override func viewWillDisappear(_ animated: Bool) {
+ super.viewWillDisappear(animated)
+ unRegisterKeyboardNotification()
+ }
+
+ override func touchesBegan(_ touches: Set, with event: UIEvent?) {
+ super.touchesBegan(touches, with: event)
+ view.endEditing(true)
+ }
+
+}
+
+// MARK: - Keyboard Handling -
+
+extension BaseViewController: UIGestureRecognizerDelegate {
+
+ func registerKeyboardNotification() {
+ NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
+ }
+
+ func unRegisterKeyboardNotification() {
+ NotificationCenter.default.removeObserver(UIResponder.keyboardWillChangeFrameNotification)
+ }
+
+ @objc func keyboardWillChange(notification: NSNotification) {
+ let info = notification.userInfo!
+ let endFrame = (info[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
+ let timeFrame = (info[UIResponder.keyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
+
+ let screenHeight = UIScreen.main.bounds.height
+
+ let keyboardVisibleHeight = max(screenHeight - endFrame.minY, 0)
+
+ for constraint in self.view.constraints {
+ if constraint.firstAttribute == .bottom {
+ // If first item is self's view then constant should be positive else it should be negative
+ let multiplier = constraint.firstItem as? UIView == self.view ? 1 : -1
+ constraint.constant = CGFloat(multiplier) * keyboardVisibleHeight
+ }
+ }
+
+ UIView.animate(withDuration: timeFrame) {
+ self.view.layoutIfNeeded()
+ }
+ }
+
+}
+
+// MARK: - Alert Handling -
+
+extension BaseViewController {
+
+ func showAlert(title: String, message: Any?) {
+ DispatchQueue.main.async {
+ let alert = UIAlertController(title: title, message: String(describing: message), preferredStyle: .alert)
+ alert.addAction(UIAlertAction(title: "DISMISS", style: .default, handler: { _ in
+ // self.dismiss(animated: true, completion: nil)
+ }))
+ self.present(alert, animated: true, completion: nil)
+ }
+ }
+
+}
diff --git a/Samples/Common Files For Swift & ObjC/View Controllers/CardDetailsViewController.swift b/Samples/Common Files For Swift & ObjC/View Controllers/CardDetailsViewController.swift
new file mode 100644
index 0000000..a6ed7e2
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/View Controllers/CardDetailsViewController.swift
@@ -0,0 +1,370 @@
+//
+// CardDetailsViewController.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import UIKit
+import PayUBizCoreKit
+import PayUNativeOtpAssist
+import PayUCustomBrowser
+
+class CardDetailsViewController: BaseViewController {
+
+ // MARK: - Variables -
+
+ var key: String = ""
+ var salt: String = ""
+ var amount: String = ""
+ var email: String = ""
+ var userCredential: String = ""
+
+ var cardNumber: String = ""
+ var cardExpiryMonth: String = ""
+ var cardExpiryYear: String = ""
+ var cvv: String = ""
+ var cardName: String = ""
+ var cardToken: String = ""
+ var shouldHandleFallback = false
+
+ // MARK: - Private Variables -
+
+ private var savedCards: [StoredCard] = []
+ private var selectedIndex: Int?
+ private var datePicker: UIDatePicker!
+ private var toolBar: UIToolbar!
+ private var cardExpiryDate = Date()
+
+ // MARK: - IBOutlets -
+
+ @IBOutlet weak var cardNumberTextField: UITextField!
+ @IBOutlet weak var cardExpiryTextField: UITextField!
+ @IBOutlet weak var cvvTextField: UITextField!
+ @IBOutlet weak var cardNameTextField: UITextField!
+ @IBOutlet weak var savedSwitch: UISwitch!
+ @IBOutlet weak var segmentControl: UISegmentedControl!
+ @IBOutlet weak var addNewCardView: UIView!
+ @IBOutlet weak var savedCardTableView: UITableView!
+ @IBOutlet weak var payButton: UIButton!
+
+ // MARK: - Class Life Cycle -
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ setUpDatePicker()
+ updatePayButtonVisibility()
+ }
+
+ override func touchesBegan(_ touches: Set, with event: UIEvent?) {
+ super.touchesBegan(touches, with: event)
+ view.endEditing(true)
+ }
+
+ // MARK: - IBActions -
+
+ @IBAction func saveCardSwitchAction(_ sender: Any) {
+ view.endEditing(true)
+ }
+
+ @IBAction func nextButtonAction(_ sender: Any) {
+ view.endEditing(true)
+ prepareUserData()
+ // Open SDK
+ PayUOtpAssistSDKHelper.open(on: self, delegate: self, and: getUserDetailsDict())
+ }
+
+ @IBAction func segmentControlAction(_ sender: UISegmentedControl) {
+ view.endEditing(true)
+ addNewCardView.isHidden = sender.selectedSegmentIndex == 1
+ savedCardTableView.isHidden = sender.selectedSegmentIndex != 1
+ selectedIndex = nil
+ savedCardTableView.reloadData()
+ fetchSavedCardsIfNeeded()
+ prepareUserData()
+ updatePayButtonVisibility()
+ }
+
+ @IBAction func textFieldDidChange(_ sender: Any) {
+ prepareUserData()
+ updatePayButtonVisibility()
+ }
+
+ // MARK: - Private Functions -
+
+ private func setUpDatePicker() {
+ // DatePicker
+ datePicker = UIDatePicker(frame:CGRect(x: 0, y: 0, width: view.frame.size.width, height: 200))
+ datePicker.backgroundColor = UIColor.white
+ datePicker.datePickerMode = UIDatePicker.Mode.date
+ datePicker.center = view.center
+ if #available(iOS 13.4, *) {
+ datePicker?.preferredDatePickerStyle = .wheels
+ }
+ // ToolBar
+ toolBar = UIToolbar()
+ toolBar.barStyle = .default
+ toolBar.isTranslucent = true
+ toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
+ toolBar.sizeToFit()
+
+ // Adding Button ToolBar
+ let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
+ let cancelButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(doneClick))
+ toolBar.setItems([spaceButton, cancelButton], animated: true)
+ toolBar.isUserInteractionEnabled = true
+ toolBar.isHidden = false
+
+ cardExpiryTextField.inputAccessoryView = toolBar
+ cardExpiryTextField.inputView = datePicker
+
+ self.datePicker.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)
+ }
+
+
+ @objc func doneClick () {
+ view.endEditing(true)
+ }
+
+ @objc func handleDatePicker(sender: UIDatePicker) {
+ cardExpiryDate = sender.date
+ updateExpiryDateTextField()
+ }
+
+ private func updatePayButtonVisibility() {
+ let isEnable = (!cardNumber.isEmpty && !cardExpiryYear.isEmpty && !cardExpiryMonth.isEmpty && !cvv.isEmpty && !cardName.isEmpty)
+ payButton.isUserInteractionEnabled = isEnable
+ payButton.backgroundColor = payButton.backgroundColor?.withAlphaComponent(isEnable ? 1 : 0.5)
+ }
+
+ private func updateExpiryDateTextField() {
+ cardExpiryTextField.text = cardExpiryDate.stringFromDate(format: .mmyyyy, type: .local)
+ }
+
+ private func fetchSavedCardsIfNeeded() {
+ if savedCards.isEmpty && segmentControl.selectedSegmentIndex == 1 {
+ Loader.shared.show()
+ SavedCardsAPI.fetchAll(paymentParam: getPaymentParamToFetchSavedCards()) { cards in
+ DispatchQueue.main.async {
+ self.savedCards = cards
+ self.savedCardTableView.reloadData()
+ Loader.shared.hide()
+ }
+ }
+
+ }
+ }
+
+ private func prepareUserData() {
+ guard let selectedIndex = selectedIndex else {
+ cardNumber = cardNumberTextField.text ?? ""
+ cardExpiryMonth = cardExpiryDate.stringFromDate(format: .mm, type: .local)
+ cardExpiryYear = cardExpiryDate.stringFromDate(format: .yyyy, type: .local)
+ cvv = cvvTextField.text ?? ""
+ cardName = cardNameTextField.text ?? ""
+ cardToken = ""
+ return
+ }
+ cardNumber = savedCards[selectedIndex].number
+ cardExpiryMonth = savedCards[selectedIndex].month
+ cardExpiryYear = savedCards[selectedIndex].year
+ cardName = savedCards[selectedIndex].name
+ cvv = savedCards[selectedIndex].cvv ?? ""
+ cardToken = savedCards[selectedIndex].token ?? ""
+ }
+
+ private func getUserDetailsDict() -> [String: Any] {
+ var dict = [String: Any]()
+ dict[SampleAppConstants.amount] = amount
+ dict[SampleAppConstants.key] = key
+ dict[SampleAppConstants.salt] = salt
+ dict[SampleAppConstants.email] = email
+ dict[SampleAppConstants.cardNumber] = cardNumber
+ dict[SampleAppConstants.cardExpiryMonth] = Int(cardExpiryMonth)
+ dict[SampleAppConstants.cardExpiryYear] = Int(cardExpiryYear)
+ dict[SampleAppConstants.cardName] = cardName
+ dict[SampleAppConstants.cvv] = cvv
+ dict[SampleAppConstants.cardToken] = cardToken
+ dict[SampleAppConstants.userCredential] = userCredential
+ dict[SampleAppConstants.saveCard] = savedSwitch.isOn
+ return dict
+ }
+
+ private func getPaymentParamToFetchSavedCards() -> PayUModelPaymentParams {
+ let paymentParam = PayUModelPaymentParams()
+ paymentParam.key = key
+ paymentParam.hashes.paymentRelatedDetailsHash = getPaymentRelatedDetailsHash()
+ paymentParam.userCredentials = userCredential
+ return paymentParam
+ }
+
+ private func getPaymentParamToSaveNewCard(_ dict: [String: Any]) -> PayUModelPaymentParams {
+ let paymentParam = PayUModelPaymentParams()
+ paymentParam.key = key
+ paymentParam.userCredentials = userCredential
+ paymentParam.cardName = cardName
+ paymentParam.cardMode = "DC"
+ paymentParam.cardType = dict[SampleAppConstants.bankcode] as? String ?? ""
+ paymentParam.nameOnCard = cardName
+ paymentParam.cardNo = cardNumber
+ paymentParam.expiryMonth = cardExpiryMonth
+ paymentParam.expiryYear = cardExpiryYear
+ paymentParam.duplicateCheck = "1"
+ let hashString = "\(key)|save_user_card|\(userCredential)|\(salt)"
+ paymentParam.hashes.saveUserCardHash = PayUDontUseThisClass().getHash(hashString)
+
+ return paymentParam
+ }
+
+ private func saveUserCardIfNeeded(_ response: String?) {
+// if !savedSwitch.isOn {
+// return
+// }
+// guard let data = response?.data(using: .utf8) else { return }
+// guard let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] else { return }
+// SavedCardsAPI.saveCard(paymentParam: getPaymentParamToSaveNewCard(json))
+ }
+
+ private func getPaymentRelatedDetailsHash() -> String {
+ let hashString = (key + "|" + COMMAND_PAYMENT_RELATED_DETAILS_FOR_MOBILE_SDK + "|" + PayUUtils.passEmptyStringFornilValues(userCredential) + "|" + salt)
+ return PayUDontUseThisClass().getHash(hashString)
+ }
+
+ private func openCB() {
+ DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
+ do {
+ let webVC = try PUCBWebVC(
+ postParam: PUCBConfiguration.getSingletonInstance()?.paymentPostParam ?? "=",
+ url: URL(string: PUCBConfiguration.getSingletonInstance()?.paymentURL ?? "https://www.google.com"),
+ merchantKey: self.key
+ )
+ webVC.cbWebVCDelegate = self
+ self.navigationController?.setNavigationBarHidden(false, animated: false)
+ self.present(webVC, animated: true)
+ } catch let error {
+ self.onError(errorCode: "0", errorMessage: error.localizedDescription)
+ }
+ })
+ }
+
+}
+
+// MARK: - UITableViewDataSource -
+
+extension CardDetailsViewController: UITableViewDataSource {
+
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+ savedCards.count
+ }
+
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+ let cell = tableView.dequeueReusableCell(withIdentifier: "cell") ?? UITableViewCell()
+ (cell.contentView.viewWithTag(10) as? UILabel)?.text = savedCards[indexPath.row].number
+ (cell.contentView.viewWithTag(11) as? UITextField)?.text = savedCards[indexPath.row].cvv
+ (cell.contentView.viewWithTag(11) as? UITextField)?.isHidden = indexPath.row != selectedIndex
+ (cell.contentView.viewWithTag(11) as? UITextField)?.addTarget(self, action: #selector(cvvDidChange(_:)), for: .editingChanged)
+ cell.accessoryType = indexPath.row == selectedIndex ? .checkmark : .none
+ return cell
+ }
+
+ @objc func cvvDidChange(_ sender: UITextField) {
+ guard let selectedIndex = selectedIndex else { return }
+ savedCards[selectedIndex].cvv = sender.text
+ prepareUserData()
+ updatePayButtonVisibility()
+ }
+}
+
+// MARK: - UITableViewDelegate -
+
+extension CardDetailsViewController: UITableViewDelegate {
+
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
+ savedCards[indexPath.row].cvv = nil
+ selectedIndex = indexPath.row
+ savedCardTableView.reloadData()
+ prepareUserData()
+ updatePayButtonVisibility()
+ }
+
+}
+
+// MARK: - PayUOtpAssistDelegate -
+
+extension CardDetailsViewController: PayUOtpAssistDelegate {
+
+ func onPaymentSuccess(merchantResponse: String?, payUResponse: String?) {
+ saveUserCardIfNeeded(merchantResponse)
+ showAlert(title: "onPaymentSuccess", message: (merchantResponse ?? "") + (payUResponse ?? ""))
+ }
+
+ func onPaymentFailure(merchantResponse: String?, payUResponse: String?) {
+ showAlert(title: "onPaymentFailure", message: (merchantResponse ?? "") + (payUResponse ?? ""))
+ }
+
+ func onPaymentCancel(isTxnInitiated: Bool) {
+ showAlert(title: "onPaymentCancel", message: "isTxnInitiated: \(isTxnInitiated)")
+ }
+
+ func onError(errorCode: String?, errorMessage: String?) {
+ showAlert(title: "onError", message: errorMessage)
+ }
+
+ func shouldHandleFallback(payUAcsRequest: PayUAcsRequest) -> Bool {
+
+ if shouldHandleFallback { // Return 'true', when merchant doesn't want to handle fallback scenarios
+ return true
+ }
+
+ // Set the merchantKey and transactionId
+ PUCBConfiguration.getSingletonInstance()?.merchantKey = key
+ PUCBConfiguration.getSingletonInstance()?.transactionId = payUAcsRequest.transactionId ?? ""
+
+ if let issuerUrl = payUAcsRequest.issuerUrl, let issuerPostData = payUAcsRequest.issuerPostData, !issuerUrl.isEmpty {
+ // Set the issuerUrl and issuerPostData to open in WebView
+ PUCBConfiguration.getSingletonInstance()?.paymentPostParam = issuerPostData
+ PUCBConfiguration.getSingletonInstance()?.paymentURL = issuerUrl
+ }
+ else
+ if let acsTemplate = payUAcsRequest.acsTemplate {
+ // Set the acsTemplate to open in WebView
+ PUCBConfiguration.getSingletonInstance()?.htmlData = acsTemplate
+ }
+
+ // Open CB
+ openCB()
+
+ return false
+ }
+
+}
+
+// MARK: - PUCBWebVCDelegate -
+
+extension CardDetailsViewController: PUCBWebVCDelegate {
+
+ func payUSuccessResponse(_ response: Any!) {
+ showAlert(title: "payUSuccessResponse", message: response)
+ }
+
+ func payUFailureResponse(_ response: Any!) {
+ showAlert(title: "payUFailureResponse", message: response)
+ }
+
+ func payUConnectionError(_ notification: [AnyHashable : Any]!) {
+ showAlert(title: "payUConnectionError", message: notification)
+ }
+
+ func payUTransactionCancel() {
+ showAlert(title: "payUTransactionCancel", message: "")
+ }
+
+ func payUSuccessResponse(_ payUResponse: Any!, surlResponse: Any!) {
+ showAlert(title: "payUSuccessResponse", message: payUResponse)
+ }
+
+ func payUFailureResponse(_ payUResponse: Any!, furlResponse: Any!) {
+ showAlert(title: "payUFailureResponse", message: payUResponse)
+ }
+
+}
diff --git a/Samples/Common Files For Swift & ObjC/View Controllers/MerchantViewController.swift b/Samples/Common Files For Swift & ObjC/View Controllers/MerchantViewController.swift
new file mode 100644
index 0000000..fe81253
--- /dev/null
+++ b/Samples/Common Files For Swift & ObjC/View Controllers/MerchantViewController.swift
@@ -0,0 +1,86 @@
+//
+// MerchantViewController.swift
+// PayUNativeOtpAssistSwiftSample
+//
+// Created by Amit Salaria on 25/06/21.
+//
+
+import UIKit
+class MerchantViewController: BaseViewController {
+ // MARK: - Variables -
+ let keySalt = [["3TnMpV", "g0nGFe03"],
+ ["V2yqBC", "dEzD8BBD"],
+ ["0MQaQP", "7tVMWdl6"],
+ ["smsplus", "1b1b0"],
+ ["ol4Spy", "J0ZXw2z9"],
+ ["obScKz", "Ml7XBCdR"],
+ ["gtKFFx", "eCwWELxi"],
+ ["Rl8Pdr", "wsl9kqyy"],
+ ["smsplus", "350"],
+ ["IUIaFM", "67njRYSI"],
+ ["F53fW7", "PPIzLXEo"]]
+
+ let indexKeySalt = 4
+ var amount: String = "1"
+ var email: String = "amit@salaria.com"
+ var userCredential: String = "umang:arya123"
+
+ // MARK: - IBOutlets -
+ @IBOutlet weak var keyTextField: UITextField!
+ @IBOutlet weak var saltTextField: UITextField!
+ @IBOutlet weak var amountTextField: UITextField!
+ @IBOutlet weak var emailTextField: UITextField!
+ @IBOutlet weak var userCredentialTextField: UITextField!
+ @IBOutlet weak var nextButton: UIButton!
+ @IBOutlet weak var shouldHandleFallbackSwitch: UISwitch!
+
+ // MARK: - Class Life Cycle -
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ setUpValuesInTextFields()
+ }
+
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
+ super.prepare(for: segue, sender: sender)
+ guard let vc = segue.destination as? CardDetailsViewController else { return }
+ vc.key = keyTextField.text ?? ""
+ vc.salt = saltTextField.text ?? ""
+ vc.amount = amountTextField.text ?? ""
+ vc.email = emailTextField.text ?? ""
+ vc.userCredential = userCredentialTextField.text ?? ""
+ vc.shouldHandleFallback = shouldHandleFallbackSwitch.isOn
+ }
+
+ // MARK: - IBActions -
+
+ @IBAction func nextButtonAction(_ sender: Any) {
+ self.view.endEditing(true)
+ performSegue(withIdentifier: kCardDetailsViewController, sender: nil)
+ }
+
+ @IBAction func textFieldDidChange(_ sender: Any) {
+ updateNextButtonVisibility()
+ }
+
+}
+
+// MARK: - Private Methods -
+
+extension MerchantViewController {
+
+ private func setUpValuesInTextFields() {
+ keyTextField.text = keySalt[indexKeySalt][0]
+ saltTextField.text = keySalt[indexKeySalt][1]
+ amountTextField.text = amount
+ emailTextField.text = email
+ userCredentialTextField.text = userCredential
+ }
+
+ private func updateNextButtonVisibility() {
+ let isEnable = ((keyTextField.text?.isEmpty == false) && (saltTextField.text?.isEmpty == false) && (amountTextField.text?.isEmpty == false) && (emailTextField.text?.isEmpty == false))
+ nextButton.isUserInteractionEnabled = isEnable
+ nextButton.backgroundColor = nextButton.backgroundColor?.withAlphaComponent(isEnable ? 1 : 0.5)
+ }
+
+}
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.pbxproj b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..b73cf36
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.pbxproj
@@ -0,0 +1,534 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 51;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 347C505A2CF785A2816645EA /* Pods_PayUNativeOtpAssistObjcSample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC9BBF3B5BDBFC74A769278B /* Pods_PayUNativeOtpAssistObjcSample.framework */; };
+ A7A82667268B282A00D49604 /* SampleAppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A82666268B282A00D49604 /* SampleAppConstants.swift */; };
+ A7E02246268AE71900E79D70 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A7E02234268AE71900E79D70 /* LaunchScreen.storyboard */; };
+ A7E02247268AE71900E79D70 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A7E02236268AE71900E79D70 /* Main.storyboard */; };
+ A7E02248268AE71900E79D70 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E02239268AE71900E79D70 /* BaseViewController.swift */; };
+ A7E02249268AE71900E79D70 /* MerchantViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E0223A268AE71900E79D70 /* MerchantViewController.swift */; };
+ A7E0224A268AE71900E79D70 /* CardDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E0223B268AE71900E79D70 /* CardDetailsViewController.swift */; };
+ A7E0224C268AE71900E79D70 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A7E0223F268AE71900E79D70 /* Assets.xcassets */; };
+ A7E0224D268AE71900E79D70 /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E02241268AE71900E79D70 /* Date.swift */; };
+ A7E0224E268AE71900E79D70 /* Loader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E02243268AE71900E79D70 /* Loader.swift */; };
+ A7E0224F268AE71900E79D70 /* SavedCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E02244268AE71900E79D70 /* SavedCardsAPI.swift */; };
+ A7E02250268AE71900E79D70 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E02245268AE71900E79D70 /* AppDelegate.swift */; };
+ A7E02268268AEB7B00E79D70 /* PayUOtpAssistSDKHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = A7E02267268AEB7B00E79D70 /* PayUOtpAssistSDKHelper.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 9E72E3E6F540A359465A55B4 /* Pods-PayUNativeOtpAssistObjcSample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PayUNativeOtpAssistObjcSample.release.xcconfig"; path = "../Samples/PayUNativeOtpAssistObjcSample/Pods/Target Support Files/Pods-PayUNativeOtpAssistObjcSample/Pods-PayUNativeOtpAssistObjcSample.release.xcconfig"; sourceTree = ""; };
+ A72F3ED4269D8A9A00ED4860 /* PayUAnalytics.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PayUAnalytics.xcframework; path = ../../PayUAnalytics.xcframework; sourceTree = ""; };
+ A72F3ED5269D8A9A00ED4860 /* PayUNetworkReachability.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PayUNetworkReachability.xcframework; path = ../../PayUNetworkReachability.xcframework; sourceTree = ""; };
+ A7A82666268B282A00D49604 /* SampleAppConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleAppConstants.swift; sourceTree = ""; };
+ A7BFABF126A80BD9007A4CE1 /* PayUCrashReporter.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PayUCrashReporter.xcframework; path = ../../PayUCrashReporter.xcframework; sourceTree = ""; };
+ A7E02235268AE71900E79D70 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ A7E02237268AE71900E79D70 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ A7E02239268AE71900E79D70 /* BaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = ""; };
+ A7E0223A268AE71900E79D70 /* MerchantViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MerchantViewController.swift; sourceTree = ""; };
+ A7E0223B268AE71900E79D70 /* CardDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CardDetailsViewController.swift; sourceTree = ""; };
+ A7E0223F268AE71900E79D70 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ A7E02241268AE71900E79D70 /* Date.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = ""; };
+ A7E02243268AE71900E79D70 /* Loader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Loader.swift; sourceTree = ""; };
+ A7E02244268AE71900E79D70 /* SavedCardsAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SavedCardsAPI.swift; sourceTree = ""; };
+ A7E02245268AE71900E79D70 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ A7E02266268AEB7A00E79D70 /* PayUNativeOtpAssistObjcSample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PayUNativeOtpAssistObjcSample-Bridging-Header.h"; sourceTree = ""; };
+ A7E02267268AEB7B00E79D70 /* PayUOtpAssistSDKHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PayUOtpAssistSDKHelper.m; sourceTree = ""; };
+ A7E02269268AEB8F00E79D70 /* PayUOtpAssistSDKHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PayUOtpAssistSDKHelper.h; sourceTree = ""; };
+ E83D5B3226771CB400EF48AF /* PayUNativeOtpAssistObjcSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PayUNativeOtpAssistObjcSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ E83D5B4626771CB500EF48AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ E83D5B4F26771E7D00EF48AF /* PayUNativeOtpAssist.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PayUNativeOtpAssist.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ E83E102426B7E162008308C3 /* PayUParamsKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PayUParamsKit.xcframework; path = ../../PayUParamsKit.xcframework; sourceTree = ""; };
+ E83E102F26B8194F008308C3 /* PayUNativeOtpAssist.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PayUNativeOtpAssist.xcframework; path = ../../xcframework/PayUNativeOtpAssist.xcframework; sourceTree = ""; };
+ E89285D726B429D100DF6E1B /* PayUBizCoreKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PayUBizCoreKit.xcframework; path = "/Users/shubham.garg/Documents/payu/PayUNativeOtpAssist-iOS/PayuNativeOtpAssist/Samples/PayUNativeOtpAssistSwiftSample/../../PayUBizCoreKit.xcframework"; sourceTree = ""; };
+ E89285DA26B42B1800DF6E1B /* PayUParamsKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PayUParamsKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ E8DD7C1126B95FB20048EE40 /* PayUNativeOtpAssist.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PayUNativeOtpAssist.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ E8DD7C1226B95FB20048EE40 /* PayUParamsKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PayUParamsKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ E8F681902677262E00CBF305 /* PayUNativeOtpAssist.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PayUNativeOtpAssist.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ F725494478C9E37797B03EC9 /* Pods-PayUNativeOtpAssistObjcSample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PayUNativeOtpAssistObjcSample.debug.xcconfig"; path = "../Samples/PayUNativeOtpAssistObjcSample/Pods/Target Support Files/Pods-PayUNativeOtpAssistObjcSample/Pods-PayUNativeOtpAssistObjcSample.debug.xcconfig"; sourceTree = ""; };
+ FC9BBF3B5BDBFC74A769278B /* Pods_PayUNativeOtpAssistObjcSample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PayUNativeOtpAssistObjcSample.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ E83D5B2F26771CB400EF48AF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 347C505A2CF785A2816645EA /* Pods_PayUNativeOtpAssistObjcSample.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ A7E02232268AE71900E79D70 /* Common Files For Swift & ObjC */ = {
+ isa = PBXGroup;
+ children = (
+ A7E02233268AE71900E79D70 /* Storyboards */,
+ A7E02238268AE71900E79D70 /* View Controllers */,
+ A7E0223C268AE71900E79D70 /* Supporting Files */,
+ );
+ name = "Common Files For Swift & ObjC";
+ path = "../../Common Files For Swift & ObjC";
+ sourceTree = "";
+ };
+ A7E02233268AE71900E79D70 /* Storyboards */ = {
+ isa = PBXGroup;
+ children = (
+ A7E02234268AE71900E79D70 /* LaunchScreen.storyboard */,
+ A7E02236268AE71900E79D70 /* Main.storyboard */,
+ );
+ path = Storyboards;
+ sourceTree = "";
+ };
+ A7E02238268AE71900E79D70 /* View Controllers */ = {
+ isa = PBXGroup;
+ children = (
+ A7E02239268AE71900E79D70 /* BaseViewController.swift */,
+ A7E0223A268AE71900E79D70 /* MerchantViewController.swift */,
+ A7E0223B268AE71900E79D70 /* CardDetailsViewController.swift */,
+ );
+ path = "View Controllers";
+ sourceTree = "";
+ };
+ A7E0223C268AE71900E79D70 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ A7E0223D268AE71900E79D70 /* Constants */,
+ A7E0223F268AE71900E79D70 /* Assets.xcassets */,
+ A7E02240268AE71900E79D70 /* Extensions */,
+ A7E02242268AE71900E79D70 /* Custom Classes */,
+ A7E02245268AE71900E79D70 /* AppDelegate.swift */,
+ );
+ path = "Supporting Files";
+ sourceTree = "";
+ };
+ A7E0223D268AE71900E79D70 /* Constants */ = {
+ isa = PBXGroup;
+ children = (
+ A7A82666268B282A00D49604 /* SampleAppConstants.swift */,
+ );
+ path = Constants;
+ sourceTree = "";
+ };
+ A7E02240268AE71900E79D70 /* Extensions */ = {
+ isa = PBXGroup;
+ children = (
+ A7E02241268AE71900E79D70 /* Date.swift */,
+ );
+ path = Extensions;
+ sourceTree = "";
+ };
+ A7E02242268AE71900E79D70 /* Custom Classes */ = {
+ isa = PBXGroup;
+ children = (
+ A7E02243268AE71900E79D70 /* Loader.swift */,
+ A7E02244268AE71900E79D70 /* SavedCardsAPI.swift */,
+ );
+ path = "Custom Classes";
+ sourceTree = "";
+ };
+ E65F2E5CD3DCB4C5D42C748A /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ F725494478C9E37797B03EC9 /* Pods-PayUNativeOtpAssistObjcSample.debug.xcconfig */,
+ 9E72E3E6F540A359465A55B4 /* Pods-PayUNativeOtpAssistObjcSample.release.xcconfig */,
+ );
+ name = Pods;
+ path = ../../Pods;
+ sourceTree = "";
+ };
+ E83D5B2926771CB400EF48AF = {
+ isa = PBXGroup;
+ children = (
+ E83D5B3426771CB400EF48AF /* PayUNativeOtpAssistObjcSample */,
+ E83D5B3326771CB400EF48AF /* Products */,
+ E83D5B4E26771E7D00EF48AF /* Frameworks */,
+ E65F2E5CD3DCB4C5D42C748A /* Pods */,
+ );
+ sourceTree = "";
+ };
+ E83D5B3326771CB400EF48AF /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ E83D5B3226771CB400EF48AF /* PayUNativeOtpAssistObjcSample.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ E83D5B3426771CB400EF48AF /* PayUNativeOtpAssistObjcSample */ = {
+ isa = PBXGroup;
+ children = (
+ A7E02232268AE71900E79D70 /* Common Files For Swift & ObjC */,
+ A7E02269268AEB8F00E79D70 /* PayUOtpAssistSDKHelper.h */,
+ A7E02267268AEB7B00E79D70 /* PayUOtpAssistSDKHelper.m */,
+ A7E02266268AEB7A00E79D70 /* PayUNativeOtpAssistObjcSample-Bridging-Header.h */,
+ E83D5B4626771CB500EF48AF /* Info.plist */,
+ );
+ path = PayUNativeOtpAssistObjcSample;
+ sourceTree = "";
+ };
+ E83D5B4E26771E7D00EF48AF /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ E8DD7C1126B95FB20048EE40 /* PayUNativeOtpAssist.framework */,
+ E8DD7C1226B95FB20048EE40 /* PayUParamsKit.framework */,
+ E83E102F26B8194F008308C3 /* PayUNativeOtpAssist.xcframework */,
+ E83E102426B7E162008308C3 /* PayUParamsKit.xcframework */,
+ E89285DA26B42B1800DF6E1B /* PayUParamsKit.framework */,
+ E89285D726B429D100DF6E1B /* PayUBizCoreKit.xcframework */,
+ A7BFABF126A80BD9007A4CE1 /* PayUCrashReporter.xcframework */,
+ A72F3ED4269D8A9A00ED4860 /* PayUAnalytics.xcframework */,
+ A72F3ED5269D8A9A00ED4860 /* PayUNetworkReachability.xcframework */,
+ E8F681902677262E00CBF305 /* PayUNativeOtpAssist.framework */,
+ E83D5B4F26771E7D00EF48AF /* PayUNativeOtpAssist.framework */,
+ FC9BBF3B5BDBFC74A769278B /* Pods_PayUNativeOtpAssistObjcSample.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ E83D5B3126771CB400EF48AF /* PayUNativeOtpAssistObjcSample */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = E83D5B4B26771CB500EF48AF /* Build configuration list for PBXNativeTarget "PayUNativeOtpAssistObjcSample" */;
+ buildPhases = (
+ 51CDC46F91EA2C4DD7392DAD /* [CP] Check Pods Manifest.lock */,
+ E83D5B2E26771CB400EF48AF /* Sources */,
+ E83D5B2F26771CB400EF48AF /* Frameworks */,
+ E83D5B3026771CB400EF48AF /* Resources */,
+ ED20EA7574ED4D6E6CDFD25D /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PayUNativeOtpAssistObjcSample;
+ productName = NativeOTPAssistSample;
+ productReference = E83D5B3226771CB400EF48AF /* PayUNativeOtpAssistObjcSample.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ E83D5B2A26771CB400EF48AF /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1250;
+ TargetAttributes = {
+ E83D5B3126771CB400EF48AF = {
+ CreatedOnToolsVersion = 12.5;
+ LastSwiftMigration = 1240;
+ };
+ };
+ };
+ buildConfigurationList = E83D5B2D26771CB400EF48AF /* Build configuration list for PBXProject "PayUNativeOtpAssistObjcSample" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = E83D5B2926771CB400EF48AF;
+ productRefGroup = E83D5B3326771CB400EF48AF /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ E83D5B3126771CB400EF48AF /* PayUNativeOtpAssistObjcSample */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ E83D5B3026771CB400EF48AF /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A7E02246268AE71900E79D70 /* LaunchScreen.storyboard in Resources */,
+ A7E0224C268AE71900E79D70 /* Assets.xcassets in Resources */,
+ A7E02247268AE71900E79D70 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 51CDC46F91EA2C4DD7392DAD /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-PayUNativeOtpAssistObjcSample-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ ED20EA7574ED4D6E6CDFD25D /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-PayUNativeOtpAssistObjcSample/Pods-PayUNativeOtpAssistObjcSample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-PayUNativeOtpAssistObjcSample/Pods-PayUNativeOtpAssistObjcSample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PayUNativeOtpAssistObjcSample/Pods-PayUNativeOtpAssistObjcSample-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ E83D5B2E26771CB400EF48AF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A7E02268268AEB7B00E79D70 /* PayUOtpAssistSDKHelper.m in Sources */,
+ A7E02250268AE71900E79D70 /* AppDelegate.swift in Sources */,
+ A7E02249268AE71900E79D70 /* MerchantViewController.swift in Sources */,
+ A7E0224D268AE71900E79D70 /* Date.swift in Sources */,
+ A7E0224E268AE71900E79D70 /* Loader.swift in Sources */,
+ A7A82667268B282A00D49604 /* SampleAppConstants.swift in Sources */,
+ A7E0224A268AE71900E79D70 /* CardDetailsViewController.swift in Sources */,
+ A7E0224F268AE71900E79D70 /* SavedCardsAPI.swift in Sources */,
+ A7E02248268AE71900E79D70 /* BaseViewController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ A7E02234268AE71900E79D70 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ A7E02235268AE71900E79D70 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+ A7E02236268AE71900E79D70 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ A7E02237268AE71900E79D70 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ E83D5B4926771CB500EF48AF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.5;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ E83D5B4A26771CB500EF48AF /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.5;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ E83D5B4C26771CB500EF48AF /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F725494478C9E37797B03EC9 /* Pods-PayUNativeOtpAssistObjcSample.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 3T2M5UN5C5;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
+ INFOPLIST_FILE = "$(SRCROOT)/PayUNativeOtpAssistObjcSample/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ ONLY_ACTIVE_ARCH = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.payu.PayUNativeOtpAssistSwiftSample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SWIFT_OBJC_BRIDGING_HEADER = "PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ E83D5B4D26771CB500EF48AF /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9E72E3E6F540A359465A55B4 /* Pods-PayUNativeOtpAssistObjcSample.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 3T2M5UN5C5;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
+ INFOPLIST_FILE = "$(SRCROOT)/PayUNativeOtpAssistObjcSample/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.payu.PayUNativeOtpAssistSwiftSample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SWIFT_OBJC_BRIDGING_HEADER = "PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ E83D5B2D26771CB400EF48AF /* Build configuration list for PBXProject "PayUNativeOtpAssistObjcSample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ E83D5B4926771CB500EF48AF /* Debug */,
+ E83D5B4A26771CB500EF48AF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ E83D5B4B26771CB500EF48AF /* Build configuration list for PBXNativeTarget "PayUNativeOtpAssistObjcSample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ E83D5B4C26771CB500EF48AF /* Debug */,
+ E83D5B4D26771CB500EF48AF /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = E83D5B2A26771CB400EF48AF /* Project object */;
+}
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..47f9ccb
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/xcuserdata/shubham.garg.xcuserdatad/UserInterfaceState.xcuserstate b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/xcuserdata/shubham.garg.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000..10512cf
Binary files /dev/null and b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/project.xcworkspace/xcuserdata/shubham.garg.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/xcuserdata/shubham.garg.xcuserdatad/xcschemes/xcschememanagement.plist b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/xcuserdata/shubham.garg.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..fd02cd8
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcodeproj/xcuserdata/shubham.garg.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,29 @@
+
+
+
+
+ SchemeUserState
+
+ NativeOTPAssistObjcSample.xcscheme_^#shared#^_
+
+ orderHint
+ 1
+
+ NativeOTPAssistSample.xcscheme_^#shared#^_
+
+ orderHint
+ 0
+
+ NativeOTPObjcAssistSample.xcscheme_^#shared#^_
+
+ orderHint
+ 0
+
+ PayUNativeOtpAssistObjcSample.xcscheme_^#shared#^_
+
+ orderHint
+ 8
+
+
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/contents.xcworkspacedata b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..434944b
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/xcuserdata/shubham.garg.xcuserdatad/UserInterfaceState.xcuserstate b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/xcuserdata/shubham.garg.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000..8d85794
Binary files /dev/null and b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample.xcworkspace/xcuserdata/shubham.garg.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/Info.plist b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/Info.plist
new file mode 100644
index 0000000..5bae3d0
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/Info.plist
@@ -0,0 +1,45 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIApplicationSupportsIndirectInputEvents
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample-Bridging-Header.h b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample-Bridging-Header.h
new file mode 100644
index 0000000..2d22310
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample-Bridging-Header.h
@@ -0,0 +1,5 @@
+//
+// Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
+#import "PayUOtpAssistSDKHelper.h"
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUOtpAssistSDKHelper.h b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUOtpAssistSDKHelper.h
new file mode 100644
index 0000000..b33d979
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUOtpAssistSDKHelper.h
@@ -0,0 +1,16 @@
+//
+// PayUOtpAssistSDKHelper.h
+// PayUNativeOtpAssistObjcSample
+//
+// Created by Amit Salaria on 29/06/21.
+//
+
+#import
+#import
+@import PayUNativeOtpAssist;
+
+@interface PayUOtpAssistSDKHelper: NSObject
+
++(void)openOn:(UIViewController *)parentVC delegate:(id)delegate and:(NSDictionary *)parameters;
+
+@end
diff --git a/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUOtpAssistSDKHelper.m b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUOtpAssistSDKHelper.m
new file mode 100644
index 0000000..226243f
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/PayUNativeOtpAssistObjcSample/PayUOtpAssistSDKHelper.m
@@ -0,0 +1,104 @@
+//
+// PayUOtpAssistSDKHelper.m
+// PayUNativeOtpAssistObjcSample
+//
+// Created by Amit Salaria on 29/06/21.
+//
+
+#import
+#import
+#import
+#import "PayUNativeOtpAssistObjcSample-Swift.h"
+@import PayUNativeOtpAssist;
+@import PayUParamsKit;
+
+@interface PayUOtpAssistSDKHelper: NSObject
+
+@end
+
+@implementation PayUOtpAssistSDKHelper: NSObject
+
++(void)openOn:(UIViewController *)parentVC delegate:(id)delegate and:(NSDictionary *)parameters {
+
+ // Open SDK
+ [PayUOtpAssist openWithParentVC: parentVC
+ paymentParam: [PayUOtpAssistSDKHelper getPaymentParametersFrom:parameters]
+ config:[PayUOtpAssistSDKHelper getUIConfigurations]
+ delegate:delegate];
+
+}
+
++(PayUOtpAssistConfig *)getUIConfigurations {
+
+ PayUOtpAssistConfig *config = [PayUOtpAssistConfig new];
+ config.themeColor = [[UIColor alloc] initWithRed:0.01960784314 green:0.231372549 blue:0.7568627451 alpha:1.0];
+ config.merchantLogo = [UIImage imageNamed:@"logo"];
+ config.shouldShowMerchantSummary = YES;
+ config.merchantResponseTimeout = 10000; // In milliseconds
+ return config;
+
+}
+
++(PayUPaymentParam *)getPaymentParametersFrom: (NSDictionary *)parameters {
+
+ NSLog(@"User Details -> %@", [parameters description]);
+
+ NSNumber * transactionId = [NSNumber numberWithInt:([[NSDate date] timeIntervalSince1970])];
+
+ PayUPaymentParam *paymentParam = [[PayUPaymentParam alloc]
+ initWithKey: [parameters objectForKey:SampleAppConstants.key]
+ transactionId: [transactionId stringValue]
+ amount: [parameters objectForKey:SampleAppConstants.amount]
+ productInfo: @"Nokia"
+ firstName: @"First Name"
+ email: [parameters objectForKey:SampleAppConstants.email]
+ phone: @"9876543210"
+ surl: @"https://payu.herokuapp.com/ios_success"
+ furl: @"https://payu.herokuapp.com/ios_failure"
+ environment: EnvironmentProduction];
+
+ paymentParam.userCredential = [parameters objectForKey:SampleAppConstants.userCredential];
+
+ paymentParam.hashes = [PayUHashes new];
+
+ NSString *hashString = [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@|%@|%@|%@|%@|%@||||||%@", paymentParam.key, [transactionId stringValue], paymentParam.amount, paymentParam.productInfo, paymentParam.firstName, paymentParam.email, @"udf1", @"udf2", @"udf3", @"udf4", @"udf5", [parameters objectForKey:SampleAppConstants.salt]];
+
+ paymentParam.hashes.paymentHash = [[PayUDontUseThisClass new] getHash:hashString];
+
+ paymentParam.udfs = [PayUUserDefines new];
+ paymentParam.udfs.udf1 = @"udf1";
+ paymentParam.udfs.udf2 = @"udf2";
+ paymentParam.udfs.udf3 = @"udf3";
+ paymentParam.udfs.udf4 = @"udf4";
+ paymentParam.udfs.udf5 = @"udf5";
+
+ NSString *cardToken = [parameters objectForKey:SampleAppConstants.cardName];
+
+ if ((cardToken == nil || [cardToken isEqual: @""])) { // New Card
+ CCDC *ccdc = [CCDC new];
+ ccdc.cardNumber = [parameters objectForKey:SampleAppConstants.cardNumber];
+ ccdc.expiryYear = [parameters objectForKey:SampleAppConstants.cardExpiryYear];
+ ccdc.expiryMonth = [parameters objectForKey:SampleAppConstants.cardExpiryMonth];
+ ccdc.cvv = [parameters objectForKey:SampleAppConstants.cvv];
+ ccdc.txnS2SFlow = @"4";
+ ccdc.nameOnCard = @"Test Card Name";
+ ccdc.shouldSaveCard = [parameters objectForKey:SampleAppConstants.saveCard];
+ paymentParam.paymentOption = ccdc;
+ } else { // Saved Card
+ SavedCard *savedCard = [SavedCard new];
+ savedCard.cardNumber = [parameters objectForKey:SampleAppConstants.cardNumber];
+ savedCard.expiryYear = [parameters objectForKey:SampleAppConstants.cardExpiryYear];
+ savedCard.expiryMonth = [parameters objectForKey:SampleAppConstants.cardExpiryMonth];
+ savedCard.cvv = [parameters objectForKey:SampleAppConstants.cvv];
+ savedCard.cardToken = [parameters objectForKey:SampleAppConstants.cardToken];
+ savedCard.txnS2SFlow = @"4";
+ savedCard.nameOnCard = @"Test Card Name";
+ savedCard.shouldSaveCard = [parameters objectForKey:SampleAppConstants.saveCard];
+ paymentParam.paymentOption = savedCard;
+ }
+
+
+ return paymentParam;
+}
+
+@end
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Podfile b/Samples/PayUNativeOtpAssistObjcSample/Podfile
new file mode 100644
index 0000000..1acf7e6
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Podfile
@@ -0,0 +1,13 @@
+# Uncomment the next line to define a global platform for your project
+# platform :ios, '9.0'
+
+target 'PayUNativeOtpAssistObjcSample' do
+ # Comment the next line if you don't want to use dynamic frameworks
+ use_frameworks!
+
+ # Pods for PayUNativeOtpAssistObjcSample
+pod 'PayUIndia-NativeOtpAssist'
+pod 'PayUIndia-PG-SDK'
+pod 'PayUIndia-Custom-Browser'
+
+end
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Podfile.lock b/Samples/PayUNativeOtpAssistObjcSample/Podfile.lock
new file mode 100644
index 0000000..f976192
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Podfile.lock
@@ -0,0 +1,42 @@
+PODS:
+ - PayUIndia-Analytics (1.0):
+ - PayUIndia-NetworkReachability (~> 1.0)
+ - PayUIndia-CrashReporter (1.0.0)
+ - PayUIndia-Custom-Browser (7.0.0)
+ - PayUIndia-NativeOtpAssist (1.0.0):
+ - PayUIndia-Analytics (~> 1.0)
+ - PayUIndia-CrashReporter (~> 1.0)
+ - PayUIndia-NetworkReachability (~> 1.0)
+ - PayUIndia-PayUParams (~> 2.0)
+ - PayUIndia-NetworkReachability (1.0)
+ - PayUIndia-PayUParams (2.0.0)
+ - PayUIndia-PG-SDK (6.2.1):
+ - PayUIndia-PayUParams (~> 2.0)
+
+DEPENDENCIES:
+ - PayUIndia-Custom-Browser
+ - PayUIndia-NativeOtpAssist
+ - PayUIndia-PG-SDK
+
+SPEC REPOS:
+ trunk:
+ - PayUIndia-Analytics
+ - PayUIndia-CrashReporter
+ - PayUIndia-Custom-Browser
+ - PayUIndia-NativeOtpAssist
+ - PayUIndia-NetworkReachability
+ - PayUIndia-PayUParams
+ - PayUIndia-PG-SDK
+
+SPEC CHECKSUMS:
+ PayUIndia-Analytics: 9bfbdb9767a247e344821592aeae3490f20500e8
+ PayUIndia-CrashReporter: e4e6a68b2a2f59fb826331db0799f0167f596593
+ PayUIndia-Custom-Browser: ffa6e718d4617d59680cef8364222ecb77e9e1fb
+ PayUIndia-NativeOtpAssist: 11fc33940a43658677df4bb88a178531111ff531
+ PayUIndia-NetworkReachability: d30457a8162f586d67d77f42f2ccbbadd0e9a685
+ PayUIndia-PayUParams: 9ef9cbc3c362773d9d054aee3cd4cd008aefed38
+ PayUIndia-PG-SDK: 9ec290643eceffac9a80e8bf4560e16985549c8c
+
+PODFILE CHECKSUM: 28239238d33aaa8351e6edf46bb4fbfa1345bf41
+
+COCOAPODS: 1.10.2
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/Manifest.lock b/Samples/PayUNativeOtpAssistObjcSample/Pods/Manifest.lock
new file mode 100644
index 0000000..f976192
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/Manifest.lock
@@ -0,0 +1,42 @@
+PODS:
+ - PayUIndia-Analytics (1.0):
+ - PayUIndia-NetworkReachability (~> 1.0)
+ - PayUIndia-CrashReporter (1.0.0)
+ - PayUIndia-Custom-Browser (7.0.0)
+ - PayUIndia-NativeOtpAssist (1.0.0):
+ - PayUIndia-Analytics (~> 1.0)
+ - PayUIndia-CrashReporter (~> 1.0)
+ - PayUIndia-NetworkReachability (~> 1.0)
+ - PayUIndia-PayUParams (~> 2.0)
+ - PayUIndia-NetworkReachability (1.0)
+ - PayUIndia-PayUParams (2.0.0)
+ - PayUIndia-PG-SDK (6.2.1):
+ - PayUIndia-PayUParams (~> 2.0)
+
+DEPENDENCIES:
+ - PayUIndia-Custom-Browser
+ - PayUIndia-NativeOtpAssist
+ - PayUIndia-PG-SDK
+
+SPEC REPOS:
+ trunk:
+ - PayUIndia-Analytics
+ - PayUIndia-CrashReporter
+ - PayUIndia-Custom-Browser
+ - PayUIndia-NativeOtpAssist
+ - PayUIndia-NetworkReachability
+ - PayUIndia-PayUParams
+ - PayUIndia-PG-SDK
+
+SPEC CHECKSUMS:
+ PayUIndia-Analytics: 9bfbdb9767a247e344821592aeae3490f20500e8
+ PayUIndia-CrashReporter: e4e6a68b2a2f59fb826331db0799f0167f596593
+ PayUIndia-Custom-Browser: ffa6e718d4617d59680cef8364222ecb77e9e1fb
+ PayUIndia-NativeOtpAssist: 11fc33940a43658677df4bb88a178531111ff531
+ PayUIndia-NetworkReachability: d30457a8162f586d67d77f42f2ccbbadd0e9a685
+ PayUIndia-PayUParams: 9ef9cbc3c362773d9d054aee3cd4cd008aefed38
+ PayUIndia-PG-SDK: 9ec290643eceffac9a80e8bf4560e16985549c8c
+
+PODFILE CHECKSUM: 28239238d33aaa8351e6edf46bb4fbfa1345bf41
+
+COCOAPODS: 1.10.2
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/LICENSE b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/LICENSE
new file mode 100644
index 0000000..12043c1
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-Present PayU India
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/Info.plist b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/Info.plist
new file mode 100644
index 0000000..2d42a8b
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/Info.plist
@@ -0,0 +1,39 @@
+
+
+
+
+ AvailableLibraries
+
+
+ LibraryIdentifier
+ ios-arm64
+ LibraryPath
+ PayUAnalytics.framework
+ SupportedArchitectures
+
+ arm64
+
+ SupportedPlatform
+ ios
+
+
+ LibraryIdentifier
+ ios-x86_64-simulator
+ LibraryPath
+ PayUAnalytics.framework
+ SupportedArchitectures
+
+ x86_64
+
+ SupportedPlatform
+ ios
+ SupportedPlatformVariant
+ simulator
+
+
+ CFBundlePackageType
+ XFWK
+ XCFrameworkFormatVersion
+ 1.0
+
+
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Headers/PayUAnalytics.h b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Headers/PayUAnalytics.h
new file mode 100644
index 0000000..7e3d62c
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Headers/PayUAnalytics.h
@@ -0,0 +1,1143 @@
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+@class PUABaseAnalytics, NSString, NSData, PUAAnalyticsDataManager, PUAAnalyticsResponse, PUAKotlinEnum, PUAAnalyticsType, PUAKotlinArray, PUAKtor_client_coreHttpRequestBuilder, PUAAnalyticsConfig, PUAClevertapAnalytics, PUAPayUAnalytics, PUAPayUDeviceAnalytics, PUAKotlinUnit, PUAKtor_httpHeadersBuilder, PUAKtor_client_coreHttpRequestData, PUAKtor_httpURLBuilder, PUAKtor_httpHttpMethod, PUAKotlinThrowable, PUAKotlinException, PUAKotlinRuntimeException, PUAKotlinIllegalStateException, PUAKotlinx_serialization_coreSerializersModule, PUAKotlinx_serialization_coreSerialKind, PUAKotlinNothing, PUAKtor_utilsStringValuesBuilder, PUAKtor_httpUrl, PUAKtor_httpOutgoingContent, PUAKtor_utilsAttributeKey, PUAKtor_httpURLProtocol, PUAKtor_httpParametersBuilder, PUAKotlinx_coroutines_coreCancellationException, PUAKtor_httpContentType, PUAKtor_httpHttpStatusCode, PUAKtor_httpHeaderValueParam, PUAKtor_httpHeaderValueWithParameters, PUAKotlinx_coroutines_coreAtomicDesc, PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp, PUAKotlinx_coroutines_coreAtomicOp<__contravariant T>, PUAKotlinx_coroutines_coreOpDescriptor, PUAKotlinx_coroutines_coreLockFreeLinkedListNode, PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc, PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAddLastDesc, PUAKotlinx_coroutines_coreLockFreeLinkedListNodeRemoveFirstDesc;
+
+@protocol PUAOnEventsLogListener, PUAKotlinx_serialization_coreKSerializer, PUAKotlinComparable, PUAKotlinx_serialization_coreEncoder, PUAKotlinx_serialization_coreSerialDescriptor, PUAKotlinx_serialization_coreSerializationStrategy, PUAKotlinx_serialization_coreDecoder, PUAKotlinx_serialization_coreDeserializationStrategy, PUAKotlinIterator, PUAKtor_httpHttpMessageBuilder, PUAKtor_client_coreHttpClientEngineCapability, PUAKtor_utilsAttributes, PUAKotlinx_coroutines_coreJob, PUAKotlinx_serialization_coreCompositeEncoder, PUAKotlinAnnotation, PUAKotlinx_serialization_coreCompositeDecoder, PUAKtor_utilsStringValues, PUAKotlinMapEntry, PUAKtor_httpHeaders, PUAKotlinx_coroutines_coreChildHandle, PUAKotlinx_coroutines_coreChildJob, PUAKotlinx_coroutines_coreDisposableHandle, PUAKotlinSequence, PUAKotlinx_coroutines_coreSelectClause0, PUAKotlinCoroutineContextKey, PUAKotlinCoroutineContextElement, PUAKotlinCoroutineContext, PUAKotlinx_serialization_coreSerializersModuleCollector, PUAKotlinKClass, PUAKtor_httpParameters, PUAKotlinx_coroutines_coreParentJob, PUAKotlinx_coroutines_coreSelectInstance, PUAKotlinSuspendFunction0, PUAKotlinKDeclarationContainer, PUAKotlinKAnnotatedElement, PUAKotlinKClassifier, PUAKotlinContinuation, PUAKotlinFunction;
+
+NS_ASSUME_NONNULL_BEGIN
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-warning-option"
+#pragma clang diagnostic ignored "-Wincompatible-property-type"
+#pragma clang diagnostic ignored "-Wnullability"
+
+__attribute__((swift_name("KotlinBase")))
+@interface PUABase : NSObject
+- (instancetype)init __attribute__((unavailable));
++ (instancetype)new __attribute__((unavailable));
++ (void)initialize __attribute__((objc_requires_super));
+@end;
+
+@interface PUABase (PUABaseCopying)
+@end;
+
+__attribute__((swift_name("KotlinMutableSet")))
+@interface PUAMutableSet : NSMutableSet
+@end;
+
+__attribute__((swift_name("KotlinMutableDictionary")))
+@interface PUAMutableDictionary : NSMutableDictionary
+@end;
+
+@interface NSError (NSErrorPUAKotlinException)
+@property (readonly) id _Nullable kotlinException;
+@end;
+
+__attribute__((swift_name("KotlinNumber")))
+@interface PUANumber : NSNumber
+- (instancetype)initWithChar:(char)value __attribute__((unavailable));
+- (instancetype)initWithUnsignedChar:(unsigned char)value __attribute__((unavailable));
+- (instancetype)initWithShort:(short)value __attribute__((unavailable));
+- (instancetype)initWithUnsignedShort:(unsigned short)value __attribute__((unavailable));
+- (instancetype)initWithInt:(int)value __attribute__((unavailable));
+- (instancetype)initWithUnsignedInt:(unsigned int)value __attribute__((unavailable));
+- (instancetype)initWithLong:(long)value __attribute__((unavailable));
+- (instancetype)initWithUnsignedLong:(unsigned long)value __attribute__((unavailable));
+- (instancetype)initWithLongLong:(long long)value __attribute__((unavailable));
+- (instancetype)initWithUnsignedLongLong:(unsigned long long)value __attribute__((unavailable));
+- (instancetype)initWithFloat:(float)value __attribute__((unavailable));
+- (instancetype)initWithDouble:(double)value __attribute__((unavailable));
+- (instancetype)initWithBool:(BOOL)value __attribute__((unavailable));
+- (instancetype)initWithInteger:(NSInteger)value __attribute__((unavailable));
+- (instancetype)initWithUnsignedInteger:(NSUInteger)value __attribute__((unavailable));
++ (instancetype)numberWithChar:(char)value __attribute__((unavailable));
++ (instancetype)numberWithUnsignedChar:(unsigned char)value __attribute__((unavailable));
++ (instancetype)numberWithShort:(short)value __attribute__((unavailable));
++ (instancetype)numberWithUnsignedShort:(unsigned short)value __attribute__((unavailable));
++ (instancetype)numberWithInt:(int)value __attribute__((unavailable));
++ (instancetype)numberWithUnsignedInt:(unsigned int)value __attribute__((unavailable));
++ (instancetype)numberWithLong:(long)value __attribute__((unavailable));
++ (instancetype)numberWithUnsignedLong:(unsigned long)value __attribute__((unavailable));
++ (instancetype)numberWithLongLong:(long long)value __attribute__((unavailable));
++ (instancetype)numberWithUnsignedLongLong:(unsigned long long)value __attribute__((unavailable));
++ (instancetype)numberWithFloat:(float)value __attribute__((unavailable));
++ (instancetype)numberWithDouble:(double)value __attribute__((unavailable));
++ (instancetype)numberWithBool:(BOOL)value __attribute__((unavailable));
++ (instancetype)numberWithInteger:(NSInteger)value __attribute__((unavailable));
++ (instancetype)numberWithUnsignedInteger:(NSUInteger)value __attribute__((unavailable));
+@end;
+
+__attribute__((swift_name("KotlinByte")))
+@interface PUAByte : PUANumber
+- (instancetype)initWithChar:(char)value;
++ (instancetype)numberWithChar:(char)value;
+@end;
+
+__attribute__((swift_name("KotlinUByte")))
+@interface PUAUByte : PUANumber
+- (instancetype)initWithUnsignedChar:(unsigned char)value;
++ (instancetype)numberWithUnsignedChar:(unsigned char)value;
+@end;
+
+__attribute__((swift_name("KotlinShort")))
+@interface PUAShort : PUANumber
+- (instancetype)initWithShort:(short)value;
++ (instancetype)numberWithShort:(short)value;
+@end;
+
+__attribute__((swift_name("KotlinUShort")))
+@interface PUAUShort : PUANumber
+- (instancetype)initWithUnsignedShort:(unsigned short)value;
++ (instancetype)numberWithUnsignedShort:(unsigned short)value;
+@end;
+
+__attribute__((swift_name("KotlinInt")))
+@interface PUAInt : PUANumber
+- (instancetype)initWithInt:(int)value;
++ (instancetype)numberWithInt:(int)value;
+@end;
+
+__attribute__((swift_name("KotlinUInt")))
+@interface PUAUInt : PUANumber
+- (instancetype)initWithUnsignedInt:(unsigned int)value;
++ (instancetype)numberWithUnsignedInt:(unsigned int)value;
+@end;
+
+__attribute__((swift_name("KotlinLong")))
+@interface PUALong : PUANumber
+- (instancetype)initWithLongLong:(long long)value;
++ (instancetype)numberWithLongLong:(long long)value;
+@end;
+
+__attribute__((swift_name("KotlinULong")))
+@interface PUAULong : PUANumber
+- (instancetype)initWithUnsignedLongLong:(unsigned long long)value;
++ (instancetype)numberWithUnsignedLongLong:(unsigned long long)value;
+@end;
+
+__attribute__((swift_name("KotlinFloat")))
+@interface PUAFloat : PUANumber
+- (instancetype)initWithFloat:(float)value;
++ (instancetype)numberWithFloat:(float)value;
+@end;
+
+__attribute__((swift_name("KotlinDouble")))
+@interface PUADouble : PUANumber
+- (instancetype)initWithDouble:(double)value;
++ (instancetype)numberWithDouble:(double)value;
+@end;
+
+__attribute__((swift_name("KotlinBoolean")))
+@interface PUABoolean : PUANumber
+- (instancetype)initWithBool:(BOOL)value;
++ (instancetype)numberWithBool:(BOOL)value;
+@end;
+
+__attribute__((swift_name("OnEventsLogListener")))
+@protocol PUAOnEventsLogListener
+@required
+- (void)onEventsLoggedFailed __attribute__((swift_name("onEventsLoggedFailed()")));
+- (void)onEventsLoggedSuccessfulResponse:(NSString *)response __attribute__((swift_name("onEventsLoggedSuccessful(response:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsDataManager")))
+@interface PUAAnalyticsDataManager : PUABase
+- (instancetype)initWithBaseAnalytics:(PUABaseAnalytics *)baseAnalytics __attribute__((swift_name("init(baseAnalytics:)"))) __attribute__((objc_designated_initializer));
+- (NSString *)nativeStr:(NSString *)receiver __attribute__((swift_name("nativeStr(_:)")));
+- (void)cancelTimer __attribute__((swift_name("cancelTimer()")));
+- (void)logMsg:(NSString *)msg __attribute__((swift_name("log(msg:)")));
+- (void)onEventsLoggedFailed __attribute__((swift_name("onEventsLoggedFailed()")));
+- (void)onEventsLoggedSuccessfulResponse:(NSString *)response __attribute__((swift_name("onEventsLoggedSuccessful(response:)")));
+- (void)pushAllPendingEvents __attribute__((swift_name("pushAllPendingEvents()")));
+- (NSData * _Nullable)toData:(NSString *)receiver __attribute__((swift_name("toData(_:)")));
+@property PUABaseAnalytics *baseAnalytics __attribute__((swift_name("baseAnalytics")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsDataManager.Companion")))
+@interface PUAAnalyticsDataManagerCompanion : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)companion __attribute__((swift_name("init()")));
+- (PUAAnalyticsDataManager *)getInstanceBaseAnalytics:(PUABaseAnalytics *)baseAnalytics __attribute__((swift_name("getInstance(baseAnalytics:)")));
+@property PUAAnalyticsDataManager * _Nullable INSTANCE __attribute__((swift_name("INSTANCE")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsConfig")))
+@interface PUAAnalyticsConfig : PUABase
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+@property NSString * _Nullable ctAccountId __attribute__((swift_name("ctAccountId")));
+@property NSString * _Nullable ctPassCode __attribute__((swift_name("ctPassCode")));
+@property BOOL isProduction __attribute__((swift_name("isProduction")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsResponse")))
+@interface PUAAnalyticsResponse : PUABase
+- (instancetype)initWithStatus:(PUAInt * _Nullable)status msg:(NSString * _Nullable)msg __attribute__((swift_name("init(status:msg:)"))) __attribute__((objc_designated_initializer));
+- (PUAInt * _Nullable)component1 __attribute__((swift_name("component1()")));
+- (NSString * _Nullable)component2 __attribute__((swift_name("component2()")));
+- (PUAAnalyticsResponse *)doCopyStatus:(PUAInt * _Nullable)status msg:(NSString * _Nullable)msg __attribute__((swift_name("doCopy(status:msg:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString * _Nullable msg __attribute__((swift_name("msg")));
+@property (readonly) PUAInt * _Nullable status __attribute__((swift_name("status")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsResponse.Companion")))
+@interface PUAAnalyticsResponseCompanion : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)companion __attribute__((swift_name("init()")));
+- (id)serializer __attribute__((swift_name("serializer()")));
+@end;
+
+__attribute__((swift_name("KotlinComparable")))
+@protocol PUAKotlinComparable
+@required
+- (int32_t)compareToOther:(id _Nullable)other __attribute__((swift_name("compareTo(other:)")));
+@end;
+
+__attribute__((swift_name("KotlinEnum")))
+@interface PUAKotlinEnum : PUABase
+- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer));
+- (int32_t)compareToOther:(E)other __attribute__((swift_name("compareTo(other:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *name __attribute__((swift_name("name")));
+@property (readonly) int32_t ordinal __attribute__((swift_name("ordinal")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsType")))
+@interface PUAAnalyticsType : PUAKotlinEnum
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+@property (class, readonly) PUAAnalyticsType *clevertap __attribute__((swift_name("clevertap")));
+@property (class, readonly) PUAAnalyticsType *payuAnalytics __attribute__((swift_name("payuAnalytics")));
+@property (class, readonly) PUAAnalyticsType *payuDeviceAnalytics __attribute__((swift_name("payuDeviceAnalytics")));
++ (PUAKotlinArray *)values __attribute__((swift_name("values()")));
+@end;
+
+__attribute__((swift_name("BaseAnalytics")))
+@interface PUABaseAnalytics : PUABase
+- (instancetype)initWithUrl:(NSString *)url __attribute__((swift_name("init(url:)"))) __attribute__((objc_designated_initializer));
+- (void)cancelTimer __attribute__((swift_name("cancelTimer()")));
+- (PUAKtor_client_coreHttpRequestBuilder *)getRequestBuilder:(PUAKtor_client_coreHttpRequestBuilder *)builder postData:(NSString *)postData __attribute__((swift_name("getRequest(builder:postData:)")));
+- (void)logEventData:(NSString *)eventData __attribute__((swift_name("log(eventData:)")));
+- (void)onEventsLoggedFailed __attribute__((swift_name("onEventsLoggedFailed()")));
+- (void)onEventsLoggedSuccessfulResponse:(NSString *)response __attribute__((swift_name("onEventsLoggedSuccessful(response:)")));
+- (void)pushAllPendingEvents __attribute__((swift_name("pushAllPendingEvents()")));
+@property PUAAnalyticsDataManager *analyticsDataManager __attribute__((swift_name("analyticsDataManager")));
+@property NSString *analyticsFileName __attribute__((swift_name("analyticsFileName")));
+@property int64_t timerDelay __attribute__((swift_name("timerDelay")));
+@property (readonly) NSString *url __attribute__((swift_name("url")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("ClevertapAnalytics")))
+@interface PUAClevertapAnalytics : PUABaseAnalytics
+- (instancetype)initWithUrl:(NSString *)url __attribute__((swift_name("init(url:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+- (PUAKtor_client_coreHttpRequestBuilder *)getRequestBuilder:(PUAKtor_client_coreHttpRequestBuilder *)builder postData:(NSString *)postData __attribute__((swift_name("getRequest(builder:postData:)")));
+@property (readonly) PUAAnalyticsConfig *analyticsConfig __attribute__((swift_name("analyticsConfig")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("ClevertapAnalytics.Companion")))
+@interface PUAClevertapAnalyticsCompanion : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)companion __attribute__((swift_name("init()")));
+- (PUAClevertapAnalytics *)getInstanceUrl:(NSString *)url analyticsConfig:(PUAAnalyticsConfig *)analyticsConfig __attribute__((swift_name("getInstance(url:analyticsConfig:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("PayUAnalytics")))
+@interface PUAPayUAnalytics : PUABaseAnalytics
+- (instancetype)initWithUrl:(NSString *)url __attribute__((swift_name("init(url:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+- (PUAKtor_client_coreHttpRequestBuilder *)getRequestBuilder:(PUAKtor_client_coreHttpRequestBuilder *)builder postData:(NSString *)postData __attribute__((swift_name("getRequest(builder:postData:)")));
+- (void)onEventsLoggedSuccessfulResponse:(NSString *)response __attribute__((swift_name("onEventsLoggedSuccessful(response:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("PayUAnalytics.Companion")))
+@interface PUAPayUAnalyticsCompanion : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)companion __attribute__((swift_name("init()")));
+- (PUAPayUAnalytics *)getInstanceUrl:(NSString *)url __attribute__((swift_name("getInstance(url:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("PayUDeviceAnalytics")))
+@interface PUAPayUDeviceAnalytics : PUABaseAnalytics
+- (instancetype)initWithUrl:(NSString *)url __attribute__((swift_name("init(url:)"))) __attribute__((objc_designated_initializer));
+- (PUAKtor_client_coreHttpRequestBuilder *)getRequestBuilder:(PUAKtor_client_coreHttpRequestBuilder *)builder postData:(NSString *)postData __attribute__((swift_name("getRequest(builder:postData:)")));
+- (void)logEventData:(NSString *)eventData __attribute__((swift_name("log(eventData:)")));
+- (void)onEventsLoggedSuccessfulResponse:(NSString *)response __attribute__((swift_name("onEventsLoggedSuccessful(response:)")));
+- (BOOL)shouldLogMsg:(NSString *)msg __attribute__((swift_name("shouldLog(msg:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("PayUDeviceAnalytics.Companion")))
+@interface PUAPayUDeviceAnalyticsCompanion : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)companion __attribute__((swift_name("init()")));
+- (PUAPayUDeviceAnalytics *)getInstanceUrl:(NSString *)url __attribute__((swift_name("getInstance(url:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("AnalyticsFactory")))
+@interface PUAAnalyticsFactory : PUABase
+- (instancetype)initWithContext:(id _Nullable)context analyticsConfig:(PUAAnalyticsConfig *)analyticsConfig __attribute__((swift_name("init(context:analyticsConfig:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithContext:(id _Nullable)context __attribute__((swift_name("init(context:)"))) __attribute__((objc_designated_initializer));
+- (PUABaseAnalytics *)getAnalyticsClassType:(PUAAnalyticsType *)type __attribute__((swift_name("getAnalyticsClass(type:)")));
+@property id _Nullable context __attribute__((swift_name("context")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("UploadTask")))
+@interface PUAUploadTask : PUABase
+- (instancetype)initWithBaseAnalytics:(PUABaseAnalytics *)baseAnalytics postData:(NSString *)postData __attribute__((swift_name("init(baseAnalytics:postData:)"))) __attribute__((objc_designated_initializer));
+
+/**
+ @note This method converts instances of CancellationException to errors.
+ Other uncaught Kotlin exceptions are fatal.
+*/
+- (void)pushWithCompletionHandler:(void (^)(PUAKotlinUnit * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("push(completionHandler:)")));
+@property (readonly) PUABaseAnalytics *baseAnalytics __attribute__((swift_name("baseAnalytics")));
+@property (readonly) NSString *postData __attribute__((swift_name("postData")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("ContextUtil")))
+@interface PUAContextUtil : PUABase
+- (instancetype)initWithFileName:(NSString * _Nullable)fileName __attribute__((swift_name("init(fileName:)"))) __attribute__((objc_designated_initializer));
+- (BOOL)checkNetwork __attribute__((swift_name("checkNetwork()")));
+- (void)deleteSharedPrefKeyKey:(NSString * _Nullable)key __attribute__((swift_name("deleteSharedPrefKey(key:)")));
+- (NSString *)getStringSharedPreferenceKey:(NSString *)key __attribute__((swift_name("getStringSharedPreference(key:)")));
+- (void)setStringSharedPreferenceKey:(NSString * _Nullable)key value:(NSString * _Nullable)value __attribute__((swift_name("setStringSharedPreference(key:value:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("PayUAnalyticsConstant")))
+@interface PUAPayUAnalyticsConstant : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)payUAnalyticsConstant __attribute__((swift_name("init()")));
+@property (readonly) NSString *CLEVERTAP_ERROR_MESSAGE __attribute__((swift_name("CLEVERTAP_ERROR_MESSAGE")));
+@property (readonly) NSString *PA_ANALYTICS_BUFFER_KEY __attribute__((swift_name("PA_ANALYTICS_BUFFER_KEY")));
+@property (readonly) NSString *PA_CLEVERTAP_URL __attribute__((swift_name("PA_CLEVERTAP_URL")));
+@property (readonly) NSString *PA_COMMAND_NAME __attribute__((swift_name("PA_COMMAND_NAME")));
+@property (readonly) NSString *PA_CONTENT_TYPE_FORM_URL_ENCODED __attribute__((swift_name("PA_CONTENT_TYPE_FORM_URL_ENCODED")));
+@property (readonly) NSString *PA_CONTENT_TYPE_JSON __attribute__((swift_name("PA_CONTENT_TYPE_JSON")));
+@property (readonly) NSString *PA_CT_ACCOUNT_ID __attribute__((swift_name("PA_CT_ACCOUNT_ID")));
+@property (readonly) NSString *PA_CT_DATA_PARAM __attribute__((swift_name("PA_CT_DATA_PARAM")));
+@property (readonly) NSString *PA_CT_PASSCODE __attribute__((swift_name("PA_CT_PASSCODE")));
+@property (readonly) NSString *PA_DATA_NAME __attribute__((swift_name("PA_DATA_NAME")));
+@property (readonly) NSString *PA_DEVICE_ANALYTICS_COMMAND_NAME __attribute__((swift_name("PA_DEVICE_ANALYTICS_COMMAND_NAME")));
+@property (readonly) NSString *PA_EVENT_ANALYTICS_COMMAND_NAME __attribute__((swift_name("PA_EVENT_ANALYTICS_COMMAND_NAME")));
+@property (readonly) NSString *PA_PAYU_MERCHANT_TRANSACTION_ID __attribute__((swift_name("PA_PAYU_MERCHANT_TRANSACTION_ID")));
+@property (readonly) NSString *PA_PRODUCTION_URL __attribute__((swift_name("PA_PRODUCTION_URL")));
+@property (readonly) NSString *PA_STATUS __attribute__((swift_name("PA_STATUS")));
+@property (readonly) NSString *PA_TEST_URL __attribute__((swift_name("PA_TEST_URL")));
+@property (readonly) int64_t PA_TIMER_DELAY __attribute__((swift_name("PA_TIMER_DELAY")));
+@property (readonly) NSString *PA_TXN_ID __attribute__((swift_name("PA_TXN_ID")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreSerializationStrategy")))
+@protocol PUAKotlinx_serialization_coreSerializationStrategy
+@required
+- (void)serializeEncoder:(id)encoder value:(id _Nullable)value __attribute__((swift_name("serialize(encoder:value:)")));
+@property (readonly) id descriptor __attribute__((swift_name("descriptor")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreDeserializationStrategy")))
+@protocol PUAKotlinx_serialization_coreDeserializationStrategy
+@required
+- (id _Nullable)deserializeDecoder:(id)decoder __attribute__((swift_name("deserialize(decoder:)")));
+@property (readonly) id descriptor __attribute__((swift_name("descriptor")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreKSerializer")))
+@protocol PUAKotlinx_serialization_coreKSerializer
+@required
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("KotlinArray")))
+@interface PUAKotlinArray : PUABase
++ (instancetype)arrayWithSize:(int32_t)size init:(T _Nullable (^)(PUAInt *))init __attribute__((swift_name("init(size:init:)")));
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+- (T _Nullable)getIndex:(int32_t)index __attribute__((swift_name("get(index:)")));
+- (id)iterator __attribute__((swift_name("iterator()")));
+- (void)setIndex:(int32_t)index value:(T _Nullable)value __attribute__((swift_name("set(index:value:)")));
+@property (readonly) int32_t size __attribute__((swift_name("size")));
+@end;
+
+__attribute__((swift_name("Ktor_httpHttpMessageBuilder")))
+@protocol PUAKtor_httpHttpMessageBuilder
+@required
+@property (readonly) PUAKtor_httpHeadersBuilder *headers __attribute__((swift_name("headers")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_client_coreHttpRequestBuilder")))
+@interface PUAKtor_client_coreHttpRequestBuilder : PUABase
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (PUAKtor_client_coreHttpRequestData *)build __attribute__((swift_name("build()")));
+- (id _Nullable)getCapabilityOrNullKey:(id)key __attribute__((swift_name("getCapabilityOrNull(key:)")));
+- (void)setAttributesBlock:(void (^)(id))block __attribute__((swift_name("setAttributes(block:)")));
+- (void)setCapabilityKey:(id)key capability:(id)capability __attribute__((swift_name("setCapability(key:capability:)")));
+- (PUAKtor_client_coreHttpRequestBuilder *)takeFromBuilder:(PUAKtor_client_coreHttpRequestBuilder *)builder __attribute__((swift_name("takeFrom(builder:)")));
+- (PUAKtor_client_coreHttpRequestBuilder *)takeFromWithExecutionContextBuilder:(PUAKtor_client_coreHttpRequestBuilder *)builder __attribute__((swift_name("takeFromWithExecutionContext(builder:)")));
+- (void)urlBlock:(void (^)(PUAKtor_httpURLBuilder *, PUAKtor_httpURLBuilder *))block __attribute__((swift_name("url(block:)")));
+@property (readonly) id attributes __attribute__((swift_name("attributes")));
+@property id body __attribute__((swift_name("body")));
+@property (readonly) id executionContext __attribute__((swift_name("executionContext")));
+@property (readonly) PUAKtor_httpHeadersBuilder *headers __attribute__((swift_name("headers")));
+@property PUAKtor_httpHttpMethod *method __attribute__((swift_name("method")));
+@property (readonly) PUAKtor_httpURLBuilder *url __attribute__((swift_name("url")));
+@end;
+
+__attribute__((swift_name("KotlinThrowable")))
+@interface PUAKotlinThrowable : PUABase
+- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer));
+- (PUAKotlinArray *)getStackTrace __attribute__((swift_name("getStackTrace()")));
+- (void)printStackTrace __attribute__((swift_name("printStackTrace()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) PUAKotlinThrowable * _Nullable cause __attribute__((swift_name("cause")));
+@property (readonly) NSString * _Nullable message __attribute__((swift_name("message")));
+@end;
+
+__attribute__((swift_name("KotlinException")))
+@interface PUAKotlinException : PUAKotlinThrowable
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer));
+@end;
+
+__attribute__((swift_name("KotlinRuntimeException")))
+@interface PUAKotlinRuntimeException : PUAKotlinException
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer));
+@end;
+
+__attribute__((swift_name("KotlinIllegalStateException")))
+@interface PUAKotlinIllegalStateException : PUAKotlinRuntimeException
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer));
+@end;
+
+__attribute__((swift_name("KotlinCancellationException")))
+@interface PUAKotlinCancellationException : PUAKotlinIllegalStateException
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("KotlinUnit")))
+@interface PUAKotlinUnit : PUABase
++ (instancetype)alloc __attribute__((unavailable));
++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
++ (instancetype)unit __attribute__((swift_name("init()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreEncoder")))
+@protocol PUAKotlinx_serialization_coreEncoder
+@required
+- (id)beginCollectionDescriptor:(id)descriptor collectionSize:(int32_t)collectionSize __attribute__((swift_name("beginCollection(descriptor:collectionSize:)")));
+- (id)beginStructureDescriptor:(id)descriptor __attribute__((swift_name("beginStructure(descriptor:)")));
+- (void)encodeBooleanValue:(BOOL)value __attribute__((swift_name("encodeBoolean(value:)")));
+- (void)encodeByteValue:(int8_t)value __attribute__((swift_name("encodeByte(value:)")));
+- (void)encodeCharValue:(unichar)value __attribute__((swift_name("encodeChar(value:)")));
+- (void)encodeDoubleValue:(double)value __attribute__((swift_name("encodeDouble(value:)")));
+- (void)encodeEnumEnumDescriptor:(id)enumDescriptor index:(int32_t)index __attribute__((swift_name("encodeEnum(enumDescriptor:index:)")));
+- (void)encodeFloatValue:(float)value __attribute__((swift_name("encodeFloat(value:)")));
+- (id)encodeInlineInlineDescriptor:(id)inlineDescriptor __attribute__((swift_name("encodeInline(inlineDescriptor:)")));
+- (void)encodeIntValue:(int32_t)value __attribute__((swift_name("encodeInt(value:)")));
+- (void)encodeLongValue:(int64_t)value __attribute__((swift_name("encodeLong(value:)")));
+- (void)encodeNotNullMark __attribute__((swift_name("encodeNotNullMark()")));
+- (void)encodeNull __attribute__((swift_name("encodeNull()")));
+- (void)encodeNullableSerializableValueSerializer:(id)serializer value:(id _Nullable)value __attribute__((swift_name("encodeNullableSerializableValue(serializer:value:)")));
+- (void)encodeSerializableValueSerializer:(id)serializer value:(id _Nullable)value __attribute__((swift_name("encodeSerializableValue(serializer:value:)")));
+- (void)encodeShortValue:(int16_t)value __attribute__((swift_name("encodeShort(value:)")));
+- (void)encodeStringValue:(NSString *)value __attribute__((swift_name("encodeString(value:)")));
+@property (readonly) PUAKotlinx_serialization_coreSerializersModule *serializersModule __attribute__((swift_name("serializersModule")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreSerialDescriptor")))
+@protocol PUAKotlinx_serialization_coreSerialDescriptor
+@required
+- (NSArray> *)getElementAnnotationsIndex:(int32_t)index __attribute__((swift_name("getElementAnnotations(index:)")));
+- (id)getElementDescriptorIndex:(int32_t)index __attribute__((swift_name("getElementDescriptor(index:)")));
+- (int32_t)getElementIndexName:(NSString *)name __attribute__((swift_name("getElementIndex(name:)")));
+- (NSString *)getElementNameIndex:(int32_t)index __attribute__((swift_name("getElementName(index:)")));
+- (BOOL)isElementOptionalIndex:(int32_t)index __attribute__((swift_name("isElementOptional(index:)")));
+@property (readonly) NSArray> *annotations __attribute__((swift_name("annotations")));
+@property (readonly) int32_t elementsCount __attribute__((swift_name("elementsCount")));
+@property (readonly) BOOL isInline __attribute__((swift_name("isInline")));
+@property (readonly) BOOL isNullable __attribute__((swift_name("isNullable")));
+@property (readonly) PUAKotlinx_serialization_coreSerialKind *kind __attribute__((swift_name("kind")));
+@property (readonly) NSString *serialName __attribute__((swift_name("serialName")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreDecoder")))
+@protocol PUAKotlinx_serialization_coreDecoder
+@required
+- (id)beginStructureDescriptor:(id)descriptor __attribute__((swift_name("beginStructure(descriptor:)")));
+- (BOOL)decodeBoolean __attribute__((swift_name("decodeBoolean()")));
+- (int8_t)decodeByte __attribute__((swift_name("decodeByte()")));
+- (unichar)decodeChar __attribute__((swift_name("decodeChar()")));
+- (double)decodeDouble __attribute__((swift_name("decodeDouble()")));
+- (int32_t)decodeEnumEnumDescriptor:(id)enumDescriptor __attribute__((swift_name("decodeEnum(enumDescriptor:)")));
+- (float)decodeFloat __attribute__((swift_name("decodeFloat()")));
+- (id)decodeInlineInlineDescriptor:(id)inlineDescriptor __attribute__((swift_name("decodeInline(inlineDescriptor:)")));
+- (int32_t)decodeInt __attribute__((swift_name("decodeInt()")));
+- (int64_t)decodeLong __attribute__((swift_name("decodeLong()")));
+- (BOOL)decodeNotNullMark __attribute__((swift_name("decodeNotNullMark()")));
+- (PUAKotlinNothing * _Nullable)decodeNull __attribute__((swift_name("decodeNull()")));
+- (id _Nullable)decodeNullableSerializableValueDeserializer:(id)deserializer __attribute__((swift_name("decodeNullableSerializableValue(deserializer:)")));
+- (id _Nullable)decodeSerializableValueDeserializer:(id)deserializer __attribute__((swift_name("decodeSerializableValue(deserializer:)")));
+- (int16_t)decodeShort __attribute__((swift_name("decodeShort()")));
+- (NSString *)decodeString __attribute__((swift_name("decodeString()")));
+@property (readonly) PUAKotlinx_serialization_coreSerializersModule *serializersModule __attribute__((swift_name("serializersModule")));
+@end;
+
+__attribute__((swift_name("KotlinIterator")))
+@protocol PUAKotlinIterator
+@required
+- (BOOL)hasNext __attribute__((swift_name("hasNext()")));
+- (id _Nullable)next __attribute__((swift_name("next()")));
+@end;
+
+__attribute__((swift_name("Ktor_utilsStringValuesBuilder")))
+@interface PUAKtor_utilsStringValuesBuilder : PUABase
+- (instancetype)initWithCaseInsensitiveName:(BOOL)caseInsensitiveName size:(int32_t)size __attribute__((swift_name("init(caseInsensitiveName:size:)"))) __attribute__((objc_designated_initializer));
+- (void)appendName:(NSString *)name value:(NSString *)value __attribute__((swift_name("append(name:value:)")));
+- (void)appendAllStringValues:(id)stringValues __attribute__((swift_name("appendAll(stringValues:)")));
+- (void)appendAllName:(NSString *)name values:(id)values __attribute__((swift_name("appendAll(name:values:)")));
+- (void)appendMissingStringValues:(id)stringValues __attribute__((swift_name("appendMissing(stringValues:)")));
+- (void)appendMissingName:(NSString *)name values:(id)values __attribute__((swift_name("appendMissing(name:values:)")));
+- (id)build __attribute__((swift_name("build()")));
+- (void)clear __attribute__((swift_name("clear()")));
+- (BOOL)containsName:(NSString *)name __attribute__((swift_name("contains(name:)")));
+- (BOOL)containsName:(NSString *)name value:(NSString *)value __attribute__((swift_name("contains(name:value:)")));
+- (NSSet> *)entries __attribute__((swift_name("entries()")));
+- (NSString * _Nullable)getName:(NSString *)name __attribute__((swift_name("get(name:)")));
+- (NSArray * _Nullable)getAllName:(NSString *)name __attribute__((swift_name("getAll(name:)")));
+- (BOOL)isEmpty __attribute__((swift_name("isEmpty()")));
+- (NSSet *)names __attribute__((swift_name("names()")));
+- (void)removeName:(NSString *)name __attribute__((swift_name("remove(name:)")));
+- (BOOL)removeName:(NSString *)name value:(NSString *)value __attribute__((swift_name("remove(name:value:)")));
+- (void)removeKeysWithNoEntries __attribute__((swift_name("removeKeysWithNoEntries()")));
+- (void)setName:(NSString *)name value:(NSString *)value __attribute__((swift_name("set(name:value:)")));
+- (void)validateNameName:(NSString *)name __attribute__((swift_name("validateName(name:)")));
+- (void)validateValueValue:(NSString *)value __attribute__((swift_name("validateValue(value:)")));
+@property BOOL built __attribute__((swift_name("built")));
+@property (readonly) BOOL caseInsensitiveName __attribute__((swift_name("caseInsensitiveName")));
+@property (readonly) PUAMutableDictionary *> *values __attribute__((swift_name("values")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpHeadersBuilder")))
+@interface PUAKtor_httpHeadersBuilder : PUAKtor_utilsStringValuesBuilder
+- (instancetype)initWithSize:(int32_t)size __attribute__((swift_name("init(size:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCaseInsensitiveName:(BOOL)caseInsensitiveName size:(int32_t)size __attribute__((swift_name("init(caseInsensitiveName:size:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+- (id)build __attribute__((swift_name("build()")));
+- (void)validateNameName:(NSString *)name __attribute__((swift_name("validateName(name:)")));
+- (void)validateValueValue:(NSString *)value __attribute__((swift_name("validateValue(value:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_client_coreHttpRequestData")))
+@interface PUAKtor_client_coreHttpRequestData : PUABase
+- (instancetype)initWithUrl:(PUAKtor_httpUrl *)url method:(PUAKtor_httpHttpMethod *)method headers:(id)headers body:(PUAKtor_httpOutgoingContent *)body executionContext:(id)executionContext attributes:(id)attributes __attribute__((swift_name("init(url:method:headers:body:executionContext:attributes:)"))) __attribute__((objc_designated_initializer));
+- (id _Nullable)getCapabilityOrNullKey:(id)key __attribute__((swift_name("getCapabilityOrNull(key:)")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) id attributes __attribute__((swift_name("attributes")));
+@property (readonly) PUAKtor_httpOutgoingContent *body __attribute__((swift_name("body")));
+@property (readonly) id executionContext __attribute__((swift_name("executionContext")));
+@property (readonly) id headers __attribute__((swift_name("headers")));
+@property (readonly) PUAKtor_httpHttpMethod *method __attribute__((swift_name("method")));
+@property (readonly) PUAKtor_httpUrl *url __attribute__((swift_name("url")));
+@end;
+
+__attribute__((swift_name("Ktor_client_coreHttpClientEngineCapability")))
+@protocol PUAKtor_client_coreHttpClientEngineCapability
+@required
+@end;
+
+__attribute__((swift_name("Ktor_utilsAttributes")))
+@protocol PUAKtor_utilsAttributes
+@required
+- (id)computeIfAbsentKey:(PUAKtor_utilsAttributeKey *)key block:(id (^)(void))block __attribute__((swift_name("computeIfAbsent(key:block:)")));
+- (BOOL)containsKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("contains(key:)")));
+- (id)getKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("get(key:)")));
+- (id _Nullable)getOrNullKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("getOrNull(key:)")));
+- (void)putKey:(PUAKtor_utilsAttributeKey *)key value:(id)value __attribute__((swift_name("put(key:value:)")));
+- (void)removeKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("remove(key:)")));
+- (id)takeKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("take(key:)")));
+- (id _Nullable)takeOrNullKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("takeOrNull(key:)")));
+@property (readonly) NSArray *> *allKeys __attribute__((swift_name("allKeys")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpURLBuilder")))
+@interface PUAKtor_httpURLBuilder : PUABase
+- (instancetype)initWithProtocol:(PUAKtor_httpURLProtocol *)protocol host:(NSString *)host port:(int32_t)port user:(NSString * _Nullable)user password:(NSString * _Nullable)password encodedPath:(NSString *)encodedPath parameters:(PUAKtor_httpParametersBuilder *)parameters fragment:(NSString *)fragment trailingQuery:(BOOL)trailingQuery __attribute__((swift_name("init(protocol:host:port:user:password:encodedPath:parameters:fragment:trailingQuery:)"))) __attribute__((objc_designated_initializer));
+- (PUAKtor_httpUrl *)build __attribute__((swift_name("build()")));
+- (NSString *)buildString __attribute__((swift_name("buildString()")));
+- (PUAKtor_httpURLBuilder *)pathComponents:(PUAKotlinArray *)components __attribute__((swift_name("path(components:)")));
+- (PUAKtor_httpURLBuilder *)pathComponents_:(NSArray *)components __attribute__((swift_name("path(components_:)")));
+@property NSString *encodedPath __attribute__((swift_name("encodedPath")));
+@property NSString *fragment __attribute__((swift_name("fragment")));
+@property NSString *host __attribute__((swift_name("host")));
+@property (readonly) PUAKtor_httpParametersBuilder *parameters __attribute__((swift_name("parameters")));
+@property NSString * _Nullable password __attribute__((swift_name("password")));
+@property int32_t port __attribute__((swift_name("port")));
+@property PUAKtor_httpURLProtocol *protocol __attribute__((swift_name("protocol")));
+@property BOOL trailingQuery __attribute__((swift_name("trailingQuery")));
+@property NSString * _Nullable user __attribute__((swift_name("user")));
+@end;
+
+__attribute__((swift_name("KotlinCoroutineContext")))
+@protocol PUAKotlinCoroutineContext
+@required
+- (id _Nullable)foldInitial:(id _Nullable)initial operation:(id _Nullable (^)(id _Nullable, id))operation __attribute__((swift_name("fold(initial:operation:)")));
+- (id _Nullable)getKey_:(id)key __attribute__((swift_name("get(key_:)")));
+- (id)minusKeyKey:(id)key __attribute__((swift_name("minusKey(key:)")));
+- (id)plusContext:(id)context __attribute__((swift_name("plus(context:)")));
+@end;
+
+__attribute__((swift_name("KotlinCoroutineContextElement")))
+@protocol PUAKotlinCoroutineContextElement
+@required
+@property (readonly) id key __attribute__((swift_name("key")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreJob")))
+@protocol PUAKotlinx_coroutines_coreJob
+@required
+- (id)attachChildChild:(id)child __attribute__((swift_name("attachChild(child:)")));
+- (void)cancelCause:(PUAKotlinx_coroutines_coreCancellationException * _Nullable)cause __attribute__((swift_name("cancel(cause:)")));
+- (PUAKotlinx_coroutines_coreCancellationException *)getCancellationException __attribute__((swift_name("getCancellationException()")));
+- (id)invokeOnCompletionOnCancelling:(BOOL)onCancelling invokeImmediately:(BOOL)invokeImmediately handler:(void (^)(PUAKotlinThrowable * _Nullable))handler __attribute__((swift_name("invokeOnCompletion(onCancelling:invokeImmediately:handler:)")));
+- (id)invokeOnCompletionHandler:(void (^)(PUAKotlinThrowable * _Nullable))handler __attribute__((swift_name("invokeOnCompletion(handler:)")));
+
+/**
+ @note This method converts instances of CancellationException to errors.
+ Other uncaught Kotlin exceptions are fatal.
+*/
+- (void)joinWithCompletionHandler:(void (^)(PUAKotlinUnit * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("join(completionHandler:)")));
+- (id)plusOther:(id)other __attribute__((swift_name("plus(other:)"))) __attribute__((unavailable("Operator '+' on two Job objects is meaningless. Job is a coroutine context element and `+` is a set-sum operator for coroutine contexts. The job to the right of `+` just replaces the job the left of `+`.")));
+- (BOOL)start __attribute__((swift_name("start()")));
+@property (readonly) id children __attribute__((swift_name("children")));
+@property (readonly) BOOL isActive __attribute__((swift_name("isActive")));
+@property (readonly) BOOL isCancelled __attribute__((swift_name("isCancelled")));
+@property (readonly) BOOL isCompleted __attribute__((swift_name("isCompleted")));
+@property (readonly) id onJoin __attribute__((swift_name("onJoin")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpHttpMethod")))
+@interface PUAKtor_httpHttpMethod : PUABase
+- (instancetype)initWithValue:(NSString *)value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
+- (NSString *)component1 __attribute__((swift_name("component1()")));
+- (PUAKtor_httpHttpMethod *)doCopyValue:(NSString *)value __attribute__((swift_name("doCopy(value:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *value __attribute__((swift_name("value")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreCompositeEncoder")))
+@protocol PUAKotlinx_serialization_coreCompositeEncoder
+@required
+- (void)encodeBooleanElementDescriptor:(id)descriptor index:(int32_t)index value:(BOOL)value __attribute__((swift_name("encodeBooleanElement(descriptor:index:value:)")));
+- (void)encodeByteElementDescriptor:(id)descriptor index:(int32_t)index value:(int8_t)value __attribute__((swift_name("encodeByteElement(descriptor:index:value:)")));
+- (void)encodeCharElementDescriptor:(id)descriptor index:(int32_t)index value:(unichar)value __attribute__((swift_name("encodeCharElement(descriptor:index:value:)")));
+- (void)encodeDoubleElementDescriptor:(id)descriptor index:(int32_t)index value:(double)value __attribute__((swift_name("encodeDoubleElement(descriptor:index:value:)")));
+- (void)encodeFloatElementDescriptor:(id)descriptor index:(int32_t)index value:(float)value __attribute__((swift_name("encodeFloatElement(descriptor:index:value:)")));
+- (id)encodeInlineElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("encodeInlineElement(descriptor:index:)")));
+- (void)encodeIntElementDescriptor:(id)descriptor index:(int32_t)index value:(int32_t)value __attribute__((swift_name("encodeIntElement(descriptor:index:value:)")));
+- (void)encodeLongElementDescriptor:(id)descriptor index:(int32_t)index value:(int64_t)value __attribute__((swift_name("encodeLongElement(descriptor:index:value:)")));
+- (void)encodeNullableSerializableElementDescriptor:(id)descriptor index:(int32_t)index serializer:(id)serializer value:(id _Nullable)value __attribute__((swift_name("encodeNullableSerializableElement(descriptor:index:serializer:value:)")));
+- (void)encodeSerializableElementDescriptor:(id)descriptor index:(int32_t)index serializer:(id)serializer value:(id _Nullable)value __attribute__((swift_name("encodeSerializableElement(descriptor:index:serializer:value:)")));
+- (void)encodeShortElementDescriptor:(id)descriptor index:(int32_t)index value:(int16_t)value __attribute__((swift_name("encodeShortElement(descriptor:index:value:)")));
+- (void)encodeStringElementDescriptor:(id)descriptor index:(int32_t)index value:(NSString *)value __attribute__((swift_name("encodeStringElement(descriptor:index:value:)")));
+- (void)endStructureDescriptor:(id)descriptor __attribute__((swift_name("endStructure(descriptor:)")));
+- (BOOL)shouldEncodeElementDefaultDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("shouldEncodeElementDefault(descriptor:index:)")));
+@property (readonly) PUAKotlinx_serialization_coreSerializersModule *serializersModule __attribute__((swift_name("serializersModule")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreSerializersModule")))
+@interface PUAKotlinx_serialization_coreSerializersModule : PUABase
+- (void)dumpToCollector:(id)collector __attribute__((swift_name("dumpTo(collector:)")));
+- (id _Nullable)getContextualKclass:(id)kclass __attribute__((swift_name("getContextual(kclass:)")));
+- (id _Nullable)getPolymorphicBaseClass:(id)baseClass value:(id)value __attribute__((swift_name("getPolymorphic(baseClass:value:)")));
+- (id _Nullable)getPolymorphicBaseClass:(id)baseClass serializedClassName:(NSString * _Nullable)serializedClassName __attribute__((swift_name("getPolymorphic(baseClass:serializedClassName:)")));
+@end;
+
+__attribute__((swift_name("KotlinAnnotation")))
+@protocol PUAKotlinAnnotation
+@required
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreSerialKind")))
+@interface PUAKotlinx_serialization_coreSerialKind : PUABase
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreCompositeDecoder")))
+@protocol PUAKotlinx_serialization_coreCompositeDecoder
+@required
+- (BOOL)decodeBooleanElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeBooleanElement(descriptor:index:)")));
+- (int8_t)decodeByteElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeByteElement(descriptor:index:)")));
+- (unichar)decodeCharElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeCharElement(descriptor:index:)")));
+- (int32_t)decodeCollectionSizeDescriptor:(id)descriptor __attribute__((swift_name("decodeCollectionSize(descriptor:)")));
+- (double)decodeDoubleElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeDoubleElement(descriptor:index:)")));
+- (int32_t)decodeElementIndexDescriptor:(id)descriptor __attribute__((swift_name("decodeElementIndex(descriptor:)")));
+- (float)decodeFloatElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeFloatElement(descriptor:index:)")));
+- (id)decodeInlineElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeInlineElement(descriptor:index:)")));
+- (int32_t)decodeIntElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeIntElement(descriptor:index:)")));
+- (int64_t)decodeLongElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeLongElement(descriptor:index:)")));
+- (id _Nullable)decodeNullableSerializableElementDescriptor:(id)descriptor index:(int32_t)index deserializer:(id)deserializer previousValue:(id _Nullable)previousValue __attribute__((swift_name("decodeNullableSerializableElement(descriptor:index:deserializer:previousValue:)")));
+- (BOOL)decodeSequentially __attribute__((swift_name("decodeSequentially()")));
+- (id _Nullable)decodeSerializableElementDescriptor:(id)descriptor index:(int32_t)index deserializer:(id)deserializer previousValue:(id _Nullable)previousValue __attribute__((swift_name("decodeSerializableElement(descriptor:index:deserializer:previousValue:)")));
+- (int16_t)decodeShortElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeShortElement(descriptor:index:)")));
+- (NSString *)decodeStringElementDescriptor:(id)descriptor index:(int32_t)index __attribute__((swift_name("decodeStringElement(descriptor:index:)")));
+- (void)endStructureDescriptor:(id)descriptor __attribute__((swift_name("endStructure(descriptor:)")));
+@property (readonly) PUAKotlinx_serialization_coreSerializersModule *serializersModule __attribute__((swift_name("serializersModule")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("KotlinNothing")))
+@interface PUAKotlinNothing : PUABase
+@end;
+
+__attribute__((swift_name("Ktor_utilsStringValues")))
+@protocol PUAKtor_utilsStringValues
+@required
+- (BOOL)containsName:(NSString *)name __attribute__((swift_name("contains(name:)")));
+- (BOOL)containsName:(NSString *)name value:(NSString *)value __attribute__((swift_name("contains(name:value:)")));
+- (NSSet> *)entries __attribute__((swift_name("entries()")));
+- (void)forEachBody:(void (^)(NSString *, NSArray *))body __attribute__((swift_name("forEach(body:)")));
+- (NSString * _Nullable)getName:(NSString *)name __attribute__((swift_name("get(name:)")));
+- (NSArray * _Nullable)getAllName:(NSString *)name __attribute__((swift_name("getAll(name:)")));
+- (BOOL)isEmpty __attribute__((swift_name("isEmpty()")));
+- (NSSet *)names __attribute__((swift_name("names()")));
+@property (readonly) BOOL caseInsensitiveName __attribute__((swift_name("caseInsensitiveName")));
+@end;
+
+__attribute__((swift_name("KotlinMapEntry")))
+@protocol PUAKotlinMapEntry
+@required
+@property (readonly) id _Nullable key __attribute__((swift_name("key")));
+@property (readonly) id _Nullable value __attribute__((swift_name("value")));
+@end;
+
+__attribute__((swift_name("Ktor_httpHeaders")))
+@protocol PUAKtor_httpHeaders
+@required
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpUrl")))
+@interface PUAKtor_httpUrl : PUABase
+- (instancetype)initWithProtocol:(PUAKtor_httpURLProtocol *)protocol host:(NSString *)host specifiedPort:(int32_t)specifiedPort encodedPath:(NSString *)encodedPath parameters:(id)parameters fragment:(NSString *)fragment user:(NSString * _Nullable)user password:(NSString * _Nullable)password trailingQuery:(BOOL)trailingQuery __attribute__((swift_name("init(protocol:host:specifiedPort:encodedPath:parameters:fragment:user:password:trailingQuery:)"))) __attribute__((objc_designated_initializer));
+- (PUAKtor_httpURLProtocol *)component1 __attribute__((swift_name("component1()")));
+- (NSString *)component2 __attribute__((swift_name("component2()")));
+- (int32_t)component3 __attribute__((swift_name("component3()")));
+- (NSString *)component4 __attribute__((swift_name("component4()")));
+- (id)component5 __attribute__((swift_name("component5()")));
+- (NSString *)component6 __attribute__((swift_name("component6()")));
+- (NSString * _Nullable)component7 __attribute__((swift_name("component7()")));
+- (NSString * _Nullable)component8 __attribute__((swift_name("component8()")));
+- (BOOL)component9 __attribute__((swift_name("component9()")));
+- (PUAKtor_httpUrl *)doCopyProtocol:(PUAKtor_httpURLProtocol *)protocol host:(NSString *)host specifiedPort:(int32_t)specifiedPort encodedPath:(NSString *)encodedPath parameters:(id)parameters fragment:(NSString *)fragment user:(NSString * _Nullable)user password:(NSString * _Nullable)password trailingQuery:(BOOL)trailingQuery __attribute__((swift_name("doCopy(protocol:host:specifiedPort:encodedPath:parameters:fragment:user:password:trailingQuery:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *encodedPath __attribute__((swift_name("encodedPath")));
+@property (readonly) NSString *fragment __attribute__((swift_name("fragment")));
+@property (readonly) NSString *host __attribute__((swift_name("host")));
+@property (readonly) id parameters __attribute__((swift_name("parameters")));
+@property (readonly) NSString * _Nullable password __attribute__((swift_name("password")));
+@property (readonly) int32_t port __attribute__((swift_name("port")));
+@property (readonly) PUAKtor_httpURLProtocol *protocol __attribute__((swift_name("protocol")));
+@property (readonly) int32_t specifiedPort __attribute__((swift_name("specifiedPort")));
+@property (readonly) BOOL trailingQuery __attribute__((swift_name("trailingQuery")));
+@property (readonly) NSString * _Nullable user __attribute__((swift_name("user")));
+@end;
+
+__attribute__((swift_name("Ktor_httpOutgoingContent")))
+@interface PUAKtor_httpOutgoingContent : PUABase
+- (id _Nullable)getPropertyKey:(PUAKtor_utilsAttributeKey *)key __attribute__((swift_name("getProperty(key:)")));
+- (void)setPropertyKey:(PUAKtor_utilsAttributeKey *)key value:(id _Nullable)value __attribute__((swift_name("setProperty(key:value:)")));
+@property (readonly) PUALong * _Nullable contentLength __attribute__((swift_name("contentLength")));
+@property (readonly) PUAKtor_httpContentType * _Nullable contentType __attribute__((swift_name("contentType")));
+@property (readonly) id headers __attribute__((swift_name("headers")));
+@property (readonly) PUAKtor_httpHttpStatusCode * _Nullable status __attribute__((swift_name("status")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_utilsAttributeKey")))
+@interface PUAKtor_utilsAttributeKey : PUABase
+- (instancetype)initWithName:(NSString *)name __attribute__((swift_name("init(name:)"))) __attribute__((objc_designated_initializer));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *name __attribute__((swift_name("name")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpURLProtocol")))
+@interface PUAKtor_httpURLProtocol : PUABase
+- (instancetype)initWithName:(NSString *)name defaultPort:(int32_t)defaultPort __attribute__((swift_name("init(name:defaultPort:)"))) __attribute__((objc_designated_initializer));
+- (NSString *)component1 __attribute__((swift_name("component1()")));
+- (int32_t)component2 __attribute__((swift_name("component2()")));
+- (PUAKtor_httpURLProtocol *)doCopyName:(NSString *)name defaultPort:(int32_t)defaultPort __attribute__((swift_name("doCopy(name:defaultPort:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) int32_t defaultPort __attribute__((swift_name("defaultPort")));
+@property (readonly) NSString *name __attribute__((swift_name("name")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpParametersBuilder")))
+@interface PUAKtor_httpParametersBuilder : PUAKtor_utilsStringValuesBuilder
+- (instancetype)initWithSize:(int32_t)size __attribute__((swift_name("init(size:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithCaseInsensitiveName:(BOOL)caseInsensitiveName size:(int32_t)size __attribute__((swift_name("init(caseInsensitiveName:size:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+- (id)build __attribute__((swift_name("build()")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreDisposableHandle")))
+@protocol PUAKotlinx_coroutines_coreDisposableHandle
+@required
+- (void)dispose __attribute__((swift_name("dispose()")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreChildHandle")))
+@protocol PUAKotlinx_coroutines_coreChildHandle
+@required
+- (BOOL)childCancelledCause:(PUAKotlinThrowable *)cause __attribute__((swift_name("childCancelled(cause:)")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreChildJob")))
+@protocol PUAKotlinx_coroutines_coreChildJob
+@required
+- (void)parentCancelledParentJob:(id)parentJob __attribute__((swift_name("parentCancelled(parentJob:)")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreCancellationException")))
+@interface PUAKotlinx_coroutines_coreCancellationException : PUAKotlinIllegalStateException
+- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
++ (instancetype)new __attribute__((unavailable));
+- (instancetype)initWithCause:(PUAKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+@end;
+
+__attribute__((swift_name("KotlinSequence")))
+@protocol PUAKotlinSequence
+@required
+- (id)iterator __attribute__((swift_name("iterator()")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreSelectClause0")))
+@protocol PUAKotlinx_coroutines_coreSelectClause0
+@required
+- (void)registerSelectClause0Select:(id)select block:(id)block __attribute__((swift_name("registerSelectClause0(select:block:)")));
+@end;
+
+__attribute__((swift_name("KotlinCoroutineContextKey")))
+@protocol PUAKotlinCoroutineContextKey
+@required
+@end;
+
+__attribute__((swift_name("Kotlinx_serialization_coreSerializersModuleCollector")))
+@protocol PUAKotlinx_serialization_coreSerializersModuleCollector
+@required
+- (void)contextualKClass:(id)kClass serializer:(id)serializer __attribute__((swift_name("contextual(kClass:serializer:)")));
+- (void)polymorphicBaseClass:(id)baseClass actualClass:(id)actualClass actualSerializer:(id)actualSerializer __attribute__((swift_name("polymorphic(baseClass:actualClass:actualSerializer:)")));
+- (void)polymorphicDefaultBaseClass:(id)baseClass defaultSerializerProvider:(id _Nullable (^)(NSString * _Nullable))defaultSerializerProvider __attribute__((swift_name("polymorphicDefault(baseClass:defaultSerializerProvider:)")));
+@end;
+
+__attribute__((swift_name("KotlinKDeclarationContainer")))
+@protocol PUAKotlinKDeclarationContainer
+@required
+@end;
+
+__attribute__((swift_name("KotlinKAnnotatedElement")))
+@protocol PUAKotlinKAnnotatedElement
+@required
+@end;
+
+__attribute__((swift_name("KotlinKClassifier")))
+@protocol PUAKotlinKClassifier
+@required
+@end;
+
+__attribute__((swift_name("KotlinKClass")))
+@protocol PUAKotlinKClass
+@required
+- (BOOL)isInstanceValue:(id _Nullable)value __attribute__((swift_name("isInstance(value:)")));
+@property (readonly) NSString * _Nullable qualifiedName __attribute__((swift_name("qualifiedName")));
+@property (readonly) NSString * _Nullable simpleName __attribute__((swift_name("simpleName")));
+@end;
+
+__attribute__((swift_name("Ktor_httpParameters")))
+@protocol PUAKtor_httpParameters
+@required
+@end;
+
+__attribute__((swift_name("Ktor_httpHeaderValueWithParameters")))
+@interface PUAKtor_httpHeaderValueWithParameters : PUABase
+- (instancetype)initWithContent:(NSString *)content parameters:(NSArray *)parameters __attribute__((swift_name("init(content:parameters:)"))) __attribute__((objc_designated_initializer));
+- (NSString * _Nullable)parameterName:(NSString *)name __attribute__((swift_name("parameter(name:)")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *content __attribute__((swift_name("content")));
+@property (readonly) NSArray *parameters __attribute__((swift_name("parameters")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpContentType")))
+@interface PUAKtor_httpContentType : PUAKtor_httpHeaderValueWithParameters
+- (instancetype)initWithContentType:(NSString *)contentType contentSubtype:(NSString *)contentSubtype parameters:(NSArray *)parameters __attribute__((swift_name("init(contentType:contentSubtype:parameters:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)initWithContent:(NSString *)content parameters:(NSArray *)parameters __attribute__((swift_name("init(content:parameters:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (BOOL)matchPattern:(PUAKtor_httpContentType *)pattern __attribute__((swift_name("match(pattern:)")));
+- (BOOL)matchPattern_:(NSString *)pattern __attribute__((swift_name("match(pattern_:)")));
+- (PUAKtor_httpContentType *)withParameterName:(NSString *)name value:(NSString *)value __attribute__((swift_name("withParameter(name:value:)")));
+- (PUAKtor_httpContentType *)withoutParameters __attribute__((swift_name("withoutParameters()")));
+@property (readonly) NSString *contentSubtype __attribute__((swift_name("contentSubtype")));
+@property (readonly) NSString *contentType __attribute__((swift_name("contentType")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpHttpStatusCode")))
+@interface PUAKtor_httpHttpStatusCode : PUABase
+- (instancetype)initWithValue:(int32_t)value description:(NSString *)description __attribute__((swift_name("init(value:description:)"))) __attribute__((objc_designated_initializer));
+- (int32_t)component1 __attribute__((swift_name("component1()")));
+- (NSString *)component2 __attribute__((swift_name("component2()")));
+- (PUAKtor_httpHttpStatusCode *)doCopyValue:(int32_t)value description:(NSString *)description __attribute__((swift_name("doCopy(value:description:)")));
+- (PUAKtor_httpHttpStatusCode *)descriptionValue:(NSString *)value __attribute__((swift_name("description(value:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *description_ __attribute__((swift_name("description_")));
+@property (readonly) int32_t value __attribute__((swift_name("value")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreParentJob")))
+@protocol PUAKotlinx_coroutines_coreParentJob
+@required
+- (PUAKotlinx_coroutines_coreCancellationException *)getChildJobCancellationCause __attribute__((swift_name("getChildJobCancellationCause()")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreSelectInstance")))
+@protocol PUAKotlinx_coroutines_coreSelectInstance
+@required
+- (void)disposeOnSelectHandle:(id)handle __attribute__((swift_name("disposeOnSelect(handle:)")));
+- (id _Nullable)performAtomicTrySelectDesc:(PUAKotlinx_coroutines_coreAtomicDesc *)desc __attribute__((swift_name("performAtomicTrySelect(desc:)")));
+- (void)resumeSelectWithExceptionException:(PUAKotlinThrowable *)exception __attribute__((swift_name("resumeSelectWithException(exception:)")));
+- (BOOL)trySelect __attribute__((swift_name("trySelect()")));
+- (id _Nullable)trySelectOtherOtherOp:(PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp * _Nullable)otherOp __attribute__((swift_name("trySelectOther(otherOp:)")));
+@property (readonly) id completion __attribute__((swift_name("completion")));
+@property (readonly) BOOL isSelected __attribute__((swift_name("isSelected")));
+@end;
+
+__attribute__((swift_name("KotlinFunction")))
+@protocol PUAKotlinFunction
+@required
+@end;
+
+__attribute__((swift_name("KotlinSuspendFunction0")))
+@protocol PUAKotlinSuspendFunction0
+@required
+
+/**
+ @note This method converts instances of CancellationException to errors.
+ Other uncaught Kotlin exceptions are fatal.
+*/
+- (void)invokeWithCompletionHandler:(void (^)(id _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("invoke(completionHandler:)")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Ktor_httpHeaderValueParam")))
+@interface PUAKtor_httpHeaderValueParam : PUABase
+- (instancetype)initWithName:(NSString *)name value:(NSString *)value __attribute__((swift_name("init(name:value:)"))) __attribute__((objc_designated_initializer));
+- (NSString *)component1 __attribute__((swift_name("component1()")));
+- (NSString *)component2 __attribute__((swift_name("component2()")));
+- (PUAKtor_httpHeaderValueParam *)doCopyName:(NSString *)name value:(NSString *)value __attribute__((swift_name("doCopy(name:value:)")));
+- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)")));
+- (NSUInteger)hash __attribute__((swift_name("hash()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) NSString *name __attribute__((swift_name("name")));
+@property (readonly) NSString *value __attribute__((swift_name("value")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreAtomicDesc")))
+@interface PUAKotlinx_coroutines_coreAtomicDesc : PUABase
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (void)completeOp:(PUAKotlinx_coroutines_coreAtomicOp *)op failure:(id _Nullable)failure __attribute__((swift_name("complete(op:failure:)")));
+- (id _Nullable)prepareOp:(PUAKotlinx_coroutines_coreAtomicOp *)op __attribute__((swift_name("prepare(op:)")));
+@property PUAKotlinx_coroutines_coreAtomicOp *atomicOp __attribute__((swift_name("atomicOp")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreOpDescriptor")))
+@interface PUAKotlinx_coroutines_coreOpDescriptor : PUABase
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (BOOL)isEarlierThanThat:(PUAKotlinx_coroutines_coreOpDescriptor *)that __attribute__((swift_name("isEarlierThan(that:)")));
+- (id _Nullable)performAffected:(id _Nullable)affected __attribute__((swift_name("perform(affected:)")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) PUAKotlinx_coroutines_coreAtomicOp * _Nullable atomicOp __attribute__((swift_name("atomicOp")));
+@end;
+
+__attribute__((objc_subclassing_restricted))
+__attribute__((swift_name("Kotlinx_coroutines_coreLockFreeLinkedListNode.PrepareOp")))
+@interface PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp : PUAKotlinx_coroutines_coreOpDescriptor
+- (instancetype)initWithAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next desc:(PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc *)desc __attribute__((swift_name("init(affected:next:desc:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
++ (instancetype)new __attribute__((unavailable));
+- (void)finishPrepare __attribute__((swift_name("finishPrepare()")));
+- (id _Nullable)performAffected:(id _Nullable)affected __attribute__((swift_name("perform(affected:)")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode *affected __attribute__((swift_name("affected")));
+@property (readonly) PUAKotlinx_coroutines_coreAtomicOp *atomicOp __attribute__((swift_name("atomicOp")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc *desc __attribute__((swift_name("desc")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode *next __attribute__((swift_name("next")));
+@end;
+
+__attribute__((swift_name("KotlinContinuation")))
+@protocol PUAKotlinContinuation
+@required
+- (void)resumeWithResult:(id _Nullable)result __attribute__((swift_name("resumeWith(result:)")));
+@property (readonly) id context __attribute__((swift_name("context")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreAtomicOp")))
+@interface PUAKotlinx_coroutines_coreAtomicOp<__contravariant T> : PUAKotlinx_coroutines_coreOpDescriptor
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (void)completeAffected:(T _Nullable)affected failure:(id _Nullable)failure __attribute__((swift_name("complete(affected:failure:)")));
+- (id _Nullable)decideDecision:(id _Nullable)decision __attribute__((swift_name("decide(decision:)")));
+- (id _Nullable)performAffected:(id _Nullable)affected __attribute__((swift_name("perform(affected:)")));
+- (id _Nullable)prepareAffected:(T _Nullable)affected __attribute__((swift_name("prepare(affected:)")));
+@property (readonly) PUAKotlinx_coroutines_coreAtomicOp *atomicOp __attribute__((swift_name("atomicOp")));
+@property (readonly) id _Nullable consensus __attribute__((swift_name("consensus")));
+@property (readonly) BOOL isDecided __attribute__((swift_name("isDecided")));
+@property (readonly) int64_t opSequence __attribute__((swift_name("opSequence")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreLockFreeLinkedListNode")))
+@interface PUAKotlinx_coroutines_coreLockFreeLinkedListNode : PUABase
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (void)addLastNode:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)node __attribute__((swift_name("addLast(node:)")));
+- (BOOL)addLastIfNode:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)node condition:(PUABoolean *(^)(void))condition __attribute__((swift_name("addLastIf(node:condition:)")));
+- (BOOL)addLastIfPrevNode:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)node predicate:(PUABoolean *(^)(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *))predicate __attribute__((swift_name("addLastIfPrev(node:predicate:)")));
+- (BOOL)addLastIfPrevAndIfNode:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)node predicate:(PUABoolean *(^)(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *))predicate condition:(PUABoolean *(^)(void))condition __attribute__((swift_name("addLastIfPrevAndIf(node:predicate:condition:)")));
+- (BOOL)addOneIfEmptyNode:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)node __attribute__((swift_name("addOneIfEmpty(node:)")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAddLastDesc *)describeAddLastNode:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)node __attribute__((swift_name("describeAddLast(node:)")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNodeRemoveFirstDesc *)describeRemoveFirst __attribute__((swift_name("describeRemoveFirst()")));
+- (void)helpRemove __attribute__((swift_name("helpRemove()")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)nextIfRemoved __attribute__((swift_name("nextIfRemoved()")));
+- (BOOL)remove __attribute__((swift_name("remove()")));
+- (id _Nullable)removeFirstIfIsInstanceOfOrPeekIfPredicate:(PUABoolean *(^)(id _Nullable))predicate __attribute__((swift_name("removeFirstIfIsInstanceOfOrPeekIf(predicate:)")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)removeFirstOrNull __attribute__((swift_name("removeFirstOrNull()")));
+- (NSString *)description __attribute__((swift_name("description()")));
+@property (readonly) BOOL isRemoved __attribute__((swift_name("isRemoved")));
+@property (readonly, getter=next_) id _Nullable next __attribute__((swift_name("next")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode *nextNode __attribute__((swift_name("nextNode")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode *prevNode __attribute__((swift_name("prevNode")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreLockFreeLinkedListNode.AbstractAtomicDesc")))
+@interface PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc : PUAKotlinx_coroutines_coreAtomicDesc
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
+- (void)completeOp:(PUAKotlinx_coroutines_coreAtomicOp *)op failure:(id _Nullable)failure __attribute__((swift_name("complete(op:failure:)")));
+- (id _Nullable)failureAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)affected __attribute__((swift_name("failure(affected:)")));
+- (void)finishOnSuccessAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next __attribute__((swift_name("finishOnSuccess(affected:next:)")));
+- (void)finishPreparePrepareOp:(PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp *)prepareOp __attribute__((swift_name("finishPrepare(prepareOp:)")));
+- (id _Nullable)onPreparePrepareOp:(PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp *)prepareOp __attribute__((swift_name("onPrepare(prepareOp:)")));
+- (void)onRemovedAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected __attribute__((swift_name("onRemoved(affected:)")));
+- (id _Nullable)prepareOp:(PUAKotlinx_coroutines_coreAtomicOp *)op __attribute__((swift_name("prepare(op:)")));
+- (BOOL)retryAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(id)next __attribute__((swift_name("retry(affected:next:)")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)takeAffectedNodeOp:(PUAKotlinx_coroutines_coreOpDescriptor *)op __attribute__((swift_name("takeAffectedNode(op:)")));
+- (id)updatedNextAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next __attribute__((swift_name("updatedNext(affected:next:)")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable affectedNode __attribute__((swift_name("affectedNode")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable originalNext __attribute__((swift_name("originalNext")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreLockFreeLinkedListNodeAddLastDesc")))
+@interface PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAddLastDesc : PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc
+- (instancetype)initWithQueue:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)queue node:(T)node __attribute__((swift_name("init(queue:node:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
++ (instancetype)new __attribute__((unavailable));
+- (void)finishOnSuccessAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next __attribute__((swift_name("finishOnSuccess(affected:next:)")));
+- (void)finishPreparePrepareOp:(PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp *)prepareOp __attribute__((swift_name("finishPrepare(prepareOp:)")));
+- (BOOL)retryAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(id)next __attribute__((swift_name("retry(affected:next:)")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)takeAffectedNodeOp:(PUAKotlinx_coroutines_coreOpDescriptor *)op __attribute__((swift_name("takeAffectedNode(op:)")));
+- (id)updatedNextAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next __attribute__((swift_name("updatedNext(affected:next:)")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable affectedNode __attribute__((swift_name("affectedNode")));
+@property (readonly) T node __attribute__((swift_name("node")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable originalNext __attribute__((swift_name("originalNext")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode *queue __attribute__((swift_name("queue")));
+@end;
+
+__attribute__((swift_name("Kotlinx_coroutines_coreLockFreeLinkedListNodeRemoveFirstDesc")))
+@interface PUAKotlinx_coroutines_coreLockFreeLinkedListNodeRemoveFirstDesc : PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc
+- (instancetype)initWithQueue:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)queue __attribute__((swift_name("init(queue:)"))) __attribute__((objc_designated_initializer));
+- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
++ (instancetype)new __attribute__((unavailable));
+- (id _Nullable)failureAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)affected __attribute__((swift_name("failure(affected:)")));
+- (void)finishOnSuccessAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next __attribute__((swift_name("finishOnSuccess(affected:next:)")));
+- (void)finishPreparePrepareOp:(PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp *)prepareOp __attribute__((swift_name("finishPrepare(prepareOp:)")));
+- (BOOL)retryAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(id)next __attribute__((swift_name("retry(affected:next:)")));
+- (PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable)takeAffectedNodeOp:(PUAKotlinx_coroutines_coreOpDescriptor *)op __attribute__((swift_name("takeAffectedNode(op:)")));
+- (id)updatedNextAffected:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)affected next:(PUAKotlinx_coroutines_coreLockFreeLinkedListNode *)next __attribute__((swift_name("updatedNext(affected:next:)")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable affectedNode __attribute__((swift_name("affectedNode")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode * _Nullable originalNext __attribute__((swift_name("originalNext")));
+@property (readonly) PUAKotlinx_coroutines_coreLockFreeLinkedListNode *queue __attribute__((swift_name("queue")));
+@property (readonly) T _Nullable result __attribute__((swift_name("result")));
+@end;
+
+#pragma clang diagnostic pop
+NS_ASSUME_NONNULL_END
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Info.plist b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Info.plist
new file mode 100644
index 0000000..7f4b908
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Info.plist
@@ -0,0 +1,35 @@
+
+
+
+
+ CFBundleExecutable
+ PayUAnalytics
+ CFBundleIdentifier
+ com.payu.payuanalytics.analytics.PayUAnalytics
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ PayUAnalytics
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSupportedPlatforms
+
+ iPhoneOS
+
+ CFBundleVersion
+ 1
+ MinimumOSVersion
+ 9.0
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+
+
\ No newline at end of file
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Modules/module.modulemap b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Modules/module.modulemap
new file mode 100644
index 0000000..60bc425
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module PayUAnalytics {
+ umbrella header "PayUAnalytics.h"
+
+ export *
+ module * { export * }
+}
\ No newline at end of file
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/PayUAnalytics b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/PayUAnalytics
new file mode 100755
index 0000000..d2d64cd
Binary files /dev/null and b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-arm64/PayUAnalytics.framework/PayUAnalytics differ
diff --git a/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-x86_64-simulator/PayUAnalytics.framework/Headers/PayUAnalytics.h b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-x86_64-simulator/PayUAnalytics.framework/Headers/PayUAnalytics.h
new file mode 100644
index 0000000..7e3d62c
--- /dev/null
+++ b/Samples/PayUNativeOtpAssistObjcSample/Pods/PayUIndia-Analytics/PayUAnalytics.xcframework/ios-x86_64-simulator/PayUAnalytics.framework/Headers/PayUAnalytics.h
@@ -0,0 +1,1143 @@
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+@class PUABaseAnalytics, NSString, NSData, PUAAnalyticsDataManager, PUAAnalyticsResponse, PUAKotlinEnum, PUAAnalyticsType, PUAKotlinArray, PUAKtor_client_coreHttpRequestBuilder, PUAAnalyticsConfig, PUAClevertapAnalytics, PUAPayUAnalytics, PUAPayUDeviceAnalytics, PUAKotlinUnit, PUAKtor_httpHeadersBuilder, PUAKtor_client_coreHttpRequestData, PUAKtor_httpURLBuilder, PUAKtor_httpHttpMethod, PUAKotlinThrowable, PUAKotlinException, PUAKotlinRuntimeException, PUAKotlinIllegalStateException, PUAKotlinx_serialization_coreSerializersModule, PUAKotlinx_serialization_coreSerialKind, PUAKotlinNothing, PUAKtor_utilsStringValuesBuilder, PUAKtor_httpUrl, PUAKtor_httpOutgoingContent, PUAKtor_utilsAttributeKey, PUAKtor_httpURLProtocol, PUAKtor_httpParametersBuilder, PUAKotlinx_coroutines_coreCancellationException, PUAKtor_httpContentType, PUAKtor_httpHttpStatusCode, PUAKtor_httpHeaderValueParam, PUAKtor_httpHeaderValueWithParameters, PUAKotlinx_coroutines_coreAtomicDesc, PUAKotlinx_coroutines_coreLockFreeLinkedListNodePrepareOp, PUAKotlinx_coroutines_coreAtomicOp<__contravariant T>, PUAKotlinx_coroutines_coreOpDescriptor, PUAKotlinx_coroutines_coreLockFreeLinkedListNode, PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAbstractAtomicDesc, PUAKotlinx_coroutines_coreLockFreeLinkedListNodeAddLastDesc, PUAKotlinx_coroutines_coreLockFreeLinkedListNodeRemoveFirstDesc;
+
+@protocol PUAOnEventsLogListener, PUAKotlinx_serialization_coreKSerializer, PUAKotlinComparable, PUAKotlinx_serialization_coreEncoder, PUAKotlinx_serialization_coreSerialDescriptor, PUAKotlinx_serialization_coreSerializationStrategy, PUAKotlinx_serialization_coreDecoder, PUAKotlinx_serialization_coreDeserializationStrategy, PUAKotlinIterator, PUAKtor_httpHttpMessageBuilder, PUAKtor_client_coreHttpClientEngineCapability, PUAKtor_utilsAttributes, PUAKotlinx_coroutines_coreJob, PUAKotlinx_serialization_coreCompositeEncoder, PUAKotlinAnnotation, PUAKotlinx_serialization_coreCompositeDecoder, PUAKtor_utilsStringValues, PUAKotlinMapEntry, PUAKtor_httpHeaders, PUAKotlinx_coroutines_coreChildHandle, PUAKotlinx_coroutines_coreChildJob, PUAKotlinx_coroutines_coreDisposableHandle, PUAKotlinSequence, PUAKotlinx_coroutines_coreSelectClause0, PUAKotlinCoroutineContextKey, PUAKotlinCoroutineContextElement, PUAKotlinCoroutineContext, PUAKotlinx_serialization_coreSerializersModuleCollector, PUAKotlinKClass, PUAKtor_httpParameters, PUAKotlinx_coroutines_coreParentJob, PUAKotlinx_coroutines_coreSelectInstance, PUAKotlinSuspendFunction0, PUAKotlinKDeclarationContainer, PUAKotlinKAnnotatedElement, PUAKotlinKClassifier, PUAKotlinContinuation, PUAKotlinFunction;
+
+NS_ASSUME_NONNULL_BEGIN
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-warning-option"
+#pragma clang diagnostic ignored "-Wincompatible-property-type"
+#pragma clang diagnostic ignored "-Wnullability"
+
+__attribute__((swift_name("KotlinBase")))
+@interface PUABase : NSObject
+- (instancetype)init __attribute__((unavailable));
++ (instancetype)new __attribute__((unavailable));
++ (void)initialize __attribute__((objc_requires_super));
+@end;
+
+@interface PUABase (PUABaseCopying)
+@end;
+
+__attribute__((swift_name("KotlinMutableSet")))
+@interface PUAMutableSet : NSMutableSet
+@end;
+
+__attribute__((swift_name("KotlinMutableDictionary")))
+@interface PUAMutableDictionary