/**
 * 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 { Access } from './Access';
import type { AccessGate } from './AccessGate';
import type { AlbumBacklink } from './AlbumBacklink';
import type { CoverArt } from './CoverArt';
import type { DdexCopyright } from './DdexCopyright';
import type { DdexResourceContributor } from './DdexResourceContributor';
import type { DdexRightsController } from './DdexRightsController';
import type { Favorite } from './Favorite';
import type { FieldVisibility } from './FieldVisibility';
import type { RemixParent } from './RemixParent';
import type { Repost } from './Repost';
import type { StemParent } from './StemParent';
import type { TrackArtwork } from './TrackArtwork';
import type { TrackSegment } from './TrackSegment';
import type { UrlWithMirrors } from './UrlWithMirrors';
import type { User } from './User';
/**
 *
 * @export
 * @interface Track
 */
export interface Track {
    /**
     *
     * @type {TrackArtwork}
     * @memberof Track
     */
    artwork: TrackArtwork;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    description?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    genre: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    id: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    trackCid?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    previewCid?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    origFileCid?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    origFilename?: string;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isOriginalAvailable: boolean;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    mood?: string;
    /**
     *
     * @type {Date}
     * @memberof Track
     */
    releaseDate?: Date;
    /**
     *
     * @type {RemixParent}
     * @memberof Track
     */
    remixOf: RemixParent;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    repostCount: number;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    favoriteCount: number;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    commentCount: number;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    tags?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    title: string;
    /**
     *
     * @type {User}
     * @memberof Track
     */
    user: User;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    duration: number;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isDownloadable: boolean;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    playCount: number;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    permalink: string;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isStreamable?: boolean;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    ddexApp?: string;
    /**
     *
     * @type {Array<number>}
     * @memberof Track
     */
    playlistsContainingTrack?: Array<number>;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    pinnedCommentId?: number;
    /**
     *
     * @type {AlbumBacklink}
     * @memberof Track
     */
    albumBacklink?: AlbumBacklink;
    /**
     * Describes what access the given user has
     * @type {Access}
     * @memberof Track
     */
    access: Access;
    /**
     * The blocknumber this track was last updated
     * @type {number}
     * @memberof Track
     */
    blocknumber: number;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    createDate?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    coverArtSizes: string;
    /**
     *
     * @type {CoverArt}
     * @memberof Track
     */
    coverArtCids?: CoverArt;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    createdAt: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    creditsSplits?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    isrc?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    license?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    iswc?: string;
    /**
     *
     * @type {FieldVisibility}
     * @memberof Track
     */
    fieldVisibility: FieldVisibility;
    /**
     *
     * @type {Array<Repost>}
     * @memberof Track
     */
    followeeReposts: Array<Repost>;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    hasCurrentUserReposted: boolean;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isScheduledRelease: boolean;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isUnlisted: boolean;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    hasCurrentUserSaved: boolean;
    /**
     *
     * @type {Array<Favorite>}
     * @memberof Track
     */
    followeeFavorites: Array<Favorite>;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    routeId: string;
    /**
     *
     * @type {StemParent}
     * @memberof Track
     */
    stemOf?: StemParent;
    /**
     *
     * @type {Array<TrackSegment>}
     * @memberof Track
     */
    trackSegments: Array<TrackSegment>;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    updatedAt: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    userId: string;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isDelete: boolean;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    coverArt?: string;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isAvailable: boolean;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    aiAttributionUserId?: number;
    /**
     *
     * @type {Array<string>}
     * @memberof Track
     */
    allowedApiKeys?: Array<string>;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    audioUploadId?: string;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    previewStartSeconds?: number;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    bpm?: number;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isCustomBpm?: boolean;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    musicalKey?: string;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    isCustomMusicalKey?: boolean;
    /**
     *
     * @type {number}
     * @memberof Track
     */
    audioAnalysisErrorCount?: number;
    /**
     *
     * @type {boolean}
     * @memberof Track
     */
    commentsDisabled?: boolean;
    /**
     *
     * @type {object}
     * @memberof Track
     */
    ddexReleaseIds?: object;
    /**
     *
     * @type {Array<object>}
     * @memberof Track
     */
    artists?: Array<object>;
    /**
     *
     * @type {Array<DdexResourceContributor>}
     * @memberof Track
     */
    resourceContributors?: Array<DdexResourceContributor> | null;
    /**
     *
     * @type {Array<DdexResourceContributor>}
     * @memberof Track
     */
    indirectResourceContributors?: Array<DdexResourceContributor> | null;
    /**
     *
     * @type {DdexRightsController}
     * @memberof Track
     */
    rightsController?: DdexRightsController;
    /**
     *
     * @type {DdexCopyright}
     * @memberof Track
     */
    copyrightLine?: DdexCopyright | null;
    /**
     *
     * @type {DdexCopyright}
     * @memberof Track
     */
    producerCopyrightLine?: DdexCopyright | null;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    parentalWarningType?: string | null;
    /**
     * Whether or not the owner has restricted streaming behind an access gate
     * @type {boolean}
     * @memberof Track
     */
    isStreamGated: boolean;
    /**
     * How to unlock stream access to the track
     * @type {AccessGate}
     * @memberof Track
     */
    streamConditions?: AccessGate;
    /**
     * Whether or not the owner has restricted downloading behind an access gate
     * @type {boolean}
     * @memberof Track
     */
    isDownloadGated: boolean;
    /**
     * How to unlock the track download
     * @type {AccessGate}
     * @memberof Track
     */
    downloadConditions?: AccessGate;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    coverOriginalSongTitle?: string;
    /**
     *
     * @type {string}
     * @memberof Track
     */
    coverOriginalArtist?: string;
    /**
     * Indicates whether the track is owned by the user for MRI sake
     * @type {boolean}
     * @memberof Track
     */
    isOwnedByUser: boolean;
    /**
     *
     * @type {UrlWithMirrors}
     * @memberof Track
     */
    stream: UrlWithMirrors;
    /**
     *
     * @type {UrlWithMirrors}
     * @memberof Track
     */
    download: UrlWithMirrors;
    /**
     *
     * @type {UrlWithMirrors}
     * @memberof Track
     */
    preview: UrlWithMirrors;
}
/**
 * Check if a given object implements the Track interface.
 */
export declare function instanceOfTrack(value: object): value is Track;
export declare function TrackFromJSON(json: any): Track;
export declare function TrackFromJSONTyped(json: any, ignoreDiscriminator: boolean): Track;
export declare function TrackToJSON(value?: Track | null): any;
