import type { StorageService } from '../../services';
import { EmailEncryptionService } from '../../services/Encryption';
import { AdvancedOptions, EntityManagerService } from '../../services/EntityManager/types';
import type { LoggerService } from '../../services/Logger';
import type { ClaimableTokensClient } from '../../services/Solana/programs/ClaimableTokensClient/ClaimableTokensClient';
import type { SolanaClient } from '../../services/Solana/programs/SolanaClient';
import { Configuration, DownloadPurchasesAsCSVRequest, DownloadSalesAsCSVRequest, DownloadUSDCWithdrawalsAsCSVRequest, UsersApi as GeneratedUsersApi } from '../generated/default';
import { CreateUserRequest, EmailRequest, FollowUserRequest, SendTipReactionRequest, SendTipRequest, SubscribeToUserRequest, UnfollowUserRequest, UnsubscribeFromUserRequest, UpdateProfileRequest } from './types';
export declare class UsersApi extends GeneratedUsersApi {
    private readonly storage;
    private readonly entityManager;
    private readonly logger;
    private readonly claimableTokens;
    private readonly solanaClient;
    private readonly emailEncryption;
    constructor(configuration: Configuration, storage: StorageService, entityManager: EntityManagerService, logger: LoggerService, claimableTokens: ClaimableTokensClient, solanaClient: SolanaClient, emailEncryption: EmailEncryptionService);
    /** @hidden
     * Generate a new user id for use in creation flow
     */
    private generateUserId;
    /** @hidden
     * Create a user
     */
    createUser(params: CreateUserRequest, advancedOptions?: AdvancedOptions): Promise<{
        blockHash: string;
        blockNumber: number;
        metadata: {
            coverPhoto?: string | undefined;
            coverPhotoSizes?: string | undefined;
            profilePicture?: string | undefined;
            profilePictureSizes?: string | undefined;
            userId: number;
            wallet: string;
            allowAiAttribution?: boolean | undefined;
            bio?: string | undefined;
            donation?: string | undefined;
            handle?: string | undefined;
            events?: {
                referrer?: number | undefined;
                isMobileUser?: boolean | undefined;
            } | undefined;
            location?: string | undefined;
            name?: string | undefined;
            splUsdcPayoutWallet?: string | undefined;
            website?: string | undefined;
        };
    }>;
    /** @hidden
     * Creates a guest for guest checkout
     */
    createGuestAccount(advancedOptions?: AdvancedOptions): Promise<{
        blockHash: string;
        blockNumber: number;
        metadata: {
            userId: number;
        };
    }>;
    /** @hidden
     * Update a user profile
     */
    updateProfile(params: UpdateProfileRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Follow a user
     */
    followUser(params: FollowUserRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Unfollow a user
     */
    unfollowUser(params: UnfollowUserRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Subscribe to a user
     */
    subscribeToUser(params: SubscribeToUserRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /** @hidden
     * Unsubscribe from a user
     */
    unsubscribeFromUser(params: UnsubscribeFromUserRequest, advancedOptions?: AdvancedOptions): Promise<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /**
     * 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<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
    /**
     * 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<Pick<import("web3-core").TransactionReceipt, "blockHash" | "blockNumber">>;
}
