use std::net::SocketAddr;
use af_sui_types::Address as SuiAddress;
use jsonrpsee::proc_macros::rpc;
use crate::msgs::{
DevInspectArgs,
DevInspectResults,
DryRunTransactionBlockResponse,
ExecuteTransactionRequestType,
SuiTransactionBlockResponse,
SuiTransactionBlockResponseOptions,
};
use crate::serde::BigInt;
#[rpc(client, namespace = "sui")]
pub trait WriteApi {
#[method(name = "executeTransactionBlock")]
async fn execute_transaction_block(
&self,
tx_bytes: String,
signatures: Vec<String>,
options: Option<SuiTransactionBlockResponseOptions>,
request_type: Option<ExecuteTransactionRequestType>,
) -> RpcResult<SuiTransactionBlockResponse>;
#[method(name = "monitoredExecuteTransactionBlock")]
async fn monitored_execute_transaction_block(
&self,
tx_bytes: String,
signatures: Vec<String>,
options: Option<SuiTransactionBlockResponseOptions>,
request_type: Option<ExecuteTransactionRequestType>,
client_addr: Option<SocketAddr>,
) -> RpcResult<SuiTransactionBlockResponse>;
#[method(name = "devInspectTransactionBlock")]
async fn dev_inspect_transaction_block(
&self,
sender_address: SuiAddress,
tx_bytes: String,
gas_price: Option<BigInt<u64>>,
epoch: Option<BigInt<u64>>,
additional_args: Option<DevInspectArgs>,
) -> RpcResult<DevInspectResults>;
#[method(name = "dryRunTransactionBlock")]
async fn dry_run_transaction_block(
&self,
tx_bytes: String,
) -> RpcResult<DryRunTransactionBlockResponse>;
}