{"abi":[{"type":"function","name":"avsDirectory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"createAVSRewardsSubmission","inputs":[{"name":"rewardsSubmissions","type":"tuple[]","internalType":"struct IRewardsCoordinator.RewardsSubmission[]","components":[{"name":"strategiesAndMultipliers","type":"tuple[]","internalType":"struct IRewardsCoordinator.StrategyAndMultiplier[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startTimestamp","type":"uint32","internalType":"uint32"},{"name":"duration","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOperatorRestakedStrategies","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRestakeableStrategies","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsInitiator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"_metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RewardsInitiatorUpdated","inputs":[{"name":"prevRewardsInitiator","type":"address","indexed":false,"internalType":"address"},{"name":"newRewardsInitiator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"avsDirectory()":"6b3aa72e","createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":"fce36c7d","deregisterOperatorFromAVS(address)":"a364f4da","getOperatorRestakedStrategies(address)":"33cfb7b7","getRestakeableStrategies()":"e481af9d","owner()":"8da5cb5b","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","renounceOwnership()":"715018a6","rewardsInitiator()":"fc299dee","transferOwnership(address)":"f2fde38b","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"address\",\"name\":\"prevRewardsInitiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRewardsInitiator\",\"type\":\"address\"}],\"name\":\"RewardsInitiatorUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"avsDirectory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IRewardsCoordinator.StrategyAndMultiplier[]\",\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"internalType\":\"struct IRewardsCoordinator.RewardsSubmission[]\",\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\"}],\"name\":\"createAVSRewardsSubmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsInitiator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"kind\":\"dev\",\"methods\":{\"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])\":{\"details\":\"Only callabe by the permissioned rewardsInitiator addressThe duration of the `rewardsSubmission` cannot exceed `MAX_REWARDS_DURATION`The tokens are sent to the `RewardsCoordinator` contractStrategies must be in ascending order of addresses to check for duplicatesThis function will revert if the `rewardsSubmission` is malformed, e.g. if the `strategies` and `weights` arrays are of non-equal lengths\",\"params\":{\"rewardsSubmissions\":\"The rewards submissions being created\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"getOperatorRestakedStrategies(address)\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately\",\"params\":{\"operator\":\"The address of the operator to get restaked strategies for\"}},\"getRestakeableStrategies()\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateAVSMetadataURI(string)\":{\"params\":{\"_metadataURI\":\"is the metadata URI for the AVS\"}}},\"title\":\"Storage variables for the `ServiceManagerBase` contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"avsDirectory()\":{\"notice\":\"Returns the EigenLayer AVSDirectory contract.\"},\"constructor\":{\"notice\":\"Sets the (immutable) `_avsDirectory`, `_rewardsCoordinator`, `_registryCoordinator`, and `_stakeRegistry` addresses\"},\"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])\":{\"notice\":\"Creates a new rewards submission to the EigenLayer RewardsCoordinator contract, to be split amongst the set of stakers delegated to operators who are registered to this `avs`\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS\"},\"getOperatorRestakedStrategies(address)\":{\"notice\":\"Returns the list of strategies that the operator has potentially restaked on the AVS\"},\"getRestakeableStrategies()\":{\"notice\":\"Returns the list of strategies that the AVS supports for restaking\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS\"},\"rewardsInitiator()\":{\"notice\":\"The address of the entity that can initiate rewards\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Metadata should follow the format outlined by this example. { \\\"name\\\": \\\"EigenLabs AVS 1\\\", \\\"website\\\": \\\"https://www.eigenlayer.xyz/\\\", \\\"description\\\": \\\"This is my 1st AVS\\\", \\\"logo\\\": \\\"https://holesky-operator-metadata.s3.amazonaws.com/eigenlayer.png\\\", \\\"twitter\\\": \\\"https://twitter.com/eigenlayer\\\" }Updates the metadata URI for the AVS\"}},\"notice\":\"This storage contract is separate from the logic to simplify the upgrade process.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":\"ServiceManagerBaseStorage\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@credible-squaring/=src/\",\":@eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x6d528cc358d1061ae8a10763290adf37caac7140c6af88d54e358bdff7672ae6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://dd729f0e3fa59b48c96cd2a95de55a38494befe963e197396b263535af63bc73\",\"dweb:/ipfs/Qmesn3hMC9SdTASyfYusFfmsci3kGy4AJa1yeQaGejSf6e\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x5a7dd74fb8a9334aa50c497a58875159aec17e905a7daaf3c276936d5b691bd1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a25b8d80233016a4634b9217a0899f43f18bfb21abb046bee4403e9408296009\",\"dweb:/ipfs/QmUA3bTzddiHnPxBqYtovxvcVvCkNrAxPJ7xcskocxEq5P\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0x02d8b32309a9d0498619104b8f27446e8f4b2d983af183a974b2cd882be0d8b6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0e01584eb126890a97b9b642ccc5e60eb12453d1a84027b280b647c3408fc4cf\",\"dweb:/ipfs/QmUR5vv26QffXyCrk7CHMi2SVerjZ5EMgbcEhKrMtMNf6f\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0x6475ca177a1e4fe5d213cf5fc521e5a89cdc3f034da22c6a8f8aeeac664a7353\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5618f41a102eb00f8e9ef17b4c554af9e671ed8849931ee0602454ea65895a60\",\"dweb:/ipfs/QmSDyYJVvqpd5Fui4fw6hXeox2cmZcLMqAesuoSGjpNDpD\"]},\"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x6c66bc2b0b2f5aabd2b90ca02d5b6696fc02d75a53567b16d8d81dd956fd7b1b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://284f9cc3f8eade3b022ab8c527aaa35bdd5e0355607abf6d5ef66fb2c9ce90cd\",\"dweb:/ipfs/QmYi856BQNY6G2FTqAGY9qzWPp27QmiytwnfNtfwPN7Cqm\"]},\"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"prevRewardsInitiator","type":"address","indexed":false},{"internalType":"address","name":"newRewardsInitiator","type":"address","indexed":false}],"type":"event","name":"RewardsInitiatorUpdated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"avsDirectory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"struct IRewardsCoordinator.RewardsSubmission[]","name":"rewardsSubmissions","type":"tuple[]","components":[{"internalType":"struct IRewardsCoordinator.StrategyAndMultiplier[]","name":"strategiesAndMultipliers","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint32","name":"startTimestamp","type":"uint32"},{"internalType":"uint32","name":"duration","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"createAVSRewardsSubmission"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRestakedStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRestakeableStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsInitiator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"string","name":"_metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":{"details":"Only callabe by the permissioned rewardsInitiator addressThe duration of the `rewardsSubmission` cannot exceed `MAX_REWARDS_DURATION`The tokens are sent to the `RewardsCoordinator` contractStrategies must be in ascending order of addresses to check for duplicatesThis function will revert if the `rewardsSubmission` is malformed, e.g. if the `strategies` and `weights` arrays are of non-equal lengths","params":{"rewardsSubmissions":"The rewards submissions being created"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"getOperatorRestakedStrategies(address)":{"details":"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately","params":{"operator":"The address of the operator to get restaked strategies for"}},"getRestakeableStrategies()":{"details":"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately"},"owner()":{"details":"Returns the address of the current owner."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateAVSMetadataURI(string)":{"params":{"_metadataURI":"is the metadata URI for the AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"avsDirectory()":{"notice":"Returns the EigenLayer AVSDirectory contract."},"constructor":{"notice":"Sets the (immutable) `_avsDirectory`, `_rewardsCoordinator`, `_registryCoordinator`, and `_stakeRegistry` addresses"},"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":{"notice":"Creates a new rewards submission to the EigenLayer RewardsCoordinator contract, to be split amongst the set of stakers delegated to operators who are registered to this `avs`"},"deregisterOperatorFromAVS(address)":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS"},"getOperatorRestakedStrategies(address)":{"notice":"Returns the list of strategies that the operator has potentially restaked on the AVS"},"getRestakeableStrategies()":{"notice":"Returns the list of strategies that the AVS supports for restaking"},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS"},"rewardsInitiator()":{"notice":"The address of the entity that can initiate rewards"},"updateAVSMetadataURI(string)":{"notice":"Metadata should follow the format outlined by this example. { \"name\": \"EigenLabs AVS 1\", \"website\": \"https://www.eigenlayer.xyz/\", \"description\": \"This is my 1st AVS\", \"logo\": \"https://holesky-operator-metadata.s3.amazonaws.com/eigenlayer.png\", \"twitter\": \"https://twitter.com/eigenlayer\" }Updates the metadata URI for the AVS"}},"version":1}},"settings":{"remappings":["@credible-squaring/=src/","@eigenlayer-middleware/=lib/eigenlayer-middleware/","@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":"ServiceManagerBaseStorage"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x6d528cc358d1061ae8a10763290adf37caac7140c6af88d54e358bdff7672ae6","urls":["bzz-raw://dd729f0e3fa59b48c96cd2a95de55a38494befe963e197396b263535af63bc73","dweb:/ipfs/Qmesn3hMC9SdTASyfYusFfmsci3kGy4AJa1yeQaGejSf6e"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x5a7dd74fb8a9334aa50c497a58875159aec17e905a7daaf3c276936d5b691bd1","urls":["bzz-raw://a25b8d80233016a4634b9217a0899f43f18bfb21abb046bee4403e9408296009","dweb:/ipfs/QmUA3bTzddiHnPxBqYtovxvcVvCkNrAxPJ7xcskocxEq5P"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0x02d8b32309a9d0498619104b8f27446e8f4b2d983af183a974b2cd882be0d8b6","urls":["bzz-raw://0e01584eb126890a97b9b642ccc5e60eb12453d1a84027b280b647c3408fc4cf","dweb:/ipfs/QmUR5vv26QffXyCrk7CHMi2SVerjZ5EMgbcEhKrMtMNf6f"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0x6475ca177a1e4fe5d213cf5fc521e5a89cdc3f034da22c6a8f8aeeac664a7353","urls":["bzz-raw://5618f41a102eb00f8e9ef17b4c554af9e671ed8849931ee0602454ea65895a60","dweb:/ipfs/QmSDyYJVvqpd5Fui4fw6hXeox2cmZcLMqAesuoSGjpNDpD"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x6c66bc2b0b2f5aabd2b90ca02d5b6696fc02d75a53567b16d8d81dd956fd7b1b","urls":["bzz-raw://284f9cc3f8eade3b022ab8c527aaa35bdd5e0355607abf6d5ef66fb2c9ce90cd","dweb:/ipfs/QmYi856BQNY6G2FTqAGY9qzWPp27QmiytwnfNtfwPN7Cqm"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"}},"version":1},"id":117}