1use crate::prelude::*;
5
6pub trait Node: Send + Sync {
8    #[allow(clippy::new_ret_no_self)]
10    fn new(
11        inputs: Inputs,
12        outputs: Outputs,
13        queries: Queries,
14        queryables: Queryables,
15        configuration: serde_yml::Value,
16    ) -> tokio::task::JoinHandle<Result<Box<dyn Node>>>
17    where
18        Self: Sized;
19
20    fn start(self: Box<Self>) -> tokio::task::JoinHandle<Result<()>>;
22}
23
24pub type DynamicallyLinkedNodeInstance = fn(
26    Inputs,
27    Outputs,
28    Queries,
29    Queryables,
30    serde_yml::Value,
31) -> tokio::task::JoinHandle<Result<Box<dyn Node>>>;