public async Task <TransactionAssetCreatorDescription> CreateAsset(string issuer, string symbol,
                                                                           uint precision, AssetOptionCreateOrUpdate common,
                                                                           BitassetOptionCreateOrUpdate bitassetOpts, bool broadcast = false)
        {
            _logger.LogInformation($"[BlockchainApi] CreateAsset: issuer {issuer}, symbol {symbol}, broadcast {broadcast}");
            var cli = new GrapheneWallet(_webSocketClientFactory);
            await cli.StartAndConnect(_lstCreds);

            var c1  = _mapper.Map <AssetOptionCreateOrUpdate, GrapheneAssetOptions>(common);
            var bc1 = _mapper.Map <BitassetOptionCreateOrUpdate, GrapheneBitAssetOptions>(bitassetOpts);

            var cAsset = cli.CreateAsset(issuer, symbol, precision, c1, bc1, broadcast);

            return(_mapper.Map <GrapheneTransactionRecord <GrapheneAssetCreator>, TransactionAssetCreatorDescription>(cAsset));
        }
        public async Task <TransactionAssetCreatorDescription> CreateUiAsset(string issuer, string symbol,
                                                                             uint precision, ulong maxSupply, decimal marketFeePercent,
                                                                             ulong maxMarketFee, ulong amountBase, ulong amountQuote,
                                                                             string description)
        {
            _logger.LogInformation($"[BlockchainApi] CreateUiAsset: issuer {issuer}, symbol {symbol}");
            var cli = new GrapheneWallet(_webSocketClientFactory);
            await cli.StartAndConnect(_lstCreds);

            var h1 = new AssetOptionHelper();

            var common = new GrapheneAssetOptions();

            common.Max_supply         = maxSupply;
            common.Market_fee_percent = marketFeePercent;
            common.Max_market_fee     = maxMarketFee;
            common.Issuer_permissions = h1.GetPermissions(false);
            common.Flags = h1.GetFlag();
            common.Whitelist_authorities = new List <string>();
            common.Blacklist_authorities = new List <string>();
            common.Whitelist_markets     = new List <string>();
            common.Blacklist_markets     = new List <string>();

            common.Core_exchange_rate = new GrapheneExchangeRate()
            {
                Base = new GrapheneAmount()
                {
                    Amount   = amountBase,
                    Asset_id = "1.3.0"
                },
                Quote = new GrapheneAmount()
                {
                    Amount   = amountQuote,
                    Asset_id = "1.3.1"
                }
            };

            common.Description        = description;
            common.IsPredictionMarket = false;

            //var optBitAsset = new GrapheneBitAssetOptions();

            ///*

            //"feed_lifetime_sec" : 60 * 60 * 24,
            //"minimum_feeds" : 7,
            //"force_settlement_delay_sec" : 60 * 60 * 24,
            //"force_settlement_offset_percent" : 1 * assetConstants.GRAPHENE_1_PERCENT,
            //"maximum_force_settlement_volume" : 20 * assetConstants.GRAPHENE_1_PERCENT,
            //"short_backing_asset" : "1.3.0"

            //*/

            //optBitAsset.Feed_lifetime_sec = 60 * 60 * 24;
            //optBitAsset.Minimum_feeds = 7;
            //optBitAsset.Force_settlement_delay_sec = 60 * 60 * 24;
            //optBitAsset.Force_settlement_offset_percent = 1 * h1.GRAPHENE_1_PERCENT;
            //optBitAsset.Maximum_force_settlement_volume = 20 * h1.GRAPHENE_1_PERCENT;
            //optBitAsset.Short_backing_asset = "1.3.0";

            var cAsset = cli.CreateAsset(issuer, symbol, precision, common, null, true);

            return(_mapper.Map <GrapheneTransactionRecord <GrapheneAssetCreator>, TransactionAssetCreatorDescription>(cAsset));
        }