{
  "contractName": "BaseRegistryStorage",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"BaseRegistryStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Describes the storage of the AssetRegistry Contains getter and setter methods for encoding, decoding data to optimize gas cost. Circumvents storing default values by relying on the characteristic of mappings returning zero for not set values.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":\"BaseRegistryStorage\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../Conversions.sol\";\nimport \"../SharedTypes.sol\";\nimport \"./State/StateEncoder.sol\";\nimport \"./Schedule/ScheduleEncoder.sol\";\n\n\nstruct Settlement {\n    bool isSettled;\n    int256 payoff;\n}\n\nstruct Asset {\n    // boolean indicating that asset exists / is registered\n    bool isSet;\n    // address of the ACTUS Engine used for computing the State and the Payoff of the asset\n    address engine;\n    // address of the Asset Actor which is allowed to update the State of the asset\n    address actor;\n    // schedule of the asset\n    Schedule schedule;\n    // ownership of the asset\n    AssetOwnership ownership;\n    // granular ownership of the event type specific cashflows\n    // per default owners are beneficiaries defined in ownership object\n    // cashflow id (:= (EventType index + 1) * direction) => owner\n    mapping (int8 => address) cashflowBeneficiaries;\n    // method level access control - stores which address can a specific method\n    // method signature => address => has access\n    mapping (bytes4 => mapping (address => bool)) access;\n    // tightly packed, encoded Terms and State values of the asset\n    // bytes32(0) used as default value for each attribute\n    // storage id => bytes32 encoded value\n    mapping (bytes32 => bytes32) packedTerms;\n    // tightly packed, encoded Terms and State values of the asset\n    // bytes32(0) used as default value for each attribute\n    // storage id => bytes32 encoded value\n    mapping (bytes32 => bytes32) packedState;\n    // indicates whether a specific event was settled\n    mapping (bytes32 => Settlement) settlement;\n}\n\n/**\n * @title BaseRegistryStorage\n * @notice Describes the storage of the AssetRegistry\n * Contains getter and setter methods for encoding, decoding data to optimize gas cost.\n * Circumvents storing default values by relying on the characteristic of mappings returning zero for not set values.\n */\nabstract contract BaseRegistryStorage {\n\n    using StateEncoder for Asset;\n    using ScheduleEncoder for Asset;\n\n    // AssetId => Asset\n    mapping (bytes32 => Asset) internal assets;\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
    "exportedSymbols": {
      "Asset": [
        4466
      ],
      "BaseRegistryStorage": [
        4478
      ],
      "Settlement": [
        4433
      ]
    },
    "id": 4479,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4423,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:9"
      },
      {
        "id": 4424,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:9"
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol",
        "file": "../Conversions.sol",
        "id": 4425,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 7056,
        "src": "101:28:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../SharedTypes.sol",
        "id": 4426,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 7865,
        "src": "130:28:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol",
        "file": "./State/StateEncoder.sol",
        "id": 4427,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 6654,
        "src": "159:34:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol",
        "file": "./Schedule/ScheduleEncoder.sol",
        "id": 4428,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 5031,
        "src": "194:40:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "canonicalName": "Settlement",
        "id": 4433,
        "members": [
          {
            "constant": false,
            "id": 4430,
            "mutability": "mutable",
            "name": "isSettled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4433,
            "src": "261:14:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4429,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "261:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4432,
            "mutability": "mutable",
            "name": "payoff",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4433,
            "src": "281:13:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int256",
              "typeString": "int256"
            },
            "typeName": {
              "id": 4431,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "281:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "name": "Settlement",
        "nodeType": "StructDefinition",
        "scope": 4479,
        "src": "237:60:9",
        "visibility": "public"
      },
      {
        "canonicalName": "Asset",
        "id": 4466,
        "members": [
          {
            "constant": false,
            "id": 4435,
            "mutability": "mutable",
            "name": "isSet",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "378:10:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4434,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "378:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4437,
            "mutability": "mutable",
            "name": "engine",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "486:14:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4436,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "486:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4439,
            "mutability": "mutable",
            "name": "actor",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "590:13:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4438,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "590:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4441,
            "mutability": "mutable",
            "name": "schedule",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "638:17:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Schedule_$7864_storage_ptr",
              "typeString": "struct Schedule"
            },
            "typeName": {
              "contractScope": null,
              "id": 4440,
              "name": "Schedule",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7864,
              "src": "638:8:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Schedule_$7864_storage_ptr",
                "typeString": "struct Schedule"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4443,
            "mutability": "mutable",
            "name": "ownership",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "691:24:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
              "typeString": "struct AssetOwnership"
            },
            "typeName": {
              "contractScope": null,
              "id": 4442,
              "name": "AssetOwnership",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7849,
              "src": "691:14:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                "typeString": "struct AssetOwnership"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4447,
            "mutability": "mutable",
            "name": "cashflowBeneficiaries",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "923:47:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_int8_$_t_address_$",
              "typeString": "mapping(int8 => address)"
            },
            "typeName": {
              "id": 4446,
              "keyType": {
                "id": 4444,
                "name": "int8",
                "nodeType": "ElementaryTypeName",
                "src": "932:4:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_int8",
                  "typeString": "int8"
                }
              },
              "nodeType": "Mapping",
              "src": "923:25:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_int8_$_t_address_$",
                "typeString": "mapping(int8 => address)"
              },
              "valueType": {
                "id": 4445,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "940:7:9",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4453,
            "mutability": "mutable",
            "name": "access",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1105:52:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(bytes4 => mapping(address => bool))"
            },
            "typeName": {
              "id": 4452,
              "keyType": {
                "id": 4448,
                "name": "bytes4",
                "nodeType": "ElementaryTypeName",
                "src": "1114:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                }
              },
              "nodeType": "Mapping",
              "src": "1105:45:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(bytes4 => mapping(address => bool))"
              },
              "valueType": {
                "id": 4451,
                "keyType": {
                  "id": 4449,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1133:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1124:25:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 4450,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1144:4:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4457,
            "mutability": "mutable",
            "name": "packedTerms",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1332:40:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 4456,
              "keyType": {
                "id": 4454,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1341:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1332:28:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 4455,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1352:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4461,
            "mutability": "mutable",
            "name": "packedState",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1547:40:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 4460,
              "keyType": {
                "id": 4458,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1556:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1547:28:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 4459,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1567:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4465,
            "mutability": "mutable",
            "name": "settlement",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1647:42:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
              "typeString": "mapping(bytes32 => struct Settlement)"
            },
            "typeName": {
              "id": 4464,
              "keyType": {
                "id": 4462,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1656:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1647:31:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                "typeString": "mapping(bytes32 => struct Settlement)"
              },
              "valueType": {
                "contractScope": null,
                "id": 4463,
                "name": "Settlement",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4433,
                "src": "1667:10:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Settlement_$4433_storage_ptr",
                  "typeString": "struct Settlement"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "name": "Asset",
        "nodeType": "StructDefinition",
        "scope": 4479,
        "src": "299:1393:9",
        "visibility": "public"
      },
      {
        "abstract": true,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 4467,
          "nodeType": "StructuredDocumentation",
          "src": "1694:297:9",
          "text": " @title BaseRegistryStorage\n @notice Describes the storage of the AssetRegistry\n Contains getter and setter methods for encoding, decoding data to optimize gas cost.\n Circumvents storing default values by relying on the characteristic of mappings returning zero for not set values."
        },
        "fullyImplemented": true,
        "id": 4478,
        "linearizedBaseContracts": [
          4478
        ],
        "name": "BaseRegistryStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4470,
            "libraryName": {
              "contractScope": null,
              "id": 4468,
              "name": "StateEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6653,
              "src": "2043:12:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StateEncoder_$6653",
                "typeString": "library StateEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "2037:29:9",
            "typeName": {
              "contractScope": null,
              "id": 4469,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "2060:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "id": 4473,
            "libraryName": {
              "contractScope": null,
              "id": 4471,
              "name": "ScheduleEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5030,
              "src": "2077:15:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScheduleEncoder_$5030",
                "typeString": "library ScheduleEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "2071:32:9",
            "typeName": {
              "contractScope": null,
              "id": 4472,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "2097:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "constant": false,
            "id": 4477,
            "mutability": "mutable",
            "name": "assets",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4478,
            "src": "2133:42:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
              "typeString": "mapping(bytes32 => struct Asset)"
            },
            "typeName": {
              "id": 4476,
              "keyType": {
                "id": 4474,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2142:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2133:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                "typeString": "mapping(bytes32 => struct Asset)"
              },
              "valueType": {
                "contractScope": null,
                "id": 4475,
                "name": "Asset",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4466,
                "src": "2153:5:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                  "typeString": "struct Asset"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 4479,
        "src": "1992:186:9"
      }
    ],
    "src": "41:2138:9"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol",
    "exportedSymbols": {
      "Asset": [
        4466
      ],
      "BaseRegistryStorage": [
        4478
      ],
      "Settlement": [
        4433
      ]
    },
    "id": 4479,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4423,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:9"
      },
      {
        "id": 4424,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:9"
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol",
        "file": "../Conversions.sol",
        "id": 4425,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 7056,
        "src": "101:28:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../SharedTypes.sol",
        "id": 4426,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 7865,
        "src": "130:28:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol",
        "file": "./State/StateEncoder.sol",
        "id": 4427,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 6654,
        "src": "159:34:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol",
        "file": "./Schedule/ScheduleEncoder.sol",
        "id": 4428,
        "nodeType": "ImportDirective",
        "scope": 4479,
        "sourceUnit": 5031,
        "src": "194:40:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "canonicalName": "Settlement",
        "id": 4433,
        "members": [
          {
            "constant": false,
            "id": 4430,
            "mutability": "mutable",
            "name": "isSettled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4433,
            "src": "261:14:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4429,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "261:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4432,
            "mutability": "mutable",
            "name": "payoff",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4433,
            "src": "281:13:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int256",
              "typeString": "int256"
            },
            "typeName": {
              "id": 4431,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "281:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "name": "Settlement",
        "nodeType": "StructDefinition",
        "scope": 4479,
        "src": "237:60:9",
        "visibility": "public"
      },
      {
        "canonicalName": "Asset",
        "id": 4466,
        "members": [
          {
            "constant": false,
            "id": 4435,
            "mutability": "mutable",
            "name": "isSet",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "378:10:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4434,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "378:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4437,
            "mutability": "mutable",
            "name": "engine",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "486:14:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4436,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "486:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4439,
            "mutability": "mutable",
            "name": "actor",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "590:13:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4438,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "590:7:9",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4441,
            "mutability": "mutable",
            "name": "schedule",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "638:17:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Schedule_$7864_storage_ptr",
              "typeString": "struct Schedule"
            },
            "typeName": {
              "contractScope": null,
              "id": 4440,
              "name": "Schedule",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7864,
              "src": "638:8:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Schedule_$7864_storage_ptr",
                "typeString": "struct Schedule"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4443,
            "mutability": "mutable",
            "name": "ownership",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "691:24:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
              "typeString": "struct AssetOwnership"
            },
            "typeName": {
              "contractScope": null,
              "id": 4442,
              "name": "AssetOwnership",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7849,
              "src": "691:14:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                "typeString": "struct AssetOwnership"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4447,
            "mutability": "mutable",
            "name": "cashflowBeneficiaries",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "923:47:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_int8_$_t_address_$",
              "typeString": "mapping(int8 => address)"
            },
            "typeName": {
              "id": 4446,
              "keyType": {
                "id": 4444,
                "name": "int8",
                "nodeType": "ElementaryTypeName",
                "src": "932:4:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_int8",
                  "typeString": "int8"
                }
              },
              "nodeType": "Mapping",
              "src": "923:25:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_int8_$_t_address_$",
                "typeString": "mapping(int8 => address)"
              },
              "valueType": {
                "id": 4445,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "940:7:9",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4453,
            "mutability": "mutable",
            "name": "access",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1105:52:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(bytes4 => mapping(address => bool))"
            },
            "typeName": {
              "id": 4452,
              "keyType": {
                "id": 4448,
                "name": "bytes4",
                "nodeType": "ElementaryTypeName",
                "src": "1114:6:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                }
              },
              "nodeType": "Mapping",
              "src": "1105:45:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes4_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(bytes4 => mapping(address => bool))"
              },
              "valueType": {
                "id": 4451,
                "keyType": {
                  "id": 4449,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1133:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1124:25:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 4450,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1144:4:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4457,
            "mutability": "mutable",
            "name": "packedTerms",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1332:40:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 4456,
              "keyType": {
                "id": 4454,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1341:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1332:28:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 4455,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1352:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4461,
            "mutability": "mutable",
            "name": "packedState",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1547:40:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
              "typeString": "mapping(bytes32 => bytes32)"
            },
            "typeName": {
              "id": 4460,
              "keyType": {
                "id": 4458,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1556:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1547:28:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                "typeString": "mapping(bytes32 => bytes32)"
              },
              "valueType": {
                "id": 4459,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1567:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 4465,
            "mutability": "mutable",
            "name": "settlement",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4466,
            "src": "1647:42:9",
            "stateVariable": false,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
              "typeString": "mapping(bytes32 => struct Settlement)"
            },
            "typeName": {
              "id": 4464,
              "keyType": {
                "id": 4462,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1656:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1647:31:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Settlement_$4433_storage_$",
                "typeString": "mapping(bytes32 => struct Settlement)"
              },
              "valueType": {
                "contractScope": null,
                "id": 4463,
                "name": "Settlement",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4433,
                "src": "1667:10:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Settlement_$4433_storage_ptr",
                  "typeString": "struct Settlement"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "name": "Asset",
        "nodeType": "StructDefinition",
        "scope": 4479,
        "src": "299:1393:9",
        "visibility": "public"
      },
      {
        "abstract": true,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 4467,
          "nodeType": "StructuredDocumentation",
          "src": "1694:297:9",
          "text": " @title BaseRegistryStorage\n @notice Describes the storage of the AssetRegistry\n Contains getter and setter methods for encoding, decoding data to optimize gas cost.\n Circumvents storing default values by relying on the characteristic of mappings returning zero for not set values."
        },
        "fullyImplemented": true,
        "id": 4478,
        "linearizedBaseContracts": [
          4478
        ],
        "name": "BaseRegistryStorage",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4470,
            "libraryName": {
              "contractScope": null,
              "id": 4468,
              "name": "StateEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6653,
              "src": "2043:12:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StateEncoder_$6653",
                "typeString": "library StateEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "2037:29:9",
            "typeName": {
              "contractScope": null,
              "id": 4469,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "2060:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "id": 4473,
            "libraryName": {
              "contractScope": null,
              "id": 4471,
              "name": "ScheduleEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5030,
              "src": "2077:15:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScheduleEncoder_$5030",
                "typeString": "library ScheduleEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "2071:32:9",
            "typeName": {
              "contractScope": null,
              "id": 4472,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "2097:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "constant": false,
            "id": 4477,
            "mutability": "mutable",
            "name": "assets",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4478,
            "src": "2133:42:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
              "typeString": "mapping(bytes32 => struct Asset)"
            },
            "typeName": {
              "id": 4476,
              "keyType": {
                "id": 4474,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2142:7:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2133:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                "typeString": "mapping(bytes32 => struct Asset)"
              },
              "valueType": {
                "contractScope": null,
                "id": 4475,
                "name": "Asset",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 4466,
                "src": "2153:5:9",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                  "typeString": "struct Asset"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          }
        ],
        "scope": 4479,
        "src": "1992:186:9"
      }
    ],
    "src": "41:2138:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.677Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "title": "BaseRegistryStorage",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "notice": "Describes the storage of the AssetRegistry Contains getter and setter methods for encoding, decoding data to optimize gas cost. Circumvents storing default values by relying on the characteristic of mappings returning zero for not set values.",
    "version": 1
  }
}