aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet_rpc_server_commands_defs.h
diff options
context:
space:
mode:
authorThomas Winget <tewinget@gmail.com>2014-06-17 18:15:21 -0400
committerThomas Winget <tewinget@gmail.com>2014-06-30 07:16:50 -0400
commitd433a696e527a01c1cbef48495652335140f0bb2 (patch)
tree809d9095b3cbeff9b4c4f643e39026820e32c8f8 /src/wallet/wallet_rpc_server_commands_defs.h
parentremoved erroneous printing of newlines (diff)
downloadmonero-d433a696e527a01c1cbef48495652335140f0bb2.tar.xz
wallet RPC converted to use new transaction semantics
wallet RPC now uses wallet2::create_transactions and wallet2::commit_tx instead of wallet2::transfer. This made it possible to add the RPC call /transfer_split, which will split transactions automatically if they are too large. The old call to /transfer will return an error stating to use /transfer_split if multiple transactions are needed to fulfill the request.
Diffstat (limited to 'src/wallet/wallet_rpc_server_commands_defs.h')
-rw-r--r--src/wallet/wallet_rpc_server_commands_defs.h211
1 files changed, 211 insertions, 0 deletions
diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h
new file mode 100644
index 000000000..33130da06
--- /dev/null
+++ b/src/wallet/wallet_rpc_server_commands_defs.h
@@ -0,0 +1,211 @@
+// Copyright (c) 2012-2013 The Cryptonote developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#pragma once
+#include "cryptonote_protocol/cryptonote_protocol_defs.h"
+#include "cryptonote_core/cryptonote_basic.h"
+#include "crypto/hash.h"
+#include "wallet_rpc_server_error_codes.h"
+namespace tools
+{
+namespace wallet_rpc
+{
+#define WALLET_RPC_STATUS_OK "OK"
+#define WALLET_RPC_STATUS_BUSY "BUSY"
+
+ struct COMMAND_RPC_GET_BALANCE
+ {
+ struct request
+ {
+ BEGIN_KV_SERIALIZE_MAP()
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ uint64_t balance;
+ uint64_t unlocked_balance;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(balance)
+ KV_SERIALIZE(unlocked_balance)
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+
+ struct COMMAND_RPC_GET_ADDRESS
+ {
+ struct request
+ {
+ BEGIN_KV_SERIALIZE_MAP()
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ std::string address;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(address)
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+
+ struct transfer_destination
+ {
+ uint64_t amount;
+ std::string address;
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(amount)
+ KV_SERIALIZE(address)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct COMMAND_RPC_TRANSFER
+ {
+ struct request
+ {
+ std::list<transfer_destination> destinations;
+ uint64_t fee;
+ uint64_t mixin;
+ uint64_t unlock_time;
+ std::string payment_id;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(destinations)
+ KV_SERIALIZE(fee)
+ KV_SERIALIZE(mixin)
+ KV_SERIALIZE(unlock_time)
+ KV_SERIALIZE(payment_id)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ std::string tx_hash;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(tx_hash)
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+
+ struct COMMAND_RPC_TRANSFER_SPLIT
+ {
+ struct request
+ {
+ std::list<transfer_destination> destinations;
+ uint64_t fee;
+ uint64_t mixin;
+ uint64_t unlock_time;
+ std::string payment_id;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(destinations)
+ KV_SERIALIZE(fee)
+ KV_SERIALIZE(mixin)
+ KV_SERIALIZE(unlock_time)
+ KV_SERIALIZE(payment_id)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ std::list<std::string> tx_hash_list;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(tx_hash_list)
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+
+ struct COMMAND_RPC_STORE
+ {
+ struct request
+ {
+ BEGIN_KV_SERIALIZE_MAP()
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ BEGIN_KV_SERIALIZE_MAP()
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+
+ struct payment_details
+ {
+ std::string tx_hash;
+ uint64_t amount;
+ uint64_t block_height;
+ uint64_t unlock_time;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(tx_hash)
+ KV_SERIALIZE(amount)
+ KV_SERIALIZE(block_height)
+ KV_SERIALIZE(unlock_time)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct COMMAND_RPC_GET_PAYMENTS
+ {
+ struct request
+ {
+ std::string payment_id;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(payment_id)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ std::list<payment_details> payments;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(payments)
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+
+ struct transfer_details
+ {
+ uint64_t amount;
+ bool spent;
+ uint64_t global_index;
+ std::string tx_hash;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(amount)
+ KV_SERIALIZE(spent)
+ KV_SERIALIZE(global_index)
+ KV_SERIALIZE(tx_hash)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct COMMAND_RPC_INCOMING_TRANSFERS
+ {
+ struct request
+ {
+ std::string transfer_type;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(transfer_type)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ struct response
+ {
+ std::list<transfer_details> transfers;
+
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(transfers)
+ END_KV_SERIALIZE_MAP()
+ };
+ };
+}
+}
+