import { AdvancedOptions } from '../../services/EntityManager/types';
import { Configuration, DownloadPurchasesAsCSVRequest, DownloadSalesAsCSVRequest, DownloadUSDCWithdrawalsAsCSVRequest, UsersApi as GeneratedUsersApi } from '../generated/default';
import { AddAssociatedWalletRequest, EmailRequest, EntityManagerFollowUserRequest, RemoveAssociatedWalletRequest, SendTipReactionRequest, SendTipRequest, EntityManagerSubscribeToUserRequest, EntityManagerUnfollowUserRequest, EntityManagerUnsubscribeFromUserRequest, UpdateCollectiblesRequest, type EntityManagerCreateUserRequest, type EntityManagerUpdateProfileRequest, type UpdateUserRequestWithFiles, type CreateUserRequestWithFiles, type UsersApiServicesConfig } from './types';
export declare class UsersApi extends GeneratedUsersApi {
    private readonly storage;
    private readonly entityManager?;
    private readonly claimableTokens;
    private readonly solanaClient;
    private readonly emailEncryption;
    constructor(configuration: Configuration, services: UsersApiServicesConfig);
    /** @hidden
     * Generate a new user id for use in creation flow
     */
    private generateUserId;
    /** @hidden
     * Create a user
     */
    createUserWithEntityManager(params: EntityManagerCreateUserRequest, advancedOptions?: AdvancedOptions): Promise<{
        blockHash: string;
        blockNumber: number;
        metadata: {
            wallet: string;
            allowAiAttribution?: boolean | undefined;
            bio?: string | undefined;
            coverPhoto?: string | undefined;
            coverPhotoSizes?: string | undefined;
            donation?: string | undefined;
            handle?: string | undefined;
            events?: {
                referrer?: number | undefined;
                isMobileUser?: boolean | undefined;
            } | undefined;
            location?: string | undefined;
            name?: string | undefined;
            profilePicture?: string | undefined;
            profilePictureSizes?: string | undefined;
            splUsdcPayoutWallet?: string | undefined;
            website?: string | undefined;
        };
        userId: string;
    }>;
    createUser(params: CreateUserRequestWithFiles, requestInit?: RequestInit): Promise<import("../generated/default").CreateUserResponse>;
    /** @hidden
     * Creates a guest for guest checkout
     */
    createGuestAccount(advancedOptions?: AdvancedOptions): Promise<{
        blockHash: string;
        blockNumber: number;
        metadata: {
            userId: number;
        };
    }>;
    /** @hidden
     * Update a user profile
     */
    updateUserWithEntityManager(params: EntityManagerUpdateProfileRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    private updateMetadataWithFiles;
    private mapLibraryContentsToEntityManagerFormat;
    updateUser(params: UpdateUserRequestWithFiles, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Follow a user
     */
    followUserWithEntityManager(params: EntityManagerFollowUserRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    followUser(params: EntityManagerFollowUserRequest | {
        id: string;
    }, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Unfollow a user
     */
    unfollowUserWithEntityManager(params: EntityManagerUnfollowUserRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    unfollowUser(params: EntityManagerUnfollowUserRequest | {
        id: string;
    }, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Subscribe to a user
     */
    subscribeToUserWithEntityManager(params: EntityManagerSubscribeToUserRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    subscribeToUser(params: EntityManagerSubscribeToUserRequest | {
        id: string;
    }, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /** @hidden
     * Unsubscribe from a user
     */
    unsubscribeFromUserWithEntityManager(params: EntityManagerUnsubscribeFromUserRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    unsubscribeFromUser(params: EntityManagerUnsubscribeFromUserRequest | {
        id: string;
    }, requestInit?: RequestInit): Promise<import("../generated/default").WriteResponse>;
    /**
     * Downloads the sales the user has made as a CSV file.
     * Similar to generated raw method, but forced response type as blob
     */
    downloadSalesAsCSVBlob(params: DownloadSalesAsCSVRequest): Promise<Blob>;
    /**
     * Downloads the purchases the user has made as a CSV file.
     * Similar to generated raw method, but forced response type as blob
     */
    downloadPurchasesAsCSVBlob(params: DownloadPurchasesAsCSVRequest): Promise<Blob>;
    /**
     * Downloads the USDC withdrawals the user has made as a CSV file
     * Similar to generated raw method, but forced response type as blob
     */
    downloadUSDCWithdrawalsAsCSVBlob(params: DownloadUSDCWithdrawalsAsCSVRequest): Promise<Blob>;
    /**
     * Sends a wAUDIO tip from one user to another.
     * @hidden subject to change
     */
    sendTip(request: SendTipRequest): Promise<string>;
    /**
     * Submits a reaction to a tip being received.
     * @hidden
     */
    sendTipReaction(params: SendTipReactionRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    /**
     * Helper function for sendTip that gets the user wallet and creates
     * or gets the wAUDIO user bank for given user ID.
     */
    private getWalletAndUserBank;
    /** @hidden
     * Share an encrypted email with a user
     */
    shareEmail(params: EmailRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    /** @hidden
     * Associate a new wallet with a user
     */
    addAssociatedWallet(params: AddAssociatedWalletRequest, advancedOptions?: AdvancedOptions): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    /** @hidden
     * Remove a wallet from a user
     */
    removeAssociatedWallet(params: RemoveAssociatedWalletRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
    /** @hidden
     * Update user collectibles preferences
     */
    updateCollectibles(params: UpdateCollectiblesRequest): Promise<import("../../services/EntityManager/types").EntityManagerTransactionReceipt>;
}
