> 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/admin-components-diagram.md).

# Admin Components Diagram

<figure><img src="/files/wUEx6xHgEOPVL622nYMC" alt=""><figcaption></figcaption></figure>

This diagram focuses on the regular user role and its interactions within the system. Here's a breakdown of the diagram:

1. Main Components:
   * Registry: Provides access to other components and configurations.
   * InterNetworkExecutor: Handles cross-network swaps.
   * IntraNetworkExecutor: Handles within-network swaps.
   * Vault: Manages token deposits and withdrawals.
   * RegularUser: Represents the external entity with the regular user role.
2. Relationships:
   * Solid lines with open arrows (-->) represent dependencies or usage.
3. Entry Points:
   * InterNetworkExecutor: The `swap(InterNetworkSwapActions)` method is an entry point for cross-network swaps.
   * IntraNetworkExecutor: The `swap(SwapAction)` method is an entry point for within-network swaps.
   * Vault: The `deposit(uint256)` and `withdraw(uint256)` methods are entry points for vault operations.
4. Key Interactions:
   * The RegularUser interacts directly with InterNetworkExecutor, IntraNetworkExecutor, and Vault.
   * All components depend on the Registry for accessing other parts of the system.

<details>

<summary>Diagram code</summary>

```mermaid
classDiagram
    class Registry {
        +setRolesManager()
        +setFeesReceiver()
        +setInterNetworkExecutor()
        +setIntraNetworkExecutor()
        +setCentralGateway()
        +setVaultToken()
        +setProtocolFee()
        +setVaultFee()
        +setSpecificGateway()
        +setTokensReceiver()
    }

    class RolesManager {
        +grantOperator()
        +revokeOperator()
    }

    class Gateway {
        +setMessagingProtocolGateways()
    }

    class Admin["Admin (External)"]

    Admin --> Registry : calls
    Admin --> RolesManager : calls
    Admin --> Gateway : calls

    Registry --> RolesManager : uses

    class Registry {
        <<entrypoint>>
    }
    class RolesManager {
        <<entrypoint>>
    }
    class Gateway {
        <<entrypoint>>
    }


```

</details>
