/// <summary>
 /// Executes a change key operation, changing "account" public key for a new one.
 /// </summary>
 /// <remarks>Note that new one public key can be another Wallet public key, or none.When none, it's like a transaction, tranferring account owner to an external owner</remarks>
 /// <param name="account">Account number to change key</param>
 /// <param name="account_signer">Account that signs and pays the fee (must have same public key that delisted account, or be the same)</param>
 /// <param name="new_enc_pubkey">HEXASTRING - New public key in encoded format</param>
 /// <param name="new_b58_pubkey">New public key in Base 58 format (the same that Application Wallet exports)</param>
 /// <param name="fee">PASCURRENCY - Fee of the operation</param>
 /// <param name="payload">Payload "item" that will be included in this operation</param>
 /// <param name="payloadMethod">Encode type of the item payload</param>
 /// <param name="pwd">Used to encrypt payload with aes as a payload_method. If none equals to empty password</param>
 /// <returns>If operation is successfull will return a JSON Object in "Operation Object" format. Otherwise, will return a JSON-RPC error code with description</returns>
 public static Task <Operation> ChangeKeyAsync(this IPascalCoinClient client, uint account, uint account_signer, string new_enc_pubkey, string new_b58_pubkey, decimal fee, byte[] payload = null, PayloadEncryptionMethod?payloadMethod = null, string pwd = null)
 {
     return(Task.Run(() => client.ChangeKey(account, account_signer, new_enc_pubkey, new_b58_pubkey, fee, payload, payloadMethod, pwd)));
 }