static async Task Main(string[] args) { Application.Init(); var addressesModule = new AddressesModule(); addressesModule.AddressesSelected += async(_, data) => { var urls = new[] { data.nodeAddress }; var httpClient = new HttpClient(); AddAuthorizationHeader(httpClient, data.nodeAddress); var jsonRpcClientProxy = new JsonRpcClientProxy(new DefaultHttpClient(httpClient, new EthereumJsonSerializer(), LimboLogs.Instance, int.MaxValue), urls, LimboLogs.Instance); var jsonRpcWalletClientProxy = new JsonRpcWalletClientProxy(jsonRpcClientProxy); var ethJsonRpcClientProxy = new EthJsonRpcClientProxy(jsonRpcClientProxy); var dataModule = new DataModule(ethJsonRpcClientProxy, data.address); dataModule.TransferClicked += async(_, e) => { var transferModule = new TransferModule(ethJsonRpcClientProxy, jsonRpcWalletClientProxy, e.Address, e.Balance); var transferWindow = await transferModule.InitAsync(); Application.Top.Add(transferWindow); Application.Run(transferWindow); }; var dataWindow = await dataModule.InitAsync(); Application.Top.Add(dataWindow); Application.Run(dataWindow); }; Application.Top.Add(await addressesModule.InitAsync()); Application.Run(); }