cairo_lang_sierra/extensions/modules/starknet/
emit_event.rs

1use super::felt252_span_ty;
2use super::syscalls::SyscallGenericLibfunc;
3use crate::extensions::SpecializationError;
4use crate::extensions::lib_func::SignatureSpecializationContext;
5
6/// Libfunc for an emit event system call.
7#[derive(Default)]
8pub struct EmitEventLibfunc {}
9impl SyscallGenericLibfunc for EmitEventLibfunc {
10    const STR_ID: &'static str = "emit_event_syscall";
11
12    fn input_tys(
13        context: &dyn SignatureSpecializationContext,
14    ) -> Result<Vec<crate::ids::ConcreteTypeId>, SpecializationError> {
15        let span_ty = felt252_span_ty(context)?;
16        Ok(vec![
17            // keys
18            span_ty.clone(),
19            // data
20            span_ty,
21        ])
22    }
23
24    fn success_output_tys(
25        _context: &dyn SignatureSpecializationContext,
26    ) -> Result<Vec<crate::ids::ConcreteTypeId>, SpecializationError> {
27        Ok(vec![])
28    }
29}