@shortkitsdk/react-native 0.2.16 → 0.2.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/android/build.gradle.kts +1 -1
  2. package/android/libs/shortkit-release.aar +0 -0
  3. package/android/src/main/java/com/shortkit/reactnative/ShortKitBridge.kt +5 -9
  4. package/android/src/main/java/com/shortkit/reactnative/ShortKitFeedView.kt +8 -0
  5. package/android/src/main/java/com/shortkit/reactnative/ShortKitModule.kt +3 -2
  6. package/android/src/main/java/com/shortkit/reactnative/ShortKitWidgetNativeView.kt +4 -0
  7. package/ios/DebugPanelView.swift +302 -0
  8. package/ios/ShortKitBridge.swift +5 -3
  9. package/ios/ShortKitFeedView.swift +15 -0
  10. package/ios/ShortKitModule.mm +3 -2
  11. package/ios/ShortKitSDK.xcframework/Info.plist +5 -5
  12. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Info.plist +2 -2
  13. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.abi.json +7196 -1210
  14. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +118 -5
  15. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  16. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftinterface +118 -5
  17. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/ShortKitSDK +0 -0
  18. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/_CodeSignature/CodeResources +9 -9
  19. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Info.plist +2 -2
  20. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +7196 -1210
  21. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +118 -5
  22. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  23. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +118 -5
  24. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +7196 -1210
  25. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +118 -5
  26. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  27. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +118 -5
  28. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/ShortKitSDK +0 -0
  29. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/_CodeSignature/CodeResources +17 -17
  30. package/ios/ShortKitWidgetNativeView.swift +7 -1
  31. package/package.json +1 -1
  32. package/src/ShortKitFeed.tsx +0 -13
  33. package/src/ShortKitProvider.tsx +2 -0
  34. package/src/ShortKitWidget.tsx +1 -0
  35. package/src/index.ts +0 -3
  36. package/src/serialization.ts +0 -1
  37. package/src/specs/NativeShortKitModule.ts +1 -7
  38. package/src/types.ts +3 -11
  39. package/ios/ShortKitSDK.xcframework.dev-backup/Info.plist +0 -43
  40. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Headers/ShortKitSDK-Swift.h +0 -418
  41. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Info.plist +0 -16
  42. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.abi.json +0 -32983
  43. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +0 -915
  44. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  45. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftinterface +0 -915
  46. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/Modules/module.modulemap +0 -4
  47. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/ShortKitSDK +0 -0
  48. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64/ShortKitSDK.framework/_CodeSignature/CodeResources +0 -168
  49. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Headers/ShortKitSDK-Swift.h +0 -418
  50. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Info.plist +0 -16
  51. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +0 -32983
  52. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +0 -915
  53. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  54. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +0 -915
  55. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/Modules/module.modulemap +0 -4
  56. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/ShortKitSDK +0 -0
  57. package/ios/ShortKitSDK.xcframework.dev-backup/ios-arm64-simulator/ShortKitSDK.framework/_CodeSignature/CodeResources +0 -168
@@ -1,7 +1,7 @@
1
1
  // swift-interface-format-version: 1.0
2
- // swift-compiler-version: Apple Swift version 6.1 effective-5.10 (swiftlang-6.1.0.110.21 clang-1700.0.13.3)
2
+ // swift-compiler-version: Apple Swift version 6.3 effective-5.10 (swiftlang-6.3.0.123.5 clang-2100.0.123.102)
3
3
  // swift-module-flags: -target arm64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -O -module-name ShortKitSDK -package-name swift_sdk
4
- // swift-module-flags-ignorable: -interface-compiler-version 6.1
4
+ // swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3
5
5
  import AVFoundation
6
6
  import Combine
7
7
  import CoreGraphics
@@ -217,6 +217,13 @@ public struct FeedConfig : Swift.Codable {
217
217
  public func encode(to encoder: any Swift.Encoder) throws
218
218
  public init(from decoder: any Swift.Decoder) throws
219
219
  }
220
+ public enum FeedMaskMode {
221
+ case none
222
+ case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.FeedMask)
223
+ }
224
+ extension ShortKitSDK.FeedMaskMode : Swift.Equatable {
225
+ public static func == (lhs: ShortKitSDK.FeedMaskMode, rhs: ShortKitSDK.FeedMaskMode) -> Swift.Bool
226
+ }
220
227
  public enum VideoOverlayMode {
221
228
  case none
222
229
  case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.FeedOverlay)
@@ -275,6 +282,51 @@ extension ShortKitSDK.AdOverlayMode : Swift.Codable {
275
282
  public init(from decoder: any Swift.Decoder) throws
276
283
  public func encode(to encoder: any Swift.Encoder) throws
277
284
  }
285
+ public struct DebugMetrics {
286
+ public var contentId: Swift.String?
287
+ public var feedIndex: Swift.Int
288
+ public var playerState: ShortKitSDK.PlayerState
289
+ public var intentToFrameMs: Swift.Int?
290
+ public var transitionToFrameMs: Swift.Int?
291
+ public var networkMs: Swift.Int?
292
+ public var decodeMs: Swift.Int?
293
+ public var prerollCompleted: Swift.Bool
294
+ public var observedBitrateBps: Swift.Double
295
+ public var indicatedBitrateBps: Swift.Double
296
+ public var bufferAhead: Swift.Double
297
+ public var rebufferCount: Swift.Int
298
+ public var lastRebufferDurationMs: Swift.Int?
299
+ public var currentTime: Swift.Double
300
+ public var duration: Swift.Double
301
+ public var loopCount: Swift.Int
302
+ public var videoWidth: Swift.Int
303
+ public var videoHeight: Swift.Int
304
+ public var codec: Swift.String?
305
+ public var thumbnailVisible: Swift.Bool
306
+ public var thumbsCachedAhead: Swift.Int
307
+ public var metadataAhead: Swift.Int
308
+ public init(contentId: Swift.String? = nil)
309
+ }
310
+ public enum SwipeCurve : Swift.Int, Swift.CaseIterable {
311
+ case quarticOut
312
+ case quinticOut
313
+ case expoOut
314
+ case microBounce
315
+ public var label: Swift.String {
316
+ get
317
+ }
318
+ public func apply(_ t: CoreFoundation.CGFloat) -> CoreFoundation.CGFloat
319
+ public static var selected: ShortKitSDK.SwipeCurve
320
+ public init?(rawValue: Swift.Int)
321
+ public typealias AllCases = [ShortKitSDK.SwipeCurve]
322
+ public typealias RawValue = Swift.Int
323
+ nonisolated public static var allCases: [ShortKitSDK.SwipeCurve] {
324
+ get
325
+ }
326
+ public var rawValue: Swift.Int {
327
+ get
328
+ }
329
+ }
278
330
  public protocol ShortKitDelegate : AnyObject {
279
331
  func shortKit(_ shortKit: ShortKitSDK.ShortKit, didChangeRefreshState state: ShortKitSDK.ShortKitRefreshState)
280
332
  func shortKit(_ shortKit: ShortKitSDK.ShortKit, didTapContent contentId: Swift.String, at index: Swift.Int)
@@ -285,6 +337,34 @@ extension ShortKitSDK.ShortKitDelegate {
285
337
  public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didTapContent contentId: Swift.String, at index: Swift.Int)
286
338
  public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didFetchContentItems items: [ShortKitSDK.ContentItem])
287
339
  }
340
+ public protocol ShortKitDownloadDelegate : AnyObject {
341
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didStartDownload item: ShortKitSDK.ContentItem)
342
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didUpdateDownloadProgress item: ShortKitSDK.ContentItem, progress: Swift.Double)
343
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didCompleteDownload item: ShortKitSDK.ContentItem, fileURL: Foundation.URL)
344
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didFailDownload item: ShortKitSDK.ContentItem, error: ShortKitSDK.ShortKitDownloadError)
345
+ }
346
+ extension ShortKitSDK.ShortKitDownloadDelegate {
347
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didStartDownload item: ShortKitSDK.ContentItem)
348
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didUpdateDownloadProgress item: ShortKitSDK.ContentItem, progress: Swift.Double)
349
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didCompleteDownload item: ShortKitSDK.ContentItem, fileURL: Foundation.URL)
350
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didFailDownload item: ShortKitSDK.ContentItem, error: ShortKitSDK.ShortKitDownloadError)
351
+ }
352
+ public enum DownloadMode {
353
+ case nonInterruptive
354
+ case interruptive
355
+ public static func == (a: ShortKitSDK.DownloadMode, b: ShortKitSDK.DownloadMode) -> Swift.Bool
356
+ public func hash(into hasher: inout Swift.Hasher)
357
+ public var hashValue: Swift.Int {
358
+ get
359
+ }
360
+ }
361
+ public enum ShortKitDownloadError : Swift.Error {
362
+ case downloadNotAvailable
363
+ case downloadInProgress
364
+ case networkError(any Swift.Error)
365
+ case httpError(statusCode: Swift.Int)
366
+ case cancelled
367
+ }
288
368
  @_hasMissingDesignatedInitializers final public class FeedPreload : @unchecked Swift.Sendable {
289
369
  @objc deinit
290
370
  }
@@ -301,6 +381,7 @@ extension ShortKitSDK.ShortKitDelegate {
301
381
  public typealias UIViewControllerType = ShortKitSDK.ShortKitFeedViewController
302
382
  }
303
383
  @objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class ShortKitFeedViewController : UIKit.UIViewController {
384
+ @_Concurrency.MainActor @preconcurrency public var debugPanelFactory: ((_ active: Combine.CurrentValueSubject<ShortKitSDK.DebugMetrics, Swift.Never>, _ prev: Combine.CurrentValueSubject<ShortKitSDK.DebugMetrics, Swift.Never>, _ next: Combine.CurrentValueSubject<ShortKitSDK.DebugMetrics, Swift.Never>) -> UIKit.UIView)?
304
385
  @_Concurrency.MainActor @preconcurrency public var onDismiss: (() -> Swift.Void)?
305
386
  @_Concurrency.MainActor @preconcurrency public var onRemainingContentCountChange: ((Swift.Int) -> Swift.Void)?
306
387
  @_Concurrency.MainActor @preconcurrency public var onFeedReady: (() -> Swift.Void)?
@@ -321,6 +402,10 @@ extension ShortKitSDK.ShortKitDelegate {
321
402
  @objc get
322
403
  }
323
404
  @objc deinit
405
+ @_Concurrency.MainActor @preconcurrency @objc override dynamic public var canBecomeFirstResponder: Swift.Bool {
406
+ @objc get
407
+ }
408
+ @_Concurrency.MainActor @preconcurrency @objc override dynamic public func motionEnded(_ motion: UIKit.UIEvent.EventSubtype, with event: UIKit.UIEvent?)
324
409
  }
325
410
  extension ShortKitSDK.ShortKitFeedViewController : UIKit.UICollectionViewDelegate {
326
411
  @_Concurrency.MainActor @preconcurrency @objc dynamic public func collectionView(_ collectionView: UIKit.UICollectionView, willDisplay cell: UIKit.UICollectionViewCell, forItemAt indexPath: Foundation.IndexPath)
@@ -422,10 +507,17 @@ public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sen
422
507
  public let articleUrl: Swift.String?
423
508
  public let commentCount: Swift.Int?
424
509
  public var fallbackUrl: Swift.String?
510
+ public var downloadUrl: Swift.String?
511
+ public init(id: Swift.String, playbackId: Swift.String? = nil, title: Swift.String, description: Swift.String? = nil, duration: Swift.Double, streamingUrl: Swift.String, thumbnailUrl: Swift.String, captionTracks: [ShortKitSDK.CaptionTrack] = [], customMetadata: [Swift.String : ShortKitSDK.JSONValue]? = nil, author: Swift.String? = nil, articleUrl: Swift.String? = nil, commentCount: Swift.Int? = nil, fallbackUrl: Swift.String? = nil, downloadUrl: Swift.String? = nil)
425
512
  public static func == (a: ShortKitSDK.ContentItem, b: ShortKitSDK.ContentItem) -> Swift.Bool
426
513
  public func encode(to encoder: any Swift.Encoder) throws
427
514
  public init(from decoder: any Swift.Decoder) throws
428
515
  }
516
+ extension ShortKitSDK.ContentItem {
517
+ public var isDownloadable: Swift.Bool {
518
+ get
519
+ }
520
+ }
429
521
  public enum FeedInput : Swift.Sendable {
430
522
  case video(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
431
523
  case imageCarousel(ShortKitSDK.ImageCarouselItem)
@@ -610,7 +702,7 @@ extension ShortKitSDK.CarouselOverlay {
610
702
  public func updateActiveImage(index: Swift.Int)
611
703
  }
612
704
  final public class CellContent : Combine.ObservableObject {
613
- @Combine.Published @_projectedValueProperty($item) final public var item: ShortKitSDK.ContentItem? {
705
+ @Combine.Published<ShortKitSDK.ContentItem?> @_projectedValueProperty($item) final public var item: ShortKitSDK.ContentItem? {
614
706
  get
615
707
  @available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
616
708
  set
@@ -626,6 +718,12 @@ final public class CellContent : Combine.ObservableObject {
626
718
  public typealias ObjectWillChangePublisher = Combine.ObservableObjectPublisher
627
719
  @objc deinit
628
720
  }
721
+ public protocol FeedMask : AnyObject {
722
+ var feedRegion: UIKit.UIView { get }
723
+ func attach(player: ShortKitSDK.ShortKitPlayer)
724
+ func configure(with item: ShortKitSDK.ContentItem)
725
+ func activatePlayback()
726
+ }
629
727
  public protocol FeedOverlay : AnyObject {
630
728
  func attach(player: ShortKitSDK.ShortKitPlayer)
631
729
  func configure(with item: ShortKitSDK.ContentItem)
@@ -819,9 +917,11 @@ public enum ShortKitVersion {
819
917
  }
820
918
  final public class ShortKit {
821
919
  final public let player: ShortKitSDK.ShortKitPlayer
920
+ final public let debugPanelEnabled: Swift.Bool
822
921
  weak final public var delegate: (any ShortKitSDK.ShortKitDelegate)?
922
+ weak final public var downloadDelegate: (any ShortKitSDK.ShortKitDownloadDelegate)?
823
923
  final public var loadingViewProvider: (() -> UIKit.UIView)?
824
- public init(apiKey: Swift.String, userId: Swift.String? = nil, adProvider: (any ShortKitSDK.ShortKitAdProvider)? = nil, clientAppName: Swift.String? = nil, clientAppVersion: Swift.String? = nil, customDimensions: [Swift.String : Swift.String]? = nil, loadingViewProvider: (() -> UIKit.UIView)? = nil)
924
+ public init(apiKey: Swift.String, userId: Swift.String? = nil, adProvider: (any ShortKitSDK.ShortKitAdProvider)? = nil, clientAppName: Swift.String? = nil, clientAppVersion: Swift.String? = nil, customDimensions: [Swift.String : Swift.String]? = nil, loadingViewProvider: (() -> UIKit.UIView)? = nil, debugPanelEnabled: Swift.Bool = false)
825
925
  final public func preloadFeed(filter: ShortKitSDK.FeedFilter? = nil, limit: Swift.Int = 10) -> ShortKitSDK.FeedPreload
826
926
  final public func preloadFeed(items: [ShortKitSDK.FeedInput]) -> ShortKitSDK.FeedPreload
827
927
  final public func fetchContent(limit: Swift.Int = 10, filter: ShortKitSDK.FeedFilter? = nil) async throws -> [ShortKitSDK.ContentItem]
@@ -829,6 +929,8 @@ final public class ShortKit {
829
929
  final public func clearUserId()
830
930
  @_Concurrency.MainActor final public func setColdStartQueue(_ items: [ShortKitSDK.FeedInput])
831
931
  final public func clearColdStartCache()
932
+ final public func downloadVideo(_ item: ShortKitSDK.ContentItem, mode: ShortKitSDK.DownloadMode = .nonInterruptive) async throws -> Foundation.URL
933
+ final public func cancelDownload()
832
934
  @objc deinit
833
935
  }
834
936
  public enum PlayerClickAction : Swift.Sendable {
@@ -860,6 +962,7 @@ public struct PlayerConfig {
860
962
  public typealias UIViewControllerType = ShortKitSDK.ShortKitPlayerViewController
861
963
  }
862
964
  @objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class ShortKitPlayerViewController : UIKit.UIViewController {
965
+ @_Concurrency.MainActor @preconcurrency final public var feedMask: ShortKitSDK.FeedMaskMode
863
966
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.PlayerConfig)
864
967
  @_Concurrency.MainActor @preconcurrency @objc override final public func viewDidLoad()
865
968
  @_Concurrency.MainActor @preconcurrency @objc override final public func viewWillDisappear(_ animated: Swift.Bool)
@@ -872,8 +975,10 @@ public struct PlayerConfig {
872
975
  extension ShortKitSDK.ShortKitPlayerViewController : UIKit.UIViewControllerTransitioningDelegate {
873
976
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forPresented presented: UIKit.UIViewController, presenting: UIKit.UIViewController, source: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
874
977
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forDismissed dismissed: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
978
+ @_Concurrency.MainActor @preconcurrency @objc final public func interactionControllerForDismissal(using animator: any UIKit.UIViewControllerAnimatedTransitioning) -> (any UIKit.UIViewControllerInteractiveTransitioning)?
875
979
  }
876
980
  @objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class ShortKitWidgetViewController : UIKit.UIViewController {
981
+ @_Concurrency.MainActor @preconcurrency final public var feedMask: ShortKitSDK.FeedMaskMode
877
982
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.WidgetConfig)
878
983
  @_Concurrency.MainActor @preconcurrency final public func configure(with items: [ShortKitSDK.ContentItem])
879
984
  @_Concurrency.MainActor @preconcurrency @objc override final public func viewDidLoad()
@@ -891,6 +996,7 @@ extension ShortKitSDK.ShortKitWidgetViewController : UIKit.UICollectionViewDeleg
891
996
  extension ShortKitSDK.ShortKitWidgetViewController : UIKit.UIViewControllerTransitioningDelegate {
892
997
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forPresented presented: UIKit.UIViewController, presenting: UIKit.UIViewController, source: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
893
998
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forDismissed dismissed: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
999
+ @_Concurrency.MainActor @preconcurrency @objc final public func interactionControllerForDismissal(using animator: any UIKit.UIViewControllerAnimatedTransitioning) -> (any UIKit.UIViewControllerInteractiveTransitioning)?
894
1000
  }
895
1001
  public struct WidgetConfig {
896
1002
  public var cardCount: Swift.Int
@@ -903,7 +1009,9 @@ public struct WidgetConfig {
903
1009
  public var clickAction: ShortKitSDK.PlayerClickAction
904
1010
  public var cardOverlay: ShortKitSDK.VideoOverlayMode
905
1011
  public var feedConfig: ShortKitSDK.FeedConfig
906
- public init(cardCount: Swift.Int = 3, cardSpacing: CoreFoundation.CGFloat = 8, cornerRadius: CoreFoundation.CGFloat = 12, autoplay: Swift.Bool = true, muteOnStart: Swift.Bool = true, loop: Swift.Bool = true, rotationInterval: Foundation.TimeInterval = 10, clickAction: ShortKitSDK.PlayerClickAction = .feed, cardOverlay: ShortKitSDK.VideoOverlayMode = .none, feedConfig: ShortKitSDK.FeedConfig = FeedConfig())
1012
+ public var filter: ShortKitSDK.FeedFilter?
1013
+ public init(cardCount: Swift.Int = 3, cardSpacing: CoreFoundation.CGFloat = 8, cornerRadius: CoreFoundation.CGFloat = 12, autoplay: Swift.Bool = true, muteOnStart: Swift.Bool = true, loop: Swift.Bool = true, rotationInterval: Foundation.TimeInterval = 10, clickAction: ShortKitSDK.PlayerClickAction = .feed, cardOverlay: ShortKitSDK.VideoOverlayMode = .none, feedConfig: ShortKitSDK.FeedConfig = FeedConfig(), filter: ShortKitSDK.FeedFilter? = nil)
1014
+ public func resolvedFeedConfig() -> ShortKitSDK.FeedConfig
907
1015
  }
908
1016
  extension ShortKitSDK.AdQuartile : Swift.Equatable {}
909
1017
  extension ShortKitSDK.AdQuartile : Swift.Hashable {}
@@ -911,6 +1019,11 @@ extension ShortKitSDK.ScrollAxis : Swift.Hashable {}
911
1019
  extension ShortKitSDK.ScrollAxis : Swift.RawRepresentable {}
912
1020
  extension ShortKitSDK.FeedSource : Swift.Hashable {}
913
1021
  extension ShortKitSDK.FeedSource : Swift.RawRepresentable {}
1022
+ extension ShortKitSDK.SwipeCurve : Swift.Equatable {}
1023
+ extension ShortKitSDK.SwipeCurve : Swift.Hashable {}
1024
+ extension ShortKitSDK.SwipeCurve : Swift.RawRepresentable {}
1025
+ extension ShortKitSDK.DownloadMode : Swift.Equatable {}
1026
+ extension ShortKitSDK.DownloadMode : Swift.Hashable {}
914
1027
  extension ShortKitSDK.ShortKitFeedView : Swift.Sendable {}
915
1028
  extension ShortKitSDK.CaptionSource : Swift.Equatable {}
916
1029
  extension ShortKitSDK.CaptionSource : Swift.Hashable {}
@@ -1,7 +1,7 @@
1
1
  // swift-interface-format-version: 1.0
2
- // swift-compiler-version: Apple Swift version 6.1 effective-5.10 (swiftlang-6.1.0.110.21 clang-1700.0.13.3)
2
+ // swift-compiler-version: Apple Swift version 6.3 effective-5.10 (swiftlang-6.3.0.123.5 clang-2100.0.123.102)
3
3
  // swift-module-flags: -target arm64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -O -module-name ShortKitSDK -package-name swift_sdk
4
- // swift-module-flags-ignorable: -interface-compiler-version 6.1
4
+ // swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3
5
5
  import AVFoundation
6
6
  import Combine
7
7
  import CoreGraphics
@@ -217,6 +217,13 @@ public struct FeedConfig : Swift.Codable {
217
217
  public func encode(to encoder: any Swift.Encoder) throws
218
218
  public init(from decoder: any Swift.Decoder) throws
219
219
  }
220
+ public enum FeedMaskMode {
221
+ case none
222
+ case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.FeedMask)
223
+ }
224
+ extension ShortKitSDK.FeedMaskMode : Swift.Equatable {
225
+ public static func == (lhs: ShortKitSDK.FeedMaskMode, rhs: ShortKitSDK.FeedMaskMode) -> Swift.Bool
226
+ }
220
227
  public enum VideoOverlayMode {
221
228
  case none
222
229
  case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.FeedOverlay)
@@ -275,6 +282,51 @@ extension ShortKitSDK.AdOverlayMode : Swift.Codable {
275
282
  public init(from decoder: any Swift.Decoder) throws
276
283
  public func encode(to encoder: any Swift.Encoder) throws
277
284
  }
285
+ public struct DebugMetrics {
286
+ public var contentId: Swift.String?
287
+ public var feedIndex: Swift.Int
288
+ public var playerState: ShortKitSDK.PlayerState
289
+ public var intentToFrameMs: Swift.Int?
290
+ public var transitionToFrameMs: Swift.Int?
291
+ public var networkMs: Swift.Int?
292
+ public var decodeMs: Swift.Int?
293
+ public var prerollCompleted: Swift.Bool
294
+ public var observedBitrateBps: Swift.Double
295
+ public var indicatedBitrateBps: Swift.Double
296
+ public var bufferAhead: Swift.Double
297
+ public var rebufferCount: Swift.Int
298
+ public var lastRebufferDurationMs: Swift.Int?
299
+ public var currentTime: Swift.Double
300
+ public var duration: Swift.Double
301
+ public var loopCount: Swift.Int
302
+ public var videoWidth: Swift.Int
303
+ public var videoHeight: Swift.Int
304
+ public var codec: Swift.String?
305
+ public var thumbnailVisible: Swift.Bool
306
+ public var thumbsCachedAhead: Swift.Int
307
+ public var metadataAhead: Swift.Int
308
+ public init(contentId: Swift.String? = nil)
309
+ }
310
+ public enum SwipeCurve : Swift.Int, Swift.CaseIterable {
311
+ case quarticOut
312
+ case quinticOut
313
+ case expoOut
314
+ case microBounce
315
+ public var label: Swift.String {
316
+ get
317
+ }
318
+ public func apply(_ t: CoreFoundation.CGFloat) -> CoreFoundation.CGFloat
319
+ public static var selected: ShortKitSDK.SwipeCurve
320
+ public init?(rawValue: Swift.Int)
321
+ public typealias AllCases = [ShortKitSDK.SwipeCurve]
322
+ public typealias RawValue = Swift.Int
323
+ nonisolated public static var allCases: [ShortKitSDK.SwipeCurve] {
324
+ get
325
+ }
326
+ public var rawValue: Swift.Int {
327
+ get
328
+ }
329
+ }
278
330
  public protocol ShortKitDelegate : AnyObject {
279
331
  func shortKit(_ shortKit: ShortKitSDK.ShortKit, didChangeRefreshState state: ShortKitSDK.ShortKitRefreshState)
280
332
  func shortKit(_ shortKit: ShortKitSDK.ShortKit, didTapContent contentId: Swift.String, at index: Swift.Int)
@@ -285,6 +337,34 @@ extension ShortKitSDK.ShortKitDelegate {
285
337
  public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didTapContent contentId: Swift.String, at index: Swift.Int)
286
338
  public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didFetchContentItems items: [ShortKitSDK.ContentItem])
287
339
  }
340
+ public protocol ShortKitDownloadDelegate : AnyObject {
341
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didStartDownload item: ShortKitSDK.ContentItem)
342
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didUpdateDownloadProgress item: ShortKitSDK.ContentItem, progress: Swift.Double)
343
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didCompleteDownload item: ShortKitSDK.ContentItem, fileURL: Foundation.URL)
344
+ func shortKit(_ shortKit: ShortKitSDK.ShortKit, didFailDownload item: ShortKitSDK.ContentItem, error: ShortKitSDK.ShortKitDownloadError)
345
+ }
346
+ extension ShortKitSDK.ShortKitDownloadDelegate {
347
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didStartDownload item: ShortKitSDK.ContentItem)
348
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didUpdateDownloadProgress item: ShortKitSDK.ContentItem, progress: Swift.Double)
349
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didCompleteDownload item: ShortKitSDK.ContentItem, fileURL: Foundation.URL)
350
+ public func shortKit(_ shortKit: ShortKitSDK.ShortKit, didFailDownload item: ShortKitSDK.ContentItem, error: ShortKitSDK.ShortKitDownloadError)
351
+ }
352
+ public enum DownloadMode {
353
+ case nonInterruptive
354
+ case interruptive
355
+ public static func == (a: ShortKitSDK.DownloadMode, b: ShortKitSDK.DownloadMode) -> Swift.Bool
356
+ public func hash(into hasher: inout Swift.Hasher)
357
+ public var hashValue: Swift.Int {
358
+ get
359
+ }
360
+ }
361
+ public enum ShortKitDownloadError : Swift.Error {
362
+ case downloadNotAvailable
363
+ case downloadInProgress
364
+ case networkError(any Swift.Error)
365
+ case httpError(statusCode: Swift.Int)
366
+ case cancelled
367
+ }
288
368
  @_hasMissingDesignatedInitializers final public class FeedPreload : @unchecked Swift.Sendable {
289
369
  @objc deinit
290
370
  }
@@ -301,6 +381,7 @@ extension ShortKitSDK.ShortKitDelegate {
301
381
  public typealias UIViewControllerType = ShortKitSDK.ShortKitFeedViewController
302
382
  }
303
383
  @objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class ShortKitFeedViewController : UIKit.UIViewController {
384
+ @_Concurrency.MainActor @preconcurrency public var debugPanelFactory: ((_ active: Combine.CurrentValueSubject<ShortKitSDK.DebugMetrics, Swift.Never>, _ prev: Combine.CurrentValueSubject<ShortKitSDK.DebugMetrics, Swift.Never>, _ next: Combine.CurrentValueSubject<ShortKitSDK.DebugMetrics, Swift.Never>) -> UIKit.UIView)?
304
385
  @_Concurrency.MainActor @preconcurrency public var onDismiss: (() -> Swift.Void)?
305
386
  @_Concurrency.MainActor @preconcurrency public var onRemainingContentCountChange: ((Swift.Int) -> Swift.Void)?
306
387
  @_Concurrency.MainActor @preconcurrency public var onFeedReady: (() -> Swift.Void)?
@@ -321,6 +402,10 @@ extension ShortKitSDK.ShortKitDelegate {
321
402
  @objc get
322
403
  }
323
404
  @objc deinit
405
+ @_Concurrency.MainActor @preconcurrency @objc override dynamic public var canBecomeFirstResponder: Swift.Bool {
406
+ @objc get
407
+ }
408
+ @_Concurrency.MainActor @preconcurrency @objc override dynamic public func motionEnded(_ motion: UIKit.UIEvent.EventSubtype, with event: UIKit.UIEvent?)
324
409
  }
325
410
  extension ShortKitSDK.ShortKitFeedViewController : UIKit.UICollectionViewDelegate {
326
411
  @_Concurrency.MainActor @preconcurrency @objc dynamic public func collectionView(_ collectionView: UIKit.UICollectionView, willDisplay cell: UIKit.UICollectionViewCell, forItemAt indexPath: Foundation.IndexPath)
@@ -422,10 +507,17 @@ public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sen
422
507
  public let articleUrl: Swift.String?
423
508
  public let commentCount: Swift.Int?
424
509
  public var fallbackUrl: Swift.String?
510
+ public var downloadUrl: Swift.String?
511
+ public init(id: Swift.String, playbackId: Swift.String? = nil, title: Swift.String, description: Swift.String? = nil, duration: Swift.Double, streamingUrl: Swift.String, thumbnailUrl: Swift.String, captionTracks: [ShortKitSDK.CaptionTrack] = [], customMetadata: [Swift.String : ShortKitSDK.JSONValue]? = nil, author: Swift.String? = nil, articleUrl: Swift.String? = nil, commentCount: Swift.Int? = nil, fallbackUrl: Swift.String? = nil, downloadUrl: Swift.String? = nil)
425
512
  public static func == (a: ShortKitSDK.ContentItem, b: ShortKitSDK.ContentItem) -> Swift.Bool
426
513
  public func encode(to encoder: any Swift.Encoder) throws
427
514
  public init(from decoder: any Swift.Decoder) throws
428
515
  }
516
+ extension ShortKitSDK.ContentItem {
517
+ public var isDownloadable: Swift.Bool {
518
+ get
519
+ }
520
+ }
429
521
  public enum FeedInput : Swift.Sendable {
430
522
  case video(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
431
523
  case imageCarousel(ShortKitSDK.ImageCarouselItem)
@@ -610,7 +702,7 @@ extension ShortKitSDK.CarouselOverlay {
610
702
  public func updateActiveImage(index: Swift.Int)
611
703
  }
612
704
  final public class CellContent : Combine.ObservableObject {
613
- @Combine.Published @_projectedValueProperty($item) final public var item: ShortKitSDK.ContentItem? {
705
+ @Combine.Published<ShortKitSDK.ContentItem?> @_projectedValueProperty($item) final public var item: ShortKitSDK.ContentItem? {
614
706
  get
615
707
  @available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
616
708
  set
@@ -626,6 +718,12 @@ final public class CellContent : Combine.ObservableObject {
626
718
  public typealias ObjectWillChangePublisher = Combine.ObservableObjectPublisher
627
719
  @objc deinit
628
720
  }
721
+ public protocol FeedMask : AnyObject {
722
+ var feedRegion: UIKit.UIView { get }
723
+ func attach(player: ShortKitSDK.ShortKitPlayer)
724
+ func configure(with item: ShortKitSDK.ContentItem)
725
+ func activatePlayback()
726
+ }
629
727
  public protocol FeedOverlay : AnyObject {
630
728
  func attach(player: ShortKitSDK.ShortKitPlayer)
631
729
  func configure(with item: ShortKitSDK.ContentItem)
@@ -819,9 +917,11 @@ public enum ShortKitVersion {
819
917
  }
820
918
  final public class ShortKit {
821
919
  final public let player: ShortKitSDK.ShortKitPlayer
920
+ final public let debugPanelEnabled: Swift.Bool
822
921
  weak final public var delegate: (any ShortKitSDK.ShortKitDelegate)?
922
+ weak final public var downloadDelegate: (any ShortKitSDK.ShortKitDownloadDelegate)?
823
923
  final public var loadingViewProvider: (() -> UIKit.UIView)?
824
- public init(apiKey: Swift.String, userId: Swift.String? = nil, adProvider: (any ShortKitSDK.ShortKitAdProvider)? = nil, clientAppName: Swift.String? = nil, clientAppVersion: Swift.String? = nil, customDimensions: [Swift.String : Swift.String]? = nil, loadingViewProvider: (() -> UIKit.UIView)? = nil)
924
+ public init(apiKey: Swift.String, userId: Swift.String? = nil, adProvider: (any ShortKitSDK.ShortKitAdProvider)? = nil, clientAppName: Swift.String? = nil, clientAppVersion: Swift.String? = nil, customDimensions: [Swift.String : Swift.String]? = nil, loadingViewProvider: (() -> UIKit.UIView)? = nil, debugPanelEnabled: Swift.Bool = false)
825
925
  final public func preloadFeed(filter: ShortKitSDK.FeedFilter? = nil, limit: Swift.Int = 10) -> ShortKitSDK.FeedPreload
826
926
  final public func preloadFeed(items: [ShortKitSDK.FeedInput]) -> ShortKitSDK.FeedPreload
827
927
  final public func fetchContent(limit: Swift.Int = 10, filter: ShortKitSDK.FeedFilter? = nil) async throws -> [ShortKitSDK.ContentItem]
@@ -829,6 +929,8 @@ final public class ShortKit {
829
929
  final public func clearUserId()
830
930
  @_Concurrency.MainActor final public func setColdStartQueue(_ items: [ShortKitSDK.FeedInput])
831
931
  final public func clearColdStartCache()
932
+ final public func downloadVideo(_ item: ShortKitSDK.ContentItem, mode: ShortKitSDK.DownloadMode = .nonInterruptive) async throws -> Foundation.URL
933
+ final public func cancelDownload()
832
934
  @objc deinit
833
935
  }
834
936
  public enum PlayerClickAction : Swift.Sendable {
@@ -860,6 +962,7 @@ public struct PlayerConfig {
860
962
  public typealias UIViewControllerType = ShortKitSDK.ShortKitPlayerViewController
861
963
  }
862
964
  @objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class ShortKitPlayerViewController : UIKit.UIViewController {
965
+ @_Concurrency.MainActor @preconcurrency final public var feedMask: ShortKitSDK.FeedMaskMode
863
966
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.PlayerConfig)
864
967
  @_Concurrency.MainActor @preconcurrency @objc override final public func viewDidLoad()
865
968
  @_Concurrency.MainActor @preconcurrency @objc override final public func viewWillDisappear(_ animated: Swift.Bool)
@@ -872,8 +975,10 @@ public struct PlayerConfig {
872
975
  extension ShortKitSDK.ShortKitPlayerViewController : UIKit.UIViewControllerTransitioningDelegate {
873
976
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forPresented presented: UIKit.UIViewController, presenting: UIKit.UIViewController, source: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
874
977
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forDismissed dismissed: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
978
+ @_Concurrency.MainActor @preconcurrency @objc final public func interactionControllerForDismissal(using animator: any UIKit.UIViewControllerAnimatedTransitioning) -> (any UIKit.UIViewControllerInteractiveTransitioning)?
875
979
  }
876
980
  @objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class ShortKitWidgetViewController : UIKit.UIViewController {
981
+ @_Concurrency.MainActor @preconcurrency final public var feedMask: ShortKitSDK.FeedMaskMode
877
982
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.WidgetConfig)
878
983
  @_Concurrency.MainActor @preconcurrency final public func configure(with items: [ShortKitSDK.ContentItem])
879
984
  @_Concurrency.MainActor @preconcurrency @objc override final public func viewDidLoad()
@@ -891,6 +996,7 @@ extension ShortKitSDK.ShortKitWidgetViewController : UIKit.UICollectionViewDeleg
891
996
  extension ShortKitSDK.ShortKitWidgetViewController : UIKit.UIViewControllerTransitioningDelegate {
892
997
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forPresented presented: UIKit.UIViewController, presenting: UIKit.UIViewController, source: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
893
998
  @_Concurrency.MainActor @preconcurrency @objc final public func animationController(forDismissed dismissed: UIKit.UIViewController) -> (any UIKit.UIViewControllerAnimatedTransitioning)?
999
+ @_Concurrency.MainActor @preconcurrency @objc final public func interactionControllerForDismissal(using animator: any UIKit.UIViewControllerAnimatedTransitioning) -> (any UIKit.UIViewControllerInteractiveTransitioning)?
894
1000
  }
895
1001
  public struct WidgetConfig {
896
1002
  public var cardCount: Swift.Int
@@ -903,7 +1009,9 @@ public struct WidgetConfig {
903
1009
  public var clickAction: ShortKitSDK.PlayerClickAction
904
1010
  public var cardOverlay: ShortKitSDK.VideoOverlayMode
905
1011
  public var feedConfig: ShortKitSDK.FeedConfig
906
- public init(cardCount: Swift.Int = 3, cardSpacing: CoreFoundation.CGFloat = 8, cornerRadius: CoreFoundation.CGFloat = 12, autoplay: Swift.Bool = true, muteOnStart: Swift.Bool = true, loop: Swift.Bool = true, rotationInterval: Foundation.TimeInterval = 10, clickAction: ShortKitSDK.PlayerClickAction = .feed, cardOverlay: ShortKitSDK.VideoOverlayMode = .none, feedConfig: ShortKitSDK.FeedConfig = FeedConfig())
1012
+ public var filter: ShortKitSDK.FeedFilter?
1013
+ public init(cardCount: Swift.Int = 3, cardSpacing: CoreFoundation.CGFloat = 8, cornerRadius: CoreFoundation.CGFloat = 12, autoplay: Swift.Bool = true, muteOnStart: Swift.Bool = true, loop: Swift.Bool = true, rotationInterval: Foundation.TimeInterval = 10, clickAction: ShortKitSDK.PlayerClickAction = .feed, cardOverlay: ShortKitSDK.VideoOverlayMode = .none, feedConfig: ShortKitSDK.FeedConfig = FeedConfig(), filter: ShortKitSDK.FeedFilter? = nil)
1014
+ public func resolvedFeedConfig() -> ShortKitSDK.FeedConfig
907
1015
  }
908
1016
  extension ShortKitSDK.AdQuartile : Swift.Equatable {}
909
1017
  extension ShortKitSDK.AdQuartile : Swift.Hashable {}
@@ -911,6 +1019,11 @@ extension ShortKitSDK.ScrollAxis : Swift.Hashable {}
911
1019
  extension ShortKitSDK.ScrollAxis : Swift.RawRepresentable {}
912
1020
  extension ShortKitSDK.FeedSource : Swift.Hashable {}
913
1021
  extension ShortKitSDK.FeedSource : Swift.RawRepresentable {}
1022
+ extension ShortKitSDK.SwipeCurve : Swift.Equatable {}
1023
+ extension ShortKitSDK.SwipeCurve : Swift.Hashable {}
1024
+ extension ShortKitSDK.SwipeCurve : Swift.RawRepresentable {}
1025
+ extension ShortKitSDK.DownloadMode : Swift.Equatable {}
1026
+ extension ShortKitSDK.DownloadMode : Swift.Hashable {}
914
1027
  extension ShortKitSDK.ShortKitFeedView : Swift.Sendable {}
915
1028
  extension ShortKitSDK.CaptionSource : Swift.Equatable {}
916
1029
  extension ShortKitSDK.CaptionSource : Swift.Hashable {}