{"abi":[{"type":"function","name":"blacklist","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blacklisted","inputs":[{"name":"version","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"version","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"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":"version","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":"lastVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"migrate","inputs":[{"name":"entity","type":"address","internalType":"address"},{"name":"newVersion","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalEntities","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"version","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Migrate","inputs":[{"name":"entity","type":"address","indexed":true,"internalType":"address"},{"name":"newVersion","type":"uint64","indexed":false,"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":"InvalidVersion","inputs":[]},{"type":"error","name":"NotOwner","inputs":[]},{"type":"error","name":"OldVersion","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"blacklist(uint64)":"b572a966","blacklisted(uint64)":"b6caa119","create(uint64,address,bytes)":"3ac04911","entity(uint256)":"b42ba2a2","implementation(uint64)":"f9661602","isEntity(address)":"14887c58","lastVersion()":"64dfea06","migrate(address,uint64,bytes)":"58336662","totalEntities()":"5cd8b15e","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\":\"InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldVersion\",\"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\":\"version\",\"type\":\"uint64\"}],\"name\":\"Blacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"}],\"name\":\"Migrate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Whitelist\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"blacklist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"blacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"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\":\"version\",\"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\":\"lastVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"entity\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalEntities\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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 version is still deployable.\",\"params\":{\"version\":\"version that was blacklisted\"}},\"Migrate(address,uint64)\":{\"params\":{\"entity\":\"address of the entity\",\"newVersion\":\"new version of the entity\"}},\"Whitelist(address)\":{\"params\":{\"implementation\":\"address of the new implementation\"}}},\"kind\":\"dev\",\"methods\":{\"blacklist(uint64)\":{\"details\":\"The given version will still be deployable.\",\"params\":{\"version\":\"version to blacklist\"}},\"blacklisted(uint64)\":{\"details\":\"The given version is still deployable.\",\"params\":{\"version\":\"version to check\"},\"returns\":{\"_0\":\"whether the version is blacklisted\"}},\"create(uint64,address,bytes)\":{\"details\":\"CREATE2 salt is constructed from the given parameters.\",\"params\":{\"data\":\"initial data for the entity creation\",\"owner\":\"initial owner of the entity\",\"version\":\"entity's version 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)\":{\"details\":\"Reverts when an invalid version.\",\"params\":{\"version\":\"version to get the implementation for\"},\"returns\":{\"_0\":\"address of the implementation\"}},\"isEntity(address)\":{\"params\":{\"account\":\"address to check\"},\"returns\":{\"_0\":\"if the given address is an entity\"}},\"lastVersion()\":{\"details\":\"If zero, no implementations are whitelisted.\",\"returns\":{\"_0\":\"version of the last implementation\"}},\"migrate(address,uint64,bytes)\":{\"details\":\"Only the entity's owner can call this function.\",\"params\":{\"data\":\"some data to reinitialize the contract with\",\"entity\":\"address of the entity to migrate\",\"newVersion\":\"new version to migrate to\"}},\"totalEntities()\":{\"returns\":{\"_0\":\"total number of entities added\"}},\"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 version is blacklisted (e.g., in case of invalid implementation).\"},\"Migrate(address,uint64)\":{\"notice\":\"Emitted when an entity is migrated to a new version.\"},\"Whitelist(address)\":{\"notice\":\"Emitted when a new implementation is whitelisted.\"}},\"kind\":\"user\",\"methods\":{\"blacklist(uint64)\":{\"notice\":\"Blacklist a version of entities.\"},\"blacklisted(uint64)\":{\"notice\":\"Get if a version is blacklisted (e.g., in case of invalid implementation).\"},\"create(uint64,address,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 version.\"},\"isEntity(address)\":{\"notice\":\"Get if a given address is an entity.\"},\"lastVersion()\":{\"notice\":\"Get the last available version.\"},\"migrate(address,uint64,bytes)\":{\"notice\":\"Migrate a given entity to a given newer version.\"},\"totalEntities()\":{\"notice\":\"Get a total number of entities.\"},\"whitelist(address)\":{\"notice\":\"Whitelist a new implementation for entities.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/core/src/interfaces/IVaultFactory.sol\":\"IVaultFactory\"},\"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/IVaultFactory.sol\":{\"keccak256\":\"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba\",\"dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN\"]},\"lib/core/src/interfaces/common/IMigratablesFactory.sol\":{\"keccak256\":\"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5\",\"dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq\"]},\"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":"InvalidVersion"},{"inputs":[],"type":"error","name":"NotOwner"},{"inputs":[],"type":"error","name":"OldVersion"},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true}],"type":"event","name":"AddEntity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":true}],"type":"event","name":"Blacklist","anonymous":false},{"inputs":[{"internalType":"address","name":"entity","type":"address","indexed":true},{"internalType":"uint64","name":"newVersion","type":"uint64","indexed":false}],"type":"event","name":"Migrate","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Whitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"blacklist"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function","name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"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":"version","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":"lastVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"entity","type":"address"},{"internalType":"uint64","name":"newVersion","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrate"},{"inputs":[],"stateMutability":"view","type":"function","name":"totalEntities","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelist"}],"devdoc":{"kind":"dev","methods":{"blacklist(uint64)":{"details":"The given version will still be deployable.","params":{"version":"version to blacklist"}},"blacklisted(uint64)":{"details":"The given version is still deployable.","params":{"version":"version to check"},"returns":{"_0":"whether the version is blacklisted"}},"create(uint64,address,bytes)":{"details":"CREATE2 salt is constructed from the given parameters.","params":{"data":"initial data for the entity creation","owner":"initial owner of the entity","version":"entity's version 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)":{"details":"Reverts when an invalid version.","params":{"version":"version to get the implementation for"},"returns":{"_0":"address of the implementation"}},"isEntity(address)":{"params":{"account":"address to check"},"returns":{"_0":"if the given address is an entity"}},"lastVersion()":{"details":"If zero, no implementations are whitelisted.","returns":{"_0":"version of the last implementation"}},"migrate(address,uint64,bytes)":{"details":"Only the entity's owner can call this function.","params":{"data":"some data to reinitialize the contract with","entity":"address of the entity to migrate","newVersion":"new version to migrate to"}},"totalEntities()":{"returns":{"_0":"total number of entities added"}},"whitelist(address)":{"params":{"implementation":"address of the new implementation"}}},"version":1},"userdoc":{"kind":"user","methods":{"blacklist(uint64)":{"notice":"Blacklist a version of entities."},"blacklisted(uint64)":{"notice":"Get if a version is blacklisted (e.g., in case of invalid implementation)."},"create(uint64,address,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 version."},"isEntity(address)":{"notice":"Get if a given address is an entity."},"lastVersion()":{"notice":"Get the last available version."},"migrate(address,uint64,bytes)":{"notice":"Migrate a given entity to a given newer version."},"totalEntities()":{"notice":"Get a total number of entities."},"whitelist(address)":{"notice":"Whitelist a new implementation for entities."}},"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/IVaultFactory.sol":"IVaultFactory"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/IVaultFactory.sol":{"keccak256":"0x6f658b264fc8d530e458a98d83a09cb55ace4d3e509f0a3e9294471bb1bcf84d","urls":["bzz-raw://a7253435e4e1d1ae19a50d14091ddb254f6a36f296440106bfc094623dd1aeba","dweb:/ipfs/QmbHK9yoQ7Ctf3nuDLmqxTWPYD8cEm1TKXzfxePtE87AQN"],"license":"MIT"},"lib/core/src/interfaces/common/IMigratablesFactory.sol":{"keccak256":"0xd4dfe9449bf005dbcbab9e0e85eaaca15a601ff971f34182a0b1832dc4b9d124","urls":["bzz-raw://ff8b73285192a9c64160b008d23a09da33e7164d10a9dc29d1a4464bd9c02be5","dweb:/ipfs/QmZQW2LLV4dQfJ3coENKeycbzXJzi7zdvupsqWA4UV29Gq"],"license":"MIT"},"lib/core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"}},"version":1},"id":33}