use std::net::SocketAddr;
use jsonrpsee::proc_macros::rpc;
use sui_sdk_types::Address;
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: Address,
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>;
}