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

# Minter

Weekly emissions controller for RAM.

The current implementation in `Minter.sol` is the contract-enforced source of truth for supply caps, multiplier updates, and weekly emissions minting.

## Core Functions

### kickoff

```solidity theme={null}
function kickoff(
    address ram,
    address voter,
    uint256 initialWeeklyEmissions,
    uint256 initialMultiplier,
    address xRam
) external
```

One-time operator-only initialization. Sets the token and governance addresses, seeds the initial emissions configuration, and mints the `INITIAL_SUPPLY` to the operator.

### initEpoch0

```solidity theme={null}
function initEpoch0() external
```

Starts epoch accounting by setting `firstPeriod`, `activePeriod`, and minting the configured week-0 emissions to the operator.

### updatePeriod

```solidity theme={null}
function updatePeriod() external returns (uint256 period)
```

Permissionless weekly rollover function. When a new period has started, it:

1. Computes the next weekly emissions amount
2. Mints that amount to the Minter contract
3. Approves the `Voter`
4. Calls `Voter.notifyRewardAmount()`

### updatePeriodAndRebase

```solidity theme={null}
function updatePeriodAndRebase() external
```

Convenience entrypoint that advances the period and then calls `rebase()` on xRAM.

### updateEmissionsMultiplier

```solidity theme={null}
function updateEmissionsMultiplier(uint256 emissionsMultiplier) external
```

Governance-only update for the emissions multiplier. The contract enforces a maximum deviation of `25%` per update.

### calculateWeeklyEmissions

```solidity theme={null}
function calculateWeeklyEmissions() external view returns (uint256)
```

Returns the next emission amount after applying the multiplier and the supply cap.

## Key Concepts

* `INITIAL_SUPPLY` is `350,000,000e18`.
* `MAX_SUPPLY` is `1,000,000,000e18`.
* `BASIS` is `10_000`, and `MAX_DEVIATION` is `2_500`, meaning multiplier changes are capped at 25% per update.
* `updatePeriod()` returns the active weekly period, not the minted token amount.
* The Minter is the contract that mints weekly emissions and hands them to `Voter`; gauges receive those emissions only after the subsequent voter distribution flow.
