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 | undefined;
        origFilename: string | undefined;
        audioUploadId: string;
        download: {
            cid: string | undefined;
            isDownloadable: boolean;
            requiresFollow: boolean;
        } | null | undefined;
        coverArtSizes: string;
        duration: number;
        title: string;
        aiAttributionUserId?: number | undefined;
        description?: string | undefined;
        isDownloadable?: string | 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;
        genre?: import("../..").Genre | null | undefined;
        isrc?: string | null | undefined;
        isUnlisted?: boolean | undefined;
        iswc?: string | null | undefined;
        license?: string | null | undefined;
        isStreamGated?: boolean | undefined;
        streamConditions?: {
            nftCollection?: {
                address: string;
                name: string;
                chain: "eth";
                standard: "ERC721" | "ERC1155";
                slug: string;
                imageUrl?: string | undefined;
                externalLink?: string | undefined;
            } | {
                address: string;
                name: string;
                chain: "sol";
                imageUrl?: string | undefined;
                externalLink?: string | undefined;
            } | undefined;
        } | {
            followUserId: number;
        } | {
            tipUserId: number;
        } | {
            usdcPurchase: {
                price: number;
                splits?: any;
            };
        } | null | undefined;
        isDownloadGated?: boolean | undefined;
        downloadConditions?: {
            nftCollection?: {
                address: string;
                name: string;
                chain: "eth";
                standard: "ERC721" | "ERC1155";
                slug: string;
                imageUrl?: string | undefined;
                externalLink?: string | undefined;
            } | {
                address: string;
                name: string;
                chain: "sol";
                imageUrl?: string | undefined;
                externalLink?: string | undefined;
            } | undefined;
        } | {
            followUserId: number;
        } | {
            tipUserId: number;
        } | {
            usdcPurchase: {
                price: number;
                splits?: any;
            };
        } | null | undefined;
        releaseDate?: Date | undefined;
        remixOf?: {
            tracks: {
                parentTrackId: number;
            }[];
        } | undefined;
        previewStartSeconds?: number | undefined;
        isOriginalAvailable?: string | undefined;
    };
}
