diff --git a/src/royalty/ABClaim.sol b/src/royalty/ABClaim.sol new file mode 100644 index 0000000..76186dc --- /dev/null +++ b/src/royalty/ABClaim.sol @@ -0,0 +1,122 @@ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ██████████████████████████████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████████ ██████████ +// ████████████████████ +// ████████████████████ +// ████████████████████ +// ████████████████████ +// +// +// █████╗ ███╗ ██╗ ██████╗ ████████╗██╗ ██╗███████╗██████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗ +// ██╔══██╗████╗ ██║██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝ +// ███████║██╔██╗ ██║██║ ██║ ██║ ███████║█████╗ ██████╔╝██████╔╝██║ ██║ ██║██║ █████╔╝ +// ██╔══██║██║╚██╗██║██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗██╔══██╗██║ ██║ ██║██║ ██╔═██╗ +// ██║ ██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║██████╔╝███████╗╚██████╔╝╚██████╗██║ ██╗ +// ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ +// + +/** + * @title ABClaim + * @author anotherblock Technical Team + * @notice anotherblock contract responsible for paying out royalties + * + */ + +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/* Openzeppelin Contract */ +import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +/* anotherblock Libraries */ +import {ABErrors} from "src/libraries/ABErrors.sol"; +import {ABEvents} from "src/libraries/ABEvents.sol"; + +/* anotherblock Interfaces */ + +contract ABClaim is Initializable, AccessControlUpgradeable { + // _____ __ __ + // / ___// /_____ _/ /____ _____ + // \__ \/ __/ __ `/ __/ _ \/ ___/ + // ___/ / /_/ /_/ / /_/ __(__ ) + // /____/\__/\__,_/\__/\___/____/ + + ///@dev ABClaim implementation version + uint8 public constant IMPLEMENTATION_VERSION = 1; + + // ______ __ __ + // / ____/___ ____ _____/ /________ _______/ /_____ _____ + // / / / __ \/ __ \/ ___/ __/ ___/ / / / ___/ __/ __ \/ ___/ + // / /___/ /_/ / / / (__ ) /_/ / / /_/ / /__/ /_/ /_/ / / + // \____/\____/_/ /_/____/\__/_/ \__,_/\___/\__/\____/_/ + + /** + * @notice + * Contract Constructor + */ + /// @custom:oz-upgrades-unsafe-allow constructork + constructor() { + _disableInitializers(); + } + + /** + * @notice + * Contract Initializer + * + * @param _publisher collection publisher address + * @param _abDataRegistry anotherblock data registry contract address + */ + function initialize(address _publisher, address _abDataRegistry) external initializer { + // Initialize Access Control + __AccessControl_init(); + _grantRole(DEFAULT_ADMIN_ROLE, _publisher); + _revokeRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(REGISTRY_ROLE, _abDataRegistry); + + // Assign the publisher address + publisher = _publisher; + } + + // ______ __ __ ______ __ _ + // / ____/ __/ /____ _________ ____ _/ / / ____/_ ______ _____/ /_(_)___ ____ _____ + // / __/ | |/_/ __/ _ \/ ___/ __ \/ __ `/ / / /_ / / / / __ \/ ___/ __/ / __ \/ __ \/ ___/ + // / /____>