import type { UploadResponse } from '../../services/Storage/types';
import { BaseAPI } from '../generated/default';
import type { PlaylistTrackMetadata } from '../playlists/types';
export declare class TrackUploadHelper extends BaseAPI {
    generateId(type: 'track' | 'playlist'): Promise<number>;
    transformTrackUploadMetadata<TrackMetadata extends Pick<PlaylistTrackMetadata, 'isStreamGated' | 'streamConditions' | 'isUnlisted' | 'fieldVisibility'>>(inputMetadata: TrackMetadata, userId: number): TrackMetadata & {
        ownerId: number;
    };
    populateTrackMetadataWithUploadResponse(trackMetadata: PlaylistTrackMetadata, audioResponse: UploadResponse, coverArtResponse?: UploadResponse): {
        trackSegments: never[];
        trackCid: string | undefined;
        previewCid: string | undefined;
        origFileCid: string;
        origFilename: string | undefined;
        audioUploadId: string;
        coverArtSizes: string | undefined;
        duration: number;
        bpm: string | number | null | undefined;
        musicalKey: string | null | undefined;
        audioAnalysisErrorCount: number;
        title: string;
        description?: string | undefined;
        trackId?: number | undefined;
        genre?: import("../..").Genre | null | undefined;
        aiAttributionUserId?: number | undefined;
        fieldVisibility?: {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        } | undefined;
        mood?: import("../..").Mood | null | undefined;
        tags?: string | undefined;
        isrc?: string | null | undefined;
        isUnlisted?: boolean | undefined;
        iswc?: string | null | undefined;
        license?: string | null | undefined;
        isStreamGated?: boolean | undefined;
        streamConditions?: {
            nftCollection?: {
                name: string;
                chain: "eth";
                address: string;
                standard: "ERC721" | "ERC1155";
                slug: string;
                imageUrl?: string | undefined;
                externalLink?: string | null | undefined;
            } | {
                name: string;
                chain: "sol";
                address: string;
                imageUrl?: string | undefined;
                externalLink?: string | null | undefined;
            } | undefined;
        } | {
            followUserId: number;
        } | {
            tipUserId: number;
        } | {
            usdcPurchase: {
                price: number;
                splits?: any;
            };
        } | null | undefined;
        isDownloadGated?: boolean | undefined;
        downloadConditions?: {
            nftCollection?: {
                name: string;
                chain: "eth";
                address: string;
                standard: "ERC721" | "ERC1155";
                slug: string;
                imageUrl?: string | undefined;
                externalLink?: string | null | undefined;
            } | {
                name: string;
                chain: "sol";
                address: string;
                imageUrl?: string | undefined;
                externalLink?: string | null | undefined;
            } | undefined;
        } | {
            followUserId: number;
        } | {
            tipUserId: number;
        } | {
            usdcPurchase: {
                price: number;
                splits?: any;
            };
        } | null | undefined;
        releaseDate?: Date | undefined;
        remixOf?: {
            tracks: {
                parentTrackId: number;
            }[];
        } | undefined;
        stemOf?: {
            parentTrackId: number;
            category: import("../..").StemCategory;
        } | undefined;
        previewStartSeconds?: number | undefined;
        placementHosts?: string | undefined;
        isDownloadable?: boolean | undefined;
        isOriginalAvailable?: boolean | undefined;
        ddexReleaseIds?: Record<string, string> | null | undefined;
        ddexApp?: string | undefined;
        artists?: {
            name: string;
            roles: string[];
            sequence_number?: number | undefined;
        }[] | null | undefined;
        resourceContributors?: {
            name: string;
            roles: string[];
            sequence_number?: number | undefined;
        }[] | null | undefined;
        indirectResourceContributors?: {
            name: string;
            roles: string[];
            sequence_number?: number | undefined;
        }[] | null | undefined;
        rightsController?: {
            name: string;
            roles: string[];
            rights_share_unknown?: string | undefined;
        } | null | undefined;
        copyrightLine?: {
            year: string;
            text: string;
        } | null | undefined;
        producerCopyrightLine?: {
            year: string;
            text: string;
        } | null | undefined;
        parentalWarningType?: string | null | undefined;
        isCustomBpm?: boolean | undefined;
        isCustomMusicalKey?: boolean | undefined;
        commentsDisabled?: boolean | undefined;
        isScheduledRelease?: boolean | undefined;
    };
    extractMediorumUploadOptions(metadata: PlaylistTrackMetadata): {
        [key: string]: string;
    };
}
