{
  "compiler": {
    "version": "0.8.10+commit.fc410830"
  },
  "language": "Solidity",
  "output": {
    "abi": [
      {
        "inputs": [
          {
            "internalType": "string",
            "name": "marketId",
            "type": "string"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "ACLAdminUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "ACLManagerUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "AddressSet",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "proxyAddress",
            "type": "address"
          },
          {
            "indexed": false,
            "internalType": "address",
            "name": "oldImplementationAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newImplementationAddress",
            "type": "address"
          }
        ],
        "name": "AddressSetAsProxy",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "string",
            "name": "oldMarketId",
            "type": "string"
          },
          {
            "indexed": true,
            "internalType": "string",
            "name": "newMarketId",
            "type": "string"
          }
        ],
        "name": "MarketIdSet",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "previousOwner",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newOwner",
            "type": "address"
          }
        ],
        "name": "OwnershipTransferred",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "PoolConfiguratorUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "PoolDataProviderUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "PoolUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "PriceOracleSentinelUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "address",
            "name": "oldAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "PriceOracleUpdated",
        "type": "event"
      },
      {
        "anonymous": false,
        "inputs": [
          {
            "indexed": true,
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "proxyAddress",
            "type": "address"
          },
          {
            "indexed": true,
            "internalType": "address",
            "name": "implementationAddress",
            "type": "address"
          }
        ],
        "name": "ProxyCreated",
        "type": "event"
      },
      {
        "inputs": [],
        "name": "getACLAdmin",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getACLManager",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          }
        ],
        "name": "getAddress",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getMarketId",
        "outputs": [
          {
            "internalType": "string",
            "name": "",
            "type": "string"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getPool",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getPoolConfigurator",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getPoolDataProvider",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getPriceOracle",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "getPriceOracleSentinel",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "owner",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "renounceOwnership",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newAclAdmin",
            "type": "address"
          }
        ],
        "name": "setACLAdmin",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newAclManager",
            "type": "address"
          }
        ],
        "name": "setACLManager",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "newAddress",
            "type": "address"
          }
        ],
        "name": "setAddress",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "bytes32",
            "name": "id",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "newImplementationAddress",
            "type": "address"
          }
        ],
        "name": "setAddressAsProxy",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "string",
            "name": "newMarketId",
            "type": "string"
          }
        ],
        "name": "setMarketId",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newPoolConfiguratorImpl",
            "type": "address"
          }
        ],
        "name": "setPoolConfiguratorImpl",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newDataProvider",
            "type": "address"
          }
        ],
        "name": "setPoolDataProvider",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newPoolImpl",
            "type": "address"
          }
        ],
        "name": "setPoolImpl",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newPriceOracle",
            "type": "address"
          }
        ],
        "name": "setPriceOracle",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newPriceOracleSentinel",
            "type": "address"
          }
        ],
        "name": "setPriceOracleSentinel",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "newOwner",
            "type": "address"
          }
        ],
        "name": "transferOwnership",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      }
    ],
    "devdoc": {
      "author": "Aave",
      "details": "Acts as factory of proxies and admin of those, so with right to change its implementationsOwned by the Aave Governance*",
      "kind": "dev",
      "methods": {
        "constructor": {
          "details": "Constructor.",
          "params": {
            "marketId": "The identifier of the market.",
            "owner": "The owner address of this contract."
          }
        },
        "getACLAdmin()": {
          "returns": {
            "_0": "The address of the ACL admin"
          }
        },
        "getACLManager()": {
          "returns": {
            "_0": "The address of the ACLManager"
          }
        },
        "getAddress(bytes32)": {
          "details": "The returned address might be an EOA or a contract, potentially proxiedIt returns ZERO if there is no registered address with the given id",
          "params": {
            "id": "The id"
          },
          "returns": {
            "_0": "The address of the registered for the specified id"
          }
        },
        "getMarketId()": {
          "returns": {
            "_0": "The market id*"
          }
        },
        "getPool()": {
          "returns": {
            "_0": "The Pool proxy address*"
          }
        },
        "getPoolConfigurator()": {
          "returns": {
            "_0": "The PoolConfigurator proxy address*"
          }
        },
        "getPoolDataProvider()": {
          "returns": {
            "_0": "The address of the DataProvider"
          }
        },
        "getPriceOracle()": {
          "returns": {
            "_0": "The address of the PriceOracle"
          }
        },
        "getPriceOracleSentinel()": {
          "returns": {
            "_0": "The address of the PriceOracleSentinel"
          }
        },
        "owner()": {
          "details": "Returns the address of the current owner."
        },
        "renounceOwnership()": {
          "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
        },
        "setACLAdmin(address)": {
          "params": {
            "newAclAdmin": "The address of the new ACL admin"
          }
        },
        "setACLManager(address)": {
          "params": {
            "newAclManager": "The address of the new ACLManager*"
          }
        },
        "setAddress(bytes32,address)": {
          "details": "IMPORTANT Use this function carefully, as it will do a hard replacement",
          "params": {
            "id": "The id",
            "newAddress": "The address to set"
          }
        },
        "setAddressAsProxy(bytes32,address)": {
          "details": "IMPORTANT Use this function carefully, only for ids that don't have an explicit setter function, in order to avoid unexpected consequences",
          "params": {
            "id": "The id",
            "newImplementationAddress": "The address of the new implementation"
          }
        },
        "setMarketId(string)": {
          "details": "This can be used to create an onchain registry of PoolAddressesProviders to identify and validate multiple Aave markets.",
          "params": {
            "newMarketId": "The market id"
          }
        },
        "setPoolConfiguratorImpl(address)": {
          "params": {
            "newPoolConfiguratorImpl": "The new PoolConfigurator implementation*"
          }
        },
        "setPoolDataProvider(address)": {
          "params": {
            "newDataProvider": "The address of the new DataProvider*"
          }
        },
        "setPoolImpl(address)": {
          "params": {
            "newPoolImpl": "The new Pool implementation*"
          }
        },
        "setPriceOracle(address)": {
          "params": {
            "newPriceOracle": "The address of the new PriceOracle"
          }
        },
        "setPriceOracleSentinel(address)": {
          "params": {
            "newPriceOracleSentinel": "The address of the new PriceOracleSentinel*"
          }
        },
        "transferOwnership(address)": {
          "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
        }
      },
      "title": "PoolAddressesProvider",
      "version": 1
    },
    "userdoc": {
      "kind": "user",
      "methods": {
        "getACLAdmin()": {
          "notice": "Returns the address of the ACL admin."
        },
        "getACLManager()": {
          "notice": "Returns the address of the ACL manager."
        },
        "getAddress(bytes32)": {
          "notice": "Returns an address by its identifier."
        },
        "getMarketId()": {
          "notice": "Returns the id of the Aave market to which this contract points to."
        },
        "getPool()": {
          "notice": "Returns the address of the Pool proxy."
        },
        "getPoolConfigurator()": {
          "notice": "Returns the address of the PoolConfigurator proxy."
        },
        "getPoolDataProvider()": {
          "notice": "Returns the address of the data provider."
        },
        "getPriceOracle()": {
          "notice": "Returns the address of the price oracle."
        },
        "getPriceOracleSentinel()": {
          "notice": "Returns the address of the price oracle sentinel."
        },
        "setACLAdmin(address)": {
          "notice": "Updates the address of the ACL admin."
        },
        "setACLManager(address)": {
          "notice": "Updates the address of the ACL manager."
        },
        "setAddress(bytes32,address)": {
          "notice": "Sets an address for an id replacing the address saved in the addresses map."
        },
        "setAddressAsProxy(bytes32,address)": {
          "notice": "General function to update the implementation of a proxy registered with certain `id`. If there is no proxy registered, it will instantiate one and set as implementation the `newImplementationAddress`."
        },
        "setMarketId(string)": {
          "notice": "Associates an id with a specific PoolAddressesProvider."
        },
        "setPoolConfiguratorImpl(address)": {
          "notice": "Updates the implementation of the PoolConfigurator, or creates a proxy setting the new `PoolConfigurator` implementation when the function is called for the first time."
        },
        "setPoolDataProvider(address)": {
          "notice": "Updates the address of the data provider."
        },
        "setPoolImpl(address)": {
          "notice": "Updates the implementation of the Pool, or creates a proxy setting the new `pool` implementation when the function is called for the first time."
        },
        "setPriceOracle(address)": {
          "notice": "Updates the address of the price oracle."
        },
        "setPriceOracleSentinel(address)": {
          "notice": "Updates the address of the price oracle sentinel."
        }
      },
      "notice": "Main registry of addresses part of or connected to the protocol, including permissioned roles",
      "version": 1
    }
  },
  "settings": {
    "compilationTarget": {
      "protocol/configuration/PoolAddressesProvider.sol": "PoolAddressesProvider"
    },
    "evmVersion": "london",
    "libraries": {},
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "optimizer": {
      "enabled": false,
      "runs": 200
    },
    "remappings": []
  },
  "sources": {
    "dependencies/openzeppelin/contracts/Address.sol": {
      "keccak256": "0x5d7e9ede3c9527448c06e808a3169ee03a0470f804b58104b654c419d7a9685b",
      "license": "agpl-3.0",
      "urls": [
        "bzz-raw://6cdadb4d34e1ab3771736fc9921626a67c7fefd41acc85038ad2c8959d810a06",
        "dweb:/ipfs/QmR1iAqQUL7MfiP5e162BcSkgi5z98vr5PnKsAWjjeqXa9"
      ]
    },
    "dependencies/openzeppelin/contracts/Context.sol": {
      "keccak256": "0x0d984665e4f3dd200c605a83b7caae057dd96136c038fcdd271fd85757dc3d8f",
      "license": "MIT",
      "urls": [
        "bzz-raw://75b72c586f82e3eedbb030ef92494582d7f0d80557c007cebf9a8ec98429d6ec",
        "dweb:/ipfs/QmV4Ltyjuj7B3RVNzjkJbhH3EihmWNb7oikxNj7xwWes4z"
      ]
    },
    "dependencies/openzeppelin/contracts/Ownable.sol": {
      "keccak256": "0x3aeb1a66f9f7718c3850cc4929cf42c431782e9178fa592e76e80d5d6dcb1c16",
      "license": "MIT",
      "urls": [
        "bzz-raw://cc101c55d85c2b1c7836a7212f29be293e11dc30b2df0b1329b3dd01b1cff745",
        "dweb:/ipfs/QmZXUPNhioGMcrhYemWDN1wsyqprvajpgqnw4PSps4PnRp"
      ]
    },
    "dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol": {
      "keccak256": "0x79cab2cfeac5767adc12674b5b7196e1d4fb3beb733c09276209e7536c7833ff",
      "license": "agpl-3.0",
      "urls": [
        "bzz-raw://6e046fcb72be6f0ad5b88657ae557fd21dd3ffdbc4ac9192f4130982e737b2ec",
        "dweb:/ipfs/QmPvjE4axkQbGp5Mui79M1DFKCWX4C4FSR33YRxRcVfNUm"
      ]
    },
    "dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol": {
      "keccak256": "0x804693d30de3a9cf427a085534bc913a773eee93e069354e61f2140a46bfede2",
      "license": "agpl-3.0",
      "urls": [
        "bzz-raw://57597ca7045e8d4adc59d32a18e5022720d92dd86c4cdbbb19c9156f2ba34caf",
        "dweb:/ipfs/QmT1C6oLZYNzfyqyjchgTPrgnWQskwNfq1aqP8iUqrs553"
      ]
    },
    "dependencies/openzeppelin/upgradeability/Proxy.sol": {
      "keccak256": "0xbf6a459d9fb3e0029ab4a7ee7f55cd1c81e5db1310f906ddbb8b32ab0d201316",
      "license": "agpl-3.0",
      "urls": [
        "bzz-raw://976ff386592d54190ed536f4f60c2e2b0b98ac74e621e471fc7aeeb3f81f2624",
        "dweb:/ipfs/QmbiqH4dFojHouG66HJ1vHvwbpoP3EHp6d4L8zS17JXZaE"
      ]
    },
    "interfaces/IPoolAddressesProvider.sol": {
      "keccak256": "0x73185cd3b952eb691bbf2344b3f7a35cf8b67b33c39275e52e12b80436ea1d5c",
      "license": "AGPL-3.0",
      "urls": [
        "bzz-raw://ed19048938ec0806b0a227a49bf58e04456974fae4d649ce1f189c394d73898e",
        "dweb:/ipfs/QmSAVn8e6zX2aYWhDibLZxgZFDz3Y5CvTKYBXgutRtBYTP"
      ]
    },
    "protocol/configuration/PoolAddressesProvider.sol": {
      "keccak256": "0x2bb9848fa4ccedd69669077fc56452ad55770feae61089b0a0156f956f406bf9",
      "license": "BUSL-1.1",
      "urls": [
        "bzz-raw://cff334d9e2b34430754a81b3937236f5b79cb32543a7c3dd3d618a81a78e610f",
        "dweb:/ipfs/Qmdr6hPvJF4D6TPfpw1ZjhGGxApPJ3g55ARqqrhdYPtR4B"
      ]
    },
    "protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol": {
      "keccak256": "0x0ffc5de352927f11ee65a9ad5f1a26fecf4bf07a37981d61275791183589bad2",
      "license": "AGPL-3.0",
      "urls": [
        "bzz-raw://906e596c7f6a7e0b999030f96da46d28426c35227d282e09717218fbf929fce3",
        "dweb:/ipfs/QmZLeC3NPf9P8jow5EUA2bTCRxn9TBgUUHvKaVxxrkW3m1"
      ]
    },
    "protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol": {
      "keccak256": "0xb2692ae7d39caf25d4de88c757fcc3d4f69a729422f7baa6f52c55e72dd4a22a",
      "license": "AGPL-3.0",
      "urls": [
        "bzz-raw://935139c8326808900d066eda3354262248f6cb0e5b22c29b6e1cd949236e0c36",
        "dweb:/ipfs/QmQcRzvXN992WdQKASTjMfkwQBKu221jGTtVX7bfsaQ5xj"
      ]
    }
  },
  "version": 1
}
