import { TransactionInstruction } from '@solana/web3.js';
import { type Configuration } from '../generated/default';
import { getAlbumRequest, getAlbumsRequest, getAlbumTracksRequest, GetPurchaseAlbumInstructionsRequest, PurchaseAlbumRequest, UploadAlbumRequest, CreateAlbumRequestWithFiles, UpdateAlbumRequest, DeleteAlbumRequest, FavoriteAlbumRequest, UnfavoriteAlbumRequest, RepostAlbumRequest, UnrepostAlbumRequest, type AlbumsApiServicesConfig } from './types';
export declare class AlbumsApi {
    private readonly playlistsApi;
    private logger;
    private claimableTokensClient;
    private paymentRouterClient;
    private solanaRelay;
    private solanaClient;
    constructor(configuration: Configuration, servicesConfig: AlbumsApiServicesConfig);
    getAlbum(params: getAlbumRequest): Promise<import("../generated/default").PlaylistResponse>;
    getBulkAlbums(params: getAlbumsRequest): Promise<import("../generated/default").PlaylistResponse>;
    getAlbumTracks(params: getAlbumTracksRequest): Promise<import("../generated/default").PlaylistTracksResponse>;
    /** @hidden
     * Create an album from existing tracks
     */
    createAlbum(params: CreateAlbumRequestWithFiles, requestInit?: RequestInit): Promise<import("../generated/default").CreatePlaylistResponse>;
    /** @hidden
     * Upload an album
     * Uploads the specified tracks and combines them into an album
     */
    uploadAlbum(params: UploadAlbumRequest): Promise<{
        blockHash: string | undefined;
        blockNumber: number | undefined;
        albumId: string | null | undefined;
    }>;
    /** @hidden
     * Update an album
     */
    updateAlbum(params: UpdateAlbumRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Delete an album
     */
    deleteAlbum(params: DeleteAlbumRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Favorite an album
     */
    favoriteAlbum(params: FavoriteAlbumRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Unfavorite an album
     */
    unfavoriteAlbum(params: UnfavoriteAlbumRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Repost an album
     */
    repostAlbum(params: RepostAlbumRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Unrepost an album
     */
    unrepostAlbum(params: UnrepostAlbumRequest, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /**
     * Gets the Solana instructions that purchase the album
     *
     * @hidden
     */
    getPurchaseAlbumInstructions(params: GetPurchaseAlbumInstructionsRequest): Promise<{
        instructions: {
            routeInstruction: TransactionInstruction;
            memoInstruction: TransactionInstruction;
            locationMemoInstruction: TransactionInstruction | undefined;
        };
        total: bigint;
    }>;
    /**
     * Purchases stream access to an album
     *
     * @hidden
     */
    purchaseAlbum(params: PurchaseAlbumRequest): Promise<string>;
}
