@@ -106,7 +106,16 @@ public void SetCredentials(string username, string password)
106106 _username = username ;
107107 _password = password ;
108108 }
109-
109+
110+ /// <summary>
111+ /// Get LWS server version.
112+ /// </summary>
113+ /// <returns></returns>
114+ public async Task < MoneroLwsDaemonStatus > GetDaemonStatus ( )
115+ {
116+ return await SendCommandAsync < MoneroLwsDaemonStatus > ( "daemon_status" ) ;
117+ }
118+
110119 /// <summary>
111120 /// Get LWS server version.
112121 /// </summary>
@@ -322,4 +331,153 @@ public async Task<MoneroLwsSubaddrs> ProvisionSubaddrs(string address, string vi
322331
323332 return await SendCommandAsync < MoneroLwsProvisionSubaddrsRequest , MoneroLwsSubaddrs > ( "provision_subaddrs" , req ) ;
324333 }
334+
335+ #region Administration
336+
337+ /// <summary>
338+ /// Accepts create or import requests in the incoming queue.
339+ /// </summary>
340+ /// <param name="type"><c>create</c> or <c>import</c>.</param>
341+ /// <param name="addresses">Account addresses to accept.</param>
342+ /// <returns></returns>
343+ public async Task < MoneroLwsUpdateResponse > AcceptRequests ( string type , List < string > addresses )
344+ {
345+ var req = new MoneroLwsAdminRequest
346+ {
347+ Params = new MoneroLwsAdminParams
348+ {
349+ RequestType = type ,
350+ Addresses = addresses
351+ }
352+ } ;
353+
354+ return await SendCommandAsync < MoneroLwsAdminRequest , MoneroLwsUpdateResponse > ( "accept_requests" , req ) ;
355+ }
356+
357+ /// <summary>
358+ /// Reject account creation or import from the incoming queue.
359+ /// </summary>
360+ /// <param name="type"><c>create</c> or <c>import</c>.</param>
361+ /// <param name="addresses">Account addresses to reject.</param>
362+ /// <returns></returns>
363+ public async Task < MoneroLwsUpdateResponse > RejectRequests ( string type , List < string > addresses )
364+ {
365+ var req = new MoneroLwsAdminRequest
366+ {
367+ Params = new MoneroLwsAdminParams
368+ {
369+ RequestType = type ,
370+ Addresses = addresses
371+ }
372+ } ;
373+
374+ return await SendCommandAsync < MoneroLwsAdminRequest , MoneroLwsUpdateResponse > ( "reject_requests" , req ) ;
375+ }
376+
377+ /// <summary>
378+ /// Add account for view-key scanning.
379+ /// </summary>
380+ /// <param name="address">Account primary address.</param>
381+ /// <param name="viewKey">Account private view key.</param>
382+ /// <returns></returns>
383+ public async Task < MoneroLwsUpdateResponse > AddAccount ( string address , string viewKey )
384+ {
385+ var req = new MoneroLwsAdminRequest
386+ {
387+ Params = new MoneroLwsAdminParams
388+ {
389+ Address = address ,
390+ Key = viewKey
391+ }
392+ } ;
393+
394+ return await SendCommandAsync < MoneroLwsAdminRequest , MoneroLwsUpdateResponse > ( "add_account" , req ) ;
395+ }
396+
397+ /// <summary>
398+ /// Change an account status to <c>active</c>, <c>inactive</c> or <c>hidden</c>.
399+ /// The <c>active</c> state is the normal state: the account is being scanned and returned by the API.
400+ /// The <c>inactive</c> state is still returned by the API, but is no longer being scanned.
401+ /// The <c>hidden</c> is the current way to <i>delete</i> an account: it is not scanned nor returned by the API.
402+ /// Accounts cannot currently be deleted due to internal DB requirements.
403+ /// </summary>
404+ /// <param name="status">Account status to apply (<c>active</c>, <c>inactive</c> or <c>hidden</c>).</param>
405+ /// <param name="addresses">Account addresses.</param>
406+ /// <returns></returns>
407+ public async Task < MoneroLwsUpdateResponse > ModifyAccountStatus ( string status , List < string > addresses )
408+ {
409+ var req = new MoneroLwsAdminRequest
410+ {
411+ Params = new MoneroLwsAdminParams
412+ {
413+ Addresses = addresses ,
414+ Status = status
415+ }
416+ } ;
417+
418+ return await SendCommandAsync < MoneroLwsAdminRequest , MoneroLwsUpdateResponse > ( "modify_account_status" , req ) ;
419+ }
420+
421+ /// <summary>
422+ /// Request a listing of all active accounts in the database.
423+ /// </summary>
424+ /// <returns></returns>
425+ public async Task < MoneroLwsListAccountsResponse > ListAccounts ( )
426+ {
427+ return await SendCommandAsync < MoneroLwsListAccountsResponse > ( "list_accounts" ) ;
428+ }
429+
430+ /// <summary>
431+ /// Return the listing of all pending new account requests and all requests to import from genesis block requests.
432+ /// </summary>
433+ /// <returns></returns>
434+ public async Task < MoneroLwsListRequestsResponse > ListRequests ( )
435+ {
436+ return await SendCommandAsync < MoneroLwsListRequestsResponse > ( "list_requests" ) ;
437+ }
438+
439+ /// <summary>
440+ /// Rescan specific account(s) from the specified height.
441+ /// </summary>
442+ /// <param name="height">Blockchain height.</param>
443+ /// <param name="addresses">Addresses to rescan.</param>
444+ /// <returns></returns>
445+ public async Task < MoneroLwsUpdateResponse > Rescan ( long height , List < string > addresses )
446+ {
447+ var req = new MoneroLwsAdminRequest
448+ {
449+ Params = new MoneroLwsAdminParams
450+ {
451+ Addresses = addresses ,
452+ Height = height
453+ }
454+ } ;
455+
456+ return await SendCommandAsync < MoneroLwsAdminRequest , MoneroLwsUpdateResponse > ( "rescan" , req ) ;
457+ }
458+
459+ /// <summary>
460+ /// Validate account keys.
461+ /// </summary>
462+ /// <param name="viewPublicHex">Account view public key as hex.</param>
463+ /// <param name="spendPublicHex">Account spend public key as hex.</param>
464+ /// <param name="viewKeyHex">Account private view key as hex.</param>
465+ /// <returns></returns>
466+ public async Task < MoneroLwsValidateResponse > Validate ( string viewPublicHex , string spendPublicHex ,
467+ string viewKeyHex )
468+ {
469+ var req = new MoneroLwsAdminRequest
470+ {
471+ Params = new MoneroLwsAdminParams
472+ {
473+ ViewPublicHex = viewPublicHex ,
474+ SpendPublicHex = spendPublicHex ,
475+ ViewKeyHex = viewKeyHex
476+ }
477+ } ;
478+
479+ return await SendCommandAsync < MoneroLwsAdminRequest , MoneroLwsValidateResponse > ( "validate" , req ) ;
480+ }
481+
482+ #endregion
325483}
0 commit comments