public static int Main(string[] args)
        {
            var logger = new LoggerConfiguration().WriteTo.Console().CreateLogger();

            var userOutput = new ConsoleUserOutput();

            userOutput.WriteLine("Catalyst Network Simulator");

            var passwordRegistry = new PasswordRegistry();

            Parser.Default.ParseArguments <Options>(args).WithParsed(options => passwordRegistry.SetFromOptions(options));

            var fileSystem            = new FileSystem();
            var userInput             = new ConsoleUserInput();
            var consolePasswordReader = new ConsolePasswordReader(userOutput, userInput);
            var certificateStore      = new CertificateStore(fileSystem, new PasswordManager(consolePasswordReader, passwordRegistry));
            var certificate           = certificateStore.ReadOrCreateCertificateFile("mycert.pfx");
            var signingContext        = new SigningContext {
                NetworkType = NetworkType.Devnet, SignatureType = SignatureType.ProtocolPeer
            };

            var clientRpcInfoList =
                ConfigHelper.GenerateClientRpcInfoFromConfig(userOutput, passwordRegistry, certificate, logger, signingContext
                                                             ).ToList();

            var simulation = new TransactionSimulation(userOutput);
            var simulator  = new Simulator(simulation, logger);

            simulator.SimulateAsync(clientRpcInfoList).Wait();

            return(Environment.ExitCode);
        }
        public void Write_Should_Write_To_Console()
        {
            using (var sw = new StringWriter())
            {
                Console.SetOut(sw);

                const string message           = "Hello world";
                var          consoleUserOutput = new ConsoleUserOutput();

                consoleUserOutput.Write(message);

                sw.ToString().Should().Be(message);
            }
        }