decred.org/dcrwallet/v3@v3.1.0/rpc/api.proto (about)

     1  syntax = "proto3";
     2  
     3  package walletrpc;
     4  
     5  option go_package = "decred.org/dcrwallet/rpc/walletrpc";
     6  
     7  service VersionService {
     8  	rpc Version (VersionRequest) returns (VersionResponse);
     9  }
    10  
    11  message VersionRequest {}
    12  message VersionResponse {
    13  	string version_string = 1;
    14  	uint32 major = 2;
    15  	uint32 minor = 3;
    16  	uint32 patch = 4;
    17  	string prerelease = 5;
    18  	string build_metadata = 6;
    19  }
    20  
    21  service WalletService {
    22  	// Queries
    23  	rpc Ping (PingRequest) returns (PingResponse);
    24  	rpc Network (NetworkRequest) returns (NetworkResponse);
    25  	rpc CoinType (CoinTypeRequest) returns (CoinTypeResponse);
    26  	rpc AccountNumber (AccountNumberRequest) returns (AccountNumberResponse);
    27  	rpc Accounts (AccountsRequest) returns (AccountsResponse);
    28  	rpc Address (AddressRequest) returns (AddressResponse);
    29  	rpc Balance (BalanceRequest) returns (BalanceResponse);
    30  	rpc GetAccountExtendedPubKey (GetAccountExtendedPubKeyRequest) returns (GetAccountExtendedPubKeyResponse);
    31  	rpc GetAccountExtendedPrivKey (GetAccountExtendedPrivKeyRequest) returns (GetAccountExtendedPrivKeyResponse);
    32  	rpc GetTransaction (GetTransactionRequest) returns (GetTransactionResponse);
    33  	rpc GetTransactions (GetTransactionsRequest) returns (stream GetTransactionsResponse);
    34  	rpc GetTicket (GetTicketRequest) returns (GetTicketsResponse);
    35  	rpc GetTickets (GetTicketsRequest) returns (stream GetTicketsResponse);
    36  	rpc TicketPrice (TicketPriceRequest) returns (TicketPriceResponse);
    37  	rpc StakeInfo (StakeInfoRequest) returns (StakeInfoResponse);
    38  	rpc BlockInfo (BlockInfoRequest) returns (BlockInfoResponse);
    39  	rpc BestBlock (BestBlockRequest) returns (BestBlockResponse);
    40  	rpc Spender (SpenderRequest) returns (SpenderResponse);
    41  	rpc GetCFilters (GetCFiltersRequest) returns (stream GetCFiltersResponse);
    42  	rpc GetPeerInfo(GetPeerInfoRequest) returns (GetPeerInfoResponse);
    43  	rpc DumpPrivateKey (DumpPrivateKeyRequest) returns (DumpPrivateKeyResponse);
    44  
    45  	// Notifications
    46  	rpc TransactionNotifications (TransactionNotificationsRequest) returns (stream TransactionNotificationsResponse);
    47  	rpc AccountNotifications (AccountNotificationsRequest) returns (stream AccountNotificationsResponse);
    48  	rpc ConfirmationNotifications (stream ConfirmationNotificationsRequest) returns (stream ConfirmationNotificationsResponse);
    49  
    50  	// Control
    51  	rpc ChangePassphrase (ChangePassphraseRequest) returns (ChangePassphraseResponse);
    52  	rpc RenameAccount (RenameAccountRequest) returns (RenameAccountResponse);
    53  	rpc Rescan (RescanRequest) returns (stream RescanResponse);
    54  	rpc NextAccount (NextAccountRequest) returns (NextAccountResponse);
    55  	rpc NextAddress (NextAddressRequest) returns (NextAddressResponse);
    56  	rpc ImportPrivateKey (ImportPrivateKeyRequest) returns (ImportPrivateKeyResponse);
    57  	rpc ImportExtendedPublicKey (ImportExtendedPublicKeyRequest) returns (ImportExtendedPublicKeyResponse);
    58  	rpc ImportVotingAccountFromSeed (ImportVotingAccountFromSeedRequest) returns (ImportVotingAccountFromSeedResponse);
    59  	rpc ImportScript(ImportScriptRequest) returns (ImportScriptResponse);
    60  	rpc FundTransaction (FundTransactionRequest) returns (FundTransactionResponse);
    61  	rpc UnspentOutputs (UnspentOutputsRequest) returns (stream UnspentOutputResponse);
    62  	rpc ConstructTransaction (ConstructTransactionRequest) returns (ConstructTransactionResponse);
    63  	rpc SignTransaction (SignTransactionRequest) returns (SignTransactionResponse);
    64  	rpc SignTransactions (SignTransactionsRequest) returns (SignTransactionsResponse);
    65  	rpc CreateSignature (CreateSignatureRequest) returns (CreateSignatureResponse);
    66  	rpc PublishTransaction (PublishTransactionRequest) returns (PublishTransactionResponse);
    67  	rpc PublishUnminedTransactions (PublishUnminedTransactionsRequest) returns (PublishUnminedTransactionsResponse);
    68  	rpc PurchaseTickets(PurchaseTicketsRequest) returns (PurchaseTicketsResponse);
    69  	rpc RevokeTicket(RevokeTicketRequest) returns (RevokeTicketResponse);
    70  	rpc RevokeTickets(RevokeTicketsRequest) returns (RevokeTicketsResponse);
    71  	rpc LoadActiveDataFilters(LoadActiveDataFiltersRequest) returns (LoadActiveDataFiltersResponse);
    72  	rpc SignMessage (SignMessageRequest) returns (SignMessageResponse);
    73  	rpc SignMessages (SignMessagesRequest) returns (SignMessagesResponse);
    74  	rpc ValidateAddress (ValidateAddressRequest) returns (ValidateAddressResponse);
    75  	rpc CommittedTickets (CommittedTicketsRequest) returns (CommittedTicketsResponse);
    76  	rpc SweepAccount (SweepAccountRequest) returns (SweepAccountResponse);
    77  	rpc AbandonTransaction (AbandonTransactionRequest) returns (AbandonTransactionResponse);
    78  	rpc SignHashes (SignHashesRequest) returns (SignHashesResponse);
    79  	rpc GetCoinjoinOutputspByAcct (GetCoinjoinOutputspByAcctRequest) returns (GetCoinjoinOutputspByAcctResponse);
    80  	rpc SetAccountPassphrase (SetAccountPassphraseRequest) returns (SetAccountPassphraseResponse);
    81  	rpc UnlockAccount (UnlockAccountRequest) returns (UnlockAccountResponse);
    82  	rpc LockAccount (LockAccountRequest) returns (LockAccountResponse);
    83  	rpc UnlockWallet (UnlockWalletRequest) returns (UnlockWalletResponse);
    84  	rpc LockWallet (LockWalletRequest) returns (LockWalletResponse);
    85  	rpc AccountUnlocked (AccountUnlockedRequest) returns (AccountUnlockedResponse);
    86  	rpc SyncVSPFailedTickets(SyncVSPTicketsRequest) returns (SyncVSPTicketsResponse);
    87  	rpc GetVSPTicketsByFeeStatus (GetVSPTicketsByFeeStatusRequest) returns (GetVSPTicketsByFeeStatusResponse);
    88  	rpc ProcessManagedTickets (ProcessManagedTicketsRequest) returns (ProcessManagedTicketsResponse);
    89  	rpc ProcessUnmanagedTickets (ProcessUnmanagedTicketsRequest) returns (ProcessUnmanagedTicketsResponse);
    90  	rpc SetVspdVoteChoices (SetVspdVoteChoicesRequest) returns (SetVspdVoteChoicesResponse);
    91  	rpc GetTrackedVSPTickets (GetTrackedVSPTicketsRequest) returns (GetTrackedVSPTicketsResponse);
    92  	rpc DiscoverUsage (DiscoverUsageRequest) returns (DiscoverUsageResponse);
    93  }
    94  
    95  service WalletLoaderService {
    96  	rpc WalletExists (WalletExistsRequest) returns (WalletExistsResponse);
    97  	rpc CreateWallet (CreateWalletRequest) returns (CreateWalletResponse);
    98  	rpc CreateWatchingOnlyWallet (CreateWatchingOnlyWalletRequest) returns (CreateWatchingOnlyWalletResponse);
    99  	rpc OpenWallet (OpenWalletRequest) returns (OpenWalletResponse);
   100  	rpc CloseWallet (CloseWalletRequest) returns (CloseWalletResponse);
   101  	rpc SpvSync(SpvSyncRequest) returns (stream SpvSyncResponse);
   102  	rpc RpcSync(RpcSyncRequest) returns (stream RpcSyncResponse);
   103  	rpc RescanPoint(RescanPointRequest) returns (RescanPointResponse);
   104  }
   105  service AccountMixerService {
   106  	rpc RunAccountMixer (RunAccountMixerRequest) returns (stream RunAccountMixerResponse);
   107  }
   108  service TicketBuyerV2Service {
   109  	rpc RunTicketBuyer (RunTicketBuyerRequest) returns (stream RunTicketBuyerResponse);
   110  }
   111  
   112  service TicketBuyerService {
   113      rpc StartAutoBuyer (StartAutoBuyerRequest) returns (StartAutoBuyerResponse);
   114      rpc StopAutoBuyer (StopAutoBuyerRequest) returns (StopAutoBuyerResponse);
   115      rpc TicketBuyerConfig (TicketBuyerConfigRequest) returns (TicketBuyerConfigResponse);
   116      rpc SetAccount (SetAccountRequest) returns (SetAccountResponse);
   117      rpc SetBalanceToMaintain (SetBalanceToMaintainRequest) returns (SetBalanceToMaintainResponse);
   118      rpc SetMaxFee (SetMaxFeeRequest) returns (SetMaxFeeResponse);
   119      rpc SetMaxPriceRelative (SetMaxPriceRelativeRequest) returns (SetMaxPriceRelativeResponse);
   120      rpc SetMaxPriceAbsolute (SetMaxPriceAbsoluteRequest) returns (SetMaxPriceAbsoluteResponse);
   121      rpc SetVotingAddress (SetVotingAddressRequest) returns (SetVotingAddressResponse);
   122      rpc SetPoolAddress (SetPoolAddressRequest) returns (SetPoolAddressResponse);
   123      rpc SetPoolFees (SetPoolFeesRequest) returns (SetPoolFeesResponse);
   124      rpc SetMaxPerBlock (SetMaxPerBlockRequest) returns (SetMaxPerBlockResponse);
   125  }
   126  
   127  service SeedService {
   128  	rpc GenerateRandomSeed (GenerateRandomSeedRequest) returns (GenerateRandomSeedResponse);
   129  	rpc DecodeSeed (DecodeSeedRequest) returns (DecodeSeedResponse);
   130  }
   131  
   132  service AgendaService {
   133  	rpc Agendas (AgendasRequest) returns (AgendasResponse);
   134  }
   135  
   136  service VotingService {
   137  	rpc VoteChoices (VoteChoicesRequest) returns (VoteChoicesResponse);
   138  	rpc SetVoteChoices (SetVoteChoicesRequest) returns (SetVoteChoicesResponse);
   139  	rpc TSpendPolicies (TSpendPoliciesRequest) returns (TSpendPoliciesResponse);
   140  	rpc SetTSpendPolicy (SetTSpendPolicyRequest) returns (SetTSpendPolicyResponse);
   141  	rpc TreasuryPolicies (TreasuryPoliciesRequest) returns (TreasuryPoliciesResponse);
   142  	rpc SetTreasuryPolicy (SetTreasuryPolicyRequest) returns (SetTreasuryPolicyResponse);
   143  }
   144  
   145  service MessageVerificationService {
   146  	rpc VerifyMessage (VerifyMessageRequest) returns (VerifyMessageResponse);
   147  }
   148  
   149  service NetworkService {
   150  	rpc GetRawBlock (GetRawBlockRequest) returns (GetRawBlockResponse);
   151  }
   152  
   153  message TransactionDetails {
   154  	message Input {
   155  		uint32 index = 1;
   156  		uint32 previous_account = 2;
   157  		int64 previous_amount = 3;
   158  	}
   159  	message Output {
   160  		uint32 index = 1;
   161  		uint32 account = 2;
   162  		bool internal = 3;
   163  		int64 amount = 4;
   164  		string address = 5;
   165  		bytes output_script = 6;
   166  	}
   167  	bytes hash = 1;
   168  	bytes transaction = 2;
   169  	repeated Input debits = 3;
   170  	repeated Output credits = 4;
   171  	int64 fee = 5;
   172  	int64 timestamp = 6; // May be earlier than a block timestamp, but never later.
   173  	enum TransactionType {
   174  		REGULAR = 0;
   175  		COINBASE = 4;
   176  		TICKET_PURCHASE = 1;
   177  		VOTE = 2;
   178  		REVOCATION = 3;
   179  	}
   180  	TransactionType transaction_type = 7;
   181  }
   182  
   183  message BlockDetails {
   184  	bytes hash = 1;
   185  	int32 height = 2;
   186  	int64 timestamp = 3;
   187  	bool approves_parent = 5;
   188  	repeated TransactionDetails transactions = 4;
   189  	bytes prev_block = 6;
   190  }
   191  
   192  message DetachedBlockDetails {
   193  	bytes hash = 1;
   194  	int32 height = 2;
   195  	bytes prev_block = 3;
   196  	int64 timestamp = 4;
   197  }
   198  
   199  message AccountBalance {
   200  	uint32 account = 1;
   201  	int64 total_balance = 2;
   202  }
   203  
   204  message PingRequest {}
   205  message PingResponse {}
   206  
   207  message NetworkRequest {}
   208  message NetworkResponse {
   209  	uint32 active_network = 1;
   210  }
   211  
   212  message CoinTypeRequest {}
   213  message CoinTypeResponse {
   214  	uint32 coin_type = 1;
   215  }
   216  
   217  message AccountNumberRequest {
   218  	string account_name = 1;
   219  }
   220  message AccountNumberResponse {
   221  	uint32 account_number = 1;
   222  }
   223  
   224  message AccountsRequest {}
   225  message AccountsResponse {
   226  	message Account {
   227  		uint32 account_number = 1;
   228  		string account_name = 2;
   229  		int64 total_balance = 3;
   230  		uint32 external_key_count = 4;
   231  		uint32 internal_key_count = 5;
   232  		uint32 imported_key_count = 6;
   233  		bool account_encrypted = 7;
   234  		bool account_unlocked = 8;
   235  	}
   236  	repeated Account accounts = 1;
   237  	bytes current_block_hash = 2;
   238  	int32 current_block_height = 3;
   239  }
   240  
   241  message AddressRequest {
   242  	uint32 account = 1;
   243  	enum Kind {
   244  	     BIP0044_EXTERNAL = 0;
   245  	     BIP0044_INTERNAL = 1;
   246  	}
   247  	Kind kind = 2;
   248  	uint32 index = 3;
   249  }
   250  message AddressResponse {
   251  	string address = 1;
   252  	string public_key = 2;
   253  }
   254  
   255  
   256  message RenameAccountRequest {
   257  	uint32 account_number = 1;
   258  	string new_name = 2;
   259  }
   260  message RenameAccountResponse {}
   261  
   262  message RescanRequest {
   263  	int32 begin_height = 1;
   264  	bytes begin_hash = 2;
   265  }
   266  message RescanResponse {
   267  	int32 rescanned_through = 1;
   268  }
   269  
   270  message NextAccountRequest {
   271  	bytes passphrase = 1;
   272  	string account_name = 2;
   273  }
   274  message NextAccountResponse {
   275  	uint32 account_number = 1;
   276  }
   277  
   278  message NextAddressRequest {
   279  	uint32 account = 1;
   280  	enum Kind {
   281  	     BIP0044_EXTERNAL = 0;
   282  	     BIP0044_INTERNAL = 1;
   283  	}
   284  	Kind kind = 2;
   285  	enum GapPolicy {
   286  		GAP_POLICY_UNSPECIFIED = 0;
   287  		GAP_POLICY_ERROR = 1;
   288  		GAP_POLICY_IGNORE = 2;
   289  		GAP_POLICY_WRAP = 3;
   290  	}
   291  	GapPolicy gap_policy = 3;
   292  }
   293  message NextAddressResponse {
   294  	string address = 1;
   295  	string public_key = 2;
   296  }
   297  
   298  message ImportPrivateKeyRequest {
   299  	bytes passphrase = 1;
   300  	uint32 account = 2;
   301  	string private_key_wif = 3;
   302  	bool rescan = 4;
   303  	int32 scan_from = 5;
   304  }
   305  message ImportPrivateKeyResponse {
   306  }
   307  
   308  message ImportExtendedPublicKeyRequest {
   309  	string xpub = 1;
   310  	string account_name = 2;
   311  	bool rescan = 3;
   312  	int32 scan_from = 4;
   313  }
   314  message ImportExtendedPublicKeyResponse {
   315  }
   316  
   317  message DumpPrivateKeyRequest {
   318  	string address = 1;
   319  }
   320  message DumpPrivateKeyResponse {
   321  	string private_key_wif = 1;
   322  }
   323  
   324  message ImportVotingAccountFromSeedRequest {
   325  	bytes seed = 1;
   326  	string name = 2;
   327  	bytes passphrase = 3;
   328  	bool rescan = 4;
   329  	int32 scan_from = 5;
   330  	bool discover_usage = 6;
   331  	int32 discover_from = 7;
   332  	int32 discover_gap_limit = 8;
   333  }
   334  message ImportVotingAccountFromSeedResponse {
   335  	uint32 account = 1;
   336  }
   337  
   338  message ImportScriptRequest {
   339  	bytes passphrase = 1;
   340  	bytes script = 2;
   341  	bool rescan = 3;
   342  	int32 scan_from = 4;
   343  	bool require_redeemable = 5;
   344  }
   345  message ImportScriptResponse {
   346  	string p2sh_address = 1;
   347  	bool redeemable = 2;
   348  }
   349  
   350  message BalanceRequest {
   351  	uint32 account_number = 1;
   352  	int32 required_confirmations = 2;
   353  }
   354  message BalanceResponse {
   355  	int64 total = 1;
   356  	int64 spendable = 2;
   357  	int64 immature_reward = 3;
   358  	int64 immature_stake_generation = 4;
   359  	int64 locked_by_tickets = 5;
   360  	int64 voting_authority = 6;
   361  	int64 unconfirmed = 7;
   362  }
   363  
   364  message GetTransactionRequest {
   365  	bytes transaction_hash = 1;
   366  }
   367  message GetTransactionResponse {
   368  	TransactionDetails transaction = 1;
   369  	int32 confirmations = 2;
   370  	bytes block_hash = 3;
   371  }
   372  
   373  message GetTransactionsRequest {
   374  	// Optionally specify the starting block from which to begin including all transactions.
   375  	// Either the starting block hash or height may be specified, but not both.
   376  	// If a block height is specified and is negative, the absolute value becomes the number of
   377  	// last blocks to include.  That is, given a current chain height of 1000 and a starting block
   378  	// height of -3, transaction notifications will be created for blocks 998, 999, and 1000.
   379  	// If both options are excluded, transaction results are created for transactions since the
   380  	// genesis block.
   381  	bytes starting_block_hash = 1;
   382  	sint32 starting_block_height = 2;
   383  
   384  	// Optionally specify the last block that transaction results may appear in.
   385  	// Either the ending block hash or height may be specified, but not both.
   386  	// If both are excluded, transaction results are created for all transactions
   387  	// through the best block, and include all unmined transactions.
   388  	bytes ending_block_hash = 3;
   389  	int32 ending_block_height = 4;
   390  
   391  	// Include at least this many of the newest transactions if they exist.
   392  	// Cannot be used when the ending block hash is specified.
   393  	//
   394  	// TODO: remove until spec adds it back in some way.
   395  	int32 minimum_recent_transactions = 5;
   396  
   397  	// Try to include at most this many transactions in the reply
   398  	int32 target_transaction_count = 6;
   399  }
   400  message GetTransactionsResponse {
   401  	BlockDetails mined_transactions = 1;
   402  	repeated TransactionDetails unmined_transactions = 2;
   403  }
   404  
   405  message GetTicketRequest {
   406  	bytes ticket_hash = 1;
   407  }
   408  message GetTicketsRequest {
   409  	bytes starting_block_hash = 1;
   410  	sint32 starting_block_height = 2;
   411  	bytes ending_block_hash = 3;
   412  	int32 ending_block_height = 4;
   413  	int32 target_ticket_count = 5;
   414  }
   415  message GetTicketsResponse {
   416  	message TicketDetails {
   417  		TransactionDetails ticket = 1;
   418  		TransactionDetails spender = 2;
   419  		enum TicketStatus {
   420  			UNKNOWN = 0;
   421  			UNMINED = 1;
   422  			IMMATURE = 2;
   423  			LIVE = 3;
   424  			VOTED = 4;
   425  			MISSED = 5;
   426  			EXPIRED = 6;
   427  			REVOKED = 7;
   428  		}
   429  		TicketStatus ticket_status = 3;
   430  	}
   431  	message BlockDetails {
   432  		bytes hash = 1;
   433  		int32 height = 2;
   434  		int64 timestamp = 3;
   435  	}
   436  	TicketDetails ticket = 1;
   437  	BlockDetails block = 2;
   438  	string vsp_host = 3;
   439  }
   440  
   441  message TicketPriceRequest {
   442  }
   443  message TicketPriceResponse {
   444  	int64 ticket_price = 1;
   445  	int32 height = 2;
   446  }
   447  
   448  message StakeInfoRequest {
   449  }
   450  message StakeInfoResponse {
   451  	uint32 pool_size = 1;
   452  	uint32 all_mempool_tix = 2;
   453  	uint32 own_mempool_tix = 3;
   454  	uint32 immature = 4;
   455  	uint32 live = 5;
   456  	uint32 voted = 6;
   457  	uint32 missed = 7;
   458  	uint32 revoked = 8;
   459  	uint32 expired = 9;
   460  	int64 total_subsidy = 10;
   461  	uint32 unspent = 11;
   462  }
   463  
   464  message BlockInfoRequest {
   465  	bytes block_hash = 1;
   466  	int32 block_height = 2;
   467  }
   468  message BlockInfoResponse {
   469  	bytes block_hash = 1;
   470  	int32 block_height = 2;
   471  	int32 confirmations = 3;
   472  	int64 timestamp = 4;
   473  	bytes block_header = 5;
   474  	bool stake_invalidated = 6;
   475  	bool approves_parent = 7;
   476  }
   477  
   478  message ChangePassphraseRequest {
   479  	enum Key {
   480  	     PRIVATE = 0;
   481  	     PUBLIC = 1;
   482  	}
   483  	Key key = 1;
   484  	bytes old_passphrase = 2;
   485  	bytes new_passphrase = 3;
   486  }
   487  message ChangePassphraseResponse {}
   488  
   489  message FundTransactionRequest {
   490  	uint32 account = 1;
   491  	int64 target_amount = 2;
   492  	int32 required_confirmations = 3;
   493  	bool include_immature_coinbases = 4;
   494  	bool include_change_script = 5;
   495  }
   496  message FundTransactionResponse {
   497  	message PreviousOutput {
   498  		bytes transaction_hash = 1;
   499  		uint32 output_index = 2;
   500  		int64 amount = 3;
   501  		bytes pk_script = 4;
   502  		int64 receive_time = 5;
   503  		bool from_coinbase = 6;
   504  		int32 tree = 7;
   505  	}
   506  	repeated PreviousOutput selected_outputs = 1;
   507  	int64 total_amount = 2;
   508  	bytes change_pk_script = 3;
   509  }
   510  
   511  message UnspentOutputsRequest {
   512  	uint32 account = 1;
   513  	int64 target_amount = 2;
   514  	int32 required_confirmations = 3;
   515  	bool include_immature_coinbases = 4;
   516  }
   517  message UnspentOutputResponse {
   518  	bytes transaction_hash = 1;
   519  	uint32 output_index = 2;
   520  	int64 amount = 3;
   521  	bytes pk_script = 4;
   522  	int64 receive_time = 5;
   523  	bool from_coinbase = 6;
   524  	int32 tree = 7;
   525  	int64 amount_sum = 8;
   526  }
   527  
   528  message ConstructTransactionRequest {
   529  	message OutputDestination {
   530  		string address = 1;
   531  
   532  		bytes script = 2;
   533  		uint32 script_version = 3;
   534  	}
   535  	message Output {
   536  		OutputDestination destination = 1;
   537  		int64 amount = 2;
   538  	}
   539  	enum OutputSelectionAlgorithm {
   540  		UNSPECIFIED = 0;
   541  		ALL = 1;
   542  	}
   543  	uint32 source_account = 1;
   544  	int32 required_confirmations = 2;
   545  	int32 fee_per_kb = 3;
   546  	OutputSelectionAlgorithm output_selection_algorithm = 4;
   547  	repeated Output non_change_outputs = 5;
   548  	OutputDestination change_destination = 6;
   549  }
   550  message ConstructTransactionResponse {
   551  	bytes unsigned_transaction = 1;
   552  	int64 total_previous_output_amount = 2;
   553  	int64 total_output_amount = 3;
   554  	uint32 estimated_signed_size = 4;
   555  	int32 change_index = 5;
   556  }
   557  
   558  message SignTransactionRequest {
   559  	reserved 3;
   560  	reserved "input_indexes";
   561  	message AdditionalScript {
   562  		bytes transaction_hash = 1;
   563  		uint32 output_index = 2;
   564  		int32 tree = 3;
   565  		bytes pk_script = 4;
   566  	}
   567  	bytes passphrase = 1;
   568  	bytes serialized_transaction = 2;
   569  	// If no indexes are specified, signatures scripts will be added for
   570  	// every input. If any input indexes are specified, only those inputs
   571  	// will be signed.  Rather than returning an incompletely signed
   572  	// transaction if any of the inputs to be signed can not be, the RPC
   573  	// immediately errors.
   574  	// repeated uint32 input_indexes = 3;
   575  	repeated AdditionalScript additional_scripts = 4;
   576  }
   577  message SignTransactionResponse {
   578  	bytes transaction = 1;
   579  	repeated uint32 unsigned_input_indexes = 2;
   580  }
   581  
   582  message SignTransactionsRequest {
   583  	message AdditionalScript {
   584  		bytes transaction_hash = 1;
   585  		uint32 output_index = 2;
   586  		int32 tree = 3;
   587  		bytes pk_script = 4;
   588  	}
   589  	message UnsignedTransaction {
   590  		bytes serialized_transaction = 1;
   591  	}
   592  
   593  	bytes passphrase = 1;
   594  	repeated UnsignedTransaction transactions = 2;
   595  	repeated AdditionalScript additional_scripts = 3;
   596  }
   597  message SignTransactionsResponse {
   598  	message SignedTransaction {
   599  		bytes transaction = 1;
   600  		repeated uint32 unsigned_input_indexes = 2;
   601  	}
   602  	repeated SignedTransaction transactions = 1;
   603  }
   604  
   605  message CreateSignatureRequest {
   606  	bytes passphrase = 1;
   607  	string address = 2;
   608  	bytes serialized_transaction = 3;
   609  	uint32 input_index = 4;
   610  	enum SigHashType {
   611  		SIGHASH_OLD = 0;
   612  		SIGHASH_ALL = 1;
   613  		SIGHASH_NONE = 2;
   614  		SIGHASH_SINGLE = 3;
   615  		SIGHASH_ALLVALUE = 4;
   616  		SIGHASH_ANYONECANPAY = 0x80;
   617  	}
   618  	SigHashType hash_type = 5;
   619  	bytes previous_pk_script = 6;
   620  }
   621  message CreateSignatureResponse {
   622  	bytes signature = 1;
   623  	bytes public_key = 2;
   624  }
   625  
   626  message PublishTransactionRequest {
   627  	bytes signed_transaction = 1;
   628  }
   629  message PublishTransactionResponse {
   630  	bytes transaction_hash = 1;
   631  }
   632  
   633  message PublishUnminedTransactionsRequest {}
   634  message PublishUnminedTransactionsResponse {}
   635  
   636  message PurchaseTicketsRequest {
   637  	bytes passphrase = 1;
   638  	uint32 account = 2;
   639  	int64 spend_limit = 3;
   640  	uint32 required_confirmations = 4;
   641  	string ticket_address = 5;
   642  	uint32 num_tickets = 6;
   643  	string pool_address = 7;
   644  	double pool_fees = 8;
   645  	uint32 expiry = 9;
   646  	int64 tx_fee = 10;
   647  	int64 ticket_fee = 11;
   648  	bool dont_sign_tx = 12;
   649  	string cspp_server = 13;
   650  	uint32 mixed_account = 14;
   651  	uint32 mixed_account_branch = 15;
   652  	uint32 mixed_split_account = 16;
   653  	uint32 change_account = 17;
   654  	string vsp_host = 18;
   655  	string vsp_pubkey = 19;
   656  	bool use_voting_account = 20;
   657  	uint32 voting_account = 21;
   658  }
   659  message PurchaseTicketsResponse {
   660  	repeated bytes ticket_hashes = 1;
   661  	repeated bytes tickets = 2;
   662  	bytes split_tx = 3;
   663  }
   664  
   665  message RevokeTicketRequest {
   666  	bytes ticket_hash = 1;
   667  }
   668  message RevokeTicketResponse {}
   669  
   670  message RevokeTicketsRequest {
   671  	bytes passphrase = 1;
   672  }
   673  message RevokeTicketsResponse {}
   674  
   675  message LoadActiveDataFiltersRequest {}
   676  message LoadActiveDataFiltersResponse {}
   677  
   678  message SignMessageRequest{
   679  	string address = 1;
   680  	string message = 2;
   681  	bytes passphrase = 3;
   682  }
   683  message SignMessageResponse{
   684  	bytes signature = 1;
   685  }
   686  
   687  message SignMessagesRequest{
   688  	message Message {
   689  		string address = 1;
   690  		string message = 2;
   691  	}
   692  	bytes passphrase = 1;
   693  	repeated Message messages = 2;
   694  }
   695  message SignMessagesResponse{
   696  	message SignReply {
   697  		bytes signature = 1;
   698  		string error = 2;
   699  	}
   700  	repeated SignReply replies = 1;
   701  }
   702  
   703  message TransactionNotificationsRequest {}
   704  message TransactionNotificationsResponse {
   705  	// Sorted by increasing height.  This is a repeated field so many new blocks
   706  	// in a new best chain can be notified at once during a reorganize.
   707  	repeated BlockDetails attached_blocks = 1;
   708  
   709  	// If there was a chain reorganize, there may have been blocks with wallet
   710  	// transactions that are no longer in the best chain.  These are those
   711  	// block's hashes.
   712  	repeated bytes detached_blocks = 2;
   713  
   714  	// Any new unmined transactions are included here.  These unmined transactions
   715  	// refer to the current best chain, so transactions from detached blocks may
   716  	// be moved to mempool and included here if they are not mined or double spent
   717  	// in the new chain.  Additionally, if no new blocks were attached but a relevant
   718  	// unmined transaction is seen by the wallet, it will be reported here.
   719  	repeated TransactionDetails unmined_transactions = 3;
   720  
   721  	// Instead of notifying all of the removed unmined transactions,
   722  	// just send all of the current hashes.
   723  	repeated bytes unmined_transaction_hashes = 4;
   724  
   725  	repeated DetachedBlockDetails detached_block_headers = 5;
   726  }
   727  
   728  message AccountNotificationsRequest {}
   729  message AccountNotificationsResponse {
   730  	uint32 account_number = 1;
   731  	string account_name = 2;
   732  	uint32 external_key_count = 3;
   733  	uint32 internal_key_count = 4;
   734  	uint32 imported_key_count = 5;
   735  }
   736  
   737  message ConfirmationNotificationsRequest {
   738      repeated bytes tx_hashes = 1;
   739      int32 stop_after = 2;
   740  }
   741  message ConfirmationNotificationsResponse {
   742      message TransactionConfirmations {
   743          bytes tx_hash = 1;
   744          int32 confirmations = 2;
   745          bytes block_hash = 3;
   746          int32 block_height = 4;
   747      }
   748      repeated TransactionConfirmations confirmations = 1;
   749  }
   750  
   751  message CreateWalletRequest {
   752  	bytes public_passphrase = 1;
   753  	bytes private_passphrase = 2;
   754  	bytes seed = 3;
   755  }
   756  message CreateWalletResponse {}
   757  
   758  message CreateWatchingOnlyWalletRequest {
   759  	string extended_pub_key = 1;
   760  	bytes public_passphrase = 2;
   761  }
   762  message CreateWatchingOnlyWalletResponse {}
   763  
   764  message OpenWalletRequest {
   765  	bytes public_passphrase = 1;
   766  }
   767  message OpenWalletResponse {
   768  	bool watching_only = 1;
   769  }
   770  
   771  message CloseWalletRequest {}
   772  message CloseWalletResponse {}
   773  
   774  message WalletExistsRequest {}
   775  message WalletExistsResponse {
   776  	bool exists = 1;
   777  }
   778  
   779  message StartConsensusRpcRequest {
   780  	string network_address = 1;
   781  	string username = 2;
   782  	bytes password = 3;
   783  	bytes certificate = 4;
   784  }
   785  message StartConsensusRpcResponse {}
   786  
   787  message DiscoverAddressesRequest {
   788  	bool discover_accounts = 1;
   789  	bytes private_passphrase = 2;
   790  	bytes starting_block_hash = 3;
   791  }
   792  message DiscoverAddressesResponse {}
   793  
   794  message FetchMissingCFiltersRequest {}
   795  message FetchMissingCFiltersResponse {}
   796  
   797  message SubscribeToBlockNotificationsRequest {}
   798  message SubscribeToBlockNotificationsResponse {}
   799  
   800  message FetchHeadersRequest {}
   801  message FetchHeadersResponse {
   802  	uint32 fetched_headers_count = 1;
   803  	bytes first_new_block_hash = 2;
   804  	int32 first_new_block_height = 3;
   805  	bytes main_chain_tip_block_hash = 4;
   806  	int32 main_chain_tip_block_height = 5;
   807  }
   808  
   809  enum SyncNotificationType {
   810  	SYNCED = 0;
   811  	UNSYNCED = 1;
   812  	PEER_CONNECTED = 2;
   813  	PEER_DISCONNECTED = 3;
   814  	FETCHED_MISSING_CFILTERS_STARTED = 4;
   815  	FETCHED_MISSING_CFILTERS_PROGRESS = 5;
   816  	FETCHED_MISSING_CFILTERS_FINISHED = 6;
   817  	FETCHED_HEADERS_STARTED  = 7;
   818  	FETCHED_HEADERS_PROGRESS  = 8;
   819  	FETCHED_HEADERS_FINISHED  = 9;
   820  	DISCOVER_ADDRESSES_STARTED = 10;
   821  	DISCOVER_ADDRESSES_FINISHED = 11;
   822  	RESCAN_STARTED = 12;
   823  	RESCAN_PROGRESS = 13;
   824  	RESCAN_FINISHED = 14;
   825  }
   826  
   827  message FetchHeadersNotification {
   828  	int32 fetched_headers_count = 1;
   829  	int64 last_header_time = 2;
   830  }
   831  
   832  message FetchMissingCFiltersNotification {
   833  	int32 fetched_cfilters_start_height = 1;
   834  	int32 fetched_cfilters_end_height = 2;
   835  }
   836  
   837  message RescanProgressNotification {
   838  	int32 rescanned_through = 1;
   839  }
   840  
   841  message PeerNotification {
   842  	int32 peer_count = 1;
   843  	string address = 2;
   844  }
   845  
   846  message RpcSyncRequest {
   847  	string network_address = 1;
   848  	string username = 2;
   849  	bytes password = 3;
   850  	bytes certificate = 4;
   851  	bool discover_accounts = 5;
   852  	bytes private_passphrase = 6;
   853  }
   854  message RpcSyncResponse {
   855  	bool synced = 1;
   856  	SyncNotificationType notification_type = 2;
   857  	FetchHeadersNotification fetch_headers = 3;
   858  	FetchMissingCFiltersNotification fetch_missing_cfilters = 4;
   859  	RescanProgressNotification rescan_progress = 5;
   860  	PeerNotification peer_information = 6;
   861  }
   862  
   863  message SpvSyncRequest {
   864  	bool discover_accounts = 1;
   865  	bytes private_passphrase = 2;
   866  	repeated string spv_connect = 3;
   867  }
   868  message SpvSyncResponse {
   869  	bool synced = 1;
   870  	SyncNotificationType notification_type = 2;
   871  	FetchHeadersNotification fetch_headers = 3;
   872  	FetchMissingCFiltersNotification fetch_missing_cfilters = 4;
   873  	RescanProgressNotification rescan_progress = 5;
   874  	PeerNotification peer_information = 6;
   875  }
   876  
   877  message RescanPointRequest {}
   878  message RescanPointResponse {
   879  	bytes rescan_point_hash = 1;
   880  }
   881  
   882  message GenerateRandomSeedRequest {
   883  	uint32 seed_length = 1;
   884  }
   885  message GenerateRandomSeedResponse {
   886  	bytes seed_bytes = 1;
   887  	string seed_hex = 2;
   888  	string seed_mnemonic = 3;
   889  }
   890  
   891  message DecodeSeedRequest {
   892  	string user_input = 1;
   893  }
   894  message DecodeSeedResponse {
   895  	bytes decoded_seed = 1;
   896  }
   897  
   898  message RunTicketBuyerRequest {
   899  	bytes passphrase = 1;
   900  	uint32 account = 2;
   901  	uint32 voting_account = 3;
   902  	int64 balance_to_maintain = 4;
   903  	string voting_address = 5;
   904  	string pool_address = 6;
   905  	double pool_fees = 7;
   906  	string vsp_host = 8;
   907  	string vsp_pubkey = 9;
   908  	int32 limit = 10;
   909  	string cspp_server = 11;
   910  	uint32 mixed_account = 12;
   911  	uint32 mixed_account_branch = 13;
   912  	uint32 mixed_split_account = 14;
   913  	uint32 change_account = 15;
   914  }
   915  
   916  message RunTicketBuyerResponse {}
   917  
   918  message RunAccountMixerRequest {
   919  	bytes passphrase = 1;
   920  	uint32 mixed_account = 2;
   921  	uint32 mixed_account_branch = 3;
   922  	uint32 change_account = 4;
   923  	string cspp_server = 5;
   924  }
   925  
   926  message RunAccountMixerResponse {}
   927  
   928  message StartAutoBuyerRequest {
   929  	bytes passphrase = 1;
   930  	uint32 account = 2;
   931  	int64 balance_to_maintain = 3;
   932  	int64 max_fee_per_kb = 4;
   933  	double max_price_relative = 5;
   934  	int64 max_price_absolute = 6;
   935  	string voting_address = 7;
   936  	string pool_address = 8;
   937  	double pool_fees = 9;
   938  	int64 max_per_block = 10;
   939  }
   940  message StartAutoBuyerResponse {}
   941  
   942  message StopAutoBuyerRequest {}
   943  message StopAutoBuyerResponse {}
   944  message TicketBuyerConfigRequest{
   945  }
   946  
   947  message TicketBuyerConfigResponse{
   948      uint32 account = 1;
   949      string avg_price_mode = 2;
   950      int64 avg_priceVWAP_delta = 3;
   951      int64 balance_to_maintain = 4;
   952      int64 blocks_to_avg = 5;
   953      bool dont_wait_for_tickets = 6;
   954      int64 expiry_delta = 7;
   955      string fee_source = 8;
   956      double fee_target_scaling = 9;
   957      int64 min_fee = 10;
   958      int64 max_fee = 12;
   959      int64 max_per_block = 13;
   960      int64 max_price_absolute = 14;
   961      double max_price_relative = 15;
   962      int64 max_in_mempool = 17;
   963      string pool_address = 18;
   964      double pool_fees = 19;
   965      bool spread_ticket_purchases = 20;
   966      string voting_address = 21;
   967      int64 tx_fee = 22;
   968  }
   969  
   970  message SetAccountRequest{
   971      uint32 account = 1;
   972  }
   973  message SetAccountResponse{}
   974  
   975  message SetBalanceToMaintainRequest{
   976      int64 balance_to_maintain = 1;
   977  }
   978  message SetBalanceToMaintainResponse{}
   979  
   980  message SetMaxFeeRequest{
   981      int64 max_fee_per_kb = 1;
   982  }
   983  message SetMaxFeeResponse{}
   984  
   985  message SetMaxPriceRelativeRequest{
   986      double max_price_relative = 1;
   987  }
   988  message SetMaxPriceRelativeResponse{}
   989  
   990  message SetMaxPriceAbsoluteRequest{
   991      int64 max_price_absolute = 1;
   992  }
   993  message SetMaxPriceAbsoluteResponse{}
   994  
   995  message SetVotingAddressRequest{
   996      string voting_address = 1;
   997  }
   998  message SetVotingAddressResponse{}
   999  
  1000  message SetPoolAddressRequest{
  1001      string pool_address = 1;
  1002  }
  1003  message SetPoolAddressResponse{}
  1004  
  1005  message SetPoolFeesRequest{
  1006      double pool_fees = 1;
  1007  }
  1008  message SetPoolFeesResponse{}
  1009  
  1010  message SetMaxPerBlockRequest{
  1011      int64 max_per_block = 1;
  1012  }
  1013  message SetMaxPerBlockResponse{}
  1014  
  1015  message AgendasRequest {}
  1016  message AgendasResponse {
  1017  	message Agenda {
  1018  		string id = 1;
  1019  		string description = 2;
  1020  		uint32 mask = 3;
  1021  		repeated Choice choices = 4;
  1022  		int64 start_time = 5;
  1023  		int64 expire_time = 6;
  1024  	}
  1025  	message Choice {
  1026  		string id = 1;
  1027  		string description = 2;
  1028  		uint32 bits = 3;
  1029  		bool is_abstain = 4;
  1030  		bool is_no = 5;
  1031  	}
  1032  	uint32 version = 1;
  1033  	repeated Agenda agendas = 2;
  1034  }
  1035  
  1036  message VoteChoicesRequest {
  1037  	bytes ticket_hash = 1;
  1038  }
  1039  message VoteChoicesResponse {
  1040  	message Choice {
  1041  		string agenda_id = 1;
  1042  		string agenda_description = 2;
  1043  		string choice_id = 3;
  1044  		string choice_description = 4;
  1045  	}
  1046  	uint32 version = 1;
  1047  	repeated Choice choices = 2;
  1048  	uint32 votebits = 3;
  1049  }
  1050  
  1051  message SetVoteChoicesRequest {
  1052  	message Choice {
  1053  		string agenda_id = 1;
  1054  		string choice_id = 2;
  1055  	}
  1056  	repeated Choice choices = 1;
  1057  	bytes ticket_hash = 2;
  1058  }
  1059  message SetVoteChoicesResponse {
  1060  	uint32 votebits = 1;
  1061  }
  1062  
  1063  message TSpendPoliciesRequest {	
  1064  	bytes hash = 1;
  1065  	bytes ticket_hash = 2;
  1066  }
  1067  
  1068  message TSpendPoliciesResponse {
  1069  	message Policy {
  1070  		bytes hash = 1;
  1071  		string policy = 2;
  1072  		bytes ticket_hash = 3;
  1073  	}
  1074  	repeated Policy policies = 1;
  1075  }
  1076  
  1077  message SetTSpendPolicyRequest {
  1078  	bytes hash = 1;
  1079  	string policy = 2;
  1080  	bytes ticket_hash = 3;
  1081  }
  1082  
  1083  message SetTSpendPolicyResponse {}
  1084  
  1085  message TreasuryPoliciesRequest {}
  1086  
  1087  message TreasuryPoliciesResponse {
  1088  	message Policy {
  1089  		bytes key = 1;
  1090  		string policy = 2;
  1091  		bytes ticket_hash = 3;
  1092  	}
  1093  	repeated Policy policies = 1;
  1094  }
  1095  
  1096  message SetTreasuryPolicyRequest {
  1097  	bytes key = 1;
  1098  	string policy = 2;
  1099  	bytes ticket_hash = 3;
  1100  }
  1101  
  1102  message SetTreasuryPolicyResponse {}
  1103  
  1104  message VerifyMessageRequest {
  1105  	string address = 1;
  1106  	string message = 2;
  1107  	bytes signature = 3;
  1108  }
  1109  message VerifyMessageResponse {
  1110  	bool valid = 1;
  1111  }
  1112  
  1113  service DecodeMessageService {
  1114  	rpc DecodeRawTransaction (DecodeRawTransactionRequest) returns (DecodeRawTransactionResponse);
  1115  }
  1116  
  1117  message DecodedTransaction {
  1118  	message Input {
  1119  		bytes previous_transaction_hash = 1;
  1120  		uint32 previous_transaction_index = 2;
  1121  		enum TreeType {
  1122  			REGULAR = 0;
  1123  			UNKNOWN = -1;
  1124  			STAKE = 1;
  1125  		}
  1126  		TreeType tree = 3;
  1127  		uint32 sequence = 4;
  1128  		int64 amount_in = 5;
  1129  		uint32 block_height = 6;
  1130  		uint32 block_index = 7;
  1131  		bytes signature_script = 8;
  1132  		string signature_script_asm = 9;
  1133  	}
  1134  	message Output {
  1135  		int64 value = 1;
  1136  		uint32 index = 2;
  1137  		int32 version = 3;
  1138  		bytes script = 4;
  1139  		string script_asm = 5;
  1140  		int32 required_signatures = 6;
  1141  		enum ScriptClass {
  1142  			NON_STANDARD = 0;
  1143  			PUB_KEY = 1;
  1144  			PUB_KEY_HASH = 2;
  1145  			SCRIPT_HASH = 3;
  1146  			MULTI_SIG = 4;
  1147  			NULL_DATA = 5;
  1148  			STAKE_SUBMISSION = 6;
  1149  			STAKE_GEN = 7;
  1150  			STAKE_REVOCATION = 8;
  1151  			STAKE_SUB_CHANGE = 9;
  1152  			PUB_KEY_ALT = 10;
  1153  			PUB_KEY_HASH_ALT = 11;
  1154  			TGEN = 12;
  1155  			TADD = 13;
  1156  		}
  1157  		ScriptClass script_class = 7;
  1158  		repeated string addresses = 8;
  1159  		int64 commitment_amount = 9;
  1160  	}
  1161  	bytes transaction_hash = 1;
  1162  	int32 version = 2;
  1163  	uint32 lock_time = 3;
  1164  	uint32 expiry = 4;
  1165  	TransactionDetails.TransactionType transaction_type = 5;
  1166  	repeated Input inputs = 6;
  1167  	repeated Output outputs = 7;
  1168  }
  1169  
  1170  message DecodeRawTransactionRequest {
  1171  	bytes serialized_transaction = 1;
  1172  }
  1173  message DecodeRawTransactionResponse {
  1174  	DecodedTransaction transaction = 1;
  1175  }
  1176  
  1177  message ValidateAddressRequest {
  1178  	string address = 1;
  1179  }
  1180  
  1181  message ValidateAddressResponse {
  1182  	bool is_valid = 1;
  1183  	bool is_mine = 2;
  1184  	uint32 account_number = 3;
  1185  	string pub_key_addr = 4;
  1186  	bytes pub_key = 5;
  1187  	bool is_script = 6;
  1188  	repeated string pk_script_addrs = 7;
  1189  	enum ScriptType {
  1190  		NonStandardTy = 0;
  1191  		PubKeyTy  = 1;
  1192  		PubKeyHashTy = 2;
  1193  		ScriptHashTy = 3;
  1194  		MultiSigTy = 4;
  1195  		NullDataTy = 5;
  1196  		StakeSubmissionTy = 6;
  1197  		StakeGenTy = 7;
  1198  		StakeRevocationTy = 8;
  1199  		StakeSubChangeTy = 9;
  1200  		PubkeyAltTy = 10;
  1201  		PubkeyHashAltTy = 11;
  1202  		TreasuryGenTy = 12;
  1203  		TreasuryAddTy = 13;
  1204  	}
  1205  	ScriptType script_type = 8;
  1206  	bytes pay_to_addr_script = 9;
  1207  	uint32 sigs_required = 10;
  1208  	bool is_internal = 11;
  1209  	uint32 index = 12;
  1210  }
  1211  
  1212  message CommittedTicketsRequest {
  1213  	repeated bytes tickets = 1;
  1214  }
  1215  
  1216  message GetAccountExtendedPubKeyRequest {
  1217  	uint32 account_number = 1;
  1218  }
  1219  
  1220  message GetAccountExtendedPubKeyResponse {
  1221  	string acc_extended_pub_key = 1;
  1222  }
  1223  
  1224  message GetAccountExtendedPrivKeyRequest {
  1225  	uint32 account_number = 1;
  1226  	bytes passphrase = 2;
  1227  }
  1228  
  1229  message GetAccountExtendedPrivKeyResponse {
  1230  	string acc_extended_priv_key = 1;
  1231  }
  1232  
  1233  message CommittedTicketsResponse {
  1234  	message TicketAddress {
  1235  		bytes ticket = 1;
  1236  		string address = 2;
  1237  	}
  1238  	repeated TicketAddress ticketAddresses = 1;
  1239  }
  1240  
  1241  message BestBlockRequest {
  1242  }
  1243  
  1244  message BestBlockResponse {
  1245  	uint32 height = 1;
  1246  	bytes hash = 2;
  1247  }
  1248  
  1249  message SweepAccountRequest {
  1250  	string source_account = 1;
  1251  	string destination_address = 2;
  1252  	uint32 required_confirmations = 3;
  1253  	double fee_per_kb = 4;
  1254  }
  1255  
  1256  message SweepAccountResponse {
  1257  	bytes unsigned_transaction = 1;
  1258  	int64 total_previous_output_amount = 2;
  1259  	int64 total_output_amount = 3;
  1260  	uint32 estimated_signed_size = 4;
  1261  }
  1262  
  1263  message AbandonTransactionRequest{
  1264  	bytes transaction_hash = 1;
  1265  }
  1266  message AbandonTransactionResponse {
  1267  }
  1268  
  1269  message SignHashesRequest {
  1270  	bytes passphrase = 1;
  1271  	string address = 2;
  1272  	repeated bytes hashes = 3;
  1273  }
  1274  
  1275  message SignHashesResponse {
  1276  	bytes public_key = 1;
  1277  	repeated bytes signatures = 2;
  1278  }
  1279  
  1280  message SpenderRequest {
  1281  	bytes transaction_hash = 1;
  1282  	uint32 index = 2;
  1283  }
  1284  message SpenderResponse {
  1285  	bytes spender_transaction = 1;
  1286  	uint32 input_index = 2;
  1287  }
  1288  
  1289  message GetCFiltersRequest {
  1290  	bytes starting_block_hash = 1;
  1291  	sint32 starting_block_height = 2;
  1292  	bytes ending_block_hash = 3;
  1293  	sint32 ending_block_height = 4;
  1294  }
  1295  
  1296  message GetCFiltersResponse {
  1297  	bytes key = 1;
  1298  	bytes filter = 2;
  1299  	bytes block_hash = 3;
  1300  }
  1301  
  1302  message GetRawBlockRequest {
  1303  	bytes block_hash = 1;
  1304  	sint32 block_height = 2;
  1305  }
  1306  
  1307  message GetRawBlockResponse {
  1308  	bytes block = 1;
  1309  }
  1310  
  1311  message GetCoinjoinOutputspByAcctRequest {}
  1312  
  1313  message coinjoinTxsSumByAcct {
  1314  	uint32 account_number = 1;
  1315  	int32 coinjoin_txs_sum = 2;
  1316  }
  1317  
  1318  message GetCoinjoinOutputspByAcctResponse {
  1319  	repeated coinjoinTxsSumByAcct data = 1;
  1320  }
  1321  
  1322  message SetAccountPassphraseRequest {
  1323  	bytes account_passphrase = 1;
  1324  	bytes new_account_passphrase = 2;
  1325  	uint32 account_number = 3;
  1326  	// used only in case account pass not yet set.
  1327  	bytes wallet_passphrase = 4;
  1328  }
  1329  
  1330  message UnlockAccountRequest {
  1331  	bytes passphrase = 1;
  1332  	uint32 account_number = 2;
  1333  }
  1334  
  1335  message LockAccountRequest {
  1336  	uint32 account_number = 1;
  1337  }
  1338  
  1339  message SetAccountPassphraseResponse {}
  1340  
  1341  message UnlockAccountResponse {}
  1342  
  1343  message LockAccountResponse {}
  1344  
  1345  message AccountUnlockedRequest {
  1346  	uint32 account_number = 1;
  1347  }
  1348  
  1349  message AccountUnlockedResponse {
  1350  	bool unlocked = 1;
  1351  }
  1352  
  1353  message UnlockWalletRequest {
  1354  	bytes passphrase = 1;
  1355  }
  1356  message UnlockWalletResponse {}
  1357  
  1358  message LockWalletRequest {}
  1359  message LockWalletResponse {}
  1360  
  1361  message GetPeerInfoRequest {}
  1362  message GetPeerInfoResponse {
  1363  	message PeerInfo {
  1364  		int32 id = 1;
  1365  		string addr = 2;
  1366  		string addr_local = 3;
  1367  		string services = 4;
  1368  		uint32 version = 5;
  1369  		string sub_ver = 6;
  1370  		int64 starting_height = 7;
  1371  		int32 ban_score = 8;
  1372  	}
  1373  	repeated PeerInfo peer_info = 1;
  1374  }
  1375  
  1376  message SyncVSPTicketsRequest {
  1377  	string vsp_host = 1;
  1378  	string vsp_pubkey = 2;
  1379  	uint32 account = 3;
  1380  	uint32 change_account = 4;
  1381  }
  1382  
  1383  message SyncVSPTicketsResponse {}
  1384  
  1385  message GetVSPTicketsByFeeStatusRequest {
  1386  	enum FeeStatus {
  1387  		VSP_FEE_PROCESS_STARTED = 0;
  1388  		VSP_FEE_PROCESS_PAID = 1;
  1389  		VSP_FEE_PROCESS_ERRORED = 2;
  1390  		VSP_FEE_PROCESS_CONFIRMED = 3;
  1391  	}
  1392  	FeeStatus fee_status = 3;
  1393  }
  1394  
  1395  message GetVSPTicketsByFeeStatusResponse {
  1396  	repeated bytes tickets_hashes = 1;
  1397  }
  1398  
  1399  message ProcessManagedTicketsRequest {
  1400  	string vsp_host = 1;
  1401  	string vsp_pubkey = 2;
  1402  	uint32 fee_account = 3;
  1403  	uint32 change_account = 4;
  1404  }
  1405  
  1406  message ProcessManagedTicketsResponse {}
  1407  
  1408  message ProcessUnmanagedTicketsRequest {
  1409  	string vsp_host = 1;
  1410  	string vsp_pubkey = 2;
  1411  	uint32 fee_account = 3;
  1412  	uint32 change_account = 4;
  1413  }
  1414  
  1415  message ProcessUnmanagedTicketsResponse {}
  1416  
  1417  message SetVspdVoteChoicesRequest {
  1418  	string vsp_host = 1;
  1419  	string vsp_pubkey = 2;
  1420  	uint32 fee_account = 3;
  1421  	uint32 change_account = 4;
  1422  }
  1423  
  1424  message SetVspdVoteChoicesResponse {}
  1425  
  1426  message GetTrackedVSPTicketsRequest {}
  1427  
  1428  message GetTrackedVSPTicketsResponse {
  1429  	message Ticket {
  1430  		bytes ticket_hash = 1;
  1431  		string voting_address = 2;
  1432  		string commitment_address = 3;
  1433  		uint32 state = 4;
  1434  		int64 fee = 5;
  1435  		bytes fee_hash = 6;
  1436  	}
  1437  	message VSP {
  1438  		string host = 1;
  1439  		repeated Ticket tickets = 2;
  1440  	}
  1441  
  1442  	repeated VSP vsps = 1;
  1443  }
  1444  
  1445  message DiscoverUsageRequest {
  1446  	bool discover_accounts = 1;
  1447  	uint32 gap_limit = 2;
  1448  	bytes starting_block_hash = 3;
  1449  }
  1450  
  1451  message DiscoverUsageResponse {}