UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

1,196 lines (1,195 loc) 70 kB
{ "contractName": "TestBtcUsdChainlinkAggregator", "abi": [ { "constant": true, "inputs": [], "name": "aggregator", "outputs": [ { "internalType": "contract IChainlinkAccessControlAggregator", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "maxAnswer", "outputs": [ { "internalType": "int192", "name": "", "type": "int192" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "minAnswer", "outputs": [ { "internalType": "int192", "name": "", "type": "int192" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "latestRoundData", "outputs": [ { "internalType": "uint80", "name": "roundId", "type": "uint80" }, { "internalType": "int256", "name": "answer", "type": "int256" }, { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"aggregator\",\"outputs\":[{\"internalType\":\"contract IChainlinkAccessControlAggregator\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxAnswer\",\"outputs\":[{\"internalType\":\"int192\",\"name\":\"\",\"type\":\"int192\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minAnswer\",\"outputs\":[{\"internalType\":\"int192\",\"name\":\"\",\"type\":\"int192\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestBtcUsdChainlinkAggregator.sol\":\"TestBtcUsdChainlinkAggregator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol\":{\"keccak256\":\"0xbb94dc91633d6fb20e1d7e2b5ce1f11346e89a6bfc8c3ac5d163c35a3e4ad60a\",\"urls\":[\"bzz-raw://264c7c039caf44b1866769feb237010651730d546b54bb6f2b7bc77cf3b6c9c9\",\"dweb:/ipfs/QmX8TTF8E2G8TT1yig6qHC8amWDwaq1GG6iaKYTTHsYsjo\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol\":{\"keccak256\":\"0x0209c9f35dbe82857a6441d8d61f271baeb5098549eabf5fc6d33503d0d3e073\",\"urls\":[\"bzz-raw://2f6af7b5198548a9a5e3d8a30203d7cd003eae93cca22b8466c10e0dcfcbc367\",\"dweb:/ipfs/Qme3bQ58ZoQLYDoJQHnvEeQZqgqyWTFBYBmMoiem7LPXmz\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestBtcUsdChainlinkAggregator.sol\":{\"keccak256\":\"0xba583d06bf097bf1a0d5c311ba56aa1e66118119cdc0718484ddfc4333f8795c\",\"urls\":[\"bzz-raw://e3b240e4a498a68c2273799f036bcc015b389ec0a338b3346b50e4e89a5db866\",\"dweb:/ipfs/QmQmwvXE2uDsQZV3PPBj5WdVcTXBACSzbZSD1gwkPF2WWn\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b5061019a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063313ce56711610050578063313ce567146100be57806370da2f67146100dc578063feaf968c146100e457610067565b806322adbc781461006c578063245a7bfc1461008d575b600080fd5b61007461012b565b60408051601792830b90920b8252519081900360200190f35b610095610130565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100c6610134565b6040805160ff9092168252519081900360200190f35b610074610139565b6100ec610153565b6040805169ffffffffffffffffffff96871681526020810195909552848101939093526060840191909152909216608082015290519081900360a00190f35b600190565b3090565b600890565b75ffffffffffffffffffffffffffffffffffffffffffff90565b600064dfff2c4b80814281909192939456fea265627a7a72315820c46188edfac7ef38acfb28a58b8ae50f5208c93c9a39ce15b61accc5f06918c764736f6c63430005100032", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063313ce56711610050578063313ce567146100be57806370da2f67146100dc578063feaf968c146100e457610067565b806322adbc781461006c578063245a7bfc1461008d575b600080fd5b61007461012b565b60408051601792830b90920b8252519081900360200190f35b610095610130565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100c6610134565b6040805160ff9092168252519081900360200190f35b610074610139565b6100ec610153565b6040805169ffffffffffffffffffff96871681526020810195909552848101939093526060840191909152909216608082015290519081900360a00190f35b600190565b3090565b600890565b75ffffffffffffffffffffffffffffffffffffffffffff90565b600064dfff2c4b80814281909192939456fea265627a7a72315820c46188edfac7ef38acfb28a58b8ae50f5208c93c9a39ce15b61accc5f06918c764736f6c63430005100032", "sourceMap": "937:956:112:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;937:956:112;;;;;;;", "deployedSourceMap": "937:956:112:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;937:956:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1042:257;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1305:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1386:129;;;:::i;1604:287::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:77;1590:1;1521:77;:::o;1042:257::-;1286:4;1042:257;:::o;1305:75::-;1372:1;1305:75;:::o;1386:129::-;1455:53;1386:129;:::o;1604:287::-;1675:14;1848:12;1675:14;1865:15;1675:14;1604:287;;;;;:::o", "source": "/*\n\n Copyright 2020 Dolomite.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\n\nimport { IChainlinkAggregator } from \"../external/interfaces/IChainlinkAggregator.sol\";\nimport { IChainlinkAccessControlAggregator } from \"../external/interfaces/IChainlinkAccessControlAggregator.sol\";\n\n\n/**\n * @dev Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.\n */\ncontract TestBtcUsdChainlinkAggregator is IChainlinkAggregator, IChainlinkAccessControlAggregator {\n\n function aggregator() external view returns (IChainlinkAccessControlAggregator) {\n // For the sake of simplicity, we implement the IChainlinkAccessControlAggregator interface here\n return IChainlinkAccessControlAggregator(address(this));\n }\n\n function decimals() external view returns (uint8) {\n return 8;\n }\n\n function maxAnswer() external view returns (int192) {\n return 95780971304118053647396689196894323976171195136475135;\n }\n\n function minAnswer() external view returns (int192) {\n return 1;\n }\n\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n ) {\n // $9,620.588\n return (0, 962058800000, 0, block.timestamp, 0);\n }\n}\n", "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestBtcUsdChainlinkAggregator.sol", "ast": { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestBtcUsdChainlinkAggregator.sol", "exportedSymbols": { "TestBtcUsdChainlinkAggregator": [ 32809 ] }, "id": 32810, "nodeType": "SourceUnit", "nodes": [ { "id": 32742, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "595:23:112" }, { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol", "file": "../external/interfaces/IChainlinkAggregator.sol", "id": 32744, "nodeType": "ImportDirective", "scope": 32810, "sourceUnit": 4191, "src": "620:87:112", "symbolAliases": [ { "foreign": 32743, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol", "file": "../external/interfaces/IChainlinkAccessControlAggregator.sol", "id": 32746, "nodeType": "ImportDirective", "scope": 32810, "sourceUnit": 4162, "src": "708:113:112", "symbolAliases": [ { "foreign": 32745, "local": null } ], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 32747, "name": "IChainlinkAggregator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4190, "src": "979:20:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAggregator_$4190", "typeString": "contract IChainlinkAggregator" } }, "id": 32748, "nodeType": "InheritanceSpecifier", "src": "979:20:112" }, { "arguments": null, "baseName": { "contractScope": null, "id": 32749, "name": "IChainlinkAccessControlAggregator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4161, "src": "1001:33:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" } }, "id": 32750, "nodeType": "InheritanceSpecifier", "src": "1001:33:112" } ], "contractDependencies": [ 4161, 4190 ], "contractKind": "contract", "documentation": "@dev Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.", "fullyImplemented": true, "id": 32809, "linearizedBaseContracts": [ 32809, 4161, 4190 ], "name": "TestBtcUsdChainlinkAggregator", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 32761, "nodeType": "Block", "src": "1122:177:112", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 32757, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 38365, "src": "1286:4:112", "typeDescriptions": { "typeIdentifier": "t_contract$_TestBtcUsdChainlinkAggregator_$32809", "typeString": "contract TestBtcUsdChainlinkAggregator" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_TestBtcUsdChainlinkAggregator_$32809", "typeString": "contract TestBtcUsdChainlinkAggregator" } ], "id": 32756, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1278:7:112", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 32758, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1278:13:112", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 32755, "name": "IChainlinkAccessControlAggregator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "1244:33:112", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IChainlinkAccessControlAggregator_$4161_$", "typeString": "type(contract IChainlinkAccessControlAggregator)" } }, "id": 32759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1244:48:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" } }, "functionReturnParameters": 32754, "id": 32760, "nodeType": "Return", "src": "1237:55:112" } ] }, "documentation": null, "id": 32762, "implemented": true, "kind": "function", "modifiers": [], "name": "aggregator", "nodeType": "FunctionDefinition", "parameters": { "id": 32751, "nodeType": "ParameterList", "parameters": [], "src": "1061:2:112" }, "returnParameters": { "id": 32754, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 32753, "name": "", "nodeType": "VariableDeclaration", "scope": 32762, "src": "1087:33:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" }, "typeName": { "contractScope": null, "id": 32752, "name": "IChainlinkAccessControlAggregator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4161, "src": "1087:33:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" } }, "value": null, "visibility": "internal" } ], "src": "1086:35:112" }, "scope": 32809, "src": "1042:257:112", "stateMutability": "view", "superFunction": 4171, "visibility": "external" }, { "body": { "id": 32769, "nodeType": "Block", "src": "1355:25:112", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "38", "id": 32767, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1372:1:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_8_by_1", "typeString": "int_const 8" }, "value": "8" }, "functionReturnParameters": 32766, "id": 32768, "nodeType": "Return", "src": "1365:8:112" } ] }, "documentation": null, "id": 32770, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "parameters": { "id": 32763, "nodeType": "ParameterList", "parameters": [], "src": "1322:2:112" }, "returnParameters": { "id": 32766, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 32765, "name": "", "nodeType": "VariableDeclaration", "scope": 32770, "src": "1348:5:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 32764, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1348:5:112", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1347:7:112" }, "scope": 32809, "src": "1305:75:112", "stateMutability": "view", "superFunction": 4176, "visibility": "external" }, { "body": { "id": 32777, "nodeType": "Block", "src": "1438:77:112", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "3935373830393731333034313138303533363437333936363839313936383934333233393736313731313935313336343735313335", "id": 32775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1455:53:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_95780971304118053647396689196894323976171195136475135_by_1", "typeString": "int_const 9578...(45 digits omitted)...5135" }, "value": "95780971304118053647396689196894323976171195136475135" }, "functionReturnParameters": 32774, "id": 32776, "nodeType": "Return", "src": "1448:60:112" } ] }, "documentation": null, "id": 32778, "implemented": true, "kind": "function", "modifiers": [], "name": "maxAnswer", "nodeType": "FunctionDefinition", "parameters": { "id": 32771, "nodeType": "ParameterList", "parameters": [], "src": "1404:2:112" }, "returnParameters": { "id": 32774, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 32773, "name": "", "nodeType": "VariableDeclaration", "scope": 32778, "src": "1430:6:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int192", "typeString": "int192" }, "typeName": { "id": 32772, "name": "int192", "nodeType": "ElementaryTypeName", "src": "1430:6:112", "typeDescriptions": { "typeIdentifier": "t_int192", "typeString": "int192" } }, "value": null, "visibility": "internal" } ], "src": "1429:8:112" }, "scope": 32809, "src": "1386:129:112", "stateMutability": "view", "superFunction": 4160, "visibility": "external" }, { "body": { "id": 32785, "nodeType": "Block", "src": "1573:25:112", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "31", "id": 32783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1590:1:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "functionReturnParameters": 32782, "id": 32784, "nodeType": "Return", "src": "1583:8:112" } ] }, "documentation": null, "id": 32786, "implemented": true, "kind": "function", "modifiers": [], "name": "minAnswer", "nodeType": "FunctionDefinition", "parameters": { "id": 32779, "nodeType": "ParameterList", "parameters": [], "src": "1539:2:112" }, "returnParameters": { "id": 32782, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 32781, "name": "", "nodeType": "VariableDeclaration", "scope": 32786, "src": "1565:6:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int192", "typeString": "int192" }, "typeName": { "id": 32780, "name": "int192", "nodeType": "ElementaryTypeName", "src": "1565:6:112", "typeDescriptions": { "typeIdentifier": "t_int192", "typeString": "int192" } }, "value": null, "visibility": "internal" } ], "src": "1564:8:112" }, "scope": 32809, "src": "1521:77:112", "stateMutability": "view", "superFunction": 4155, "visibility": "external" }, { "body": { "id": 32807, "nodeType": "Block", "src": "1805:86:112", "statements": [ { "expression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "hexValue": "30", "id": 32799, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1845:1:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "argumentTypes": null, "hexValue": "393632303538383030303030", "id": 32800, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1848:12:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_962058800000_by_1", "typeString": "int_const 962058800000" }, "value": "962058800000" }, { "argumentTypes": null, "hexValue": "30", "id": 32801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1862:1:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 32802, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 38097, "src": "1865:5:112", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 32803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1865:15:112", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "30", "id": 32804, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1882:1:112", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "id": 32805, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1844:40:112", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_962058800000_by_1_$_t_rational_0_by_1_$_t_uint256_$_t_rational_0_by_1_$", "typeString": "tuple(int_const 0,int_const 962058800000,int_const 0,uint256,int_const 0)" } }, "functionReturnParameters": 32798, "id": 32806, "nodeType": "Return", "src": "1837:47:112" } ] }, "documentation": null, "id": 32808, "implemented": true, "kind": "function", "modifiers": [], "name": "latestRoundData", "nodeType": "FunctionDefinition", "parameters": { "id": 32787, "nodeType": "ParameterList", "parameters": [], "src": "1628:2:112" }, "returnParameters": { "id": 32798, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 32789, "name": "roundId", "nodeType": "VariableDeclaration", "scope": 32808, "src": "1675:14:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint80", "typeString": "uint80" }, "typeName": { "id": 32788, "name": "uint80", "nodeType": "ElementaryTypeName", "src": "1675:6:112", "typeDescriptions": { "typeIdentifier": "t_uint80", "typeString": "uint80" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 32791, "name": "answer", "nodeType": "VariableDeclaration", "scope": 32808, "src": "1699:13:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 32790, "name": "int256", "nodeType": "ElementaryTypeName", "src": "1699:6:112", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 32793, "name": "startedAt", "nodeType": "VariableDeclaration", "scope": 32808, "src": "1722:17:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 32792, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1722:7:112", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 32795, "name": "updatedAt", "nodeType": "VariableDeclaration", "scope": 32808, "src": "1749:17:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 32794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:112", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 32797, "name": "answeredInRound", "nodeType": "VariableDeclaration", "scope": 32808, "src": "1776:22:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint80", "typeString": "uint80" }, "typeName": { "id": 32796, "name": "uint80", "nodeType": "ElementaryTypeName", "src": "1776:6:112", "typeDescriptions": { "typeIdentifier": "t_uint80", "typeString": "uint80" } }, "value": null, "visibility": "internal" } ], "src": "1665:139:112" }, "scope": 32809, "src": "1604:287:112", "stateMutability": "view", "superFunction": 4189, "visibility": "external" } ], "scope": 32810, "src": "937:956:112" } ], "src": "595:1299:112" }, "legacyAST": { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestBtcUsdChainlinkAggregator.sol", "exportedSymbols": { "TestBtcUsdChainlinkAggregator": [ 32809 ] }, "id": 32810, "nodeType": "SourceUnit", "nodes": [ { "id": 32742, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "595:23:112" }, { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol", "file": "../external/interfaces/IChainlinkAggregator.sol", "id": 32744, "nodeType": "ImportDirective", "scope": 32810, "sourceUnit": 4191, "src": "620:87:112", "symbolAliases": [ { "foreign": 32743, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol", "file": "../external/interfaces/IChainlinkAccessControlAggregator.sol", "id": 32746, "nodeType": "ImportDirective", "scope": 32810, "sourceUnit": 4162, "src": "708:113:112", "symbolAliases": [ { "foreign": 32745, "local": null } ], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 32747, "name": "IChainlinkAggregator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4190, "src": "979:20:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAggregator_$4190", "typeString": "contract IChainlinkAggregator" } }, "id": 32748, "nodeType": "InheritanceSpecifier", "src": "979:20:112" }, { "arguments": null, "baseName": { "contractScope": null, "id": 32749, "name": "IChainlinkAccessControlAggregator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4161, "src": "1001:33:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" } }, "id": 32750, "nodeType": "InheritanceSpecifier", "src": "1001:33:112" } ], "contractDependencies": [ 4161, 4190 ], "contractKind": "contract", "documentation": "@dev Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.", "fullyImplemented": true, "id": 32809, "linearizedBaseContracts": [ 32809, 4161, 4190 ], "name": "TestBtcUsdChainlinkAggregator", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 32761, "nodeType": "Block", "src": "1122:177:112", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 32757, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 38365, "src": "1286:4:112", "typeDescriptions": { "typeIdentifier": "t_contract$_TestBtcUsdChainlinkAggregator_$32809", "typeString": "contract TestBtcUsdChainlinkAggregator" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_TestBtcUsdChainlinkAggregator_$32809", "typeString": "contract TestBtcUsdChainlinkAggregator" } ], "id": 32756, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1278:7:112", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 32758, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1278:13:112", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 32755, "name": "IChainlinkAccessControlAggregator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4161, "src": "1244:33:112", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IChainlinkAccessControlAggregator_$4161_$", "typeString": "type(contract IChainlinkAccessControlAggregator)" } }, "id": 32759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1244:48:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" } }, "functionReturnParameters": 32754, "id": 32760, "nodeType": "Return", "src": "1237:55:112" } ] }, "documentation": null, "id": 32762, "implemented": true, "kind": "function", "modifiers": [], "name": "aggregator", "nodeType": "FunctionDefinition", "parameters": { "id": 32751, "nodeType": "ParameterList", "parameters": [], "src": "1061:2:112" }, "returnParameters": { "id": 32754, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 32753, "name": "", "nodeType": "VariableDeclaration", "scope": 32762, "src": "1087:33:112", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" }, "typeName": { "contractScope": null, "id": 32752, "name": "IChainlinkAccessControlAggregator", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4161, "src": "1087:33:112", "typeDescriptions": { "typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161", "typeString": "contract IChainlinkAccessControlAggregator" } }, "value": null, "visibility": "internal" } ], "src": "1086:35:112" }, "scope": 32809, "src": "1042:257:112", "stateMutability": "view", "superFunction": 4171, "visibility": "external" }, { "body": { "id": 32769, "nodeType": "Block", "src": "1355:25:112", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "38", "id": 32767, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false,