# Operator Permissions

### Node Operators

The Node implements the [ERC-7540](https://eips.ethereum.org/EIPS/eip-7540) operator system to allow delegation of redemption management. Operators can request and claim redemptions on behalf of share owners.

#### Setting Operators

```solidity
function setOperator(address operator, bool approved) external returns (bool) {
    if (msg.sender == operator) revert ErrorsLib.CannotSetSelfAsOperator();
    isOperator[msg.sender][operator] = approved;
    emit OperatorSet(msg.sender, operator, approved);
    return true;
}
```

#### Operator Permissions

Operators can:

* Request redemptions for owner
* Withdraw/claim assets for owner

```solidity
function _validateController(address controller) internal view {
    if (controller != msg.sender && !isOperator[controller][msg.sender]) revert ErrorsLib.InvalidController();
}
```

#### Usage Example

```solidity
// Owner approves operator
node.setOperator(operatorAddress, true);

// Operator can then manage redemptions
function requestRedeem(uint256 shares, address controller, address owner) external {
    // Operator can call with controller = owner
}

function withdraw(uint256 assets, address receiver, address controller) external {
    // Operator can claim with controller = owner
}
```

Note: Operators cannot be set as self, and permissions can be revoked by setting approved to false.
