> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seer.pm/llms.txt
> Use this file to discover all available pages before exploring further.

# RealitioHomeArbitrationProxy

This contract is meant to be deployed to side-chains (i.e.: xDAI) in which Reality.eth is deployed.

## Variables

### realitio

```solidity theme={null}
contract RealitioInterface realitio
```

*The address of the Realitio contract (v2.1+ required). TRUSTED.*

### amb

```solidity theme={null}
contract IAMB amb
```

*ArbitraryMessageBridge contract address. TRUSTED.*

### foreignProxy

```solidity theme={null}
address foreignProxy
```

*Address of the counter-party proxy on the Foreign Chain. TRUSTED.*

### foreignChainId

```solidity theme={null}
bytes32 foreignChainId
```

*The chain ID where the foreign proxy is deployed.*

### metadata

```solidity theme={null}
string metadata
```

*Metadata for Realitio interface.*

### Status

```solidity theme={null}
enum Status {
  None,
  Rejected,
  Notified,
  AwaitingRuling,
  Ruled,
  Finished
}
```

### Request

```solidity theme={null}
struct Request {
  enum RealitioHomeArbitrationProxy.Status status;
  bytes32 arbitratorAnswer;
}
```

### requests

```solidity theme={null}
mapping(bytes32 => mapping(address => struct RealitioHomeArbitrationProxy.Request)) requests
```

*Associates an arbitration request with a question ID and a requester address. requests\[questionID]\[requester]*

### questionIDToRequester

```solidity theme={null}
mapping(bytes32 => address) questionIDToRequester
```

*Associates a question ID with the requester who succeeded in requesting arbitration. questionIDToRequester\[questionID]*

## Modifiers

### onlyForeignProxy

```solidity theme={null}
modifier onlyForeignProxy()
```

## Functions

### constructor

```solidity theme={null}
constructor(contract IAMB _amb, address _foreignProxy, bytes32 _foreignChainId, contract RealitioInterface _realitio) public
```

Creates an arbitration proxy on the home chain.

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_amb | contract IAMB | ArbitraryMessageBridge contract address. |
| \_foreignProxy | address | The address of the proxy. |
| \_foreignChainId | bytes32 | The ID of the chain where the foreign proxy is deployed. |
| \_realitio | contract RealitioInterface | Realitio contract address. |

### receiveArbitrationRequest

```solidity theme={null}
function receiveArbitrationRequest(bytes32 _questionID, address _requester, uint256 _maxPrevious) external
```

*Receives the requested arbitration for a question. TRUSTED.*

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_questionID | bytes32 | The ID of the question. |
| \_requester | address | The address of the user that requested arbitration. |
| \_maxPrevious | uint256 | The maximum value of the previous bond for the question. |

### handleNotifiedRequest

```solidity theme={null}
function handleNotifiedRequest(bytes32 _questionID, address _requester) external
```

Handles arbitration request after it has been notified to Realitio for a given question.

*This method exists because `receiveArbitrationRequest` is called by the AMB and cannot send messages back to it.*

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_questionID | bytes32 | The ID of the question. |
| \_requester | address | The address of the user that requested arbitration. |

### handleRejectedRequest

```solidity theme={null}
function handleRejectedRequest(bytes32 _questionID, address _requester) external
```

Handles arbitration request after it has been rejected.

\_This method exists because `receiveArbitrationRequest` is called by the AMB and cannot send messages back to it. Reasons why the request might be rejected:

* The question does not exist
* The question was not answered yet
* The question bond value changed while the arbitration was being requested
* Another request was already accepted\_

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_questionID | bytes32 | The ID of the question. |
| \_requester | address | The address of the user that requested arbitration. |

### receiveArbitrationFailure

```solidity theme={null}
function receiveArbitrationFailure(bytes32 _questionID, address _requester) external
```

Receives a failed attempt to request arbitration. TRUSTED.

*Currently this can happen only if the arbitration cost increased.*

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_questionID | bytes32 | The ID of the question. |
| \_requester | address | The address of the user that requested arbitration. |

### receiveArbitrationAnswer

```solidity theme={null}
function receiveArbitrationAnswer(bytes32 _questionID, bytes32 _answer) external
```

Receives the answer to a specified question. TRUSTED.

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_questionID | bytes32 | The ID of the question. |
| \_answer | bytes32 | The answer from the arbitrator. |

### reportArbitrationAnswer

```solidity theme={null}
function reportArbitrationAnswer(bytes32 _questionID, bytes32 _lastHistoryHash, bytes32 _lastAnswerOrCommitmentID, address _lastAnswerer) external
```

Reports the answer provided by the arbitrator to a specified question.

*The Realitio contract validates the input parameters passed to this method, so making this publicly accessible is safe.*

**Parameters**

| Name | Type | Description |
| - | - | - |
| \_questionID | bytes32 | The ID of the question. |
| \_lastHistoryHash | bytes32 | The history hash given with the last answer to the question in the Realitio contract. |
| \_lastAnswerOrCommitmentID | bytes32 | The last answer given, or its commitment ID if it was a commitment, to the question in the Realitio contract. |
| \_lastAnswerer | address | The last answerer to the question in the Realitio contract. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.