contract TransferProxy is OwnableOperatorRole {

    /// @notice Calls safeTransferFrom for ERC721.
    /// @notice Can be called only by operator.
    function erc721safeTransferFrom(IERC721 token, address from, address to, uint256 tokenId) external onlyOperator {
        token.safeTransferFrom(from, to, tokenId);
    }

    /// @notice Calls safeTransferFrom for ERC1155.
    /// @notice Can be called only by operator.
    function erc1155safeTransferFrom(IERC1155 token, address from, address to, uint256 id, uint256 value, bytes calldata data) external onlyOperator {
        token.safeTransferFrom(from, to, id, value, data);
    }
}
/// @notice ERC721 and ERC1155 transfer proxy.
function erc1155safeTransferFrom(IERC1155 token, address from, address to, uint256 id, uint256 value, bytes calldata data) external onlyOperator {
    token.safeTransferFrom(from, to, id, value, data);
}

/// @notice Calls safeTransferFrom for ERC1155.
/// @notice Can be called only by operator.