Files
tycho-protocol-sdk/substreams/crates/tycho-substreams/src/entrypoint.rs
dianacarvalho1 a7841af383 feat: Add entrypoint utils and define EntryPointParams (#211)
* feat: Add entrypoint utils and define EntryPointParams

#time 23m


#time 0m

* fix: Make TraceData mandatory

#time 2m

* fix: Make component_id in EntryPointParams optional

#time 1m
2025-05-20 17:47:25 +01:00

53 lines
1.5 KiB
Rust

use crate::models::{entry_point_params::TraceData, EntryPoint, EntryPointParams};
fn get_entrypoint_id(target: &[u8], signature: &str) -> String {
let target = hex::encode(target);
format!("{target}:{signature}")
}
/// Creates an entrypoint and its parameters.
pub fn create_entrypoint(
target: Vec<u8>,
signature: String,
component_id: String,
trace_data: TraceData,
) -> (EntryPoint, EntryPointParams) {
let entrypoint_id = get_entrypoint_id(&target, &signature);
let entrypoint = EntryPoint {
id: entrypoint_id.clone(),
target,
signature,
component_id: component_id.clone(),
};
let entrypoint_params = EntryPointParams {
entrypoint_id,
component_id: Some(component_id),
trace_data: Some(trace_data),
};
(entrypoint, entrypoint_params)
}
// Adds EntryPointParams associated with an already existing Entrypoint.
pub fn add_entrypoint_params(
target: Vec<u8>,
signature: String,
trace_data: TraceData,
component_id: Option<String>,
) -> EntryPointParams {
EntryPointParams {
entrypoint_id: get_entrypoint_id(&target, &signature),
component_id,
trace_data: Some(trace_data),
}
}
// Adds a component to an existing Entrypoint.
pub fn add_component_to_entrypoint(
target: Vec<u8>,
signature: String,
component_id: String,
) -> EntryPoint {
let entrypoint_id = get_entrypoint_id(&target, &signature);
EntryPoint { id: entrypoint_id, target, signature, component_id }
}