Skip to content
39 changes: 39 additions & 0 deletions ArbNativeTokenManager.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright 2021-2025, Offchain Labs, Inc.
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE.md
// SPDX-License-Identifier: BUSL-1.1

pragma solidity >=0.4.21 <0.9.0;

/**
* @title Enables minting and burning native tokens.
* @notice Authorized callers are added/removed through ArbOwner precompile.
* Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000073.
* Available in ArbOS version 41 and above
*/
interface ArbNativeTokenManager {
/**
* @notice Emitted when some amount of the native gas token is minted to a NativeTokenOwner.
*/
event NativeTokenMinted(address indexed to, uint256 amount);

/**
* @notice Emitted when some amount of the native gas token is burned from a NativeTokenOwner.
*/
event NativeTokenBurned(address indexed from, uint256 amount);

/**
* @notice In case the caller is authorized,
* mints some amount of the native gas token for this chain to the caller.
*/
function mintNativeToken(
uint256 amount
) external;

/**
* @notice In case the caller is authorized,
* burns some amount of the native gas token for this chain from the caller.
*/
function burnNativeToken(
uint256 amount
) external;
}
28 changes: 28 additions & 0 deletions ArbOwner.sol
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,34 @@ interface ArbOwner {
/// @notice Retrieves the list of chain owners
function getAllChainOwners() external view returns (address[] memory);

/// @notice Sets the NativeTokenManagementFrom time
/// @notice Available in ArbOS version 41 and above
function setNativeTokenManagementFrom(
uint64 timestamp
) external;

/// @notice Add account as a native token owner
/// @notice Available in ArbOS version 41 and above
function addNativeTokenOwner(
address newOwner
) external;

/// @notice Remove account from the list of native token owners
/// @notice Available in ArbOS version 41 and above
function removeNativeTokenOwner(
address ownerToRemove
) external;

/// @notice See if the user is a native token owner
/// @notice Available in ArbOS version 41 and above
function isNativeTokenOwner(
address addr
) external view returns (bool);

/// @notice Retrieves the list of native token owners
/// @notice Available in ArbOS version 41 and above
function getAllNativeTokenOwners() external view returns (address[] memory);

/// @notice Set how slowly ArbOS updates its estimate of the L1 basefee
function setL1BaseFeeEstimateInertia(
uint64 inertia
Expand Down
10 changes: 10 additions & 0 deletions ArbOwnerPublic.sol
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@ interface ArbOwnerPublic {
/// @notice Retrieves the list of chain owners
function getAllChainOwners() external view returns (address[] memory);

/// @notice See if the user is a native token owner
/// @notice Available in ArbOS version 41 and above
function isNativeTokenOwner(
address addr
) external view returns (bool);

/// @notice Retrieves the list of native token owners
/// @notice Available in ArbOS version 41 and above
function getAllNativeTokenOwners() external view returns (address[] memory);

/// @notice Gets the network fee collector
function getNetworkFeeAccount() external view returns (address);

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@arbitrum/nitro-precompile-interfaces",
"version": "40.0.0",
"version": "41.0.0",
"description": "Solidity interfaces for Arbitrum Nitro precompiled contracts",
"author": "Offchain Labs, Inc.",
"license": "BUSL-1.1",
Expand Down