# Emitting events

To emit an event from a program, use the `emit` statement:

```
pub contract Events {
    event FooEvent(x: Int, y: Int)

    // Event with argument labels
    event BarEvent(labelA fieldA: Int, labelB fieldB: Int)

    fun events() {
        emit FooEvent(x: 1, y: 2)

        // Emit event with explicit argument labels
        // Note that the emitted event will only contain the field names,
        // not the argument labels used at the invocation site.
        emit FooEvent(labelA: 1, labelB: 2)
    }
}
```

Emitting events has the following restrictions:

* Events can only be invoked in an `emit` statement.

  This means events cannot be assigned to variables or used as function parameters.
* Events can only be emitted from the location in which they are declared.
