# Snapshot report for `src/erc1155.test.ts`

The actual snapshot is saved in `erc1155.test.ts.snap`.

Generated by [AVA](https://avajs.dev).

## basic

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/Ownable.sol";␊
    ␊
    contract MyToken is ERC1155, Ownable {␊
        constructor(address initialOwner)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            Ownable(initialOwner)␊
        {}␊
    ␊
        function setURI(string memory newuri) public onlyOwner {␊
            _setURI(newuri);␊
        }␊
    }␊
    `

## basic + roles

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/AccessControl.sol";␊
    ␊
    contract MyToken is ERC1155, AccessControl {␊
        bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
    ␊
        constructor(address defaultAdmin)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
        {␊
            _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
        }␊
    ␊
        function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
            _setURI(newuri);␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function supportsInterface(bytes4 interfaceId)␊
            public␊
            view␊
            override(ERC1155, AccessControl)␊
            returns (bool)␊
        {␊
            return super.supportsInterface(interfaceId);␊
        }␊
    }␊
    `

## basic + managed

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
    ␊
    contract MyToken is ERC1155, AccessManaged {␊
        constructor(address initialAuthority)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            AccessManaged(initialAuthority)␊
        {}␊
    ␊
        function setURI(string memory newuri) public restricted {␊
            _setURI(newuri);␊
        }␊
    }␊
    `

## no updatable uri

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    ␊
    contract MyToken is ERC1155 {␊
        constructor()␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
        {}␊
    }␊
    `

## burnable

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/Ownable.sol";␊
    import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";␊
    ␊
    contract MyToken is ERC1155, Ownable, ERC1155Burnable {␊
        constructor(address initialOwner)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            Ownable(initialOwner)␊
        {}␊
    ␊
        function setURI(string memory newuri) public onlyOwner {␊
            _setURI(newuri);␊
        }␊
    }␊
    `

## pausable

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/Ownable.sol";␊
    import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol";␊
    ␊
    contract MyToken is ERC1155, Ownable, ERC1155Pausable {␊
        constructor(address initialOwner)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            Ownable(initialOwner)␊
        {}␊
    ␊
        function setURI(string memory newuri) public onlyOwner {␊
            _setURI(newuri);␊
        }␊
    ␊
        function pause() public onlyOwner {␊
            _pause();␊
        }␊
    ␊
        function unpause() public onlyOwner {␊
            _unpause();␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
            internal␊
            override(ERC1155, ERC1155Pausable)␊
        {␊
            super._update(from, to, ids, values);␊
        }␊
    }␊
    `

## mintable

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/Ownable.sol";␊
    ␊
    contract MyToken is ERC1155, Ownable {␊
        constructor(address initialOwner)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            Ownable(initialOwner)␊
        {}␊
    ␊
        function setURI(string memory newuri) public onlyOwner {␊
            _setURI(newuri);␊
        }␊
    ␊
        function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
            public␊
            onlyOwner␊
        {␊
            _mint(account, id, amount, data);␊
        }␊
    ␊
        function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
            public␊
            onlyOwner␊
        {␊
            _mintBatch(to, ids, amounts, data);␊
        }␊
    }␊
    `

## mintable + roles

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/AccessControl.sol";␊
    ␊
    contract MyToken is ERC1155, AccessControl {␊
        bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
        bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
    ␊
        constructor(address defaultAdmin, address minter)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
        {␊
            _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
            _grantRole(MINTER_ROLE, minter);␊
        }␊
    ␊
        function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
            _setURI(newuri);␊
        }␊
    ␊
        function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
            public␊
            onlyRole(MINTER_ROLE)␊
        {␊
            _mint(account, id, amount, data);␊
        }␊
    ␊
        function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
            public␊
            onlyRole(MINTER_ROLE)␊
        {␊
            _mintBatch(to, ids, amounts, data);␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function supportsInterface(bytes4 interfaceId)␊
            public␊
            view␊
            override(ERC1155, AccessControl)␊
            returns (bool)␊
        {␊
            return super.supportsInterface(interfaceId);␊
        }␊
    }␊
    `

## mintable + managed

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
    ␊
    contract MyToken is ERC1155, AccessManaged {␊
        constructor(address initialAuthority)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            AccessManaged(initialAuthority)␊
        {}␊
    ␊
        function setURI(string memory newuri) public restricted {␊
            _setURI(newuri);␊
        }␊
    ␊
        function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
            public␊
            restricted␊
        {␊
            _mint(account, id, amount, data);␊
        }␊
    ␊
        function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
            public␊
            restricted␊
        {␊
            _mintBatch(to, ids, amounts, data);␊
        }␊
    }␊
    `

## supply tracking

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
    import "@openzeppelin/contracts/access/Ownable.sol";␊
    import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";␊
    ␊
    contract MyToken is ERC1155, Ownable, ERC1155Supply {␊
        constructor(address initialOwner)␊
            ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
            Ownable(initialOwner)␊
        {}␊
    ␊
        function setURI(string memory newuri) public onlyOwner {␊
            _setURI(newuri);␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
            internal␊
            override(ERC1155, ERC1155Supply)␊
        {␊
            super._update(from, to, ids, values);␊
        }␊
    }␊
    `

## full upgradeable transparent

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
    ␊
    contract MyToken is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable {␊
        bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
        bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
        bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
    ␊
        /// @custom:oz-upgrades-unsafe-allow constructor␊
        constructor() {␊
            _disableInitializers();␊
        }␊
    ␊
        function initialize(address defaultAdmin, address pauser, address minter)␊
            initializer public␊
        {␊
            __ERC1155_init("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/");␊
            __AccessControl_init();␊
            __ERC1155Pausable_init();␊
            __ERC1155Burnable_init();␊
    ␊
            _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
            _grantRole(PAUSER_ROLE, pauser);␊
            _grantRole(MINTER_ROLE, minter);␊
        }␊
    ␊
        function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
            _setURI(newuri);␊
        }␊
    ␊
        function pause() public onlyRole(PAUSER_ROLE) {␊
            _pause();␊
        }␊
    ␊
        function unpause() public onlyRole(PAUSER_ROLE) {␊
            _unpause();␊
        }␊
    ␊
        function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
            public␊
            onlyRole(MINTER_ROLE)␊
        {␊
            _mint(account, id, amount, data);␊
        }␊
    ␊
        function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
            public␊
            onlyRole(MINTER_ROLE)␊
        {␊
            _mintBatch(to, ids, amounts, data);␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
            internal␊
            override(ERC1155Upgradeable, ERC1155PausableUpgradeable)␊
        {␊
            super._update(from, to, ids, values);␊
        }␊
    ␊
        function supportsInterface(bytes4 interfaceId)␊
            public␊
            view␊
            override(ERC1155Upgradeable, AccessControlUpgradeable)␊
            returns (bool)␊
        {␊
            return super.supportsInterface(interfaceId);␊
        }␊
    }␊
    `

## full upgradeable uups

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
    import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
    ␊
    contract MyToken is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable, UUPSUpgradeable {␊
        bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
        bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
        bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
        bytes32 public constant UPGRADER_ROLE = keccak256("UPGRADER_ROLE");␊
    ␊
        /// @custom:oz-upgrades-unsafe-allow constructor␊
        constructor() {␊
            _disableInitializers();␊
        }␊
    ␊
        function initialize(address defaultAdmin, address pauser, address minter, address upgrader)␊
            initializer public␊
        {␊
            __ERC1155_init("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/");␊
            __AccessControl_init();␊
            __ERC1155Pausable_init();␊
            __ERC1155Burnable_init();␊
            __UUPSUpgradeable_init();␊
    ␊
            _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
            _grantRole(PAUSER_ROLE, pauser);␊
            _grantRole(MINTER_ROLE, minter);␊
            _grantRole(UPGRADER_ROLE, upgrader);␊
        }␊
    ␊
        function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
            _setURI(newuri);␊
        }␊
    ␊
        function pause() public onlyRole(PAUSER_ROLE) {␊
            _pause();␊
        }␊
    ␊
        function unpause() public onlyRole(PAUSER_ROLE) {␊
            _unpause();␊
        }␊
    ␊
        function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
            public␊
            onlyRole(MINTER_ROLE)␊
        {␊
            _mint(account, id, amount, data);␊
        }␊
    ␊
        function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
            public␊
            onlyRole(MINTER_ROLE)␊
        {␊
            _mintBatch(to, ids, amounts, data);␊
        }␊
    ␊
        function _authorizeUpgrade(address newImplementation)␊
            internal␊
            onlyRole(UPGRADER_ROLE)␊
            override␊
        {}␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
            internal␊
            override(ERC1155Upgradeable, ERC1155PausableUpgradeable)␊
        {␊
            super._update(from, to, ids, values);␊
        }␊
    ␊
        function supportsInterface(bytes4 interfaceId)␊
            public␊
            view␊
            override(ERC1155Upgradeable, AccessControlUpgradeable)␊
            returns (bool)␊
        {␊
            return super.supportsInterface(interfaceId);␊
        }␊
    }␊
    `

## full upgradeable transparent with managed

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
    import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
    import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
    ␊
    contract MyToken is Initializable, ERC1155Upgradeable, AccessManagedUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable, UUPSUpgradeable {␊
        /// @custom:oz-upgrades-unsafe-allow constructor␊
        constructor() {␊
            _disableInitializers();␊
        }␊
    ␊
        function initialize(address initialAuthority) initializer public {␊
            __ERC1155_init("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/");␊
            __AccessManaged_init(initialAuthority);␊
            __ERC1155Pausable_init();␊
            __ERC1155Burnable_init();␊
            __UUPSUpgradeable_init();␊
        }␊
    ␊
        function setURI(string memory newuri) public restricted {␊
            _setURI(newuri);␊
        }␊
    ␊
        function pause() public restricted {␊
            _pause();␊
        }␊
    ␊
        function unpause() public restricted {␊
            _unpause();␊
        }␊
    ␊
        function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
            public␊
            restricted␊
        {␊
            _mint(account, id, amount, data);␊
        }␊
    ␊
        function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
            public␊
            restricted␊
        {␊
            _mintBatch(to, ids, amounts, data);␊
        }␊
    ␊
        function _authorizeUpgrade(address newImplementation)␊
            internal␊
            restricted␊
            override␊
        {}␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
            internal␊
            override(ERC1155Upgradeable, ERC1155PausableUpgradeable)␊
        {␊
            super._update(from, to, ids, values);␊
        }␊
    }␊
    `
