import type { EntityManagerService, AuthService } from '../../services';
import type { DiscoveryNodeSelectorService } from '../../services/DiscoveryNodeSelector';
import { AdvancedOptions } from '../../services/EntityManager/types';
import type { LoggerService } from '../../services/Logger';
import type { StorageService } from '../../services/Storage';
import { Configuration, StreamTrackRequest, TracksApi as GeneratedTracksApi } from '../generated/default';
import { DeleteTrackRequest, RepostTrackRequest, FavoriteTrackRequest, UnrepostTrackRequest, UnfavoriteTrackRequest, UpdateTrackRequest, UploadTrackRequest } from './types';
export declare class TracksApi extends GeneratedTracksApi {
    private readonly discoveryNodeSelectorService;
    private readonly storage;
    private readonly entityManager;
    private readonly auth;
    private readonly logger;
    private readonly trackUploadHelper;
    constructor(configuration: Configuration, discoveryNodeSelectorService: DiscoveryNodeSelectorService, storage: StorageService, entityManager: EntityManagerService, auth: AuthService, logger: LoggerService);
    /**
     * Get the url of the track's streamable mp3 file
     */
    streamTrack(params: StreamTrackRequest): Promise<string>;
    /** @hidden
     * Upload a track
     */
    uploadTrack(params: UploadTrackRequest, advancedOptions?: AdvancedOptions): Promise<{
        trackId: string | null;
        blockHash: string;
        blockNumber: number;
    }>;
    /** @hidden
     * Update a track
     */
    updateTrack(params: UpdateTrackRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Delete a track
     */
    deleteTrack(params: DeleteTrackRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Favorite a track
     */
    favoriteTrack(params: FavoriteTrackRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Unfavorite a track
     */
    unfavoriteTrack(params: UnfavoriteTrackRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Repost a track
     */
    repostTrack(params: RepostTrackRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Unrepost a track
     */
    unrepostTrack(params: UnrepostTrackRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
}
