Macro frame_support::decl_event[][src]

macro_rules! decl_event {
    ($(#[$attr : meta]) * pub enum Event < $evt_generic_param : ident
 $(, $instance : ident $(: $instantiable : ident) ?
   $(= $event_default_instance : path) ?) ? > where $($tt : tt) *) => { ... };
    ($(#[$attr : meta]) * pub enum Event { $($events : tt) * }) => { ... };
}
Expand description

Implement the Event for a module.

Simple Event Example:

frame_support::decl_event!(
   pub enum Event {
      Success,
      Failure(String),
   }
);

Generic Event Example:

trait Config {
    type Balance;
    type Token;
}

mod event1 {
    // Event that specifies the generic parameter explicitly (`Balance`).
    frame_support::decl_event!(
       pub enum Event<T> where Balance = <T as super::Config>::Balance {
          Message(Balance),
       }
    );
}

mod event2 {
    // Event that uses the generic parameter `Balance`.
    // If no name for the generic parameter is specified explicitly,
    // the name will be taken from the type name of the trait.
    frame_support::decl_event!(
       pub enum Event<T> where <T as super::Config>::Balance {
          Message(Balance),
       }
    );
}

mod event3 {
    // And we even support declaring multiple generic parameters!
    frame_support::decl_event!(
       pub enum Event<T> where <T as super::Config>::Balance, <T as super::Config>::Token {
          Message(Balance, Token),
       }
    );
}

The syntax for generic events requires the where.

Generic Event with Instance Example:

trait Config<I: Instance=DefaultInstance> {
    type Balance;
    type Token;
}

// For module with instances, DefaultInstance is optional
frame_support::decl_event!(
   pub enum Event<T, I: Instance = DefaultInstance> where
      <T as Config>::Balance,
      <T as Config>::Token
   {
      Message(Balance, Token),
   }
);