use std::collections::BTreeMap;
use jsonrpsee::proc_macros::rpc;
use sui_sdk_types::Address;
use crate::msgs::{
MoveFunctionArgType, SuiMoveNormalizedFunction, SuiMoveNormalizedModule,
SuiMoveNormalizedStruct,
};
#[rpc(client, namespace = "sui")]
pub trait MoveUtils {
#[method(name = "getMoveFunctionArgTypes")]
async fn get_move_function_arg_types(
&self,
package: Address,
module: String,
function: String,
) -> RpcResult<Vec<MoveFunctionArgType>>;
#[method(name = "getNormalizedMoveModulesByPackage")]
async fn get_normalized_move_modules_by_package(
&self,
package: Address,
) -> RpcResult<BTreeMap<String, SuiMoveNormalizedModule>>;
#[method(name = "getNormalizedMoveModule")]
async fn get_normalized_move_module(
&self,
package: Address,
module_name: String,
) -> RpcResult<SuiMoveNormalizedModule>;
#[method(name = "getNormalizedMoveStruct")]
async fn get_normalized_move_struct(
&self,
package: Address,
module_name: String,
struct_name: String,
) -> RpcResult<SuiMoveNormalizedStruct>;
#[method(name = "getNormalizedMoveFunction")]
async fn get_normalized_move_function(
&self,
package: Address,
module_name: String,
function_name: String,
) -> RpcResult<SuiMoveNormalizedFunction>;
}