{"abi":[{"type":"function","name":"blacklist","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"entity","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"implementation","inputs":[{"name":"type_","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isEntity","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalTypes","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"whitelist","inputs":[{"name":"implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AddEntity","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Blacklist","inputs":[{"name":"type_","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Whitelist","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadyBlacklisted","inputs":[]},{"type":"error","name":"AlreadyWhitelisted","inputs":[]},{"type":"error","name":"EntityNotExist","inputs":[]},{"type":"error","name":"InvalidImplementation","inputs":[]},{"type":"error","name":"InvalidType","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,bytes)":"cd108ef8","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","totalEntities()":"5cd8b15e","totalTypes()":"f15df2e5","whitelist(address)":"9b19251a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyBlacklisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EntityNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidType\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"}],\"name\":\"AddEntity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"entity\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"type_\",\"type\":\"uint64\"}],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isEntity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalTypes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AddEntity(address)\":{\"params\":{\"entity\":\"address of the added entity\"}},\"Blacklist(uint64)\":{\"details\":\"The given type is still deployable.\",\"params\":{\"type_\":\"type that was blacklisted\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given type will still be deployable.\",\"params\":{\"type_\":\"type to blacklist\"}},\"blacklisted(uint64)\":{\"details\":\"The given type is still deployable.\",\"params\":{\"type_\":\"type to check\"},\"returns\":{\"_0\":\"whether the type is blacklisted\"}},\"create(uint64,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"type_\":\"type's implementation to use\"},\"returns\":{\"_0\":\"address of the entity\"}},\"entity(uint256)\":{\"params\":{\"index\":\"index of the entity to get\"},\"returns\":{\"_0\":\"address of the entity\"}},\"implementation(uint64)\":{\"params\":{\"type_\":\"position to get the implementation at\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"totalTypes()\":{\"returns\":{\"_0\":\"total number of types\"}},\"whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AddEntity(address)\":{\"notice\":\"Emitted when an entity is added.\"},\"Blacklist(uint64)\":{\"notice\":\"Emitted when a type is blacklisted (e.g., in case of invalid implementation).\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new type is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a type of entity.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a type is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,bytes)\":{\"notice\":\"Create a new entity at the factory.\"},\"entity(uint256)\":{\"notice\":\"Get an entity given its index.\"},\"implementation(uint64)\":{\"notice\":\"Get the implementation for a given type.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"totalTypes()\":{\"notice\":\"Get the total number of whitelisted types.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new type of entity.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/core/src/interfaces/common/IFactory.sol\":\"IFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IFactory.sol\":{\"keccak256\":\"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb\",\"dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA\"]},\"lib/core/src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AlreadyBlacklisted"},{"inputs":[],"type":"error","name":"AlreadyWhitelisted"},{"inputs":[],"type":"error","name":"EntityNotExist"},{"inputs":[],"type":"error","name":"InvalidImplementation"},{"inputs":[],"type":"error","name":"InvalidType"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"create","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"entity","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"type_","type":"uint64"}],"stateMutability":"view","type":"function","name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isEntity","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalTypes","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given type will still be deployable.","params":{"type_":"type to blacklist"}},"blacklisted(uint64)":{"details":"The given type is still deployable.","params":{"type_":"type to check"},"returns":{"_0":"whether the type is blacklisted"}},"create(uint64,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","type_":"type's implementation to use"},"returns":{"_0":"address of the entity"}},"entity(uint256)":{"params":{"index":"index of the entity to get"},"returns":{"_0":"address of the entity"}},"implementation(uint64)":{"params":{"type_":"position to get the implementation at"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"totalTypes()":{"returns":{"_0":"total number of types"}},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a type of entity."},"blacklisted(uint64)":{"notice":"Get if a type is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,bytes)":{"notice":"Create a new entity at the factory."},"entity(uint256)":{"notice":"Get an entity given its index."},"implementation(uint64)":{"notice":"Get the implementation for a given type."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"totalEntities()":{"notice":"Get a total number of entities."},"totalTypes()":{"notice":"Get the total number of whitelisted types."},"whitelist(address)":{"notice":"Whitelist a new type of entity."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/core/src/interfaces/common/IFactory.sol":"IFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IFactory.sol":{"keccak256":"0xe835ebda85d181b70874f6eb53f2a892aa3223d23efe247060da9b51d2b8e969","urls":["bzz-raw://48b3dfb5f0491d90efbc8ed498b45358260ebac6e8f2aa0106b8b8fabdc988cb","dweb:/ipfs/QmWnnCs3xiHeUvYfUWMJTSFZWc34bSYn9Zpm7f7syra3TA"],"license":"MIT"},"lib/core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":35}