miraland_banks_interface/
lib.rs1#![allow(deprecated)]
2
3use {
4 miraland_sdk::{
5 account::Account,
6 clock::Slot,
7 commitment_config::CommitmentLevel,
8 fee_calculator::FeeCalculator,
9 hash::Hash,
10 inner_instruction::InnerInstructions,
11 message::Message,
12 pubkey::Pubkey,
13 signature::Signature,
14 transaction::{self, TransactionError, VersionedTransaction},
15 transaction_context::TransactionReturnData,
16 },
17 serde::{Deserialize, Serialize},
18};
19
20#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
21pub enum TransactionConfirmationStatus {
22 Processed,
23 Confirmed,
24 Finalized,
25}
26
27#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
28pub struct TransactionStatus {
29 pub slot: Slot,
30 pub confirmations: Option<usize>, pub err: Option<TransactionError>,
32 pub confirmation_status: Option<TransactionConfirmationStatus>,
33}
34
35#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct TransactionSimulationDetails {
38 pub logs: Vec<String>,
39 pub units_consumed: u64,
40 pub return_data: Option<TransactionReturnData>,
41 pub inner_instructions: Option<Vec<InnerInstructions>>,
42}
43
44#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
45#[serde(rename_all = "camelCase")]
46pub struct TransactionMetadata {
47 pub log_messages: Vec<String>,
48 pub compute_units_consumed: u64,
49 pub return_data: Option<TransactionReturnData>,
50}
51
52#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
53pub struct BanksTransactionResultWithSimulation {
54 pub result: Option<transaction::Result<()>>,
55 pub simulation_details: Option<TransactionSimulationDetails>,
56}
57
58#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
59pub struct BanksTransactionResultWithMetadata {
60 pub result: transaction::Result<()>,
61 pub metadata: Option<TransactionMetadata>,
62}
63
64#[tarpc::service]
65pub trait Banks {
66 async fn send_transaction_with_context(transaction: VersionedTransaction);
67 #[deprecated(
68 since = "1.9.0",
69 note = "Please use `get_fee_for_message_with_commitment_and_context` instead"
70 )]
71 async fn get_fees_with_commitment_and_context(
72 commitment: CommitmentLevel,
73 ) -> (FeeCalculator, Hash, Slot);
74 async fn get_transaction_status_with_context(signature: Signature)
75 -> Option<TransactionStatus>;
76 async fn get_slot_with_context(commitment: CommitmentLevel) -> Slot;
77 async fn get_block_height_with_context(commitment: CommitmentLevel) -> u64;
78 async fn process_transaction_with_preflight_and_commitment_and_context(
79 transaction: VersionedTransaction,
80 commitment: CommitmentLevel,
81 ) -> BanksTransactionResultWithSimulation;
82 async fn process_transaction_with_commitment_and_context(
83 transaction: VersionedTransaction,
84 commitment: CommitmentLevel,
85 ) -> Option<transaction::Result<()>>;
86 async fn process_transaction_with_metadata_and_context(
87 transaction: VersionedTransaction,
88 ) -> BanksTransactionResultWithMetadata;
89 async fn simulate_transaction_with_commitment_and_context(
90 transaction: VersionedTransaction,
91 commitment: CommitmentLevel,
92 ) -> BanksTransactionResultWithSimulation;
93 async fn get_account_with_commitment_and_context(
94 address: Pubkey,
95 commitment: CommitmentLevel,
96 ) -> Option<Account>;
97 async fn get_latest_blockhash_with_context() -> Hash;
98 async fn get_latest_blockhash_with_commitment_and_context(
99 commitment: CommitmentLevel,
100 ) -> Option<(Hash, u64)>;
101 async fn get_fee_for_message_with_commitment_and_context(
102 message: Message,
103 commitment: CommitmentLevel,
104 ) -> Option<u64>;
105}
106
107#[cfg(test)]
108mod tests {
109 use {
110 super::*,
111 tarpc::{client, transport},
112 };
113
114 #[test]
115 fn test_banks_client_new() {
116 let (client_transport, _server_transport) = transport::channel::unbounded();
117 BanksClient::new(client::Config::default(), client_transport);
118 }
119}