m_cmd_binder.set_handler("start_mining",boost::bind(&simple_wallet::start_mining,this,_1),tr("start_mining [<number_of_threads>] [bg_mining] [ignore_battery] - Start mining in daemon (bg_mining and ignore_battery are optional booleans)"));
m_cmd_binder.set_handler("stop_mining",boost::bind(&simple_wallet::stop_mining,this,_1),tr("Stop mining in daemon"));
m_cmd_binder.set_handler("save_bc",boost::bind(&simple_wallet::save_bc,this,_1),tr("Save current blockchain data"));
m_cmd_binder.set_handler("refresh",boost::bind(&simple_wallet::refresh,this,_1),tr("Synchronize transactions and balance"));
m_cmd_binder.set_handler("balance",boost::bind(&simple_wallet::show_balance,this,_1),tr("balance [detail] - Show wallet balance of currently selected account"));
m_cmd_binder.set_handler("incoming_transfers",boost::bind(&simple_wallet::show_incoming_transfers,this,_1),tr("incoming_transfers [available|unavailable] [verbose] [index=<N1>[,<N2>,...]] - Show incoming transfers, all or filtered by availability and address index"));
m_cmd_binder.set_handler("payments",boost::bind(&simple_wallet::show_payments,this,_1),tr("payments <PID_1> [<PID_2> ... <PID_N>] - Show payments for given payment ID[s]"));
m_cmd_binder.set_handler("transfer_original",boost::bind(&simple_wallet::transfer,this,_1),tr("Same as transfer, but using an older transaction building algorithm"));
m_cmd_binder.set_handler("transfer",boost::bind(&simple_wallet::transfer_new,this,_1),tr("transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <amount> [<payment_id>] - Transfer <amount> to <address>. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
m_cmd_binder.set_handler("locked_transfer",boost::bind(&simple_wallet::locked_transfer,this,_1),tr("locked_transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <addr> <amount> <lockblocks> [<payment_id>] - Same as transfer, but with number of blocks to lock the transaction for, max 1000000"));
m_cmd_binder.set_handler("sweep_unmixable",boost::bind(&simple_wallet::sweep_unmixable,this,_1),tr("Send all unmixable outputs to yourself with ring_size 1"));
m_cmd_binder.set_handler("sweep_all",boost::bind(&simple_wallet::sweep_all,this,_1),tr("sweep_all [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> [<payment_id>] - Send all unlocked balance to an address. If the parameter \"index<N1>[,<N2>,...]\" is specified, the wallet sweeps outputs received by those address indices. If omitted, the wallet randomly chooses an address index to be used."));
m_cmd_binder.set_handler("sweep_below",boost::bind(&simple_wallet::sweep_below,this,_1),tr("sweep_below <amount_threshold> [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> [<payment_id>] - Send all unlocked outputs below the threshold to an address"));
m_cmd_binder.set_handler("sweep_single",boost::bind(&simple_wallet::sweep_single,this,_1),tr("sweep_single [<priority>] [<ring_size>] <key_image> <address> [<payment_id>] - Send a single output of the given key image to an address without change"));
m_cmd_binder.set_handler("donate",boost::bind(&simple_wallet::donate,this,_1),tr("donate [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <amount> [<payment_id>] - Donate <amount> to the development team (donate.getmonero.org)"));
m_cmd_binder.set_handler("sign_transfer",boost::bind(&simple_wallet::sign_transfer,this,_1),tr("Sign a transaction from a file"));
m_cmd_binder.set_handler("submit_transfer",boost::bind(&simple_wallet::submit_transfer,this,_1),tr("Submit a signed transaction from a file"));
m_cmd_binder.set_handler("set_log",boost::bind(&simple_wallet::set_log,this,_1),tr("set_log <level>|{+,-,}<categories> - Change current log detail (level must be <0-4>)"));
m_cmd_binder.set_handler("account",boost::bind(&simple_wallet::account,this,_1),tr("account [new <label text with white spaces allowed> | switch <index> | label <index> <label text with white spaces allowed>] - If no argments are specified, the wallet shows all the existing accounts along with their balances. If the \"new\" argument is specified, the wallet creates a new account with its label initialized by the provided label text (which can be empty). If the \"switch\" argument is specified, the wallet switches to the account specified by <index>. If the \"label\" argument is specified, the wallet sets the label of the account specified by <index> to the provided label text."));
m_cmd_binder.set_handler("address",boost::bind(&simple_wallet::print_address,this,_1),tr("address [ new <label text with white spaces allowed> | all | <index_min> [<index_max>] | label <index> <label text with white spaces allowed> ] - If no arguments are specified or <index> is specified, the wallet shows the default or specified address. If \"all\" is specified, the walllet shows all the existing addresses in the currently selected account. If \"new \" is specified, the wallet creates a new address with the provided label text (which can be empty). If \"label\" is specified, the wallet sets the label of the address specified by <index> to the provided label text."));
m_cmd_binder.set_handler("integrated_address",boost::bind(&simple_wallet::print_integrated_address,this,_1),tr("integrated_address [PID] - Encode a payment ID into an integrated address for the current wallet public address (no argument uses a random payment ID), or decode an integrated address to standard address and payment ID"));
m_cmd_binder.set_handler("address_book",boost::bind(&simple_wallet::address_book,this,_1),tr("address_book [(add (<address> [pid <long or short payment id>])|<integrated address> [<description possibly with whitespaces>])|(delete <index>)] - Print all entries in the address book, optionally adding/deleting an entry to/from it"));
m_cmd_binder.set_handler("set",boost::bind(&simple_wallet::set_variable,this,_1),tr("Available options: seed language - set wallet seed language; always-confirm-transfers <1|0> - whether to confirm unsplit txes; print-ring-members <1|0> - whether to print detailed information about ring members during confirmation; store-tx-info <1|0> - whether to store outgoing tx info (destination address, payment ID, tx secret key) for future reference; default-ring-size <n> - set default ring size (default is 5); auto-refresh <1|0> - whether to automatically sync new blocks from the daemon; refresh-type <full|optimize-coinbase|no-coinbase|default> - set wallet refresh behaviour; priority [0|1|2|3|4] - default/unimportant/normal/elevated/priority fee; confirm-missing-payment-id <1|0>; ask-password <1|0>; unit <monero|millinero|micronero|nanonero|piconero> - set default monero (sub-)unit; min-outputs-count [n] - try to keep at least that many outputs of value at least min-outputs-value; min-outputs-value [n] - try to keep at least min-outputs-count outputs of at least that value; merge-destinations <1|0> - whether to merge multiple payments to the same destination address; confirm-backlog <1|0> - whether to warn if there is transaction backlog; confirm-backlog-threshold [n] - sets a threshold for confirm-backlog to only warn if the transaction backlog is greater than n blocks; refresh-from-block-height [n] - set height before which to ignore blocks"));
m_cmd_binder.set_handler("rescan_spent",boost::bind(&simple_wallet::rescan_spent,this,_1),tr("Rescan blockchain for spent outputs"));
m_cmd_binder.set_handler("get_tx_key",boost::bind(&simple_wallet::get_tx_key,this,_1),tr("Get transaction key (r) for a given <txid>"));
m_cmd_binder.set_handler("check_tx_key",boost::bind(&simple_wallet::check_tx_key,this,_1),tr("Check amount going to <address> in <txid>"));
m_cmd_binder.set_handler("get_tx_proof",boost::bind(&simple_wallet::get_tx_proof,this,_1),tr("Generate a signature proving payment/receipt of money to/by <address> in <txid> using the transaction/view secret key"));
m_cmd_binder.set_handler("check_tx_proof",boost::bind(&simple_wallet::check_tx_proof,this,_1),tr("Check tx proof for payment going to <address> in <txid>"));
m_cmd_binder.set_handler("get_spend_proof",boost::bind(&simple_wallet::get_spend_proof,this,_1),tr("Generate a signature proving that you generated <txid> using the spend secret key"));
m_cmd_binder.set_handler("check_spend_proof",boost::bind(&simple_wallet::check_spend_proof,this,_1),tr("Check a signature proving that the signer generated <txid>"));
m_cmd_binder.set_handler("show_transfers",boost::bind(&simple_wallet::show_transfers,this,_1),tr("show_transfers [in|out|pending|failed|pool] [index=<N1>[,<N2>,...]] [<min_height> [<max_height>]] - Show incoming/outgoing transfers within an optional height range"));
m_cmd_binder.set_handler("unspent_outputs",boost::bind(&simple_wallet::unspent_outputs,this,_1),tr("unspent_outputs [index=<N1>[,<N2>,...]] [<min_amount> [<max_amount>]] - Show unspent outputs of a specified address within an optional amount range"));
m_cmd_binder.set_handler("rescan_bc",boost::bind(&simple_wallet::rescan_blockchain,this,_1),tr("Rescan blockchain from scratch"));
m_cmd_binder.set_handler("set_tx_note",boost::bind(&simple_wallet::set_tx_note,this,_1),tr("Set an arbitrary string note for a txid"));
m_cmd_binder.set_handler("get_tx_note",boost::bind(&simple_wallet::get_tx_note,this,_1),tr("Get a string note for a txid"));
m_cmd_binder.set_handler("set_description",boost::bind(&simple_wallet::set_description,this,_1),tr("Set an arbitrary description for the wallet"));
m_cmd_binder.set_handler("get_description",boost::bind(&simple_wallet::get_description,this,_1),tr("Get the description of the wallet "));
m_cmd_binder.set_handler("status",boost::bind(&simple_wallet::status,this,_1),tr("Show wallet status information"));
m_cmd_binder.set_handler("sign",boost::bind(&simple_wallet::sign,this,_1),tr("Sign the contents of a file"));
m_cmd_binder.set_handler("verify",boost::bind(&simple_wallet::verify,this,_1),tr("Verify a signature on the contents of a file"));
m_cmd_binder.set_handler("export_key_images",boost::bind(&simple_wallet::export_key_images,this,_1),tr("Export a signed set of key images"));
m_cmd_binder.set_handler("import_key_images",boost::bind(&simple_wallet::import_key_images,this,_1),tr("Import signed key images list and verify their spent status"));
m_cmd_binder.set_handler("export_outputs",boost::bind(&simple_wallet::export_outputs,this,_1),tr("Export a set of outputs owned by this wallet"));
m_cmd_binder.set_handler("import_outputs",boost::bind(&simple_wallet::import_outputs,this,_1),tr("Import set of outputs owned by this wallet"));
m_cmd_binder.set_handler("show_transfer",boost::bind(&simple_wallet::show_transfer,this,_1),tr("Show information about a transfer to/from this address"));
m_cmd_binder.set_handler("payment_id",boost::bind(&simple_wallet::payment_id,this,_1),tr("Generate a new random full size payment id - these will be unencrypted on the blockchain, see integrated_address for encrypted short payment ids"));
m_cmd_binder.set_handler("fee",boost::bind(&simple_wallet::print_fee_info,this,_1),tr("Print information about fee and current transaction backlog"));
m_cmd_binder.set_handler("help",boost::bind(&simple_wallet::help,this,_1),tr("Show this help"));
tr("Transfer <amount> to <address> using an older transaction building algorithm. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
tr("Transfer <amount> to <address>. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
tr("Transfer <amount> to <address> and lock it for <lockblocks> (max. 1000000). If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
tr("Send all unlocked balance to an address. If the parameter \"index<N1>[,<N2>,...]\" is specified, the wallet sweeps outputs received by those address indices. If omitted, the wallet randomly chooses an address index to be used."));
tr("Change the current log detail (level must be <0-4>)."));
m_cmd_binder.set_handler("account",
boost::bind(&simple_wallet::account,this,_1),
tr("account [new <label text with white spaces allowed> | switch <index> | label <index> <label text with white spaces allowed>]"),
tr("If no arguments are specified, the wallet shows all the existing accounts along with their balances. If the \"new\" argument is specified, the wallet creates a new account with its label initialized by the provided label text (which can be empty). If the \"switch\" argument is specified, the wallet switches to the account specified by <index>. If the \"label\" argument is specified, the wallet sets the label of the account specified by <index> to the provided label text."));
tr("address [ new <label text with white spaces allowed> | all | <index_min> [<index_max>] | label <index> <label text with white spaces allowed>]"),
tr("If no arguments are specified or <index> is specified, the wallet shows the default or specified address. If \"all\" is specified, the walllet shows all the existing addresses in the currently selected account. If \"new \" is specified, the wallet creates a new address with the provided label text (which can be empty). If \"label\" is specified, the wallet sets the label of the address specified by <index> to the provided label text."));
tr("Encode a payment ID into an integrated address for the current wallet public address (no argument uses a random payment ID), or decode an integrated address to standard address and payment ID"));
tr("Generate a signature proving funds sent to <address> in <txid>, optionally with a challenge string <message>, using either the transaction secret key (when <address> is not your wallet's address) or the view secret key (otherwise), which does not disclose the secret key."));
tr("Generate a new random full size payment id. These will be unencrypted on the blockchain, see integrated_address for encrypted short payment ids."));