/// <summary>
        /// Initializes a new instance of the <see cref="MosaicSupplyChangeTransaction"/> class.
        /// </summary>
        /// <param name="networkType">Type of the network.</param>
        /// <param name="version">The transaction version.</param>
        /// <param name="deadline">The deadline.</param>
        /// <param name="fee">The fee.</param>
        /// <param name="mosaicId">The mosaic identifier.</param>
        /// <param name="direction">The direction.</param>
        /// <param name="delta">The delta.</param>
        /// <param name="signature">The signature.</param>
        /// <param name="signer">The signer.</param>
        /// <param name="transactionInfo">The transaction information.</param>
        /// <exception cref="ArgumentOutOfRangeException">direction</exception>
        /// <exception cref="InvalidEnumArgumentException">networkType</exception>
        /// <exception cref="ArgumentNullException">mosaicId</exception>
        public MosaicSupplyChangeTransaction(NetworkType.Types networkType, int version, Deadline deadline, ulong fee, MosaicId mosaicId, MosaicSupplyType.Type direction, ulong delta, string signature, PublicAccount signer, TransactionInfo transactionInfo)
        {
            if (direction.GetValue() >= 2)
            {
                throw new ArgumentOutOfRangeException(nameof(direction));
            }
            if (!Enum.IsDefined(typeof(NetworkType.Types), networkType))
            {
                throw new InvalidEnumArgumentException(nameof(networkType), (int)networkType,
                                                       typeof(NetworkType.Types));
            }

            MosaicId        = mosaicId ?? throw new ArgumentNullException(nameof(mosaicId));
            Delta           = delta;
            SupplyType      = direction;
            Version         = version;
            Deadline        = deadline;
            Fee             = fee;
            NetworkType     = networkType;
            TransactionType = TransactionTypes.Types.MosaicSupplyChange;
            Signer          = signer;
            Signature       = signature;
            TransactionInfo = transactionInfo;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MosaicSupplyChangeTransaction"/> class.
 /// </summary>
 /// <param name="mosaicId">The mosaic identifier.</param>
 /// <param name="delta">The delta.</param>
 /// <param name="direction">The direction.</param>
 /// <param name="version">The transaction version.</param>
 /// <param name="deadline">The deadline.</param>
 /// <param name="fee">The fee.</param>
 /// <param name="networkType">Type of the network.</param>
 /// <exception cref="ArgumentOutOfRangeException">direction</exception>
 /// <exception cref="InvalidEnumArgumentException">networkType</exception>
 /// <exception cref="ArgumentNullException">mosaicId</exception>
 public MosaicSupplyChangeTransaction(NetworkType.Types networkType, int version, Deadline deadline, ulong fee, MosaicId mosaicId, MosaicSupplyType.Type direction, ulong delta)
     : this(networkType, version, deadline, fee, mosaicId, direction, delta, null, null, null)
 {
 }
 /// <summary>
 /// Creates the specified MosaicSupplyChangeTransaction.
 /// </summary>
 /// <param name="mosaicId">The mosaic identifier.</param>
 /// <param name="delta">The delta.</param>
 /// <param name="direction">The direction.</param>
 /// <param name="deadline">The deadline.</param>
 /// <param name="networkType">Type of the network.</param>
 /// <returns>MosaicSupplyChangeTransaction.</returns>
 public static MosaicSupplyChangeTransaction Create(NetworkType.Types networkType, Deadline deadline, MosaicId mosaicId, MosaicSupplyType.Type direction, ulong delta)
 {
     return(new MosaicSupplyChangeTransaction(networkType, 3, deadline, 0, mosaicId, direction, delta));
 }