sui_jsonrpc/api/
indexer.rs1use jsonrpsee::proc_macros::rpc;
5use sui_sdk_types::{Address, Digest};
6
7use crate::msgs::{
8 DynamicFieldName,
9 DynamicFieldPage,
10 EventFilter,
11 EventID,
12 EventPage,
13 ObjectsPage,
14 Page,
15 SuiEvent,
16 SuiObjectResponse,
17 SuiObjectResponseQuery,
18 SuiTransactionBlockEffects,
19 SuiTransactionBlockResponseQuery,
20 TransactionBlocksPage,
21 TransactionFilter,
22};
23
24#[rpc(client, namespace = "suix")]
25pub trait IndexerApi {
26 #[method(name = "getOwnedObjects")]
32 async fn get_owned_objects(
33 &self,
34 address: Address,
35 query: Option<SuiObjectResponseQuery>,
36 cursor: Option<Address>,
37 limit: Option<usize>,
38 ) -> RpcResult<ObjectsPage>;
39
40 #[method(name = "queryTransactionBlocks")]
42 async fn query_transaction_blocks(
43 &self,
44 query: SuiTransactionBlockResponseQuery,
45 cursor: Option<Digest>,
46 limit: Option<usize>,
47 descending_order: Option<bool>,
48 ) -> RpcResult<TransactionBlocksPage>;
49
50 #[method(name = "queryEvents")]
52 async fn query_events(
53 &self,
54 query: EventFilter,
55 cursor: Option<EventID>,
56 limit: Option<usize>,
57 descending_order: Option<bool>,
58 ) -> RpcResult<EventPage>;
59
60 #[subscription(name = "subscribeEvent", item = SuiEvent)]
62 fn subscribe_event(&self, filter: EventFilter);
63
64 #[subscription(name = "subscribeTransaction", item = SuiTransactionBlockEffects)]
66 fn subscribe_transaction(&self, filter: TransactionFilter);
67
68 #[method(name = "getDynamicFields")]
70 async fn get_dynamic_fields(
71 &self,
72 parent_object_id: Address,
73 cursor: Option<Address>,
74 limit: Option<usize>,
75 ) -> RpcResult<DynamicFieldPage>;
76
77 #[method(name = "getDynamicFieldObject")]
79 async fn get_dynamic_field_object(
80 &self,
81 parent_object_id: Address,
82 name: DynamicFieldName,
83 ) -> RpcResult<SuiObjectResponse>;
84
85 #[method(name = "resolveNameServiceAddress")]
87 async fn resolve_name_service_address(&self, name: String) -> RpcResult<Option<Address>>;
88
89 #[method(name = "resolveNameServiceNames")]
92 async fn resolve_name_service_names(
93 &self,
94 address: Address,
95 cursor: Option<Address>,
96 limit: Option<usize>,
97 ) -> RpcResult<Page<String, Address>>;
98}