> For the complete documentation index, see [llms.txt](https://docs.1layer.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.1layer.io/readme/architechture/smart-contracts/broadcaster-components-diagram.md).

# Broadcaster Components Diagram

This page contains the components diagram for the Operator Role.

<figure><img src="https://1938749682-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fs1LS2dIjuXAQlecAuEJm%2Fuploads%2Fgit-blob-c6ddcd2074b32965f60b6f43a1f37dfaab296dff%2Fimage%20(7).png?alt=media" alt=""><figcaption></figcaption></figure>

This component diagram focuses on the **broadcaster** role and its interactions within the system. Here's a breakdown of the diagram:

1. Main Components:
   * RolesManager: Manages roles, including the MESSAGES\_BROADCASTER role.
   * Registry: Provides access to other components and configurations.
   * InterNetworkExecutor: Handles cross-network message execution.
   * Gateway: Processes cross-chain messages.
   * OneLayerGateway: An alternative gateway implementation.
   * Broadcaster: Represents the external entity with the broadcaster role.
2. Relationships:
   * Dashed lines with open arrows (..>) represent dependencies or usage.
3. Entry Points:
   * InterNetworkExecutor: The `execute(ExecutionMessage)` method is an entry point for the broadcaster.
   * OneLayerGateway: The `receiveMessage(CrossChainMessage)` method is another entry point for the broadcaster.
4. Key Interactions:
   * The Broadcaster interacts directly with InterNetworkExecutor and OneLayerGateway.
   * All components depend on the Registry for accessing other parts of the system.
   * The Registry uses the RolesManager to check roles.

<details>

<summary>Diagram Code</summary>

```mermaid
classDiagram
    class RolesManager {
        +MESSAGES_BROADCASTER
        +hasRole()
    }

    class Registry {
        +getRolesManager()
        +getInterNetworkExecutor()
        +getCentralGateway()
    }

    class InterNetworkExecutor {
        +execute(ExecutionMessage)
    }

    class OneLayerGateway {
        +receiveMessage(CrossChainMessage)
    }

    class Broadcaster["Broadcaster (External)"]

    Registry --> RolesManager : uses
    InterNetworkExecutor --> Registry : uses
    OneLayerGateway --> Registry : uses

    Broadcaster --> InterNetworkExecutor : calls
    Broadcaster --> OneLayerGateway : calls

    class InterNetworkExecutor {
        <<entrypoint>>
    }
    class OneLayerGateway {
        <<entrypoint>>
    }


```

</details>
