{
  "contractName": "DataRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "dataPoint",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "PublishedDataPoint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        }
      ],
      "name": "UpdatedDataProvider",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "getDataPoint",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        }
      ],
      "name": "getLastUpdatedTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        }
      ],
      "name": "getDataProvider",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "provider",
          "type": "address"
        }
      ],
      "name": "setDataProvider",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "setId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "int256",
          "name": "dataPoint",
          "type": "int256"
        }
      ],
      "name": "publishDataPoint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"dataPoint\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"PublishedDataPoint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"UpdatedDataProvider\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"getDataPoint\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"}],\"name\":\"getDataProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"}],\"name\":\"getLastUpdatedTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"dataPoint\",\"type\":\"int256\"}],\"name\":\"publishDataPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"setId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"}],\"name\":\"setDataProvider\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getDataPoint(bytes32,uint256)\":{\"params\":{\"setId\":\"id of the data set\",\"timestamp\":\"timestamp of the data point\"},\"returns\":{\"_0\":\"data point, bool indicating whether data point exists\"}},\"getDataProvider(bytes32)\":{\"params\":{\"setId\":\"id of the data set\"},\"returns\":{\"_0\":\"address of provider\"}},\"getLastUpdatedTimestamp(bytes32)\":{\"params\":{\"setId\":\"id of the data set\"},\"returns\":{\"_0\":\"last updated timestamp\"}},\"isRegistered(bytes32)\":{\"params\":{\"setId\":\"setId of the data set\"},\"returns\":{\"_0\":\"true if market object exists\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"publishDataPoint(bytes32,uint256,int256)\":{\"details\":\"Can only be called by a whitelisted data provider.\",\"params\":{\"dataPoint\":\"the data point of the data set\",\"setId\":\"id of the data set\",\"timestamp\":\"timestamp of the data point\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setDataProvider(bytes32,address)\":{\"details\":\"Can only be called by the owner of the DataRegistry.\",\"params\":{\"provider\":\"address of the provider\",\"setId\":\"id of the data set\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"DataRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getDataPoint(bytes32,uint256)\":{\"notice\":\"Returns a data point of a market object for a given timestamp.\"},\"getDataProvider(bytes32)\":{\"notice\":\"Returns the provider for a market object\"},\"getLastUpdatedTimestamp(bytes32)\":{\"notice\":\"Returns the timestamp on which the last data point for a data set was submitted.\"},\"isRegistered(bytes32)\":{\"notice\":\"@notice Returns true if there is data registered for a given setId\"},\"publishDataPoint(bytes32,uint256,int256)\":{\"notice\":\"Stores a new data point of a data set for a given timestamp.\"},\"setDataProvider(bytes32,address)\":{\"notice\":\"Registers / updates a market object provider.\"}},\"notice\":\"Registry for data which is published by an registered MarketObjectProvider\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol\":\"DataRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol\":{\"keccak256\":\"0x0c583f37b9c5b8b53647ab38f836eec5731f1a1d7896def29ee26916888539f6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b7d5b224d8d7fd4e59940f511054007c5368de4479e7ede3962cdaef817ac36f\",\"dweb:/ipfs/QmVr8rhMJPhCqKp289qvNvJhdFZAvWjh5scvWjNKRhcCeM\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007716565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061007b565b3390565b6107428061008a6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b1461010c578063af37897814610121578063d38db86d14610134578063ecef34f214610147578063f2fde38b1461015a57610093565b806308a4ec101461009857806327258b22146100c2578063715018a6146100e2578063816a7e01146100ec575b600080fd5b6100ab6100a63660046105ad565b61016d565b6040516100b9929190610618565b60405180910390f35b6100d56100d036600461055b565b610196565b6040516100b9919061060d565b6100ea6101b5565b005b6100ff6100fa36600461055b565b61023d565b6040516100b99190610703565b610114610252565b6040516100b991906105f9565b6100ea61012f366004610573565b610261565b6100ea6101423660046105ce565b61032f565b61011461015536600461055b565b610454565b6100ea61016836600461052d565b610472565b60009182526020828152604080842092845291905290208054600190910154909160ff90911690565b600090815260208190526040902060020154600160a01b900460ff1690565b6101bd610529565b6001546001600160a01b039081169116146101f35760405162461bcd60e51b81526004016101ea906106ce565b60405180910390fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b60009081526020819052604090206001015490565b6001546001600160a01b031690565b610269610529565b6001546001600160a01b039081169116146102965760405162461bcd60e51b81526004016101ea906106ce565b600082815260208190526040902060020180546001600160a01b0319166001600160a01b0383161790819055600160a01b900460ff166102f3576000828152602081905260409020600201805460ff60a01b1916600160a01b1790555b817f6d3523ac54f3703c06e93ef7e0e67f963e698a668616fbc72dafb71eb6bd30968260405161032391906105f9565b60405180910390a25050565b6000838152602081905260409020600201546001600160a01b031633146103685760405162461bcd60e51b81526004016101ea9061067c565b60408051808201825282815260016020808301828152600088815280835285812088825280845295812094518555905193909201805460ff19169315159390931790925585815290526002015460ff600160a01b909104166103e7576000838152602081905260409020600201805460ff60a01b1916600160a01b1790555b6000838152602081905260409020600101548211156104155760008381526020819052604090206001018290555b827f183291f60aff981c3c2d6cb02edd75633d383a51f608e397789555ef0e7756028284604051610447929190610628565b60405180910390a2505050565b6000908152602081905260409020600201546001600160a01b031690565b61047a610529565b6001546001600160a01b039081169116146104a75760405162461bcd60e51b81526004016101ea906106ce565b6001600160a01b0381166104cd5760405162461bcd60e51b81526004016101ea90610636565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60006020828403121561053e578081fd5b81356001600160a01b0381168114610554578182fd5b9392505050565b60006020828403121561056c578081fd5b5035919050565b60008060408385031215610585578081fd5b8235915060208301356001600160a01b03811681146105a2578182fd5b809150509250929050565b600080604083850312156105bf578182fd5b50508035926020909101359150565b6000806000606084860312156105e2578081fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b901515815260200190565b9182521515602082015260400190565b918252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526032908201527f4461746152656769737472792e7075626c69736844617461506f696e743a20556040820152712720aaaa2427a924ad22a22fa9a2a72222a960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b9081526020019056fea26469706673582212201c04f731aa07a7327f3f3adb59ade273702f03d3c00cc003a84f5e2eba7077ee64736f6c634300060b0033",
  "immutableReferences": {},
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "updatedAt": "2020-08-12T09:47:17.754Z"
}
