> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-docs-sync-code-change-be6d045.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# IB20Asset.updateUIMultiplier

> Generated B20 reference for updateUIMultiplier(uint256,uint256).

<Warning>
  The source file `docs/B20/Asset.md` that previously documented this function has been deleted as part of a documentation restructure. The content below is preserved from the last verified state of this reference page.
</Warning>

## Signature

```solidity IB20Asset.sol theme={null}
function updateUIMultiplier(uint256 newMultiplier, uint256 effectiveAt) external;
```

| Field               | Value                                 |
| ------------------- | ------------------------------------- |
| Selector            | `0x628e600f`                          |
| Canonical signature | `updateUIMultiplier(uint256,uint256)` |

## Description

Schedules a multiplier update to take effect at `effectiveAt` — the standard path for corporate actions such as stock splits and reinvested dividends. Evaluation is lazy: `multiplier()` / `uiMultiplier()` flip on their own once `block.timestamp` reaches `effectiveAt`.

Only one pending update is live at a time. To replace an existing pending update, explicitly cancel it with `cancelUIMultiplierUpdate()` and re-schedule in a single `announce()` bracket.

Emits `UIMultiplierUpdated(oldMultiplier, newMultiplier, effectiveAtTimestamp)` when the scheduled update takes effect.

## Parameters

| Name            | Type      | Description                                                                                                              |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------------ |
| `newMultiplier` | `uint256` | New multiplier scaled to `WAD_PRECISION` (`1e18`). Must be non-zero and at most `type(uint128).max`.                     |
| `effectiveAt`   | `uint256` | Unix timestamp at which `newMultiplier` becomes effective. Must be in the future and must not exceed `type(uint64).max`. |

## Revert Conditions

| Error                              | Condition                                                                                  |
| ---------------------------------- | ------------------------------------------------------------------------------------------ |
| `AccessControlUnauthorizedAccount` | Caller does not hold `OPERATOR_ROLE`.                                                      |
| `InvalidMultiplier`                | `newMultiplier` is zero or exceeds `type(uint128).max` (exposed as `MAX_UI_MULTIPLIER()`). |
| `EffectiveAtInPast`                | `effectiveAt` is not strictly in the future.                                               |
| `EffectiveAtTooFar`                | `effectiveAt` exceeds `type(uint64).max`.                                                  |
| `UIMultiplierUpdateExists`         | A live pending update already exists.                                                      |

## Access Control

Gated by `OPERATOR_ROLE`.

## Policy Interaction

No direct policy interaction.

## Example

```solidity Title Schedule a 2:1 forward split theme={null}
bytes[] memory internalCalls = new bytes[](1);
internalCalls[0] = abi.encodeCall(IB20Asset.updateUIMultiplier, (2e18, exDateTimestamp));

IB20Asset(token).announce({
    internalCalls: internalCalls,
    id: "2026-Q3-split",
    description: "2:1 forward split, effective at ex-date",
    uri: "https://disclosures.example.com/..."
});
```
