fuel_core_client/client/schema/
storage.rs1use crate::client::schema::{
2 AssetId,
3 Bytes32,
4 ContractId,
5 HexString,
6 U32,
7 contract::ContractBalance,
8 schema,
9};
10use fuel_core_types::fuel_tx;
11
12#[derive(cynic::QueryFragment, Clone, Debug)]
13#[cynic(
14 schema_path = "./assets/schema.sdl",
15 graphql_type = "Subscription",
16 variables = "ContractStorageSlotsArgs"
17)]
18pub struct ContractStorageSlots {
19 #[arguments(contractId: $contract_id)]
20 pub contract_storage_slots: StorageSlot,
21}
22
23#[derive(cynic::QueryVariables, Debug, Clone)]
24pub struct ContractStorageSlotsArgs {
25 pub contract_id: ContractId,
27}
28
29#[derive(cynic::QueryFragment, Clone, Debug)]
30#[cynic(
31 schema_path = "./assets/schema.sdl",
32 graphql_type = "Query",
33 variables = "ContractSlotValuesArgs"
34)]
35pub struct ContractSlotValues {
36 #[arguments(contractId: $contract_id, blockHeight: $block_height, storageSlots: $storage_slots)]
37 pub contract_slot_values: Vec<StorageSlot>,
38}
39
40#[derive(cynic::QueryVariables, Debug, Clone)]
41pub struct ContractSlotValuesArgs {
42 pub contract_id: ContractId,
43 pub block_height: Option<U32>,
44 pub storage_slots: Vec<Bytes32>,
45}
46
47#[derive(cynic::QueryFragment, Clone, Debug)]
48#[cynic(schema_path = "./assets/schema.sdl")]
49pub struct StorageSlot {
50 pub key: Bytes32,
51 pub value: HexString,
52}
53
54impl From<StorageSlot> for (fuel_tx::Bytes32, Vec<u8>) {
55 fn from(value: StorageSlot) -> Self {
56 (value.key.into(), value.value.into())
57 }
58}
59
60#[derive(cynic::QueryFragment, Clone, Debug)]
61#[cynic(
62 schema_path = "./assets/schema.sdl",
63 graphql_type = "Subscription",
64 variables = "ContractStorageBalancesArgs"
65)]
66pub struct ContractStorageBalances {
67 #[arguments(contractId: $contract_id)]
68 pub contract_storage_balances: ContractBalance,
69}
70
71#[derive(cynic::QueryVariables, Debug, Clone)]
72pub struct ContractStorageBalancesArgs {
73 pub contract_id: ContractId,
75}
76
77#[derive(cynic::QueryFragment, Clone, Debug)]
78#[cynic(
79 schema_path = "./assets/schema.sdl",
80 graphql_type = "Query",
81 variables = "ContractBalanceValuesArgs"
82)]
83pub struct ContractBalanceValues {
84 #[arguments(contractId: $contract_id, blockHeight: $block_height, assets: $assets)]
85 pub contract_balance_values: Vec<ContractBalance>,
86}
87
88#[derive(cynic::QueryVariables, Debug, Clone)]
89pub struct ContractBalanceValuesArgs {
90 pub contract_id: ContractId,
91 pub block_height: Option<U32>,
92 pub assets: Vec<AssetId>,
93}