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

import Foundation

public struct ProfileInfoSchema: Codable, Equatable {
    /// ArtistProfileInfoSchema
    ///
    /// Schema for artist profile information stored in DynamoDB.
    public var artistProfile: ArtistProfileInfoSchema?
    public var artistProfilesEnabled: Bool?
    public var avatarImageUrl: String?
    public var clips: [GeneratedClipSchema]
    /// BannerSectionSchema
    public var contestBanner: BannerSectionSchema?
    /// PlaylistMetadataSchema
    public var contestSubmissionsPlaylist: PlaylistMetadataSchema?
    public var currentPage: Int
    public var displayName: String?
    public var favoriteSongs: [GeneratedClipSchema]?
    public var handle: String?
    public var hookCreatorLabel: String?
    public var hooks: [VideoHookSchema]?
    public var isFlagged: Bool
    public var isFollowing: Bool
    public var numTotalClips: Int
    public var personas: [PersonaResponseSchema]
    public var playlists: [PlaylistMetadataSchema]
    public var profileDescription: String?
    public var stats: AnyJSON
    public var userCommentsBlocked: Bool?
    public var userId: String
    public var viewerIsBlockedByProfile: Bool
    public var viewerIsBlockingProfile: Bool
    public var viewerIsHidingCreatorClip: Bool
    public var viewerIsHidingCreatorHook: Bool

    public init(artistProfile: ArtistProfileInfoSchema? = nil, artistProfilesEnabled: Bool? = nil, avatarImageUrl: String? = nil, clips: [GeneratedClipSchema], contestBanner: BannerSectionSchema? = nil, contestSubmissionsPlaylist: PlaylistMetadataSchema? = nil, currentPage: Int, displayName: String? = nil, favoriteSongs: [GeneratedClipSchema]? = nil, handle: String? = nil, hookCreatorLabel: String? = nil, hooks: [VideoHookSchema]? = nil, isFlagged: Bool, isFollowing: Bool, numTotalClips: Int, personas: [PersonaResponseSchema], playlists: [PlaylistMetadataSchema], profileDescription: String? = nil, stats: AnyJSON, userCommentsBlocked: Bool? = nil, userId: String, viewerIsBlockedByProfile: Bool, viewerIsBlockingProfile: Bool, viewerIsHidingCreatorClip: Bool? = nil, viewerIsHidingCreatorHook: Bool? = nil) {
        self.artistProfile = artistProfile
        self.artistProfilesEnabled = artistProfilesEnabled
        self.avatarImageUrl = avatarImageUrl
        self.clips = clips
        self.contestBanner = contestBanner
        self.contestSubmissionsPlaylist = contestSubmissionsPlaylist
        self.currentPage = currentPage
        self.displayName = displayName
        self.favoriteSongs = favoriteSongs
        self.handle = handle
        self.hookCreatorLabel = hookCreatorLabel
        self.hooks = hooks
        self.isFlagged = isFlagged
        self.isFollowing = isFollowing
        self.numTotalClips = numTotalClips
        self.personas = personas
        self.playlists = playlists
        self.profileDescription = profileDescription
        self.stats = stats
        self.userCommentsBlocked = userCommentsBlocked
        self.userId = userId
        self.viewerIsBlockedByProfile = viewerIsBlockedByProfile
        self.viewerIsBlockingProfile = viewerIsBlockingProfile
        self.viewerIsHidingCreatorClip = viewerIsHidingCreatorClip ?? false
        self.viewerIsHidingCreatorHook = viewerIsHidingCreatorHook ?? false
    }
}
