> For the complete documentation index, see [llms.txt](https://brkt-gg.gitbook.io/brkt.gg-whitepaper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brkt-gg.gitbook.io/brkt.gg-whitepaper/3.3-paidpredictablecompetition.md).

# 3.3 PaidPredictableCompetition

The PaidPredictableCompetition contract extends the PredictableCompetition features by adding customizable registration fee requirements, including customizable payment tokens. This implementation enables organizers to monetize their events while providing additional incentives for participants.

**Function 1: createBracketPrediction**

```solidity
function createBracketPrediction(address _registrant, uint8[] calldata _matchPredictions) public override(PredictableCompetition, IPaidPredictableCompetition) whenNotLive
```

This function allows users to create a bracket prediction and handles the registration fee payment.

| Name               | Type     | Description                                             |
| ------------------ | -------- | ------------------------------------------------------- |
| \_registrant       | address  | The address of the user creating the bracket prediction |
| \_matchPredictions | uint8\[] | An array containing the user's match predictions        |

**Function 2: createBracketPredictionGasToken**

```solidity
function createBracketPredictionGasToken(address _registrant, uint8[] calldata _matchPredictions) external payable override whenNotLive
```

This function allows users to create a bracket prediction and handles the registration fee payment using gas token.

| Name               | Type     | Description                                             |
| ------------------ | -------- | ------------------------------------------------------- |
| \_registrant       | address  | The address of the user creating the bracket prediction |
| \_matchPredictions | uint8\[] | An array containing the user's match predictions        |

**Function 3: refundRegistrationFee**

```solidity
function refundRegistrationFee() external override whenExpired
```

This function allows users to request a refund of their registration fee when the competition has expired.

**Function 4: claimRewards**

```solidity
function claimRewards() external override whenCompleted
```

This function allows users to claim their rewards when the competition is completed.

**Function 5: calculatePendingRewards**

```solidity
function calculatePendingRewards(address _user) public view override returns(uint256 pendingRewards_)
```

This function calculates the pending rewards for a user.

| Name   | Type    | Description             |
| ------ | ------- | ----------------------- |
| \_user | address | The address of the user |

**Function 6: getBracketPredictionFeeInfo**

```solidity
function getBracketPredictionFeeInfo() external view override returns(RegistrationFeeInfo memory)
```

This function returns the registration fee information for bracket predictions.
