Please solve the programming task below using a self-contained code snippet in a markdown code block.

Given a circular integer array nums (i.e., the next element of nums[nums.length - 1] is nums[0]), return the next greater number for every element in nums.
The next greater number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn't exist, return -1 for this number.
 
Please complete the following python code precisely:
```python
class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
```