1// Copyright (c) 2026 erik <erik@erik.xyz> — https://erik.xyz 2use async_trait::async_trait; 3use ecat_errors::Error; 4 5#[async_trait] 6pub trait GraphClient: Send + Sync { 7 async fn execute( 8 &self, 9 query: &str, 10 params: &serde_json::Value, 11 ) -> Result<serde_json::Value, Error>; 12}