{
  "contractName": "UsingWitRandomness",
  "abi": [
    {
      "inputs": [],
      "name": "WIT_RANDOMNESS",
      "outputs": [
        {
          "internalType": "contract WitRandomness",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WIT_RANDOMNESS\",\"outputs\":[{\"internalType\":\"contract WitRandomness\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mockups/UsingWitRandomness.sol\":\"UsingWitRandomness\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/WitRandomness.sol\":{\"keccak256\":\"0x7accd2d28e3ad04761104048b775576ba5efc212eae4dc2dfe006506d95fb137\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4daf83555177f9eb9278963a9873c2aaed1b28ad2ba27300b57f3fa195a265bc\",\"dweb:/ipfs/QmRWmasNnkFYfYy563TnGBVFgriNbV57KHTerPZLFYyU1J\"]},\"project:/contracts/interfaces/IWitAppliance.sol\":{\"keccak256\":\"0xd207ca54a1049445a3d99eea497d9b34c6dbdd44d771eee825e4c031bd2f447e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f81de32d868ff2881ed6fe97cc897e40b4b11d23cbe53a0e23cf3e68f9c0f0a3\",\"dweb:/ipfs/QmeeXmzmK5MAzt7Hf5DB2L81efKtTzZg9VbQ8sUiTqEk5c\"]},\"project:/contracts/interfaces/IWitOracleQueriable.sol\":{\"keccak256\":\"0xdb0da1e377a35a7d620f43cb583a876750a52d91da2b888f48042483ad9c4910\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edfcdf3e96ec3c5de7438f82e3d5a1dc9af9eb29080044213dccb26ff978354c\",\"dweb:/ipfs/Qmap2FzSysh2fug88eortbsTM7itFygRzKc9HfV43ePMik\"]},\"project:/contracts/interfaces/IWitOracleQueriableConsumer.sol\":{\"keccak256\":\"0xe8143d2387d674022f453b57652998f53cbe4c21fe35e59421428142355c8ebf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e6c3e3d3e7168a3fb75b1eca23d078d5240e5b02dac8a449d1ddf79256a34d8\",\"dweb:/ipfs/QmbGk4tQzTogTBVYiT8t3Gqtk6qDs5nyp9Z53GryTjKAm5\"]},\"project:/contracts/interfaces/IWitRandomness.sol\":{\"keccak256\":\"0x349b27a7ecb4ca22f87d4ab13714a010668a7014d9c37fdb91caa407981b889a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a53b9c8d63c973bb98790ef3305fbc24debaa2dadad1b48b82ffdbfce73e08b6\",\"dweb:/ipfs/QmSue9dMNK1V5ChooMBTtccmpx2JoiyktqTP1Ng6bSuUGx\"]},\"project:/contracts/interfaces/IWitRandomnessAdmin.sol\":{\"keccak256\":\"0xb5b9b2375509f03db5b1e198089f4b0cf4e4ebbd31a2a7b5d2480a743bebbcd2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cade769eec375a3ec1cd4d376be54ee48a0e18786543f6ee396c0debfa4c04c\",\"dweb:/ipfs/QmY7AucsWp54PZVgMFjrJRt1n1DKCXb84ZXzTXnRZULYXF\"]},\"project:/contracts/interfaces/IWitRandomnessConsumer.sol\":{\"keccak256\":\"0x8006c81ac34c0797d31606164e6e0c6a7e97f0ba0f5228505bbc3d4fbcf16cdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8cc71c0afed6dd296a808513b3119840490f76fb884ad35729669201446348bf\",\"dweb:/ipfs/QmQLs5jg8nugFgNu5psvGaCsMC6X1YoD6qV5nt7Gf5iAuk\"]},\"project:/contracts/interfaces/IWitRandomnessEvents.sol\":{\"keccak256\":\"0x005a56891f103c78ce015fbbcb9cf96f64e3810a70cd20dcdcce2963186788fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6365a0bb99b2ac7990b74b33a4df7b045702362baf11998f8345f1a2530c29ae\",\"dweb:/ipfs/QmY2d5m2E7JwFT4EFzbrXZkiL4sSTowmosMHjSE3fTAwXf\"]},\"project:/contracts/interfaces/IWitRandomnessTypes.sol\":{\"keccak256\":\"0x52d825bf6bd6a2515116f993e939108f5412f5a05e304893ba81e9fcbfce4e09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60b3db141539544afc2701a873570a7b78639090e36b4bb7a57ae0d0dddeb9f4\",\"dweb:/ipfs/QmTWkwYdF4QMTeCFVcYNi9pWi3PwVeK29xgp946z8xtuiN\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]},\"project:/contracts/mockups/UsingWitRandomness.sol\":{\"keccak256\":\"0xa6035eef5679a471685b3e6426bfeb1c58d8aac1f37b3f35ec7d303b7986f698\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bda6627cb461d9674152b4b9d818c0c7032b2e095e603fc541b69759e72e80\",\"dweb:/ipfs/QmaAZQYBpYtwVNhtFvgPfseCuk8eVyBbieWhGS3R2tgYTs\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport {\r\n    Witnet, \r\n    WitRandomness, \r\n    IWitRandomness\r\n} from \"../WitRandomness.sol\";\r\n\r\nabstract contract UsingWitRandomness {\r\n    WitRandomness immutable public WIT_RANDOMNESS;\r\n    \r\n    constructor (address randomizer) {\r\n        assert(\r\n            randomizer.code.length > 0\r\n                && WitRandomness(randomizer).specs() == type(IWitRandomness).interfaceId\r\n        );\r\n        WIT_RANDOMNESS = WitRandomness(randomizer);    \r\n    }\r\n\r\n    /// Retrieves the result of keccak256-hashing the specified block number with the randomness value \r\n    /// generated by the Witnet blockchain in response to the first non-failing randomize request solved \r\n    /// after such block number.\r\n    ///\r\n    /// @dev Reverts if:\r\n    ///    i.   no `randomize()` was queried on the `WIT_RANDOMNESS` contract for neither the specified block, nor afterwards.\r\n    ///    ii.  the first non-failing `randomize()` request found on or after the specified block is not solved yet.\r\n    ///    iii. all `randomize()` requests that took place on or after the specified block were solved with errors.\r\n    function _fetchRandomnessAfter(uint256 _blockNumber) virtual internal view returns (bytes32) {\r\n        return keccak256(\r\n            abi.encode(\r\n                WIT_RANDOMNESS.fetchRandomnessAfter(_blockNumber),\r\n                address(this)\r\n            )\r\n        );\r\n    }\r\n\r\n    /// Generates a pseudo-random number uniformly distributed within the range [0 .. _faces), \r\n    /// by using the specified `_nonce` and `_seed`.\r\n    /// @dev Fails under same conditions as `_fetchRandomnessAfter(uint256)` does.\r\n    function _rollTheDice(uint64 _faces, uint256 _nonce, bytes32 _seed) internal pure returns (uint64) {\r\n        return Witnet.randomUniformUint64(\r\n            _faces,\r\n            _nonce,\r\n            _seed\r\n        );\r\n    }\r\n}\r\n",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\mockups\\UsingWitRandomness.sol",
  "ast": {
    "absolutePath": "project:/contracts/mockups/UsingWitRandomness.sol",
    "exportedSymbols": {
      "IWitRandomness": [
        28351
      ],
      "UsingWitRandomness": [
        44462
      ],
      "WitRandomness": [
        879
      ],
      "Witnet": [
        40741
      ]
    },
    "id": 44463,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 44380,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:121"
      },
      {
        "absolutePath": "project:/contracts/WitRandomness.sol",
        "file": "../WitRandomness.sol",
        "id": 44384,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 44463,
        "sourceUnit": 880,
        "src": "70:95:121",
        "symbolAliases": [
          {
            "foreign": {
              "id": 44381,
              "name": "Witnet",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 40741,
              "src": "84:6:121",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 44382,
              "name": "WitRandomness",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 879,
              "src": "98:13:121",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          },
          {
            "foreign": {
              "id": 44383,
              "name": "IWitRandomness",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28351,
              "src": "119:14:121",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [],
        "canonicalName": "UsingWitRandomness",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 44462,
        "linearizedBaseContracts": [
          44462
        ],
        "name": "UsingWitRandomness",
        "nameLocation": "187:18:121",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "ccac9949",
            "id": 44387,
            "mutability": "immutable",
            "name": "WIT_RANDOMNESS",
            "nameLocation": "244:14:121",
            "nodeType": "VariableDeclaration",
            "scope": 44462,
            "src": "213:45:121",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_WitRandomness_$879",
              "typeString": "contract WitRandomness"
            },
            "typeName": {
              "id": 44386,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 44385,
                "name": "WitRandomness",
                "nameLocations": [
                  "213:13:121"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 879,
                "src": "213:13:121"
              },
              "referencedDeclaration": 879,
              "src": "213:13:121",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WitRandomness_$879",
                "typeString": "contract WitRandomness"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 44417,
              "nodeType": "Block",
              "src": "304:224:121",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 44408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 44397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 44393,
                                "name": "randomizer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44389,
                                "src": "336:10:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 44394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "347:4:121",
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "336:15:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 44395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "352:6:121",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "336:22:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 44396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "361:1:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "336:26:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 44407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 44399,
                                    "name": "randomizer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 44389,
                                    "src": "397:10:121",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 44398,
                                  "name": "WitRandomness",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 879,
                                  "src": "383:13:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_WitRandomness_$879_$",
                                    "typeString": "type(contract WitRandomness)"
                                  }
                                },
                                "id": 44400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "383:25:121",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_WitRandomness_$879",
                                  "typeString": "contract WitRandomness"
                                }
                              },
                              "id": 44401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "409:5:121",
                              "memberName": "specs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 878,
                              "src": "383:31:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_bytes4_$",
                                "typeString": "function () pure external returns (bytes4)"
                              }
                            },
                            "id": 44402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "383:33:121",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 44404,
                                  "name": "IWitRandomness",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28351,
                                  "src": "425:14:121",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitRandomness_$28351_$",
                                    "typeString": "type(contract IWitRandomness)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IWitRandomness_$28351_$",
                                    "typeString": "type(contract IWitRandomness)"
                                  }
                                ],
                                "id": 44403,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967269,
                                "src": "420:4:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 44405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "420:20:121",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IWitRandomness_$28351",
                                "typeString": "type(contract IWitRandomness)"
                              }
                            },
                            "id": 44406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "441:11:121",
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "420:32:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "383:69:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "336:116:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 44392,
                      "name": "assert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967293,
                      "src": "315:6:121",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 44409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "315:148:121",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 44410,
                  "nodeType": "ExpressionStatement",
                  "src": "315:148:121"
                },
                {
                  "expression": {
                    "id": 44415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 44411,
                      "name": "WIT_RANDOMNESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 44387,
                      "src": "474:14:121",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_WitRandomness_$879",
                        "typeString": "contract WitRandomness"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 44413,
                          "name": "randomizer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44389,
                          "src": "505:10:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 44412,
                        "name": "WitRandomness",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 879,
                        "src": "491:13:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_WitRandomness_$879_$",
                          "typeString": "type(contract WitRandomness)"
                        }
                      },
                      "id": 44414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "491:25:121",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_WitRandomness_$879",
                        "typeString": "contract WitRandomness"
                      }
                    },
                    "src": "474:42:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitRandomness_$879",
                      "typeString": "contract WitRandomness"
                    }
                  },
                  "id": 44416,
                  "nodeType": "ExpressionStatement",
                  "src": "474:42:121"
                }
              ]
            },
            "id": 44418,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 44390,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44389,
                  "mutability": "mutable",
                  "name": "randomizer",
                  "nameLocation": "292:10:121",
                  "nodeType": "VariableDeclaration",
                  "scope": 44418,
                  "src": "284:18:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44388,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "284:7:121",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "283:20:121"
            },
            "returnParameters": {
              "id": 44391,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "304:0:121"
            },
            "scope": 44462,
            "src": "271:257:121",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 44440,
              "nodeType": "Block",
              "src": "1273:186:121",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 44431,
                                "name": "_blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44421,
                                "src": "1380:12:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 44429,
                                "name": "WIT_RANDOMNESS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44387,
                                "src": "1344:14:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_WitRandomness_$879",
                                  "typeString": "contract WitRandomness"
                                }
                              },
                              "id": 44430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1359:20:121",
                              "memberName": "fetchRandomnessAfter",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28212,
                              "src": "1344:35:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (uint256) view external returns (bytes32)"
                              }
                            },
                            "id": 44432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1344:49:121",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 44435,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "1420:4:121",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_UsingWitRandomness_$44462",
                                  "typeString": "contract UsingWitRandomness"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_UsingWitRandomness_$44462",
                                  "typeString": "contract UsingWitRandomness"
                                }
                              ],
                              "id": 44434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1412:7:121",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 44433,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1412:7:121",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 44436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1412:13:121",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 44427,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1315:3:121",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 44428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1319:6:121",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "1315:10:121",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 44437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1315:125:121",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 44426,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "1291:9:121",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 44438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1291:160:121",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 44425,
                  "id": 44439,
                  "nodeType": "Return",
                  "src": "1284:167:121"
                }
              ]
            },
            "documentation": {
              "id": 44419,
              "nodeType": "StructuredDocumentation",
              "src": "536:638:121",
              "text": "Retrieves the result of keccak256-hashing the specified block number with the randomness value \n generated by the Witnet blockchain in response to the first non-failing randomize request solved \n after such block number.\n @dev Reverts if:\n    i.   no `randomize()` was queried on the `WIT_RANDOMNESS` contract for neither the specified block, nor afterwards.\n    ii.  the first non-failing `randomize()` request found on or after the specified block is not solved yet.\n    iii. all `randomize()` requests that took place on or after the specified block were solved with errors."
            },
            "id": 44441,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_fetchRandomnessAfter",
            "nameLocation": "1189:21:121",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 44422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44421,
                  "mutability": "mutable",
                  "name": "_blockNumber",
                  "nameLocation": "1219:12:121",
                  "nodeType": "VariableDeclaration",
                  "scope": 44441,
                  "src": "1211:20:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44420,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1210:22:121"
            },
            "returnParameters": {
              "id": 44425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44424,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44441,
                  "src": "1264:7:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 44423,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1264:7:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1263:9:121"
            },
            "scope": 44462,
            "src": "1180:279:121",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 44460,
              "nodeType": "Block",
              "src": "1801:125:121",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 44455,
                        "name": "_faces",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44444,
                        "src": "1860:6:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 44456,
                        "name": "_nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44446,
                        "src": "1881:6:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 44457,
                        "name": "_seed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44448,
                        "src": "1902:5:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 44453,
                        "name": "Witnet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40741,
                        "src": "1819:6:121",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Witnet_$40741_$",
                          "typeString": "type(library Witnet)"
                        }
                      },
                      "id": 44454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1826:19:121",
                      "memberName": "randomUniformUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 40300,
                      "src": "1819:26:121",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$_t_bytes32_$returns$_t_uint64_$",
                        "typeString": "function (uint64,uint256,bytes32) pure returns (uint64)"
                      }
                    },
                    "id": 44458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1819:99:121",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 44452,
                  "id": 44459,
                  "nodeType": "Return",
                  "src": "1812:106:121"
                }
              ]
            },
            "documentation": {
              "id": 44442,
              "nodeType": "StructuredDocumentation",
              "src": "1467:229:121",
              "text": "Generates a pseudo-random number uniformly distributed within the range [0 .. _faces), \n by using the specified `_nonce` and `_seed`.\n @dev Fails under same conditions as `_fetchRandomnessAfter(uint256)` does."
            },
            "id": 44461,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_rollTheDice",
            "nameLocation": "1711:12:121",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 44449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44444,
                  "mutability": "mutable",
                  "name": "_faces",
                  "nameLocation": "1731:6:121",
                  "nodeType": "VariableDeclaration",
                  "scope": 44461,
                  "src": "1724:13:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 44443,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1724:6:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44446,
                  "mutability": "mutable",
                  "name": "_nonce",
                  "nameLocation": "1747:6:121",
                  "nodeType": "VariableDeclaration",
                  "scope": 44461,
                  "src": "1739:14:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44445,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1739:7:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44448,
                  "mutability": "mutable",
                  "name": "_seed",
                  "nameLocation": "1763:5:121",
                  "nodeType": "VariableDeclaration",
                  "scope": 44461,
                  "src": "1755:13:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 44447,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1755:7:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1723:46:121"
            },
            "returnParameters": {
              "id": 44452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44451,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44461,
                  "src": "1793:6:121",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 44450,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1793:6:121",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1792:8:121"
            },
            "scope": 44462,
            "src": "1702:224:121",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 44463,
        "src": "169:1760:121",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:1896:121"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:46.032Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}