/**
 * 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 { DdexRightsController } from './DdexRightsController';
import type { FieldVisibility } from './FieldVisibility';
import type { Genre } from './Genre';
import type { Mood } from './Mood';
import type { RemixParentWrite } from './RemixParentWrite';
import type { StemParent } from './StemParent';
/**
 *
 * @export
 * @interface CreateTrackRequestBody
 */
export interface CreateTrackRequestBody {
    /**
     * Optional track ID (will be generated if not provided)
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    trackId?: string;
    /**
     * Track title
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    title: string;
    /**
     *
     * @type {Genre}
     * @memberof CreateTrackRequestBody
     */
    genre: Genre;
    /**
     * Track description
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    description?: string | null;
    /**
     *
     * @type {Mood}
     * @memberof CreateTrackRequestBody
     */
    mood?: Mood | null;
    /**
     * Beats per minute (tempo)
     * @type {number}
     * @memberof CreateTrackRequestBody
     */
    bpm?: number | null;
    /**
     * Musical key of the track
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    musicalKey?: string | null;
    /**
     * Comma-separated tags
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    tags?: string | null;
    /**
     * License type
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    license?: string | null;
    /**
     * International Standard Recording Code
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    isrc?: string | null;
    /**
     * International Standard Musical Work Code
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    iswc?: string | null;
    /**
     * Release date
     * @type {Date}
     * @memberof CreateTrackRequestBody
     */
    releaseDate?: Date;
    /**
     * CID for the track audio file (required)
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    trackCid: string;
    /**
     * CID for the original track file
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    origFileCid?: string;
    /**
     * Original filename of the track
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    origFilename?: string;
    /**
     * CID for the track cover art
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    coverArtSizes?: string;
    /**
     * CID for the track preview
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    previewCid?: string;
    /**
     * Preview start time in seconds
     * @type {number}
     * @memberof CreateTrackRequestBody
     */
    previewStartSeconds?: number;
    /**
     * Track duration in seconds
     * @type {number}
     * @memberof CreateTrackRequestBody
     */
    duration?: number;
    /**
     * Whether the track is downloadable
     * @type {boolean}
     * @memberof CreateTrackRequestBody
     */
    isDownloadable?: boolean;
    /**
     * Whether the track is unlisted
     * @type {boolean}
     * @memberof CreateTrackRequestBody
     */
    isUnlisted?: boolean;
    /**
     * Whether streaming is restricted behind an access gate
     * @type {boolean}
     * @memberof CreateTrackRequestBody
     */
    isStreamGated?: boolean | null;
    /**
     * Wallet addresses that can sign to authorize stream access (programmable distribution). When empty or omitted, the track is public and validator/creator nodes can serve it.
     * @type {Array<string>}
     * @memberof CreateTrackRequestBody
     */
    accessAuthorities?: Array<string> | null;
    /**
     *
     * @type {AccessGate}
     * @memberof CreateTrackRequestBody
     */
    streamConditions?: AccessGate | null;
    /**
     *
     * @type {AccessGate}
     * @memberof CreateTrackRequestBody
     */
    downloadConditions?: AccessGate | null;
    /**
     *
     * @type {FieldVisibility}
     * @memberof CreateTrackRequestBody
     */
    fieldVisibility?: FieldVisibility;
    /**
     * Placement hosts for the track
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    placementHosts?: string;
    /**
     *
     * @type {StemParent}
     * @memberof CreateTrackRequestBody
     */
    stemOf?: StemParent;
    /**
     *
     * @type {RemixParentWrite}
     * @memberof CreateTrackRequestBody
     */
    remixOf?: RemixParentWrite;
    /**
     * DDEX application identifier
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    ddexApp?: string | null;
    /**
     * DDEX release identifiers
     * @type {object}
     * @memberof CreateTrackRequestBody
     */
    ddexReleaseIds?: object | null;
    /**
     * DDEX resource contributors / artists
     * @type {Array<object>}
     * @memberof CreateTrackRequestBody
     */
    artists?: Array<object> | null;
    /**
     * DDEX resource contributors
     * @type {Array<DdexResourceContributor>}
     * @memberof CreateTrackRequestBody
     */
    resourceContributors?: Array<DdexResourceContributor> | null;
    /**
     * DDEX indirect resource contributors
     * @type {Array<DdexResourceContributor>}
     * @memberof CreateTrackRequestBody
     */
    indirectResourceContributors?: Array<DdexResourceContributor> | null;
    /**
     *
     * @type {DdexRightsController}
     * @memberof CreateTrackRequestBody
     */
    rightsController?: DdexRightsController;
    /**
     *
     * @type {CreatePlaylistRequestBodyCopyrightLine}
     * @memberof CreateTrackRequestBody
     */
    copyrightLine?: CreatePlaylistRequestBodyCopyrightLine | null;
    /**
     *
     * @type {CreatePlaylistRequestBodyProducerCopyrightLine}
     * @memberof CreateTrackRequestBody
     */
    producerCopyrightLine?: CreatePlaylistRequestBodyProducerCopyrightLine | null;
    /**
     * Parental warning type
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    parentalWarningType?: string | null;
    /**
     * Original song title for cover tracks
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    coverOriginalSongTitle?: string | null;
    /**
     * Original artist for cover tracks
     * @type {string}
     * @memberof CreateTrackRequestBody
     */
    coverOriginalArtist?: string | null;
    /**
     * Whether the track is owned by the user
     * @type {boolean}
     * @memberof CreateTrackRequestBody
     */
    isOwnedByUser?: boolean;
    /**
     * Territory codes for distribution
     * @type {Array<string>}
     * @memberof CreateTrackRequestBody
     */
    territoryCodes?: Array<string> | null;
    /**
     * Whether AI use is prohibited
     * @type {boolean}
     * @memberof CreateTrackRequestBody
     */
    noAiUse?: boolean;
}
/**
 * Check if a given object implements the CreateTrackRequestBody interface.
 */
export declare function instanceOfCreateTrackRequestBody(value: object): value is CreateTrackRequestBody;
export declare function CreateTrackRequestBodyFromJSON(json: any): CreateTrackRequestBody;
export declare function CreateTrackRequestBodyFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateTrackRequestBody;
export declare function CreateTrackRequestBodyToJSON(value?: CreateTrackRequestBody | null): any;
