@shortkitsdk/react-native 0.2.24 → 0.2.25

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 (43) hide show
  1. package/README.md +151 -0
  2. package/android/libs/shortkit-release.aar +0 -0
  3. package/android/src/main/java/com/shortkit/reactnative/ReactOverlayHost.kt +19 -1
  4. package/android/src/main/java/com/shortkit/reactnative/ShortKitModule.kt +43 -0
  5. package/ios/ReactCarouselOverlayHost.swift +51 -3
  6. package/ios/ReactOverlayHost.swift +67 -7
  7. package/ios/ReactVideoCarouselOverlayHost.swift +181 -19
  8. package/ios/SKFabricSurfaceWrapper.mm +7 -1
  9. package/ios/ShortKitBridge.swift +43 -1
  10. package/ios/ShortKitFeedView.swift +20 -0
  11. package/ios/ShortKitFeedViewManager.mm +1 -0
  12. package/ios/ShortKitModule.mm +33 -0
  13. package/ios/ShortKitSDK.xcframework/Info.plist +5 -5
  14. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Info.plist +2 -2
  15. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.abi.json +3590 -382
  16. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +104 -5
  17. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  18. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftinterface +104 -5
  19. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/ShortKitSDK +0 -0
  20. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/_CodeSignature/CodeResources +9 -9
  21. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Info.plist +2 -2
  22. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +3590 -382
  23. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +104 -5
  24. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  25. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +104 -5
  26. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +3590 -382
  27. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +104 -5
  28. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  29. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +104 -5
  30. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/ShortKitSDK +0 -0
  31. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/_CodeSignature/CodeResources +17 -17
  32. package/package.json +1 -1
  33. package/src/ShortKitCarouselOverlaySurface.tsx +38 -10
  34. package/src/ShortKitCommands.ts +4 -0
  35. package/src/ShortKitFeed.tsx +23 -7
  36. package/src/ShortKitOverlaySurface.tsx +59 -23
  37. package/src/ShortKitVideoCarouselOverlaySurface.tsx +51 -5
  38. package/src/index.ts +2 -0
  39. package/src/serialization.ts +37 -1
  40. package/src/specs/NativeShortKitModule.ts +51 -2
  41. package/src/specs/ShortKitFeedViewNativeComponent.ts +8 -0
  42. package/src/types.ts +27 -1
  43. package/src/useShortKitCarousel.ts +80 -0
@@ -162,6 +162,43 @@ final public class SegmentPrefetcher : ShortKitSDK.SegmentPrefetcherProtocol {
162
162
  final public func resume()
163
163
  @objc deinit
164
164
  }
165
+ public struct CarouselCompletionEvent : Swift.Equatable, Swift.Sendable {
166
+ public let contentItem: ShortKitSDK.ContentItem
167
+ public let indexInCarousel: Swift.Int
168
+ public let carouselItem: ShortKitSDK.VideoCarouselItem
169
+ public let wasLast: Swift.Bool
170
+ public let willAutoAdvance: Swift.Bool
171
+ public init(contentItem: ShortKitSDK.ContentItem, indexInCarousel: Swift.Int, carouselItem: ShortKitSDK.VideoCarouselItem, wasLast: Swift.Bool, willAutoAdvance: Swift.Bool)
172
+ public static func == (a: ShortKitSDK.CarouselCompletionEvent, b: ShortKitSDK.CarouselCompletionEvent) -> Swift.Bool
173
+ }
174
+ final public class ShortKitCarousel {
175
+ public init()
176
+ @discardableResult
177
+ final public func next() -> Swift.Bool
178
+ @discardableResult
179
+ final public func previous() -> Swift.Bool
180
+ @discardableResult
181
+ final public func setActiveIndex(_ index: Swift.Int) -> Swift.Bool
182
+ final public var activeIndexValue: Swift.Int? {
183
+ get
184
+ }
185
+ final public var videoCountValue: Swift.Int? {
186
+ get
187
+ }
188
+ final public var activeCarouselItemValue: ShortKitSDK.VideoCarouselItem? {
189
+ get
190
+ }
191
+ final public var activeIndex: Combine.AnyPublisher<Swift.Int?, Swift.Never> {
192
+ get
193
+ }
194
+ final public var activeCarouselChanged: Combine.AnyPublisher<ShortKitSDK.VideoCarouselItem?, Swift.Never> {
195
+ get
196
+ }
197
+ final public var activeVideoCompleted: Combine.AnyPublisher<ShortKitSDK.CarouselCompletionEvent, Swift.Never> {
198
+ get
199
+ }
200
+ @objc deinit
201
+ }
165
202
  public enum FeedHeight : Swift.Codable, Swift.Equatable, Swift.Sendable {
166
203
  case fullscreen
167
204
  case percentage(CoreFoundation.CGFloat)
@@ -206,6 +243,7 @@ public struct FeedConfig : Swift.Codable {
206
243
  public var videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode
207
244
  public var surveyOverlay: ShortKitSDK.SurveyOverlayMode
208
245
  public var adOverlay: ShortKitSDK.AdOverlayMode
246
+ public var liveOverlay: ShortKitSDK.LiveOverlayMode
209
247
  public var muteOnStart: Swift.Bool
210
248
  public var autoplay: Swift.Bool
211
249
  public var feedSource: ShortKitSDK.FeedSource
@@ -213,7 +251,7 @@ public struct FeedConfig : Swift.Codable {
213
251
  public var pullToRefreshEnabled: Swift.Bool
214
252
  public var filter: ShortKitSDK.FeedFilter?
215
253
  public var preload: ShortKitSDK.FeedPreload?
216
- public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
254
+ public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, liveOverlay: ShortKitSDK.LiveOverlayMode = .default, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
217
255
  public func encode(to encoder: any Swift.Encoder) throws
218
256
  public init(from decoder: any Swift.Decoder) throws
219
257
  }
@@ -282,6 +320,21 @@ extension ShortKitSDK.AdOverlayMode : Swift.Codable {
282
320
  public init(from decoder: any Swift.Decoder) throws
283
321
  public func encode(to encoder: any Swift.Encoder) throws
284
322
  }
323
+ public enum LiveOverlayMode {
324
+ case none
325
+ case `default`
326
+ case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.LiveOverlay)
327
+ }
328
+ extension ShortKitSDK.LiveOverlayMode {
329
+ public static func swiftUI<Content>(@SwiftUICore.ViewBuilder content: @escaping @Sendable (ShortKitSDK.ShortKitPlayer) -> Content) -> ShortKitSDK.LiveOverlayMode where Content : SwiftUICore.View
330
+ }
331
+ extension ShortKitSDK.LiveOverlayMode : Swift.Equatable {
332
+ public static func == (lhs: ShortKitSDK.LiveOverlayMode, rhs: ShortKitSDK.LiveOverlayMode) -> Swift.Bool
333
+ }
334
+ extension ShortKitSDK.LiveOverlayMode : Swift.Codable {
335
+ public init(from decoder: any Swift.Decoder) throws
336
+ public func encode(to encoder: any Swift.Encoder) throws
337
+ }
285
338
  public struct DebugMetrics {
286
339
  public var contentId: Swift.String?
287
340
  public var feedIndex: Swift.Int
@@ -385,6 +438,7 @@ public enum ShortKitDownloadError : Swift.Error {
385
438
  @_Concurrency.MainActor @preconcurrency public var onDismiss: (() -> Swift.Void)?
386
439
  @_Concurrency.MainActor @preconcurrency public var onRemainingContentCountChange: ((Swift.Int) -> Swift.Void)?
387
440
  @_Concurrency.MainActor @preconcurrency public var onFeedReady: (() -> Swift.Void)?
441
+ @_Concurrency.MainActor @preconcurrency public var seedThumbnail: UIKit.UIImage?
388
442
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.FeedConfig, startAtItemId: Swift.String? = nil)
389
443
  @_Concurrency.MainActor public func setFeedItems(_ items: [ShortKitSDK.FeedInput])
390
444
  @_Concurrency.MainActor public func appendFeedItems(_ items: [ShortKitSDK.FeedInput])
@@ -427,6 +481,9 @@ extension ShortKitSDK.ShortKitFeedViewController : ShortKitSDK.ShortKitAdDelegat
427
481
  @_Concurrency.MainActor @preconcurrency public func adDidFail(_ ad: ShortKitSDK.PreparedAd, error: ShortKitSDK.AdError)
428
482
  @_Concurrency.MainActor @preconcurrency public func adDidReceiveClick(_ ad: ShortKitSDK.PreparedAd)
429
483
  }
484
+ public enum SeedThumbnailResolver {
485
+ public static func resolveFromMemory(url: Swift.String) -> UIKit.UIImage?
486
+ }
430
487
  public enum ShortKitRefreshState : Swift.Sendable {
431
488
  case idle
432
489
  case pulling(progress: CoreFoundation.CGFloat)
@@ -491,6 +548,16 @@ public struct CaptionTrack : Swift.Codable, Swift.Equatable, Swift.Sendable {
491
548
  public func encode(to encoder: any Swift.Encoder) throws
492
549
  public init(from decoder: any Swift.Decoder) throws
493
550
  }
551
+ public enum LiveStreamStatus : Swift.String, Swift.Codable, Swift.Equatable, Swift.Sendable {
552
+ case idle
553
+ case active
554
+ case ended
555
+ public init?(rawValue: Swift.String)
556
+ public typealias RawValue = Swift.String
557
+ public var rawValue: Swift.String {
558
+ get
559
+ }
560
+ }
494
561
  public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sendable {
495
562
  public let id: Swift.String
496
563
  public var playbackId: Swift.String?
@@ -508,20 +575,35 @@ public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sen
508
575
  public let commentCount: Swift.Int?
509
576
  public var fallbackUrl: Swift.String?
510
577
  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)
578
+ public var isLive: Swift.Bool
579
+ public var liveStreamId: Swift.String?
580
+ public var liveStreamStatus: ShortKitSDK.LiveStreamStatus?
581
+ public var startedAt: Swift.String?
582
+ 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, isLive: Swift.Bool = false, liveStreamId: Swift.String? = nil, liveStreamStatus: ShortKitSDK.LiveStreamStatus? = nil, startedAt: Swift.String? = nil)
583
+ public init(from decoder: any Swift.Decoder) throws
512
584
  public static func == (a: ShortKitSDK.ContentItem, b: ShortKitSDK.ContentItem) -> Swift.Bool
513
585
  public func encode(to encoder: any Swift.Encoder) throws
514
- public init(from decoder: any Swift.Decoder) throws
515
586
  }
516
587
  extension ShortKitSDK.ContentItem {
517
588
  public var isDownloadable: Swift.Bool {
518
589
  get
519
590
  }
520
591
  }
592
+ public enum ContentOrigin : Swift.String, Swift.Codable, Swift.Sendable {
593
+ case iosUpload
594
+ case other
595
+ public init?(rawValue: Swift.String)
596
+ public typealias RawValue = Swift.String
597
+ public var rawValue: Swift.String {
598
+ get
599
+ }
600
+ }
521
601
  public enum FeedInput : Swift.Sendable {
522
- case video(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
602
+ case video(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
603
+ case liveStream(playbackId: Swift.String)
523
604
  case imageCarousel(ShortKitSDK.ImageCarouselItem)
524
605
  case videoCarousel(ShortKitSDK.VideoCarouselInput)
606
+ case videoCarouselItem(ShortKitSDK.VideoCarouselItem)
525
607
  }
526
608
  public enum FeedItem : Swift.Sendable {
527
609
  case content(ShortKitSDK.ContentItem)
@@ -693,8 +775,9 @@ public struct VideoCarouselItem : Swift.Codable, Swift.Equatable, Swift.Sendable
693
775
  }
694
776
  public struct VideoCarouselVideoInput : Swift.Codable, Swift.Equatable, Swift.Sendable {
695
777
  public let playbackId: Swift.String
778
+ public let origin: ShortKitSDK.ContentOrigin
696
779
  public let fallbackUrl: Swift.String?
697
- public init(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
780
+ public init(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
698
781
  public static func == (a: ShortKitSDK.VideoCarouselVideoInput, b: ShortKitSDK.VideoCarouselVideoInput) -> Swift.Bool
699
782
  public func encode(to encoder: any Swift.Encoder) throws
700
783
  public init(from decoder: any Swift.Decoder) throws
@@ -752,6 +835,16 @@ public protocol FeedOverlay : AnyObject {
752
835
  func configure(with item: ShortKitSDK.ContentItem)
753
836
  func activatePlayback()
754
837
  }
838
+ public protocol LiveOverlay : AnyObject {
839
+ func attach(player: ShortKitSDK.ShortKitPlayer)
840
+ func configure(with item: ShortKitSDK.ContentItem)
841
+ func activate()
842
+ func deactivate()
843
+ func showEnded()
844
+ }
845
+ extension ShortKitSDK.LiveOverlay {
846
+ public func showEnded()
847
+ }
755
848
  public protocol SurveyOverlay : AnyObject {
756
849
  var onSurveyResponse: ((Swift.String, ShortKitSDK.SurveyOption) -> Swift.Void)? { get set }
757
850
  var onAutoAdvance: (() -> Swift.Void)? { get set }
@@ -940,6 +1033,7 @@ public enum ShortKitVersion {
940
1033
  }
941
1034
  final public class ShortKit {
942
1035
  final public let player: ShortKitSDK.ShortKitPlayer
1036
+ final public let carousel: ShortKitSDK.ShortKitCarousel
943
1037
  final public let debugPanelEnabled: Swift.Bool
944
1038
  weak final public var delegate: (any ShortKitSDK.ShortKitDelegate)?
945
1039
  weak final public var downloadDelegate: (any ShortKitSDK.ShortKitDownloadDelegate)?
@@ -1051,6 +1145,11 @@ extension ShortKitSDK.ShortKitFeedView : Swift.Sendable {}
1051
1145
  extension ShortKitSDK.CaptionSource : Swift.Equatable {}
1052
1146
  extension ShortKitSDK.CaptionSource : Swift.Hashable {}
1053
1147
  extension ShortKitSDK.CaptionSource : Swift.RawRepresentable {}
1148
+ extension ShortKitSDK.LiveStreamStatus : Swift.Hashable {}
1149
+ extension ShortKitSDK.LiveStreamStatus : Swift.RawRepresentable {}
1150
+ extension ShortKitSDK.ContentOrigin : Swift.Equatable {}
1151
+ extension ShortKitSDK.ContentOrigin : Swift.Hashable {}
1152
+ extension ShortKitSDK.ContentOrigin : Swift.RawRepresentable {}
1054
1153
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Equatable {}
1055
1154
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Hashable {}
1056
1155
  extension ShortKitSDK.FeedTransitionEvent.Direction : Swift.Equatable {}
@@ -162,6 +162,43 @@ final public class SegmentPrefetcher : ShortKitSDK.SegmentPrefetcherProtocol {
162
162
  final public func resume()
163
163
  @objc deinit
164
164
  }
165
+ public struct CarouselCompletionEvent : Swift.Equatable, Swift.Sendable {
166
+ public let contentItem: ShortKitSDK.ContentItem
167
+ public let indexInCarousel: Swift.Int
168
+ public let carouselItem: ShortKitSDK.VideoCarouselItem
169
+ public let wasLast: Swift.Bool
170
+ public let willAutoAdvance: Swift.Bool
171
+ public init(contentItem: ShortKitSDK.ContentItem, indexInCarousel: Swift.Int, carouselItem: ShortKitSDK.VideoCarouselItem, wasLast: Swift.Bool, willAutoAdvance: Swift.Bool)
172
+ public static func == (a: ShortKitSDK.CarouselCompletionEvent, b: ShortKitSDK.CarouselCompletionEvent) -> Swift.Bool
173
+ }
174
+ final public class ShortKitCarousel {
175
+ public init()
176
+ @discardableResult
177
+ final public func next() -> Swift.Bool
178
+ @discardableResult
179
+ final public func previous() -> Swift.Bool
180
+ @discardableResult
181
+ final public func setActiveIndex(_ index: Swift.Int) -> Swift.Bool
182
+ final public var activeIndexValue: Swift.Int? {
183
+ get
184
+ }
185
+ final public var videoCountValue: Swift.Int? {
186
+ get
187
+ }
188
+ final public var activeCarouselItemValue: ShortKitSDK.VideoCarouselItem? {
189
+ get
190
+ }
191
+ final public var activeIndex: Combine.AnyPublisher<Swift.Int?, Swift.Never> {
192
+ get
193
+ }
194
+ final public var activeCarouselChanged: Combine.AnyPublisher<ShortKitSDK.VideoCarouselItem?, Swift.Never> {
195
+ get
196
+ }
197
+ final public var activeVideoCompleted: Combine.AnyPublisher<ShortKitSDK.CarouselCompletionEvent, Swift.Never> {
198
+ get
199
+ }
200
+ @objc deinit
201
+ }
165
202
  public enum FeedHeight : Swift.Codable, Swift.Equatable, Swift.Sendable {
166
203
  case fullscreen
167
204
  case percentage(CoreFoundation.CGFloat)
@@ -206,6 +243,7 @@ public struct FeedConfig : Swift.Codable {
206
243
  public var videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode
207
244
  public var surveyOverlay: ShortKitSDK.SurveyOverlayMode
208
245
  public var adOverlay: ShortKitSDK.AdOverlayMode
246
+ public var liveOverlay: ShortKitSDK.LiveOverlayMode
209
247
  public var muteOnStart: Swift.Bool
210
248
  public var autoplay: Swift.Bool
211
249
  public var feedSource: ShortKitSDK.FeedSource
@@ -213,7 +251,7 @@ public struct FeedConfig : Swift.Codable {
213
251
  public var pullToRefreshEnabled: Swift.Bool
214
252
  public var filter: ShortKitSDK.FeedFilter?
215
253
  public var preload: ShortKitSDK.FeedPreload?
216
- public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
254
+ public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, liveOverlay: ShortKitSDK.LiveOverlayMode = .default, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
217
255
  public func encode(to encoder: any Swift.Encoder) throws
218
256
  public init(from decoder: any Swift.Decoder) throws
219
257
  }
@@ -282,6 +320,21 @@ extension ShortKitSDK.AdOverlayMode : Swift.Codable {
282
320
  public init(from decoder: any Swift.Decoder) throws
283
321
  public func encode(to encoder: any Swift.Encoder) throws
284
322
  }
323
+ public enum LiveOverlayMode {
324
+ case none
325
+ case `default`
326
+ case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.LiveOverlay)
327
+ }
328
+ extension ShortKitSDK.LiveOverlayMode {
329
+ public static func swiftUI<Content>(@SwiftUICore.ViewBuilder content: @escaping @Sendable (ShortKitSDK.ShortKitPlayer) -> Content) -> ShortKitSDK.LiveOverlayMode where Content : SwiftUICore.View
330
+ }
331
+ extension ShortKitSDK.LiveOverlayMode : Swift.Equatable {
332
+ public static func == (lhs: ShortKitSDK.LiveOverlayMode, rhs: ShortKitSDK.LiveOverlayMode) -> Swift.Bool
333
+ }
334
+ extension ShortKitSDK.LiveOverlayMode : Swift.Codable {
335
+ public init(from decoder: any Swift.Decoder) throws
336
+ public func encode(to encoder: any Swift.Encoder) throws
337
+ }
285
338
  public struct DebugMetrics {
286
339
  public var contentId: Swift.String?
287
340
  public var feedIndex: Swift.Int
@@ -385,6 +438,7 @@ public enum ShortKitDownloadError : Swift.Error {
385
438
  @_Concurrency.MainActor @preconcurrency public var onDismiss: (() -> Swift.Void)?
386
439
  @_Concurrency.MainActor @preconcurrency public var onRemainingContentCountChange: ((Swift.Int) -> Swift.Void)?
387
440
  @_Concurrency.MainActor @preconcurrency public var onFeedReady: (() -> Swift.Void)?
441
+ @_Concurrency.MainActor @preconcurrency public var seedThumbnail: UIKit.UIImage?
388
442
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.FeedConfig, startAtItemId: Swift.String? = nil)
389
443
  @_Concurrency.MainActor public func setFeedItems(_ items: [ShortKitSDK.FeedInput])
390
444
  @_Concurrency.MainActor public func appendFeedItems(_ items: [ShortKitSDK.FeedInput])
@@ -427,6 +481,9 @@ extension ShortKitSDK.ShortKitFeedViewController : ShortKitSDK.ShortKitAdDelegat
427
481
  @_Concurrency.MainActor @preconcurrency public func adDidFail(_ ad: ShortKitSDK.PreparedAd, error: ShortKitSDK.AdError)
428
482
  @_Concurrency.MainActor @preconcurrency public func adDidReceiveClick(_ ad: ShortKitSDK.PreparedAd)
429
483
  }
484
+ public enum SeedThumbnailResolver {
485
+ public static func resolveFromMemory(url: Swift.String) -> UIKit.UIImage?
486
+ }
430
487
  public enum ShortKitRefreshState : Swift.Sendable {
431
488
  case idle
432
489
  case pulling(progress: CoreFoundation.CGFloat)
@@ -491,6 +548,16 @@ public struct CaptionTrack : Swift.Codable, Swift.Equatable, Swift.Sendable {
491
548
  public func encode(to encoder: any Swift.Encoder) throws
492
549
  public init(from decoder: any Swift.Decoder) throws
493
550
  }
551
+ public enum LiveStreamStatus : Swift.String, Swift.Codable, Swift.Equatable, Swift.Sendable {
552
+ case idle
553
+ case active
554
+ case ended
555
+ public init?(rawValue: Swift.String)
556
+ public typealias RawValue = Swift.String
557
+ public var rawValue: Swift.String {
558
+ get
559
+ }
560
+ }
494
561
  public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sendable {
495
562
  public let id: Swift.String
496
563
  public var playbackId: Swift.String?
@@ -508,20 +575,35 @@ public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sen
508
575
  public let commentCount: Swift.Int?
509
576
  public var fallbackUrl: Swift.String?
510
577
  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)
578
+ public var isLive: Swift.Bool
579
+ public var liveStreamId: Swift.String?
580
+ public var liveStreamStatus: ShortKitSDK.LiveStreamStatus?
581
+ public var startedAt: Swift.String?
582
+ 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, isLive: Swift.Bool = false, liveStreamId: Swift.String? = nil, liveStreamStatus: ShortKitSDK.LiveStreamStatus? = nil, startedAt: Swift.String? = nil)
583
+ public init(from decoder: any Swift.Decoder) throws
512
584
  public static func == (a: ShortKitSDK.ContentItem, b: ShortKitSDK.ContentItem) -> Swift.Bool
513
585
  public func encode(to encoder: any Swift.Encoder) throws
514
- public init(from decoder: any Swift.Decoder) throws
515
586
  }
516
587
  extension ShortKitSDK.ContentItem {
517
588
  public var isDownloadable: Swift.Bool {
518
589
  get
519
590
  }
520
591
  }
592
+ public enum ContentOrigin : Swift.String, Swift.Codable, Swift.Sendable {
593
+ case iosUpload
594
+ case other
595
+ public init?(rawValue: Swift.String)
596
+ public typealias RawValue = Swift.String
597
+ public var rawValue: Swift.String {
598
+ get
599
+ }
600
+ }
521
601
  public enum FeedInput : Swift.Sendable {
522
- case video(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
602
+ case video(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
603
+ case liveStream(playbackId: Swift.String)
523
604
  case imageCarousel(ShortKitSDK.ImageCarouselItem)
524
605
  case videoCarousel(ShortKitSDK.VideoCarouselInput)
606
+ case videoCarouselItem(ShortKitSDK.VideoCarouselItem)
525
607
  }
526
608
  public enum FeedItem : Swift.Sendable {
527
609
  case content(ShortKitSDK.ContentItem)
@@ -693,8 +775,9 @@ public struct VideoCarouselItem : Swift.Codable, Swift.Equatable, Swift.Sendable
693
775
  }
694
776
  public struct VideoCarouselVideoInput : Swift.Codable, Swift.Equatable, Swift.Sendable {
695
777
  public let playbackId: Swift.String
778
+ public let origin: ShortKitSDK.ContentOrigin
696
779
  public let fallbackUrl: Swift.String?
697
- public init(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
780
+ public init(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
698
781
  public static func == (a: ShortKitSDK.VideoCarouselVideoInput, b: ShortKitSDK.VideoCarouselVideoInput) -> Swift.Bool
699
782
  public func encode(to encoder: any Swift.Encoder) throws
700
783
  public init(from decoder: any Swift.Decoder) throws
@@ -752,6 +835,16 @@ public protocol FeedOverlay : AnyObject {
752
835
  func configure(with item: ShortKitSDK.ContentItem)
753
836
  func activatePlayback()
754
837
  }
838
+ public protocol LiveOverlay : AnyObject {
839
+ func attach(player: ShortKitSDK.ShortKitPlayer)
840
+ func configure(with item: ShortKitSDK.ContentItem)
841
+ func activate()
842
+ func deactivate()
843
+ func showEnded()
844
+ }
845
+ extension ShortKitSDK.LiveOverlay {
846
+ public func showEnded()
847
+ }
755
848
  public protocol SurveyOverlay : AnyObject {
756
849
  var onSurveyResponse: ((Swift.String, ShortKitSDK.SurveyOption) -> Swift.Void)? { get set }
757
850
  var onAutoAdvance: (() -> Swift.Void)? { get set }
@@ -940,6 +1033,7 @@ public enum ShortKitVersion {
940
1033
  }
941
1034
  final public class ShortKit {
942
1035
  final public let player: ShortKitSDK.ShortKitPlayer
1036
+ final public let carousel: ShortKitSDK.ShortKitCarousel
943
1037
  final public let debugPanelEnabled: Swift.Bool
944
1038
  weak final public var delegate: (any ShortKitSDK.ShortKitDelegate)?
945
1039
  weak final public var downloadDelegate: (any ShortKitSDK.ShortKitDownloadDelegate)?
@@ -1051,6 +1145,11 @@ extension ShortKitSDK.ShortKitFeedView : Swift.Sendable {}
1051
1145
  extension ShortKitSDK.CaptionSource : Swift.Equatable {}
1052
1146
  extension ShortKitSDK.CaptionSource : Swift.Hashable {}
1053
1147
  extension ShortKitSDK.CaptionSource : Swift.RawRepresentable {}
1148
+ extension ShortKitSDK.LiveStreamStatus : Swift.Hashable {}
1149
+ extension ShortKitSDK.LiveStreamStatus : Swift.RawRepresentable {}
1150
+ extension ShortKitSDK.ContentOrigin : Swift.Equatable {}
1151
+ extension ShortKitSDK.ContentOrigin : Swift.Hashable {}
1152
+ extension ShortKitSDK.ContentOrigin : Swift.RawRepresentable {}
1054
1153
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Equatable {}
1055
1154
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Hashable {}
1056
1155
  extension ShortKitSDK.FeedTransitionEvent.Direction : Swift.Equatable {}