import { Logger, LoggerOptions, NameResolver } from '@evan.network/dbcp';
import { CryptoProvider } from '../encryption/crypto-provider';
import { Ipld } from '../dfs/ipld';
/**
 * parameters for Profile constructor
 */
export interface ProfileOptions extends LoggerOptions {
    ipld: Ipld;
    nameResolver: NameResolver;
    defaultCryptoAlgo: string;
    cryptoProvider: CryptoProvider;
    bcAddress: string;
    ipldData?: any;
}
export interface DappBookmark {
    title: string;
    description: string;
    img: string;
    primaryColor: string;
    secondaryColor?: string;
}
/**
 * profile helper class, builds profile graphs
 *
 * @class      Profile (name)
 */
export declare class BusinessCenterProfile extends Logger {
    ipldData: any;
    ipld: Ipld;
    nameResolver: NameResolver;
    defaultCryptoAlgo: string;
    cryptoProvider: CryptoProvider;
    bcAddress: string;
    constructor(options: ProfileOptions);
    /**
     * store profile in ipfs as an ipfs file that points to a ipld dag
     *
     * @return     {string}  hash of the ipfs file
     */
    storeToIpld(): Promise<string>;
    /**
     * load profile from ipfs via ipld dag via ipfs file hash
     *
     * @param      {string}   ipldIpfsHash  ipfs file hash that points to a file with ipld a hash
     * @return     {Profile}  this profile
     */
    loadFromIpld(ipldIpfsHash: string): Promise<BusinessCenterProfile>;
    /**
     * get contact card from
     *
     * @return     {any}     contact card
     */
    getContactCard(): Promise<string>;
    /**
     * set contact card on current profile
     *
     * @param      {any}  contactCard  contact card to store
     * @return     {any}  updated tree
     */
    setContactCard(contactCard: any): Promise<any>;
    /**
     * stores profile to business centers profile store
     *
     * @param      {string}   businessCenterDomain  ENS domain name of a business center
     * @param      {string}   account               Ethereum account id
     * @return     {Promise}  resolved when done
     */
    storeForBusinessCenter(businessCenterDomain: string, account: string): Promise<void>;
    /**
     * load profile for given account from global profile contract
     *
     * @param      {string}   businessCenterDomain  ENS domain name of a business center
     * @param      {string}   account               Ethereum account id
     * @return     {Promise}  resolved when done
     */
    loadForBusinessCenter(businessCenterDomain: string, account: string): Promise<any>;
    /**
     * gets all registered contracts for a specific contract type on a businesscenter
     *
     * @param      {string}  businessCenterDomain  The business center domain
     * @param      {string}  contractType          The contract type
     * @param      {string}  account               current accountId
     * @return     {Array}   Array with all registered bc contracts
     */
    getMyBusinessCenterContracts(businessCenterDomain: string, contractType: string, account: string): Promise<any>;
}
