/**
 * API
 * Audius V1 API
 *
 * The version of the OpenAPI document: 1.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { AccessGate } from './AccessGate';
import type { CreatePlaylistRequestBodyCopyrightLine } from './CreatePlaylistRequestBodyCopyrightLine';
import type { CreatePlaylistRequestBodyProducerCopyrightLine } from './CreatePlaylistRequestBodyProducerCopyrightLine';
import type { DdexResourceContributor } from './DdexResourceContributor';
import type { Genre } from './Genre';
import type { Mood } from './Mood';
import type { PlaylistAddedTimestamp } from './PlaylistAddedTimestamp';
/**
 *
 * @export
 * @interface CreatePlaylistRequestBody
 */
export interface CreatePlaylistRequestBody {
    /**
     * Optional playlist ID (will be generated if not provided)
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    playlistId?: string;
    /**
     * Playlist or album name
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    playlistName: string;
    /**
     * Playlist description
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    description?: string;
    /**
     * Whether the playlist is private
     * @type {boolean}
     * @memberof CreatePlaylistRequestBody
     */
    isPrivate?: boolean;
    /**
     * Whether this is an album
     * @type {boolean}
     * @memberof CreatePlaylistRequestBody
     */
    isAlbum?: boolean;
    /**
     *
     * @type {Genre}
     * @memberof CreatePlaylistRequestBody
     */
    genre?: Genre;
    /**
     *
     * @type {Mood}
     * @memberof CreatePlaylistRequestBody
     */
    mood?: Mood;
    /**
     * Comma-separated tags
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    tags?: string;
    /**
     * License type
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    license?: string;
    /**
     * Universal Product Code (for albums)
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    upc?: string;
    /**
     * Release date
     * @type {Date}
     * @memberof CreatePlaylistRequestBody
     */
    releaseDate?: Date;
    /**
     * CID for the playlist cover art
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    playlistImageSizesMultihash?: string;
    /**
     * Array of tracks in the playlist
     * @type {Array<PlaylistAddedTimestamp>}
     * @memberof CreatePlaylistRequestBody
     */
    playlistContents?: Array<PlaylistAddedTimestamp>;
    /**
     * Whether streaming is restricted behind an access gate
     * @type {boolean}
     * @memberof CreatePlaylistRequestBody
     */
    isStreamGated?: boolean | null;
    /**
     * Whether the playlist/album is a scheduled release
     * @type {boolean}
     * @memberof CreatePlaylistRequestBody
     */
    isScheduledRelease?: boolean | null;
    /**
     *
     * @type {AccessGate}
     * @memberof CreatePlaylistRequestBody
     */
    streamConditions?: AccessGate | null;
    /**
     * DDEX application identifier
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    ddexApp?: string;
    /**
     * DDEX release identifiers
     * @type {{ [key: string]: string; }}
     * @memberof CreatePlaylistRequestBody
     */
    ddexReleaseIds?: {
        [key: string]: string;
    } | null;
    /**
     * DDEX resource contributors / artists
     * @type {Array<DdexResourceContributor>}
     * @memberof CreatePlaylistRequestBody
     */
    artists?: Array<DdexResourceContributor> | null;
    /**
     *
     * @type {CreatePlaylistRequestBodyCopyrightLine}
     * @memberof CreatePlaylistRequestBody
     */
    copyrightLine?: CreatePlaylistRequestBodyCopyrightLine | null;
    /**
     *
     * @type {CreatePlaylistRequestBodyProducerCopyrightLine}
     * @memberof CreatePlaylistRequestBody
     */
    producerCopyrightLine?: CreatePlaylistRequestBodyProducerCopyrightLine | null;
    /**
     * Parental warning type
     * @type {string}
     * @memberof CreatePlaylistRequestBody
     */
    parentalWarningType?: string | null;
    /**
     * Whether the image is autogenerated
     * @type {boolean}
     * @memberof CreatePlaylistRequestBody
     */
    isImageAutogenerated?: boolean | null;
}
/**
 * Check if a given object implements the CreatePlaylistRequestBody interface.
 */
export declare function instanceOfCreatePlaylistRequestBody(value: object): value is CreatePlaylistRequestBody;
export declare function CreatePlaylistRequestBodyFromJSON(json: any): CreatePlaylistRequestBody;
export declare function CreatePlaylistRequestBodyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreatePlaylistRequestBody;
export declare function CreatePlaylistRequestBodyToJSON(value?: CreatePlaylistRequestBody | null): any;
