@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
920 lines (919 loc) • 125 kB
JSON
{
"contractName": "DolomiteVersionLib",
"abi": [],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Dolomite * Library contract that has various utility functions for margin positions/accounts\",\"methods\":{},\"title\":\"DolomiteVersionLib\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/DolomiteVersionLib.sol\":\"DolomiteVersionLib\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol\":{\"keccak256\":\"0xa7b197139e570e823cab42c3b8500c9c5edc8a40110970a7d6fe60f05864ba10\",\"urls\":[\"bzz-raw://4f469be063d8f694c5277650bc53ac2c0d164f62e36c6a9ab7dad126479990a9\",\"dweb:/ipfs/Qme4sTbGi4T2QhsJSweqGzqm5rxQkypy27g1vLy8ipVijV\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/DolomiteVersionLib.sol\":{\"keccak256\":\"0x2b53e388a5307c028d1be1ab654eacb46bd445b24beb367c0782bd408f2a28b4\",\"urls\":[\"bzz-raw://f1b9f5d89093f45e4b83c3220c2a426f4e399c7bd4ba0a6fa95e1ac6a25f77f6\",\"dweb:/ipfs/QmdoQ2xZnB7r7q2i1gEkzn5KyuiDQW1oAjDUHB6x6DG8Fy\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
"bytecode": "0x60636023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea365627a7a723158207831a91cef3028d0ec1bc0195e2bd7f5ad3bc0bed064e74554bc5e5901098c766c6578706572696d656e74616cf564736f6c63430005100040",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea365627a7a723158207831a91cef3028d0ec1bc0195e2bd7f5ad3bc0bed064e74554bc5e5901098c766c6578706572696d656e74616cf564736f6c63430005100040",
"sourceMap": "1111:1683:37:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
"deployedSourceMap": "1111:1683:37:-;;;;;;;;",
"source": "/*\n\n Copyright 2022 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;\npragma experimental ABIEncoderV2;\n\nimport { Account } from \"../../protocol/lib/Account.sol\";\nimport { Decimal } from \"../../protocol/lib/Decimal.sol\";\nimport { Monetary } from \"../../protocol/lib/Monetary.sol\";\nimport { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\nimport { IExpiry } from \"../interfaces/IExpiry.sol\";\n\n\n/**\n * @title DolomiteVersionLib\n * @author Dolomite\n *\n * Library contract that has various utility functions for margin positions/accounts\n */\nlibrary DolomiteVersionLib {\n\n // ============ Constants ============\n\n bytes32 private constant FILE = \"DolomiteVersionLib\";\n uint256 private constant ARBITRUM_ONE = 42161;\n\n // ============ Functions ============\n\n function getLiquidationSpreadForChainAndPair(\n IDolomiteMargin _dolomiteMargin,\n uint256 _chainId,\n Account.Info memory _liquidAccount,\n uint256 _heldMarketId,\n uint256 _owedMarketId\n ) internal view returns (Decimal.D256 memory) {\n if (_chainId == ARBITRUM_ONE) {\n return _dolomiteMargin.getLiquidationSpreadForPair(_heldMarketId, _owedMarketId);\n } else {\n return _dolomiteMargin.getLiquidationSpreadForAccountAndPair(\n _liquidAccount,\n _heldMarketId,\n _owedMarketId\n );\n }\n }\n\n function getExpirySpreadAdjustedPricesForChain(\n IExpiry _expiry,\n uint256 _chainId,\n Account.Info memory _liquidAccount,\n uint256 _heldMarketId,\n uint256 _owedMarketId,\n uint32 _expiration\n ) internal view returns (\n Monetary.Price memory heldPrice,\n Monetary.Price memory owedPriceAdj\n ) {\n if (_chainId == ARBITRUM_ONE) {\n (heldPrice, owedPriceAdj) = _expiry.getLiquidationSpreadAdjustedPrices(\n _liquidAccount,\n _heldMarketId,\n _owedMarketId,\n _expiration\n );\n } else {\n (heldPrice, owedPriceAdj) = _expiry.getSpreadAdjustedPrices(\n _heldMarketId,\n _owedMarketId,\n _expiration\n );\n }\n }\n}\n",
"sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/DolomiteVersionLib.sol",
"ast": {
"absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/lib/DolomiteVersionLib.sol",
"exportedSymbols": {
"DolomiteVersionLib": [
6029
]
},
"id": 6030,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 5927,
"literals": [
"solidity",
"^",
"0.5",
".7"
],
"nodeType": "PragmaDirective",
"src": "595:23:37"
},
{
"id": 5928,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "619:33:37"
},
{
"absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
"file": "../../protocol/lib/Account.sol",
"id": 5930,
"nodeType": "ImportDirective",
"scope": 6030,
"sourceUnit": 24886,
"src": "654:57:37",
"symbolAliases": [
{
"foreign": 5929,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
"file": "../../protocol/lib/Decimal.sol",
"id": 5932,
"nodeType": "ImportDirective",
"scope": 6030,
"sourceUnit": 26024,
"src": "712:57:37",
"symbolAliases": [
{
"foreign": 5931,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
"file": "../../protocol/lib/Monetary.sol",
"id": 5934,
"nodeType": "ImportDirective",
"scope": 6030,
"sourceUnit": 27761,
"src": "770:59:37",
"symbolAliases": [
{
"foreign": 5933,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
"file": "../../protocol/interfaces/IDolomiteMargin.sol",
"id": 5936,
"nodeType": "ImportDirective",
"scope": 6030,
"sourceUnit": 24694,
"src": "830:80:37",
"symbolAliases": [
{
"foreign": 5935,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IExpiry.sol",
"file": "../interfaces/IExpiry.sol",
"id": 5938,
"nodeType": "ImportDirective",
"scope": 6030,
"sourceUnit": 4566,
"src": "911:52:37",
"symbolAliases": [
{
"foreign": 5937,
"local": null
}
],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": "@title DolomiteVersionLib\n@author Dolomite\n * Library contract that has various utility functions for margin positions/accounts",
"fullyImplemented": true,
"id": 6029,
"linearizedBaseContracts": [
6029
],
"name": "DolomiteVersionLib",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 5941,
"name": "FILE",
"nodeType": "VariableDeclaration",
"scope": 6029,
"src": "1189:52:37",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 5939,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1189:7:37",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "446f6c6f6d69746556657273696f6e4c6962",
"id": 5940,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1221:20:37",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_30fc084ce2b4a28e51a197dcd5572242852068915baf4fbcc8e0a36729a94ed6",
"typeString": "literal_string \"DolomiteVersionLib\""
},
"value": "DolomiteVersionLib"
},
"visibility": "private"
},
{
"constant": true,
"id": 5944,
"name": "ARBITRUM_ONE",
"nodeType": "VariableDeclaration",
"scope": 6029,
"src": "1247:45:37",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 5942,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1247:7:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"hexValue": "3432313631",
"id": 5943,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1287:5:37",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_42161_by_1",
"typeString": "int_const 42161"
},
"value": "42161"
},
"visibility": "private"
},
{
"body": {
"id": 5978,
"nodeType": "Block",
"src": "1611:350:37",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 5961,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 5959,
"name": "_chainId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5948,
"src": "1625:8:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 5960,
"name": "ARBITRUM_ONE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5944,
"src": "1637:12:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1625:24:37",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 5976,
"nodeType": "Block",
"src": "1762:193:37",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 5971,
"name": "_liquidAccount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5950,
"src": "1854:14:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
"typeString": "struct Account.Info memory"
}
},
{
"argumentTypes": null,
"id": 5972,
"name": "_heldMarketId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5952,
"src": "1886:13:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 5973,
"name": "_owedMarketId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5954,
"src": "1917:13:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
"typeString": "struct Account.Info memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 5969,
"name": "_dolomiteMargin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5946,
"src": "1783:15:37",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
"typeString": "contract IDolomiteMargin"
}
},
"id": 5970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidationSpreadForAccountAndPair",
"nodeType": "MemberAccess",
"referencedDeclaration": 24135,
"src": "1783:53:37",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_D256_$25950_memory_ptr_$",
"typeString": "function (struct Account.Info memory,uint256,uint256) view external returns (struct Decimal.D256 memory)"
}
},
"id": 5974,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1783:161:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
"typeString": "struct Decimal.D256 memory"
}
},
"functionReturnParameters": 5958,
"id": 5975,
"nodeType": "Return",
"src": "1776:168:37"
}
]
},
"id": 5977,
"nodeType": "IfStatement",
"src": "1621:334:37",
"trueBody": {
"id": 5968,
"nodeType": "Block",
"src": "1651:105:37",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 5964,
"name": "_heldMarketId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5952,
"src": "1716:13:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 5965,
"name": "_owedMarketId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5954,
"src": "1731:13:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 5962,
"name": "_dolomiteMargin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5946,
"src": "1672:15:37",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
"typeString": "contract IDolomiteMargin"
}
},
"id": 5963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getLiquidationSpreadForPair",
"nodeType": "MemberAccess",
"referencedDeclaration": 24124,
"src": "1672:43:37",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_struct$_D256_$25950_memory_ptr_$",
"typeString": "function (uint256,uint256) view external returns (struct Decimal.D256 memory)"
}
},
"id": 5966,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1672:73:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
"typeString": "struct Decimal.D256 memory"
}
},
"functionReturnParameters": 5958,
"id": 5967,
"nodeType": "Return",
"src": "1665:80:37"
}
]
}
}
]
},
"documentation": null,
"id": 5979,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidationSpreadForChainAndPair",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 5955,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 5946,
"name": "_dolomiteMargin",
"nodeType": "VariableDeclaration",
"scope": 5979,
"src": "1397:31:37",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
"typeString": "contract IDolomiteMargin"
},
"typeName": {
"contractScope": null,
"id": 5945,
"name": "IDolomiteMargin",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 24693,
"src": "1397:15:37",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
"typeString": "contract IDolomiteMargin"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 5948,
"name": "_chainId",
"nodeType": "VariableDeclaration",
"scope": 5979,
"src": "1438:16:37",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 5947,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1438:7:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 5950,
"name": "_liquidAccount",
"nodeType": "VariableDeclaration",
"scope": 5979,
"src": "1464:34:37",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
"typeString": "struct Account.Info"
},
"typeName": {
"contractScope": null,
"id": 5949,
"name": "Account.Info",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 24851,
"src": "1464:12:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
"typeString": "struct Account.Info"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 5952,
"name": "_heldMarketId",
"nodeType": "VariableDeclaration",
"scope": 5979,
"src": "1508:21:37",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 5951,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1508:7:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 5954,
"name": "_owedMarketId",
"nodeType": "VariableDeclaration",
"scope": 5979,
"src": "1539:21:37",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 5953,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1539:7:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1387:179:37"
},
"returnParameters": {
"id": 5958,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 5957,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 5979,
"src": "1590:19:37",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
"typeString": "struct Decimal.D256"
},
"typeName": {
"contractScope": null,
"id": 5956,
"name": "Decimal.D256",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 25950,
"src": "1590:12:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
"typeString": "struct Decimal.D256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1589:21:37"
},
"scope": 6029,
"src": "1343:618:37",
"stateMutability": "view",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 6027,
"nodeType": "Block",
"src": "2319:473:37",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 6000,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 5998,
"name": "_chainId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5983,
"src": "2333:8:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 5999,
"name": "ARBITRUM_ONE",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5944,
"src": "2345:12:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2333:24:37",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 6025,
"nodeType": "Block",
"src": "2597:189:37",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 6023,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 6014,
"name": "heldPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5994,
"src": "2612:9:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
"typeString": "struct Monetary.Price memory"
}
},
{
"argumentTypes": null,
"id": 6015,
"name": "owedPriceAdj",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5996,
"src": "2623:12:37",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
"typeString": "struct Monetary.Price memory"
}
}
],
"id": 6016,
"isConstant": false,
"isInlineArray": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "TupleExpression",
"src": "2611:25:37",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
"typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 6019,
"name": "_heldMarketId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5987,
"src": "2688:13:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 6020,
"name": "_owedMarketId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5989,
"src": "2719:13:37",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 6021,
"name": "_expiration",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5991,
"src": "2750:11:37",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"expression": {
"argumentTypes": null,
"id": 6017,
"name": "_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5981,
"src": "2639:7:37",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IExpiry_$4565",
"typeString": "contract IExpiry"
}
},
"id": 6018,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getSpreadAdjustedPrices",
"nodeType": "MemberAccess",
"referencedDeclaration": 4555,
"src": "2639:31:37",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
"typeString": "function (uint256,uint256,uint32) view external returns (struct Monetary.Price memory,struct Monetary.Price memory)"
}
},
"id": 6022,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2639:136:37",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
"typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
}
},
"src": "2611:164:37",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 6024,
"nodeType": "ExpressionStatement",
"src": "2611:164:37"
}
]
},
"id": 6026,
"nodeType": "IfStatement",
"src": "2329:457:37",
"trueBody": {
"id": 6013,
"nodeType": "Block",
"src": "2359:232:37",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 6011,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 6001,
"name": "heldPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],