Scheme

flowchart LR classDef main fill:#f9,stroke:#333,stroke-width:2px; classDef ticket fill:#f33,stroke:#333,stroke-width:1px,font-size:15; subgraph Vault Program Vault[Vault]:::main VaultNcnTicket[VaultNcnTicket]:::ticket VaultOperatorDelegation[VaultOperatorDelegation]:::ticket VaultNcnSlasherTicket[VaultNcnSlasherTicket]:::ticket VaultNcnSlasherOperatorTicket[VaultNcnSlasherOperatorTicket]:::ticket VaultStakerWithdrawalTicket[VaultStakerWithdrawalTicket]:::ticket VaultUpdateStateTracker[VaultUpdateStateTracker]:::ticket end subgraph Restaking Program direction LR NCN[NCN]:::main Operator[Operator]:::main Slasher[Slasher]:::main NcnOperatorState[NcnOperatorState]:::ticket NcnVaultTicket[NcnVaultTicket]:::ticket OperatorVaultTicket[OperatorVaultTicket]:::ticket NcnVaultSlasherTicket[NcnVaultSlasherTicket]:::ticket end %% Vault Program Links Vault -->|Creates| VaultNcnTicket Vault -->|Creates| VaultOperatorDelegation Vault -->|Creates| VaultNcnSlasherTicket Vault -->|Creates| VaultNcnSlasherOperatorTicket Vault -->|Creates| VaultStakerWithdrawalTicket Vault -->|Creates| VaultUpdateStateTracker VaultNcnTicket -->|Activated through warmup| NCN VaultNcnTicket -.->|Deactivated through cooldown| NCN VaultOperatorDelegation -->|Delegates stake| Operator VaultNcnSlasherTicket -->|Opt-in to slasher| Slasher VaultNcnSlasherOperatorTicket -->|Tracks slashings| Slasher %% Restaking Program Links NCN -->|Registers| NcnOperatorState NCN -->|Creates| NcnVaultTicket NCN -->|Creates| NcnVaultSlasherTicket Operator -->|Creates| OperatorVaultTicket Operator -->|Opts in| NcnOperatorState NcnOperatorState -->|Mutual opt-in| Operator NcnVaultTicket -->|Links| Vault OperatorVaultTicket -->|Links| Vault NcnVaultSlasherTicket -->|Registers slasher| Slasher %% Cross-Program Links Vault -.->|Opts in| NCN Vault -.->|Opts in| Operator Vault -.->|Delegates stake to| Operator Vault -.->|Can be slashed by| Slasher NCN -.->|Manages slashers for| Vault Slasher -.->|Can Slash| Vault