// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "./TenGransAbstractToken.sol"; import "@arbitrum/token-bridge-contracts/contracts/tokenbridge/arbitrum/IArbToken.sol"; contract TenGransArbToken is AbstractGrans, IArbToken { uint256 public immutable cap = 15_000 * 10 ** 18; address public immutable l2Gateway; address public immutable override l1Address; modifier onlyGateway() { require(msg.sender == l2Gateway, "ONLY_l2GATEWAY"); _; } constructor(address _l2Gateway, address _l1Address) AbstractGrans() { l2Gateway = _l2Gateway; l1Address = _l1Address; } function bridgeMint(address account, uint256 amount) external virtual override onlyGateway { require(amount + totalSupply() <= cap, "CAP_EXCEEDED"); _mint(account, amount); } function bridgeBurn(address account, uint256 amount) external virtual override onlyGateway { _burn(account, amount); } }