# Events

Events are responsible to warn the user that an action has to be taken. Those actions can be signing a new payload, or that the transactions went through.

## Scheduling

Schedule new Vertices events. Make sure to process them afterward to have the SDK process the queued events.

### Parameters

* `evt` : event to be processed

```c
typedef struct
{
    vtc_evt_type_t type; ///< \see vtc_evt_type_t
    size_t bufid; ///< internal buffer ID, used to identify a pending transaction
} vtc_evt_t;


typedef enum
{
    VTC_EVT_TX_READY_TO_SIGN = 0, ///< transaction's payload must be signed: the user must provide the signing function and emit the \c VTC_EVT_TX_READY_TO_SEND event.
    VTC_EVT_TX_SENDING, ///< transaction is being sent to the blockchain API. When the user got the event, the transaction has probably been already sent.
    VTC_EVT_TX_SUCCESS, ///< transaction has been successfully sent and executed, after that event, the buffer is freed.
} vtc_evt_type_t;
```

### Return codes

* `VTC_SUCCESS` on success.
* `VTC_ERROR_NO_MEM` when event queue is full: either process events or increase `VTC_EVENTS_COUNT`.

## Processing

Call this function to have the Vertices SDK process pending events. Whenever calling a Vertices function, make sure to process all the events. To make sure all the events are processed, this function should be called from an infinite loop or OS thread/task. This function will call the user-defined callback if one has been passed when using  `vertices_new`

```
/// \param queue_size
/// \return \c VTC_SUCCESS if event has correctly been processed
ret_code_t
vertices_event_process(size_t *queue_size);

```

### Parameters

`queue_size` : Pointer to `size_t` value that will be replaced with the Vertices interval queue size defining the number of events to be processed.

### Return code

* `VTC_SUCCESS` when the event is correctly processed.&#x20;
* Error code from the event.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.vertices.network/vertices-sdk/api-reference/events.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
