/// <reference types="node" />
import { z } from 'zod';
import { Genre } from '../../types/Genre';
import { Mood } from '../../types/Mood';
export declare const CreatePlaylistSchema: z.ZodObject<{
    coverArtFile: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodObject<{
        buffer: z.ZodType<Buffer, z.ZodTypeDef, Buffer>;
        name: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        buffer: Buffer;
        name?: string | undefined;
    }, {
        buffer: Buffer;
        name?: string | undefined;
    }>, z.ZodType<File, z.ZodTypeDef, File>]>, File | {
        buffer: Buffer;
        name?: string | undefined;
    }, File | {
        buffer: Buffer;
        name?: string | undefined;
    }>>;
    metadata: z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        playlistName: z.ZodString;
        isPrivate: z.ZodOptional<z.ZodBoolean>;
    }, "strict", z.ZodTypeAny, {
        playlistName: string;
        description?: string | undefined;
        isPrivate?: boolean | undefined;
    }, {
        playlistName: string;
        description?: string | undefined;
        isPrivate?: boolean | undefined;
    }>;
    onProgress: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodNumber], z.ZodUnknown>, z.ZodUnknown>>;
    trackIds: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, number, string>, "many">>;
    userId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    metadata: {
        playlistName: string;
        description?: string | undefined;
        isPrivate?: boolean | undefined;
    };
    coverArtFile?: File | {
        buffer: Buffer;
        name?: string | undefined;
    } | undefined;
    onProgress?: ((args_0: number, ...args_1: unknown[]) => unknown) | undefined;
    trackIds?: number[] | undefined;
}, {
    userId: string;
    metadata: {
        playlistName: string;
        description?: string | undefined;
        isPrivate?: boolean | undefined;
    };
    coverArtFile?: File | {
        buffer: Buffer;
        name?: string | undefined;
    } | undefined;
    onProgress?: ((args_0: number, ...args_1: unknown[]) => unknown) | undefined;
    trackIds?: string[] | undefined;
}>;
export type CreatePlaylistRequest = z.input<typeof CreatePlaylistSchema>;
export declare const createUpdatePlaylistMetadataSchema: () => z.ZodObject<{
    description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    mood: z.ZodOptional<z.ZodOptional<z.ZodEnum<[Mood, ...Mood[]]>>>;
    tags: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    genre: z.ZodOptional<z.ZodEnum<[Genre, ...Genre[]]>>;
    license: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    releaseDate: z.ZodOptional<z.ZodOptional<z.ZodDate>>;
    playlistName: z.ZodOptional<z.ZodString>;
    upc: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    isPrivate: z.ZodOptional<z.ZodBoolean>;
    playlistContents: z.ZodOptional<z.ZodArray<z.ZodObject<{
        timestamp: z.ZodNumber;
        metadataTimestamp: z.ZodOptional<z.ZodNumber>;
        trackId: z.ZodEffects<z.ZodString, number, string>;
    }, "strip", z.ZodTypeAny, {
        timestamp: number;
        trackId: number;
        metadataTimestamp?: number | undefined;
    }, {
        timestamp: number;
        trackId: string;
        metadataTimestamp?: number | undefined;
    }>, "many">>;
}, "strict", z.ZodTypeAny, {
    description?: string | undefined;
    mood?: Mood | undefined;
    tags?: string | undefined;
    genre?: Genre | undefined;
    license?: string | undefined;
    releaseDate?: Date | undefined;
    playlistName?: string | undefined;
    upc?: string | undefined;
    isPrivate?: boolean | undefined;
    playlistContents?: {
        timestamp: number;
        trackId: number;
        metadataTimestamp?: number | undefined;
    }[] | undefined;
}, {
    description?: string | undefined;
    mood?: Mood | undefined;
    tags?: string | undefined;
    genre?: Genre | undefined;
    license?: string | undefined;
    releaseDate?: Date | undefined;
    playlistName?: string | undefined;
    upc?: string | undefined;
    isPrivate?: boolean | undefined;
    playlistContents?: {
        timestamp: number;
        trackId: string;
        metadataTimestamp?: number | undefined;
    }[] | undefined;
}>;
export declare const createUpdatePlaylistSchema: () => z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
    coverArtFile: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodObject<{
        buffer: z.ZodType<Buffer, z.ZodTypeDef, Buffer>;
        name: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        buffer: Buffer;
        name?: string | undefined;
    }, {
        buffer: Buffer;
        name?: string | undefined;
    }>, z.ZodType<File, z.ZodTypeDef, File>]>, File | {
        buffer: Buffer;
        name?: string | undefined;
    }, File | {
        buffer: Buffer;
        name?: string | undefined;
    }>>;
    metadata: z.ZodObject<{
        description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
        mood: z.ZodOptional<z.ZodOptional<z.ZodEnum<[Mood, ...Mood[]]>>>;
        tags: z.ZodOptional<z.ZodOptional<z.ZodString>>;
        genre: z.ZodOptional<z.ZodEnum<[Genre, ...Genre[]]>>;
        license: z.ZodOptional<z.ZodOptional<z.ZodString>>;
        releaseDate: z.ZodOptional<z.ZodOptional<z.ZodDate>>;
        playlistName: z.ZodOptional<z.ZodString>;
        upc: z.ZodOptional<z.ZodOptional<z.ZodString>>;
        isPrivate: z.ZodOptional<z.ZodBoolean>;
        playlistContents: z.ZodOptional<z.ZodArray<z.ZodObject<{
            timestamp: z.ZodNumber;
            metadataTimestamp: z.ZodOptional<z.ZodNumber>;
            trackId: z.ZodEffects<z.ZodString, number, string>;
        }, "strip", z.ZodTypeAny, {
            timestamp: number;
            trackId: number;
            metadataTimestamp?: number | undefined;
        }, {
            timestamp: number;
            trackId: string;
            metadataTimestamp?: number | undefined;
        }>, "many">>;
    }, "strict", z.ZodTypeAny, {
        description?: string | undefined;
        mood?: Mood | undefined;
        tags?: string | undefined;
        genre?: Genre | undefined;
        license?: string | undefined;
        releaseDate?: Date | undefined;
        playlistName?: string | undefined;
        upc?: string | undefined;
        isPrivate?: boolean | undefined;
        playlistContents?: {
            timestamp: number;
            trackId: number;
            metadataTimestamp?: number | undefined;
        }[] | undefined;
    }, {
        description?: string | undefined;
        mood?: Mood | undefined;
        tags?: string | undefined;
        genre?: Genre | undefined;
        license?: string | undefined;
        releaseDate?: Date | undefined;
        playlistName?: string | undefined;
        upc?: string | undefined;
        isPrivate?: boolean | undefined;
        playlistContents?: {
            timestamp: number;
            trackId: string;
            metadataTimestamp?: number | undefined;
        }[] | undefined;
    }>;
    onProgress: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodNumber], z.ZodUnknown>, z.ZodUnknown>>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    metadata: {
        description?: string | undefined;
        mood?: Mood | undefined;
        tags?: string | undefined;
        genre?: Genre | undefined;
        license?: string | undefined;
        releaseDate?: Date | undefined;
        playlistName?: string | undefined;
        upc?: string | undefined;
        isPrivate?: boolean | undefined;
        playlistContents?: {
            timestamp: number;
            trackId: number;
            metadataTimestamp?: number | undefined;
        }[] | undefined;
    };
    playlistId: number;
    coverArtFile?: File | {
        buffer: Buffer;
        name?: string | undefined;
    } | undefined;
    onProgress?: ((args_0: number, ...args_1: unknown[]) => unknown) | undefined;
}, {
    userId: string;
    metadata: {
        description?: string | undefined;
        mood?: Mood | undefined;
        tags?: string | undefined;
        genre?: Genre | undefined;
        license?: string | undefined;
        releaseDate?: Date | undefined;
        playlistName?: string | undefined;
        upc?: string | undefined;
        isPrivate?: boolean | undefined;
        playlistContents?: {
            timestamp: number;
            trackId: string;
            metadataTimestamp?: number | undefined;
        }[] | undefined;
    };
    playlistId: string;
    coverArtFile?: File | {
        buffer: Buffer;
        name?: string | undefined;
    } | undefined;
    onProgress?: ((args_0: number, ...args_1: unknown[]) => unknown) | undefined;
}>;
export type UpdatePlaylistRequest = z.input<ReturnType<typeof createUpdatePlaylistSchema>>;
declare const createUploadPlaylistMetadataSchema: () => z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    genre: z.ZodEnum<[Genre, ...Genre[]]>;
    license: z.ZodOptional<z.ZodString>;
    mood: z.ZodOptional<z.ZodEnum<[Mood, ...Mood[]]>>;
    playlistName: z.ZodString;
    releaseDate: z.ZodOptional<z.ZodDate>;
    tags: z.ZodOptional<z.ZodString>;
    upc: z.ZodOptional<z.ZodString>;
}, "strict", z.ZodTypeAny, {
    genre: Genre;
    playlistName: string;
    description?: string | undefined;
    license?: string | undefined;
    mood?: Mood | undefined;
    releaseDate?: Date | undefined;
    tags?: string | undefined;
    upc?: string | undefined;
}, {
    genre: Genre;
    playlistName: string;
    description?: string | undefined;
    license?: string | undefined;
    mood?: Mood | undefined;
    releaseDate?: Date | undefined;
    tags?: string | undefined;
    upc?: string | undefined;
}>;
export type PlaylistMetadata = z.input<ReturnType<typeof createUploadPlaylistMetadataSchema>>;
declare const createPlaylistTrackMetadataSchema: () => z.ZodObject<{
    aiAttributionUserId: z.ZodOptional<z.ZodEffects<z.ZodString, number, string>>;
    description: z.ZodOptional<z.ZodString>;
    download: z.ZodOptional<z.ZodNullable<z.ZodObject<{
        cid: z.ZodString;
        isDownloadable: z.ZodBoolean;
        requiresFollow: z.ZodBoolean;
    }, "strict", z.ZodTypeAny, {
        cid: string;
        isDownloadable: boolean;
        requiresFollow: boolean;
    }, {
        cid: string;
        isDownloadable: boolean;
        requiresFollow: boolean;
    }>>>;
    fieldVisibility: z.ZodOptional<z.ZodObject<{
        mood: z.ZodOptional<z.ZodBoolean>;
        tags: z.ZodOptional<z.ZodBoolean>;
        genre: z.ZodOptional<z.ZodBoolean>;
        share: z.ZodOptional<z.ZodBoolean>;
        playCount: z.ZodOptional<z.ZodBoolean>;
        remixes: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        mood?: boolean | undefined;
        tags?: boolean | undefined;
        genre?: boolean | undefined;
        share?: boolean | undefined;
        playCount?: boolean | undefined;
        remixes?: boolean | undefined;
    }, {
        mood?: boolean | undefined;
        tags?: boolean | undefined;
        genre?: boolean | undefined;
        share?: boolean | undefined;
        playCount?: boolean | undefined;
        remixes?: boolean | undefined;
    }>>;
    mood: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<[Mood, ...Mood[]]>>>>;
    tags: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    genre: z.ZodOptional<z.ZodEffects<z.ZodNullable<z.ZodEnum<[Genre, ...Genre[]]>>, Genre | null, Genre | null>>;
    isPremium: z.ZodOptional<z.ZodBoolean>;
    isrc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    isUnlisted: z.ZodOptional<z.ZodBoolean>;
    iswc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    premiumConditions: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
        chain: z.ZodLiteral<"eth">;
        address: z.ZodString;
        standard: z.ZodUnion<[z.ZodLiteral<"ERC721">, z.ZodLiteral<"ERC1155">]>;
        name: z.ZodString;
        slug: z.ZodString;
        imageUrl: z.ZodOptional<z.ZodString>;
        externalLink: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        address: string;
        name: string;
        chain: "eth";
        standard: "ERC721" | "ERC1155";
        slug: string;
        imageUrl?: string | undefined;
        externalLink?: string | undefined;
    }, {
        address: string;
        name: string;
        chain: "eth";
        standard: "ERC721" | "ERC1155";
        slug: string;
        imageUrl?: string | undefined;
        externalLink?: string | undefined;
    }>, z.ZodObject<{
        chain: z.ZodLiteral<"sol">;
        address: z.ZodString;
        name: z.ZodString;
        imageUrl: z.ZodOptional<z.ZodString>;
        externalLink: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        address: string;
        name: string;
        chain: "sol";
        imageUrl?: string | undefined;
        externalLink?: string | undefined;
    }, {
        address: string;
        name: string;
        chain: "sol";
        imageUrl?: string | undefined;
        externalLink?: string | undefined;
    }>]>, z.ZodObject<{
        followUserId: z.ZodEffects<z.ZodString, number, string>;
    }, "strict", z.ZodTypeAny, {
        followUserId: number;
    }, {
        followUserId: string;
    }>, z.ZodObject<{
        tipUserId: z.ZodEffects<z.ZodString, number, string>;
    }, "strict", z.ZodTypeAny, {
        tipUserId: number;
    }, {
        tipUserId: string;
    }>]>>;
    releaseDate: z.ZodOptional<z.ZodDate>;
    remixOf: z.ZodOptional<z.ZodObject<{
        tracks: z.ZodArray<z.ZodObject<{
            parentTrackId: z.ZodEffects<z.ZodString, number, string>;
        }, "strip", z.ZodTypeAny, {
            parentTrackId: number;
        }, {
            parentTrackId: string;
        }>, "many">;
    }, "strict", z.ZodTypeAny, {
        tracks: {
            parentTrackId: number;
        }[];
    }, {
        tracks: {
            parentTrackId: string;
        }[];
    }>>;
    title: z.ZodString;
    previewStartSeconds: z.ZodOptional<z.ZodNumber>;
    audioUploadId: z.ZodOptional<z.ZodString>;
    previewCid: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    title: string;
    aiAttributionUserId?: number | undefined;
    description?: string | undefined;
    download?: {
        cid: string;
        isDownloadable: boolean;
        requiresFollow: boolean;
    } | null | undefined;
    fieldVisibility?: {
        mood?: boolean | undefined;
        tags?: boolean | undefined;
        genre?: boolean | undefined;
        share?: boolean | undefined;
        playCount?: boolean | undefined;
        remixes?: boolean | undefined;
    } | undefined;
    mood?: Mood | null | undefined;
    tags?: string | undefined;
    genre?: Genre | null | undefined;
    isPremium?: boolean | undefined;
    isrc?: string | null | undefined;
    isUnlisted?: boolean | undefined;
    iswc?: string | null | undefined;
    license?: string | null | undefined;
    premiumConditions?: {
        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;
    } | {
        followUserId: number;
    } | {
        tipUserId: number;
    } | undefined;
    releaseDate?: Date | undefined;
    remixOf?: {
        tracks: {
            parentTrackId: number;
        }[];
    } | undefined;
    previewStartSeconds?: number | undefined;
    audioUploadId?: string | undefined;
    previewCid?: string | undefined;
}, {
    title: string;
    aiAttributionUserId?: string | undefined;
    description?: string | undefined;
    download?: {
        cid: string;
        isDownloadable: boolean;
        requiresFollow: boolean;
    } | null | undefined;
    fieldVisibility?: {
        mood?: boolean | undefined;
        tags?: boolean | undefined;
        genre?: boolean | undefined;
        share?: boolean | undefined;
        playCount?: boolean | undefined;
        remixes?: boolean | undefined;
    } | undefined;
    mood?: Mood | null | undefined;
    tags?: string | undefined;
    genre?: Genre | null | undefined;
    isPremium?: boolean | undefined;
    isrc?: string | null | undefined;
    isUnlisted?: boolean | undefined;
    iswc?: string | null | undefined;
    license?: string | null | undefined;
    premiumConditions?: {
        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;
    } | {
        followUserId: string;
    } | {
        tipUserId: string;
    } | undefined;
    releaseDate?: Date | undefined;
    remixOf?: {
        tracks: {
            parentTrackId: string;
        }[];
    } | undefined;
    previewStartSeconds?: number | undefined;
    audioUploadId?: string | undefined;
    previewCid?: string | undefined;
}>;
/**
 * PlaylistTrackMetadata is less strict than TrackMetadata because
 * `genre`, `mood`, and `tags` are optional
 */
export type PlaylistTrackMetadata = z.infer<ReturnType<typeof createPlaylistTrackMetadataSchema>>;
export declare const createUploadPlaylistSchema: () => z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    coverArtFile: z.ZodEffects<z.ZodUnion<[z.ZodObject<{
        buffer: z.ZodType<Buffer, z.ZodTypeDef, Buffer>;
        name: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        buffer: Buffer;
        name?: string | undefined;
    }, {
        buffer: Buffer;
        name?: string | undefined;
    }>, z.ZodType<File, z.ZodTypeDef, File>]>, File | {
        buffer: Buffer;
        name?: string | undefined;
    }, File | {
        buffer: Buffer;
        name?: string | undefined;
    }>;
    metadata: z.ZodObject<{
        description: z.ZodOptional<z.ZodString>;
        genre: z.ZodEnum<[Genre, ...Genre[]]>;
        license: z.ZodOptional<z.ZodString>;
        mood: z.ZodOptional<z.ZodEnum<[Mood, ...Mood[]]>>;
        playlistName: z.ZodString;
        releaseDate: z.ZodOptional<z.ZodDate>;
        tags: z.ZodOptional<z.ZodString>;
        upc: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        genre: Genre;
        playlistName: string;
        description?: string | undefined;
        license?: string | undefined;
        mood?: Mood | undefined;
        releaseDate?: Date | undefined;
        tags?: string | undefined;
        upc?: string | undefined;
    }, {
        genre: Genre;
        playlistName: string;
        description?: string | undefined;
        license?: string | undefined;
        mood?: Mood | undefined;
        releaseDate?: Date | undefined;
        tags?: string | undefined;
        upc?: string | undefined;
    }>;
    onProgress: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodNumber], z.ZodUnknown>, z.ZodUnknown>>;
    /**
     * Track metadata is populated from the playlist if fields are missing
     */
    trackMetadatas: z.ZodArray<z.ZodObject<{
        aiAttributionUserId: z.ZodOptional<z.ZodEffects<z.ZodString, number, string>>;
        description: z.ZodOptional<z.ZodString>;
        download: z.ZodOptional<z.ZodNullable<z.ZodObject<{
            cid: z.ZodString;
            isDownloadable: z.ZodBoolean;
            requiresFollow: z.ZodBoolean;
        }, "strict", z.ZodTypeAny, {
            cid: string;
            isDownloadable: boolean;
            requiresFollow: boolean;
        }, {
            cid: string;
            isDownloadable: boolean;
            requiresFollow: boolean;
        }>>>;
        fieldVisibility: z.ZodOptional<z.ZodObject<{
            mood: z.ZodOptional<z.ZodBoolean>;
            tags: z.ZodOptional<z.ZodBoolean>;
            genre: z.ZodOptional<z.ZodBoolean>;
            share: z.ZodOptional<z.ZodBoolean>;
            playCount: z.ZodOptional<z.ZodBoolean>;
            remixes: z.ZodOptional<z.ZodBoolean>;
        }, "strip", z.ZodTypeAny, {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        }, {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        }>>;
        mood: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<[Mood, ...Mood[]]>>>>;
        tags: z.ZodOptional<z.ZodOptional<z.ZodString>>;
        genre: z.ZodOptional<z.ZodEffects<z.ZodNullable<z.ZodEnum<[Genre, ...Genre[]]>>, Genre | null, Genre | null>>;
        isPremium: z.ZodOptional<z.ZodBoolean>;
        isrc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        isUnlisted: z.ZodOptional<z.ZodBoolean>;
        iswc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        premiumConditions: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
            chain: z.ZodLiteral<"eth">;
            address: z.ZodString;
            standard: z.ZodUnion<[z.ZodLiteral<"ERC721">, z.ZodLiteral<"ERC1155">]>;
            name: z.ZodString;
            slug: z.ZodString;
            imageUrl: z.ZodOptional<z.ZodString>;
            externalLink: z.ZodOptional<z.ZodString>;
        }, "strict", z.ZodTypeAny, {
            address: string;
            name: string;
            chain: "eth";
            standard: "ERC721" | "ERC1155";
            slug: string;
            imageUrl?: string | undefined;
            externalLink?: string | undefined;
        }, {
            address: string;
            name: string;
            chain: "eth";
            standard: "ERC721" | "ERC1155";
            slug: string;
            imageUrl?: string | undefined;
            externalLink?: string | undefined;
        }>, z.ZodObject<{
            chain: z.ZodLiteral<"sol">;
            address: z.ZodString;
            name: z.ZodString;
            imageUrl: z.ZodOptional<z.ZodString>;
            externalLink: z.ZodOptional<z.ZodString>;
        }, "strict", z.ZodTypeAny, {
            address: string;
            name: string;
            chain: "sol";
            imageUrl?: string | undefined;
            externalLink?: string | undefined;
        }, {
            address: string;
            name: string;
            chain: "sol";
            imageUrl?: string | undefined;
            externalLink?: string | undefined;
        }>]>, z.ZodObject<{
            followUserId: z.ZodEffects<z.ZodString, number, string>;
        }, "strict", z.ZodTypeAny, {
            followUserId: number;
        }, {
            followUserId: string;
        }>, z.ZodObject<{
            tipUserId: z.ZodEffects<z.ZodString, number, string>;
        }, "strict", z.ZodTypeAny, {
            tipUserId: number;
        }, {
            tipUserId: string;
        }>]>>;
        releaseDate: z.ZodOptional<z.ZodDate>;
        remixOf: z.ZodOptional<z.ZodObject<{
            tracks: z.ZodArray<z.ZodObject<{
                parentTrackId: z.ZodEffects<z.ZodString, number, string>;
            }, "strip", z.ZodTypeAny, {
                parentTrackId: number;
            }, {
                parentTrackId: string;
            }>, "many">;
        }, "strict", z.ZodTypeAny, {
            tracks: {
                parentTrackId: number;
            }[];
        }, {
            tracks: {
                parentTrackId: string;
            }[];
        }>>;
        title: z.ZodString;
        previewStartSeconds: z.ZodOptional<z.ZodNumber>;
        audioUploadId: z.ZodOptional<z.ZodString>;
        previewCid: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        title: string;
        aiAttributionUserId?: number | undefined;
        description?: string | undefined;
        download?: {
            cid: string;
            isDownloadable: boolean;
            requiresFollow: boolean;
        } | null | undefined;
        fieldVisibility?: {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        } | undefined;
        mood?: Mood | null | undefined;
        tags?: string | undefined;
        genre?: Genre | null | undefined;
        isPremium?: boolean | undefined;
        isrc?: string | null | undefined;
        isUnlisted?: boolean | undefined;
        iswc?: string | null | undefined;
        license?: string | null | undefined;
        premiumConditions?: {
            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;
        } | {
            followUserId: number;
        } | {
            tipUserId: number;
        } | undefined;
        releaseDate?: Date | undefined;
        remixOf?: {
            tracks: {
                parentTrackId: number;
            }[];
        } | undefined;
        previewStartSeconds?: number | undefined;
        audioUploadId?: string | undefined;
        previewCid?: string | undefined;
    }, {
        title: string;
        aiAttributionUserId?: string | undefined;
        description?: string | undefined;
        download?: {
            cid: string;
            isDownloadable: boolean;
            requiresFollow: boolean;
        } | null | undefined;
        fieldVisibility?: {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        } | undefined;
        mood?: Mood | null | undefined;
        tags?: string | undefined;
        genre?: Genre | null | undefined;
        isPremium?: boolean | undefined;
        isrc?: string | null | undefined;
        isUnlisted?: boolean | undefined;
        iswc?: string | null | undefined;
        license?: string | null | undefined;
        premiumConditions?: {
            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;
        } | {
            followUserId: string;
        } | {
            tipUserId: string;
        } | undefined;
        releaseDate?: Date | undefined;
        remixOf?: {
            tracks: {
                parentTrackId: string;
            }[];
        } | undefined;
        previewStartSeconds?: number | undefined;
        audioUploadId?: string | undefined;
        previewCid?: string | undefined;
    }>, "many">;
    trackFiles: z.ZodArray<z.ZodEffects<z.ZodUnion<[z.ZodObject<{
        buffer: z.ZodType<Buffer, z.ZodTypeDef, Buffer>;
        name: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        buffer: Buffer;
        name?: string | undefined;
    }, {
        buffer: Buffer;
        name?: string | undefined;
    }>, z.ZodType<File, z.ZodTypeDef, File>]>, File | {
        buffer: Buffer;
        name?: string | undefined;
    }, File | {
        buffer: Buffer;
        name?: string | undefined;
    }>, "many">;
}, "strict", z.ZodTypeAny, {
    userId: number;
    metadata: {
        genre: Genre;
        playlistName: string;
        description?: string | undefined;
        license?: string | undefined;
        mood?: Mood | undefined;
        releaseDate?: Date | undefined;
        tags?: string | undefined;
        upc?: string | undefined;
    };
    coverArtFile: (File | {
        buffer: Buffer;
        name?: string | undefined;
    }) & (File | {
        buffer: Buffer;
        name?: string | undefined;
    } | undefined);
    trackMetadatas: {
        title: string;
        aiAttributionUserId?: number | undefined;
        description?: string | undefined;
        download?: {
            cid: string;
            isDownloadable: boolean;
            requiresFollow: boolean;
        } | null | undefined;
        fieldVisibility?: {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        } | undefined;
        mood?: Mood | null | undefined;
        tags?: string | undefined;
        genre?: Genre | null | undefined;
        isPremium?: boolean | undefined;
        isrc?: string | null | undefined;
        isUnlisted?: boolean | undefined;
        iswc?: string | null | undefined;
        license?: string | null | undefined;
        premiumConditions?: {
            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;
        } | {
            followUserId: number;
        } | {
            tipUserId: number;
        } | undefined;
        releaseDate?: Date | undefined;
        remixOf?: {
            tracks: {
                parentTrackId: number;
            }[];
        } | undefined;
        previewStartSeconds?: number | undefined;
        audioUploadId?: string | undefined;
        previewCid?: string | undefined;
    }[];
    trackFiles: (File | {
        buffer: Buffer;
        name?: string | undefined;
    })[];
    onProgress?: ((args_0: number, ...args_1: unknown[]) => unknown) | undefined;
}, {
    userId: string;
    metadata: {
        genre: Genre;
        playlistName: string;
        description?: string | undefined;
        license?: string | undefined;
        mood?: Mood | undefined;
        releaseDate?: Date | undefined;
        tags?: string | undefined;
        upc?: string | undefined;
    };
    coverArtFile: (File | {
        buffer: Buffer;
        name?: string | undefined;
    }) & (File | {
        buffer: Buffer;
        name?: string | undefined;
    } | undefined);
    trackMetadatas: {
        title: string;
        aiAttributionUserId?: string | undefined;
        description?: string | undefined;
        download?: {
            cid: string;
            isDownloadable: boolean;
            requiresFollow: boolean;
        } | null | undefined;
        fieldVisibility?: {
            mood?: boolean | undefined;
            tags?: boolean | undefined;
            genre?: boolean | undefined;
            share?: boolean | undefined;
            playCount?: boolean | undefined;
            remixes?: boolean | undefined;
        } | undefined;
        mood?: Mood | null | undefined;
        tags?: string | undefined;
        genre?: Genre | null | undefined;
        isPremium?: boolean | undefined;
        isrc?: string | null | undefined;
        isUnlisted?: boolean | undefined;
        iswc?: string | null | undefined;
        license?: string | null | undefined;
        premiumConditions?: {
            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;
        } | {
            followUserId: string;
        } | {
            tipUserId: string;
        } | undefined;
        releaseDate?: Date | undefined;
        remixOf?: {
            tracks: {
                parentTrackId: string;
            }[];
        } | undefined;
        previewStartSeconds?: number | undefined;
        audioUploadId?: string | undefined;
        previewCid?: string | undefined;
    }[];
    trackFiles: (File | {
        buffer: Buffer;
        name?: string | undefined;
    })[];
    onProgress?: ((args_0: number, ...args_1: unknown[]) => unknown) | undefined;
}>;
export type UploadPlaylistRequest = z.input<ReturnType<typeof createUploadPlaylistSchema>>;
export declare const PublishPlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
}, {
    userId: string;
    playlistId: string;
}>;
export type PublishPlaylistRequest = z.input<typeof PublishPlaylistSchema>;
export declare const AddTrackToPlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
    trackId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    trackId: number;
    playlistId: number;
}, {
    userId: string;
    trackId: string;
    playlistId: string;
}>;
export type AddTrackToPlaylistRequest = z.input<typeof AddTrackToPlaylistSchema>;
export declare const RemoveTrackFromPlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
    trackIndex: z.ZodNumber;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
    trackIndex: number;
}, {
    userId: string;
    playlistId: string;
    trackIndex: number;
}>;
export type RemoveTrackFromPlaylistRequest = z.input<typeof RemoveTrackFromPlaylistSchema>;
export declare const DeletePlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
}, {
    userId: string;
    playlistId: string;
}>;
export type DeletePlaylistRequest = z.input<typeof DeletePlaylistSchema>;
export declare const FavoritePlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
    metadata: z.ZodOptional<z.ZodObject<{
        /**
         * Is this a save of a repost? Used to dispatch notifications
         * when a user favorites another user's repost
         */
        isSaveOfRepost: z.ZodBoolean;
    }, "strict", z.ZodTypeAny, {
        isSaveOfRepost: boolean;
    }, {
        isSaveOfRepost: boolean;
    }>>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
    metadata?: {
        isSaveOfRepost: boolean;
    } | undefined;
}, {
    userId: string;
    playlistId: string;
    metadata?: {
        isSaveOfRepost: boolean;
    } | undefined;
}>;
export type FavoritePlaylistRequest = z.input<typeof FavoritePlaylistSchema>;
export declare const UnfavoritePlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
}, {
    userId: string;
    playlistId: string;
}>;
export type UnfavoritePlaylistRequest = z.input<typeof UnfavoritePlaylistSchema>;
export declare const RepostPlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
    metadata: z.ZodOptional<z.ZodObject<{
        /**
         * Is this a repost of a repost? Used to dispatch notifications
         * when a user favorites another user's repost
         */
        isRepostOfRepost: z.ZodBoolean;
    }, "strict", z.ZodTypeAny, {
        isRepostOfRepost: boolean;
    }, {
        isRepostOfRepost: boolean;
    }>>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
    metadata?: {
        isRepostOfRepost: boolean;
    } | undefined;
}, {
    userId: string;
    playlistId: string;
    metadata?: {
        isRepostOfRepost: boolean;
    } | undefined;
}>;
export type RepostPlaylistRequest = z.input<typeof RepostPlaylistSchema>;
export declare const UnrepostPlaylistSchema: z.ZodObject<{
    userId: z.ZodEffects<z.ZodString, number, string>;
    playlistId: z.ZodEffects<z.ZodString, number, string>;
}, "strict", z.ZodTypeAny, {
    userId: number;
    playlistId: number;
}, {
    userId: string;
    playlistId: string;
}>;
export type UnrepostPlaylistRequest = z.input<typeof UnrepostPlaylistSchema>;
export {};
