UNPKG

@dolomite-exchange/dolomite-margin

Version:

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

1,034 lines 49.2 kB
{ "contractName": "IGenericTraderProxyBase", "abi": [], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Dolomite * Base contract interface for implementing a generic trader proxy for trading assets using any trader from msg.sender\",\"methods\":{},\"title\":\"IGenericTraderProxyBase\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol\":\"IGenericTraderProxyBase\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IEventEmitterRegistry.sol\":{\"keccak256\":\"0x51ae058dafa3850ba14ea352c637af48e213c4b4e69e4d398b84ec6fed91d309\",\"urls\":[\"bzz-raw://974dda23508e2d7428433db7fb280c1bc82e197fd68f9d425c57f7bf57fdf82f\",\"dweb:/ipfs/QmeTteQN1tMXChaQ4nzBvLpndVfghaoznsQDM8kAqgDeF9\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol\":{\"keccak256\":\"0x2ac2830618b13f412f53c803cb8c5e79f1ea1a7da0767fb0c6430a3435153f6f\",\"urls\":[\"bzz-raw://5e128520cdac823bc7dbe5331708c650d9a4ad6a18ec3bb7d9e8739f8360cfc0\",\"dweb:/ipfs/QmcDcrnMcXUGm7NT3q6Z4idFzqcNZukrwHn5GjX44u5Win\"]},\"/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/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/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": "0x6080604052348015600f57600080fd5b50604c80601d6000396000f3fe6080604052600080fdfea365627a7a72315820c8df65be5d5c0974895e250060c1c6c805380a55b565cd4f17b78c095de2643c6c6578706572696d656e74616cf564736f6c63430005100040", "deployedBytecode": "0x6080604052600080fdfea365627a7a72315820c8df65be5d5c0974895e250060c1c6c805380a55b565cd4f17b78c095de2643c6c6578706572696d656e74616cf564736f6c63430005100040", "sourceMap": "1043:2925:25:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1043:2925:25;;;;;;;", "deployedSourceMap": "1043:2925:25:-;;;;;", "source": "/*\n\n Copyright 2023 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 { IDolomiteMargin } from \"../../protocol/interfaces/IDolomiteMargin.sol\";\n\nimport { Types } from \"../../protocol/lib/Types.sol\";\nimport {IEventEmitterRegistry} from \"./IEventEmitterRegistry.sol\";\n\n\n/**\n * @title IGenericTraderProxyBase\n * @author Dolomite\n *\n * Base contract interface for implementing a generic trader proxy for trading assets using any trader from msg.sender\n */\ninterface IGenericTraderProxyBase {\n\n // ============ Enums ============\n\n enum TraderType {\n /// @dev The trade will be conducted using external liquidity, using an `ActionType.Sell` or `ActionType.Buy`\n /// action.\n ExternalLiquidity,\n /// @dev The trade will be conducted using internal liquidity, using an `ActionType.Trade` action.\n InternalLiquidity,\n /// @dev The trade will be conducted using external liquidity using an `ActionType.Sell` or `ActionType.Buy`\n /// action. If this TradeType is used, the trader must be validated using\n /// the `IIsolationModeToken#isTokenConverterTrusted` function on the IsolationMode token.\n IsolationModeUnwrapper,\n /// @dev The trade will be conducted using external liquidity using an `ActionType.Sell` or `ActionType.Buy`\n /// action. If this TradeType is used, the trader must be validated using\n /// the `IIsolationModeToken#isTokenConverterTrusted` function on the IsolationMode token.\n IsolationModeWrapper\n }\n\n // ============ Structs ============\n\n struct\n TraderParam {\n /// @dev The type of trade to conduct\n TraderType traderType;\n /// @dev The index into the `_makerAccounts` array of the maker account to trade with. Should be set to 0 if\n /// the traderType is not `TraderType.InternalLiquidity`.\n uint256 makerAccountIndex;\n /// @dev The address of IAutoTrader or IExchangeWrapper that will be used to conduct the trade.\n address trader;\n /// @dev The data that will be passed through to the trader contract.\n bytes tradeData;\n }\n\n struct GenericTraderProxyCache {\n IDolomiteMargin dolomiteMargin;\n IEventEmitterRegistry eventEmitterRegistry;\n /// @dev True if the user is making a margin deposit, false if they are withdrawing. False if the variable is\n /// unused too.\n bool isMarginDeposit;\n /// @dev The other account number that is not `_traderAccountNumber`. Only used for TransferCollateralParams.\n uint256 otherAccountNumber;\n /// @dev The index into the account array at which traders start.\n uint256 traderAccountStartIndex;\n /// @dev The cursor for the looping through the operation's actions.\n uint256 actionsCursor;\n /// @dev The balance of `inputMarket` that the trader has before the call to `dolomiteMargin.operate`\n Types.Wei inputBalanceWeiBeforeOperate;\n /// @dev The balance of `outputMarket` that the trader has before the call to `dolomiteMargin.operate`\n Types.Wei outputBalanceWeiBeforeOperate;\n /// @dev The balance of `transferMarket` that the trader has before the call to `dolomiteMargin.operate`\n Types.Wei transferBalanceWeiBeforeOperate;\n }\n}\n", "sourcePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol", "ast": { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol", "exportedSymbols": { "IGenericTraderProxyBase": [ 4608 ] }, "id": 4609, "nodeType": "SourceUnit", "nodes": [ { "id": 4567, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "595:23:25" }, { "id": 4568, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "619:33:25" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol", "file": "../../protocol/interfaces/IDolomiteMargin.sol", "id": 4570, "nodeType": "ImportDirective", "scope": 4609, "sourceUnit": 24694, "src": "654:80:25", "symbolAliases": [ { "foreign": 4569, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol", "file": "../../protocol/lib/Types.sol", "id": 4572, "nodeType": "ImportDirective", "scope": 4609, "sourceUnit": 31362, "src": "736:53:25", "symbolAliases": [ { "foreign": 4571, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IEventEmitterRegistry.sol", "file": "./IEventEmitterRegistry.sol", "id": 4574, "nodeType": "ImportDirective", "scope": 4609, "sourceUnit": 4499, "src": "790:66:25", "symbolAliases": [ { "foreign": 4573, "local": null } ], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": "@title IGenericTraderProxyBase\n@author Dolomite\n * Base contract interface for implementing a generic trader proxy for trading assets using any trader from msg.sender", "fullyImplemented": true, "id": 4608, "linearizedBaseContracts": [ 4608 ], "name": "IGenericTraderProxyBase", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "IGenericTraderProxyBase.TraderType", "id": 4579, "members": [ { "id": 4575, "name": "ExternalLiquidity", "nodeType": "EnumValue", "src": "1299:17:25" }, { "id": 4576, "name": "InternalLiquidity", "nodeType": "EnumValue", "src": "1436:17:25" }, { "id": 4577, "name": "IsolationModeUnwrapper", "nodeType": "EnumValue", "src": "1780:22:25" }, { "id": 4578, "name": "IsolationModeWrapper", "nodeType": "EnumValue", "src": "2129:20:25" } ], "name": "TraderType", "nodeType": "EnumDefinition", "src": "1124:1031:25" }, { "canonicalName": "IGenericTraderProxyBase.TraderParam", "id": 4588, "members": [ { "constant": false, "id": 4581, "name": "traderType", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2282:21:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_TraderType_$4579", "typeString": "enum IGenericTraderProxyBase.TraderType" }, "typeName": { "contractScope": null, "id": 4580, "name": "TraderType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4579, "src": "2282:10:25", "typeDescriptions": { "typeIdentifier": "t_enum$_TraderType_$4579", "typeString": "enum IGenericTraderProxyBase.TraderType" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4583, "name": "makerAccountIndex", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2507:25:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4582, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2507:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4585, "name": "trader", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2646:14:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4584, "name": "address", "nodeType": "ElementaryTypeName", "src": "2646:7:25", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4587, "name": "tradeData", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2748:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" }, "typeName": { "id": 4586, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2748:5:25", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "name": "TraderParam", "nodeType": "StructDefinition", "scope": 4608, "src": "2203:567:25", "visibility": "public" }, { "canonicalName": "IGenericTraderProxyBase.GenericTraderProxyCache", "id": 4607, "members": [ { "constant": false, "id": 4590, "name": "dolomiteMargin", "nodeType": "VariableDeclaration", "scope": 4607, "src": "2817:30:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDolomiteMargin_$24693", "typeString": "contract IDolomiteMargin" }, "typeName": { "contractScope": null, "id": 4589, "name": "IDolomiteMargin", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 24693, "src": "2817:15:25", "typeDescriptions": { "typeIdentifier": "t_contract$_IDolomiteMargin_$24693", "typeString": "contract IDolomiteMargin" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4592, "name": "eventEmitterRegistry", "nodeType": "VariableDeclaration", "scope": 4607, "src": "2857:42:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IEventEmitterRegistry_$4498", "typeString": "contract IEventEmitterRegistry" }, "typeName": { "contractScope": null, "id": 4591, "name": "IEventEmitterRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4498, "src": "2857:21:25", "typeDescriptions": { "typeIdentifier": "t_contract$_IEventEmitterRegistry_$4498", "typeString": "contract IEventEmitterRegistry" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4594, "name": "isMarginDeposit", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3062:20:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4593, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3062:4:25", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4596, "name": "otherAccountNumber", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3213:26:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4595, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3213:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4598, "name": "traderAccountStartIndex", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3326:31:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4597, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3326:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4600, "name": "actionsCursor", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3447:21:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4599, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3447:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4602, "name": "inputBalanceWeiBeforeOperate", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3591:38:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" }, "typeName": { "contractScope": null, "id": 4601, "name": "Types.Wei", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31149, "src": "3591:9:25", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4604, "name": "outputBalanceWeiBeforeOperate", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3753:39:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" }, "typeName": { "contractScope": null, "id": 4603, "name": "Types.Wei", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31149, "src": "3753:9:25", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4606, "name": "transferBalanceWeiBeforeOperate", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3918:41:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" }, "typeName": { "contractScope": null, "id": 4605, "name": "Types.Wei", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31149, "src": "3918:9:25", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" } }, "value": null, "visibility": "internal" } ], "name": "GenericTraderProxyCache", "nodeType": "StructDefinition", "scope": 4608, "src": "2776:1190:25", "visibility": "public" } ], "scope": 4609, "src": "1043:2925:25" } ], "src": "595:3374:25" }, "legacyAST": { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol", "exportedSymbols": { "IGenericTraderProxyBase": [ 4608 ] }, "id": 4609, "nodeType": "SourceUnit", "nodes": [ { "id": 4567, "literals": [ "solidity", "^", "0.5", ".7" ], "nodeType": "PragmaDirective", "src": "595:23:25" }, { "id": 4568, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "619:33:25" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol", "file": "../../protocol/interfaces/IDolomiteMargin.sol", "id": 4570, "nodeType": "ImportDirective", "scope": 4609, "sourceUnit": 24694, "src": "654:80:25", "symbolAliases": [ { "foreign": 4569, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol", "file": "../../protocol/lib/Types.sol", "id": 4572, "nodeType": "ImportDirective", "scope": 4609, "sourceUnit": 31362, "src": "736:53:25", "symbolAliases": [ { "foreign": 4571, "local": null } ], "unitAlias": "" }, { "absolutePath": "/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IEventEmitterRegistry.sol", "file": "./IEventEmitterRegistry.sol", "id": 4574, "nodeType": "ImportDirective", "scope": 4609, "sourceUnit": 4499, "src": "790:66:25", "symbolAliases": [ { "foreign": 4573, "local": null } ], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "interface", "documentation": "@title IGenericTraderProxyBase\n@author Dolomite\n * Base contract interface for implementing a generic trader proxy for trading assets using any trader from msg.sender", "fullyImplemented": true, "id": 4608, "linearizedBaseContracts": [ 4608 ], "name": "IGenericTraderProxyBase", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "IGenericTraderProxyBase.TraderType", "id": 4579, "members": [ { "id": 4575, "name": "ExternalLiquidity", "nodeType": "EnumValue", "src": "1299:17:25" }, { "id": 4576, "name": "InternalLiquidity", "nodeType": "EnumValue", "src": "1436:17:25" }, { "id": 4577, "name": "IsolationModeUnwrapper", "nodeType": "EnumValue", "src": "1780:22:25" }, { "id": 4578, "name": "IsolationModeWrapper", "nodeType": "EnumValue", "src": "2129:20:25" } ], "name": "TraderType", "nodeType": "EnumDefinition", "src": "1124:1031:25" }, { "canonicalName": "IGenericTraderProxyBase.TraderParam", "id": 4588, "members": [ { "constant": false, "id": 4581, "name": "traderType", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2282:21:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_TraderType_$4579", "typeString": "enum IGenericTraderProxyBase.TraderType" }, "typeName": { "contractScope": null, "id": 4580, "name": "TraderType", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4579, "src": "2282:10:25", "typeDescriptions": { "typeIdentifier": "t_enum$_TraderType_$4579", "typeString": "enum IGenericTraderProxyBase.TraderType" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4583, "name": "makerAccountIndex", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2507:25:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4582, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2507:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4585, "name": "trader", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2646:14:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4584, "name": "address", "nodeType": "ElementaryTypeName", "src": "2646:7:25", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4587, "name": "tradeData", "nodeType": "VariableDeclaration", "scope": 4588, "src": "2748:15:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" }, "typeName": { "id": 4586, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2748:5:25", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "name": "TraderParam", "nodeType": "StructDefinition", "scope": 4608, "src": "2203:567:25", "visibility": "public" }, { "canonicalName": "IGenericTraderProxyBase.GenericTraderProxyCache", "id": 4607, "members": [ { "constant": false, "id": 4590, "name": "dolomiteMargin", "nodeType": "VariableDeclaration", "scope": 4607, "src": "2817:30:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IDolomiteMargin_$24693", "typeString": "contract IDolomiteMargin" }, "typeName": { "contractScope": null, "id": 4589, "name": "IDolomiteMargin", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 24693, "src": "2817:15:25", "typeDescriptions": { "typeIdentifier": "t_contract$_IDolomiteMargin_$24693", "typeString": "contract IDolomiteMargin" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4592, "name": "eventEmitterRegistry", "nodeType": "VariableDeclaration", "scope": 4607, "src": "2857:42:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IEventEmitterRegistry_$4498", "typeString": "contract IEventEmitterRegistry" }, "typeName": { "contractScope": null, "id": 4591, "name": "IEventEmitterRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4498, "src": "2857:21:25", "typeDescriptions": { "typeIdentifier": "t_contract$_IEventEmitterRegistry_$4498", "typeString": "contract IEventEmitterRegistry" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4594, "name": "isMarginDeposit", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3062:20:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4593, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3062:4:25", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4596, "name": "otherAccountNumber", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3213:26:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4595, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3213:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4598, "name": "traderAccountStartIndex", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3326:31:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4597, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3326:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4600, "name": "actionsCursor", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3447:21:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4599, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3447:7:25", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4602, "name": "inputBalanceWeiBeforeOperate", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3591:38:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" }, "typeName": { "contractScope": null, "id": 4601, "name": "Types.Wei", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31149, "src": "3591:9:25", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4604, "name": "outputBalanceWeiBeforeOperate", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3753:39:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" }, "typeName": { "contractScope": null, "id": 4603, "name": "Types.Wei", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31149, "src": "3753:9:25", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4606, "name": "transferBalanceWeiBeforeOperate", "nodeType": "VariableDeclaration", "scope": 4607, "src": "3918:41:25", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" }, "typeName": { "contractScope": null, "id": 4605, "name": "Types.Wei", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31149, "src": "3918:9:25", "typeDescriptions": { "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr", "typeString": "struct Types.Wei" } }, "value": null, "visibility": "internal" } ], "name": "GenericTraderProxyCache", "nodeType": "StructDefinition", "scope": 4608, "src": "2776:1190:25", "visibility": "public" } ], "scope": 4609, "src": "1043:2925:25" } ], "src": "595:3374:25" }, "compiler": { "name": "solc", "version": "0.5.16+commit.9c3226ce.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.0.23", "updatedAt": "2025-06-22T04:01:53.526Z", "devdoc": { "author": "Dolomite * Base contract interface for implementing a generic trader proxy for trading assets using any trader from msg.sender", "methods": {}, "title": "IGenericTraderProxyBase" }, "userdoc": { "methods": {} } }