// Generated by Create API
// https://github.com/CreateAPI/CreateAPI

import Foundation

public struct FollowingFeedResponse: Codable, Equatable {
    /// FeedTypeEnum
    public var feedType: FeedTypeEnum
    /// ItemTypeEnum
    public var itemType: ItemTypeEnum
    public var items: [Item]?
    public var pageSize: Int?
    public var startIndex: Int?
    public var userHandle: String?

    public struct Item: Codable, Equatable {
        public var generatedClipSchema: GeneratedClipSchema?
        public var playlistSchema: PlaylistSchema?

        public init(generatedClipSchema: GeneratedClipSchema? = nil, playlistSchema: PlaylistSchema? = nil) {
            self.generatedClipSchema = generatedClipSchema
            self.playlistSchema = playlistSchema
        }

        public init(from decoder: Decoder) throws {
            let container = try decoder.singleValueContainer()
            self.generatedClipSchema = try? container.decode(GeneratedClipSchema.self)
            self.playlistSchema = try? container.decode(PlaylistSchema.self)
        }

        public func encode(to encoder: Encoder) throws {
            var container = encoder.singleValueContainer()
            if let value = generatedClipSchema { try container.encode(value) }
            if let value = playlistSchema { try container.encode(value) }
        }
    }

    public init(feedType: FeedTypeEnum, itemType: ItemTypeEnum, items: [Item]? = nil, pageSize: Int? = nil, startIndex: Int? = nil, userHandle: String? = nil) {
        self.feedType = feedType
        self.itemType = itemType
        self.items = items
        self.pageSize = pageSize
        self.startIndex = startIndex
        self.userHandle = userHandle
    }
}
