{"abi":[{"type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"calculateOperatorAVSRegistrationDigestHash","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"avs","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operatorSaltIsSpent","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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":"updateAVSMetadataURI","inputs":[{"name":"metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AVSMetadataURIUpdated","inputs":[{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"metadataURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorAVSRegistrationStatusUpdated","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"avs","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"OPERATOR_AVS_REGISTRATION_TYPEHASH()":"d79aceab","calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":"a1060c88","deregisterOperatorFromAVS(address)":"a364f4da","operatorSaltIsSpent(address,bytes32)":"374823b5","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","updateAVSMetadataURI(string)":"a98fb355"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"AVSMetadataURIUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IAVSDirectory.OperatorAVSRegistrationStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"avs\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"operatorSaltIsSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[{\"internalType\":\"string\",\"name\":\"metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"details\":\"Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing\"}},\"kind\":\"dev\",\"methods\":{\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"params\":{\"avs\":\"The AVS the operator is registering to\",\"expiry\":\"Time after which the approver's signature becomes invalid\",\"operator\":\"The account registering as an operator\",\"salt\":\"A unique and single use value associated with the approver signature.\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"operatorSaltIsSpent(address,bytes32)\":{\"details\":\"Salts is used in the `registerOperatorToAVS` function.\"},\"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.\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event\",\"params\":{\"metadataURI\":\"The URI for metadata associated with an AVS\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AVSMetadataURIUpdated(address,string)\":{\"notice\":\"Emitted when @param avs indicates that they are updating their MetadataURI string\"},\"OperatorAVSRegistrationStatusUpdated(address,address,uint8)\":{\"notice\":\"Emitted when an operator's registration status for an AVS is updated\"}},\"kind\":\"user\",\"methods\":{\"OPERATOR_AVS_REGISTRATION_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the Registration struct used by the contract\"},\"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)\":{\"notice\":\"Calculates the digest hash to be signed by an operator to register with an AVS\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Called by an avs to deregister an operator with the avs.\"},\"operatorSaltIsSpent(address,bytes32)\":{\"notice\":\"Returns whether or not the salt has already been used by the operator.\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Called by an avs to register an operator with the avs.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IAVSDirectory.sol\":\"IAVSDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":300},\"remappings\":[\":Randcast-User-Contract/=lib/Randcast-User-Contract/contracts/\",\":Staking-v0.1/=lib/Staking-v0.1/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":fx-portal/=lib/fx-portal/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/\"]},\"sources\":{\"src/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x203c59d260b5e0916432198de1094ff3ebd99ad08db111eedf1f47fb29adca08\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://26a546689640ee3fc212bddf6a678f51f3dc67472e0564bde26687364338cec3\",\"dweb:/ipfs/QmPwTcmoZ1hyCea9dR2XwsC1BHHz6mTSje6AdZ7X4aLzg3\"]},\"src/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0xdd987d72d8cdbe1839ffa554c35f5e0b65cad95954044b5528a2f2d565188b26\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://60aeff57e190ce78fbdba148b49fedcbd59576645d91d4d995eaebad95b40388\",\"dweb:/ipfs/QmTSCht7dHR2bjjpuaP7efGbixFUr38NcxxHCih2bzyaSK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"string","name":"metadataURI","type":"string","indexed":false}],"type":"event","name":"AVSMetadataURIUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"avs","type":"address","indexed":true},{"internalType":"enum IAVSDirectory.OperatorAVSRegistrationStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"OperatorAVSRegistrationStatusUpdated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"avs","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function","name":"calculateOperatorAVSRegistrationDigestHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"operatorSaltIsSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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":[{"internalType":"string","name":"metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"}],"devdoc":{"kind":"dev","methods":{"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"params":{"avs":"The AVS the operator is registering to","expiry":"Time after which the approver's signature becomes invalid","operator":"The account registering as an operator","salt":"A unique and single use value associated with the approver signature."}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"operatorSaltIsSpent(address,bytes32)":{"details":"Salts is used in the `registerOperatorToAVS` function."},"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."}},"updateAVSMetadataURI(string)":{"details":"Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event","params":{"metadataURI":"The URI for metadata associated with an AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"OPERATOR_AVS_REGISTRATION_TYPEHASH()":{"notice":"The EIP-712 typehash for the Registration struct used by the contract"},"calculateOperatorAVSRegistrationDigestHash(address,address,bytes32,uint256)":{"notice":"Calculates the digest hash to be signed by an operator to register with an AVS"},"deregisterOperatorFromAVS(address)":{"notice":"Called by an avs to deregister an operator with the avs."},"operatorSaltIsSpent(address,bytes32)":{"notice":"Returns whether or not the salt has already been used by the operator."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Called by an avs to register an operator with the avs."},"updateAVSMetadataURI(string)":{"notice":"Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated."}},"version":1}},"settings":{"remappings":["Randcast-User-Contract/=lib/Randcast-User-Contract/contracts/","Staking-v0.1/=lib/Staking-v0.1/src/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","fx-portal/=lib/fx-portal/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/"],"optimizer":{"enabled":true,"runs":300},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/IAVSDirectory.sol":"IAVSDirectory"},"libraries":{}},"sources":{"src/interfaces/IAVSDirectory.sol":{"keccak256":"0x203c59d260b5e0916432198de1094ff3ebd99ad08db111eedf1f47fb29adca08","urls":["bzz-raw://26a546689640ee3fc212bddf6a678f51f3dc67472e0564bde26687364338cec3","dweb:/ipfs/QmPwTcmoZ1hyCea9dR2XwsC1BHHz6mTSje6AdZ7X4aLzg3"],"license":"BUSL-1.1"},"src/interfaces/ISignatureUtils.sol":{"keccak256":"0xdd987d72d8cdbe1839ffa554c35f5e0b65cad95954044b5528a2f2d565188b26","urls":["bzz-raw://60aeff57e190ce78fbdba148b49fedcbd59576645d91d4d995eaebad95b40388","dweb:/ipfs/QmTSCht7dHR2bjjpuaP7efGbixFUr38NcxxHCih2bzyaSK"],"license":"BUSL-1.1"}},"version":1},"ast":{"absolutePath":"src/interfaces/IAVSDirectory.sol","id":67882,"exportedSymbols":{"IAVSDirectory":[67881],"ISignatureUtils":[68994]},"nodeType":"SourceUnit","src":"37:2935:104","nodes":[{"id":67805,"nodeType":"PragmaDirective","src":"37:24:104","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":67807,"nodeType":"ImportDirective","src":"63:54:104","nodes":[],"absolutePath":"src/interfaces/ISignatureUtils.sol","file":"./ISignatureUtils.sol","nameLocation":"-1:-1:-1","scope":67882,"sourceUnit":68995,"symbolAliases":[{"foreign":{"id":67806,"name":"ISignatureUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68994,"src":"71:15:104","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":67881,"nodeType":"ContractDefinition","src":"119:2852:104","nodes":[{"id":67812,"nodeType":"EnumDefinition","src":"255:147:104","nodes":[],"canonicalName":"IAVSDirectory.OperatorAVSRegistrationStatus","members":[{"id":67810,"name":"UNREGISTERED","nameLocation":"300:12:104","nodeType":"EnumValue","src":"300:12:104"},{"id":67811,"name":"REGISTERED","nameLocation":"356:10:104","nodeType":"EnumValue","src":"356:10:104"}],"name":"OperatorAVSRegistrationStatus","nameLocation":"260:29:104"},{"id":67819,"nodeType":"EventDefinition","src":"651:69:104","nodes":[],"anonymous":false,"documentation":{"id":67813,"nodeType":"StructuredDocumentation","src":"408:238:104","text":" @notice Emitted when @param avs indicates that they are updating their MetadataURI string\n @dev Note that these strings are *never stored in storage* and are instead purely emitted in events for off-chain indexing"},"eventSelector":"a89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713","name":"AVSMetadataURIUpdated","nameLocation":"657:21:104","parameters":{"id":67818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67815,"indexed":true,"mutability":"mutable","name":"avs","nameLocation":"695:3:104","nodeType":"VariableDeclaration","scope":67819,"src":"679:19:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67814,"name":"address","nodeType":"ElementaryTypeName","src":"679:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67817,"indexed":false,"mutability":"mutable","name":"metadataURI","nameLocation":"707:11:104","nodeType":"VariableDeclaration","scope":67819,"src":"700:18:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":67816,"name":"string","nodeType":"ElementaryTypeName","src":"700:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"678:41:104"}},{"id":67829,"nodeType":"EventDefinition","src":"811:142:104","nodes":[],"anonymous":false,"documentation":{"id":67820,"nodeType":"StructuredDocumentation","src":"726:80:104","text":"@notice Emitted when an operator's registration status for an AVS is updated"},"eventSelector":"f0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41","name":"OperatorAVSRegistrationStatusUpdated","nameLocation":"817:36:104","parameters":{"id":67828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67822,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"879:8:104","nodeType":"VariableDeclaration","scope":67829,"src":"863:24:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67821,"name":"address","nodeType":"ElementaryTypeName","src":"863:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67824,"indexed":true,"mutability":"mutable","name":"avs","nameLocation":"905:3:104","nodeType":"VariableDeclaration","scope":67829,"src":"889:19:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67823,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67827,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"940:6:104","nodeType":"VariableDeclaration","scope":67829,"src":"910:36:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorAVSRegistrationStatus_$67812","typeString":"enum IAVSDirectory.OperatorAVSRegistrationStatus"},"typeName":{"id":67826,"nodeType":"UserDefinedTypeName","pathNode":{"id":67825,"name":"OperatorAVSRegistrationStatus","nameLocations":["910:29:104"],"nodeType":"IdentifierPath","referencedDeclaration":67812,"src":"910:29:104"},"referencedDeclaration":67812,"src":"910:29:104","typeDescriptions":{"typeIdentifier":"t_enum$_OperatorAVSRegistrationStatus_$67812","typeString":"enum IAVSDirectory.OperatorAVSRegistrationStatus"}},"visibility":"internal"}],"src":"853:99:104"}},{"id":67838,"nodeType":"FunctionDefinition","src":"1202:149:104","nodes":[],"documentation":{"id":67830,"nodeType":"StructuredDocumentation","src":"959:238:104","text":" @notice Called by an avs to register an operator with the avs.\n @param operator The address of the operator to register.\n @param operatorSignature The signature, salt, and expiry of the operator's signature."},"functionSelector":"9926ee7d","implemented":false,"kind":"function","modifiers":[],"name":"registerOperatorToAVS","nameLocation":"1211:21:104","parameters":{"id":67836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67832,"mutability":"mutable","name":"operator","nameLocation":"1250:8:104","nodeType":"VariableDeclaration","scope":67838,"src":"1242:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67831,"name":"address","nodeType":"ElementaryTypeName","src":"1242:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67835,"mutability":"mutable","name":"operatorSignature","nameLocation":"1318:17:104","nodeType":"VariableDeclaration","scope":67838,"src":"1268:67:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureWithSaltAndExpiry_$68993_memory_ptr","typeString":"struct ISignatureUtils.SignatureWithSaltAndExpiry"},"typeName":{"id":67834,"nodeType":"UserDefinedTypeName","pathNode":{"id":67833,"name":"ISignatureUtils.SignatureWithSaltAndExpiry","nameLocations":["1268:15:104","1284:26:104"],"nodeType":"IdentifierPath","referencedDeclaration":68993,"src":"1268:42:104"},"referencedDeclaration":68993,"src":"1268:42:104","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureWithSaltAndExpiry_$68993_storage_ptr","typeString":"struct ISignatureUtils.SignatureWithSaltAndExpiry"}},"visibility":"internal"}],"src":"1232:109:104"},"returnParameters":{"id":67837,"nodeType":"ParameterList","parameters":[],"src":"1350:0:104"},"scope":67881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67844,"nodeType":"FunctionDefinition","src":"1511:62:104","nodes":[],"documentation":{"id":67839,"nodeType":"StructuredDocumentation","src":"1357:149:104","text":" @notice Called by an avs to deregister an operator with the avs.\n @param operator The address of the operator to deregister."},"functionSelector":"a364f4da","implemented":false,"kind":"function","modifiers":[],"name":"deregisterOperatorFromAVS","nameLocation":"1520:25:104","parameters":{"id":67842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67841,"mutability":"mutable","name":"operator","nameLocation":"1554:8:104","nodeType":"VariableDeclaration","scope":67844,"src":"1546:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67840,"name":"address","nodeType":"ElementaryTypeName","src":"1546:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1545:18:104"},"returnParameters":{"id":67843,"nodeType":"ParameterList","parameters":[],"src":"1572:0:104"},"scope":67881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67850,"nodeType":"FunctionDefinition","src":"1894:68:104","nodes":[],"documentation":{"id":67845,"nodeType":"StructuredDocumentation","src":"1579:310:104","text":" @notice Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.\n @param metadataURI The URI for metadata associated with an AVS\n @dev Note that the `metadataURI` is *never stored * and is only emitted in the `AVSMetadataURIUpdated` event"},"functionSelector":"a98fb355","implemented":false,"kind":"function","modifiers":[],"name":"updateAVSMetadataURI","nameLocation":"1903:20:104","parameters":{"id":67848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67847,"mutability":"mutable","name":"metadataURI","nameLocation":"1940:11:104","nodeType":"VariableDeclaration","scope":67850,"src":"1924:27:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":67846,"name":"string","nodeType":"ElementaryTypeName","src":"1924:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1923:29:104"},"returnParameters":{"id":67849,"nodeType":"ParameterList","parameters":[],"src":"1961:0:104"},"scope":67881,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":67860,"nodeType":"FunctionDefinition","src":"2137:90:104","nodes":[],"documentation":{"id":67851,"nodeType":"StructuredDocumentation","src":"1968:164:104","text":" @notice Returns whether or not the salt has already been used by the operator.\n @dev Salts is used in the `registerOperatorToAVS` function."},"functionSelector":"374823b5","implemented":false,"kind":"function","modifiers":[],"name":"operatorSaltIsSpent","nameLocation":"2146:19:104","parameters":{"id":67856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67853,"mutability":"mutable","name":"operator","nameLocation":"2174:8:104","nodeType":"VariableDeclaration","scope":67860,"src":"2166:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67852,"name":"address","nodeType":"ElementaryTypeName","src":"2166:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67855,"mutability":"mutable","name":"salt","nameLocation":"2192:4:104","nodeType":"VariableDeclaration","scope":67860,"src":"2184:12:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67854,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2184:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2165:32:104"},"returnParameters":{"id":67859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67858,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67860,"src":"2221:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":67857,"name":"bool","nodeType":"ElementaryTypeName","src":"2221:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2220:6:104"},"scope":67881,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":67874,"nodeType":"FunctionDefinition","src":"2630:169:104","nodes":[],"documentation":{"id":67861,"nodeType":"StructuredDocumentation","src":"2233:392:104","text":" @notice Calculates the digest hash to be signed by an operator to register with an AVS\n @param operator The account registering as an operator\n @param avs The AVS the operator is registering to\n @param salt A unique and single use value associated with the approver signature.\n @param expiry Time after which the approver's signature becomes invalid"},"functionSelector":"a1060c88","implemented":false,"kind":"function","modifiers":[],"name":"calculateOperatorAVSRegistrationDigestHash","nameLocation":"2639:42:104","parameters":{"id":67870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67863,"mutability":"mutable","name":"operator","nameLocation":"2690:8:104","nodeType":"VariableDeclaration","scope":67874,"src":"2682:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67862,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67865,"mutability":"mutable","name":"avs","nameLocation":"2708:3:104","nodeType":"VariableDeclaration","scope":67874,"src":"2700:11:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67864,"name":"address","nodeType":"ElementaryTypeName","src":"2700:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":67867,"mutability":"mutable","name":"salt","nameLocation":"2721:4:104","nodeType":"VariableDeclaration","scope":67874,"src":"2713:12:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2713:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":67869,"mutability":"mutable","name":"expiry","nameLocation":"2735:6:104","nodeType":"VariableDeclaration","scope":67874,"src":"2727:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67868,"name":"uint256","nodeType":"ElementaryTypeName","src":"2727:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2681:61:104"},"returnParameters":{"id":67873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67872,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67874,"src":"2790:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2790:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2789:9:104"},"scope":67881,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":67880,"nodeType":"FunctionDefinition","src":"2891:78:104","nodes":[],"documentation":{"id":67875,"nodeType":"StructuredDocumentation","src":"2805:81:104","text":"@notice The EIP-712 typehash for the Registration struct used by the contract"},"functionSelector":"d79aceab","implemented":false,"kind":"function","modifiers":[],"name":"OPERATOR_AVS_REGISTRATION_TYPEHASH","nameLocation":"2900:34:104","parameters":{"id":67876,"nodeType":"ParameterList","parameters":[],"src":"2934:2:104"},"returnParameters":{"id":67879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":67880,"src":"2960:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":67877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2960:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2959:9:104"},"scope":67881,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":67808,"name":"ISignatureUtils","nameLocations":["146:15:104"],"nodeType":"IdentifierPath","referencedDeclaration":68994,"src":"146:15:104"},"id":67809,"nodeType":"InheritanceSpecifier","src":"146:15:104"}],"canonicalName":"IAVSDirectory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[67881,68994],"name":"IAVSDirectory","nameLocation":"129:13:104","scope":67882,"usedErrors":[]}],"license":"BUSL-1.1"},"id":104}