Skip to main content

evm_lens_core/storage/resolvers/
metadata.rs

1use async_trait::async_trait;
2
3use crate::storage::layout::{Provenance, StorageEntry, StorageLayout, StorageType};
4use crate::storage::resolver::StorageLayoutResolver;
5
6/// Minimal placeholder for a metadata-based resolver.
7/// v0.3 aims for conservative approach: try to parse embedded metadata if present.
8pub struct MetadataResolver;
9
10#[async_trait]
11impl StorageLayoutResolver for MetadataResolver {
12    async fn resolve(&self, _input: &[u8]) -> color_eyre::Result<Option<StorageLayout>> {
13        // For v0.3.0, we keep this minimal. Real implementation would attempt to decode
14        // compiler metadata and extract storage layout. Returning None means fallback.
15        let _ = _input;
16        Ok(None)
17    }
18}
19
20#[allow(dead_code)]
21fn layout_from_metadata_example() -> StorageLayout {
22    let mut l = StorageLayout::new();
23    l.add_entry(StorageEntry {
24        slot: 0,
25        offset: None,
26        size: None,
27        r#type: StorageType::Uint { bits: 256 },
28        label: Some("example".to_string()),
29        provenance: Provenance::CompilerMetadata,
30    });
31    l
32}