import type { TransactionReceipt } from 'web3-core';
import type { TrackMetadata, UserMetadata } from '../../utils';
import { ContractClient } from '../contracts/ContractClient';
export declare enum Action {
    CREATE = "Create",
    UPDATE = "Update",
    DELETE = "Delete",
    VERIFY = "Verify",
    FOLLOW = "Follow",
    UNFOLLOW = "Unfollow",
    SAVE = "Save",
    UNSAVE = "Unsave",
    REPOST = "Repost",
    UNREPOST = "Unrepost",
    SUBSCRIBE = "Subscribe",
    UNSUBSCRIBE = "Unsubscribe",
    VIEW = "View",
    VIEW_PLAYLIST = "ViewPlaylist",
    APPROVE = "Approve",
    REJECT = "Reject"
}
export declare enum EntityType {
    PLAYLIST = "Playlist",
    TRACK = "Track",
    USER = "User",
    USER_REPLICA_SET = "UserReplicaSet",
    NOTIFICATION = "Notification"
}
export declare type ManageEntityCIDMetadata = {
    cid: string;
    data: TrackMetadata | UserMetadata;
};
/**
 * Generic management of Audius Data entities
 **/
export declare class EntityManagerClient extends ContractClient {
    static Action: typeof Action;
    static EntityType: typeof EntityType;
    getManageEntityParams(userId: number, entityType: EntityType, entityId: number, action: Action, metadataMultihash: string, privateKey?: string): Promise<[string, string]>;
    /**
     * Calls the manage entity method on chain
     * @param {number} userId The numeric user id
     * @param {EntityType} entityType The type of entity being modified
     * @param {number} entityId The id of the entity
     * @param {Action} action Action being performed on the entity
     * @param {string} metadata CID multihash or metadata associated with action
     * @param {string}privateKey The private key used to sign the transaction
     */
    manageEntity(userId: number, entityType: EntityType, entityId: number, action: Action, metadata: string, privateKey?: string): Promise<{
        txReceipt: TransactionReceipt;
    }>;
}
