> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# IPolicyRegistry.stageUpdateAdmin

> Stages a proposed new admin for a policy in the Policy Registry; the active admin does not change until the pending admin calls finalizeUpdateAdmin.

## Signature

```solidity IPolicyRegistry.sol theme={null}
function stageUpdateAdmin(uint64 policyId, address newAdmin) external;
```

| Field               | Value                              |
| ------------------- | ---------------------------------- |
| Selector            | `0x1d7ae695`                       |
| Canonical signature | `stageUpdateAdmin(uint64,address)` |

## Description

Nominates `newAdmin` as the pending admin for `policyId`. The current admin does not change. `policyAdmin(policyId)` still returns the current admin. `pendingPolicyAdmin(policyId)` returns `newAdmin`.

The pending admin must call `finalizeUpdateAdmin(policyId)` to take effect. Until then, the current admin retains full update rights on the policy.

Passing `address(0)` as `newAdmin` clears any previously staged nomination without transferring administration.

Emits `PolicyAdminStaged(policyId, currentAdmin, pendingAdmin)`.

## Parameters

| Name       | Type      | Description                                                                              |
| ---------- | --------- | ---------------------------------------------------------------------------------------- |
| `policyId` | `uint64`  | Policy whose admin is being staged.                                                      |
| `newAdmin` | `address` | Proposed new admin. Pass `address(0)` to clear a nomination that has not been finalized. |

## Reverts

| Error              | Condition                                      |
| ------------------ | ---------------------------------------------- |
| `PolicyNotFound()` | `policyId` does not exist in the registry.     |
| `Unauthorized()`   | Caller is not the current admin of `policyId`. |

## Access Control

Callable only by the current policy admin for `policyId`. Any other caller reverts `Unauthorized`.

## Example

```solidity Admin handoff theme={null}
// Step 1: current admin nominates a successor
IPolicyRegistry(registry).stageUpdateAdmin(policyId, nextAdmin);

// Step 2: nextAdmin finalizes (separate transaction, called by nextAdmin)
IPolicyRegistry(registry).finalizeUpdateAdmin(policyId);
```
