@clawlogic/sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -0
- package/dist/abis/agentIdentityRegistryAbi.d.ts +532 -0
- package/dist/abis/agentIdentityRegistryAbi.d.ts.map +1 -0
- package/dist/abis/agentIdentityRegistryAbi.js +2 -0
- package/dist/abis/agentIdentityRegistryAbi.js.map +1 -0
- package/dist/abis/agentRegistryAbi.d.ts +265 -0
- package/dist/abis/agentRegistryAbi.d.ts.map +1 -0
- package/dist/abis/agentRegistryAbi.js +151 -0
- package/dist/abis/agentRegistryAbi.js.map +1 -0
- package/dist/abis/agentReputationRegistryAbi.d.ts +224 -0
- package/dist/abis/agentReputationRegistryAbi.d.ts.map +1 -0
- package/dist/abis/agentReputationRegistryAbi.js +2 -0
- package/dist/abis/agentReputationRegistryAbi.js.map +1 -0
- package/dist/abis/agentValidationRegistryAbi.d.ts +281 -0
- package/dist/abis/agentValidationRegistryAbi.d.ts.map +1 -0
- package/dist/abis/agentValidationRegistryAbi.js +2 -0
- package/dist/abis/agentValidationRegistryAbi.js.map +1 -0
- package/dist/abis/outcomeTokenAbi.d.ts +255 -0
- package/dist/abis/outcomeTokenAbi.d.ts.map +1 -0
- package/dist/abis/outcomeTokenAbi.js +152 -0
- package/dist/abis/outcomeTokenAbi.js.map +1 -0
- package/dist/abis/predictionMarketHookAbi.d.ts +396 -0
- package/dist/abis/predictionMarketHookAbi.d.ts.map +1 -0
- package/dist/abis/predictionMarketHookAbi.js +212 -0
- package/dist/abis/predictionMarketHookAbi.js.map +1 -0
- package/dist/client.d.ts +241 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +569 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +84 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +134 -0
- package/dist/config.js.map +1 -0
- package/dist/identity.d.ts +133 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +314 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +191 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
- package/src/abis/.gitkeep +0 -0
- package/src/abis/AgentRegistry.json +1 -0
- package/src/abis/ENSAgentHelper.json +1 -0
- package/src/abis/OutcomeToken.json +1 -0
- package/src/abis/PredictionMarketHook.json +1 -0
- package/src/abis/agentIdentityRegistryAbi.ts +1 -0
- package/src/abis/agentRegistryAbi.ts +150 -0
- package/src/abis/agentReputationRegistryAbi.ts +1 -0
- package/src/abis/agentValidationRegistryAbi.ts +1 -0
- package/src/abis/outcomeTokenAbi.ts +153 -0
- package/src/abis/predictionMarketHookAbi.ts +214 -0
- package/src/client.ts +722 -0
- package/src/config.ts +161 -0
- package/src/identity.ts +395 -0
- package/src/index.ts +48 -0
- package/src/types.ts +207 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[{"name":"ensRegistry_","type":"address","internalType":"contract IENS"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAgent","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IAgentRegistry.Agent","components":[{"name":"name","type":"string","internalType":"string"},{"name":"attestation","type":"bytes","internalType":"bytes"},{"name":"registeredAt","type":"uint256","internalType":"uint256"},{"name":"exists","type":"bool","internalType":"bool"},{"name":"ensNode","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getAgentAddresses","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getAgentByENS","inputs":[{"name":"ensNode","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAgentCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"i_ensRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IENS"}],"stateMutability":"view"},{"type":"function","name":"isAgent","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"registerAgent","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"attestation","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerAgentWithENS","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"attestation","type":"bytes","internalType":"bytes"},{"name":"ensNode","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"s_agentCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AgentRegistered","inputs":[{"name":"agent","type":"address","indexed":true,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"ENSLinked","inputs":[{"name":"agent","type":"address","indexed":true,"internalType":"address"},{"name":"ensNode","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AgentNotFound","inputs":[]},{"type":"error","name":"AlreadyRegistered","inputs":[]},{"type":"error","name":"ENSNodeAlreadyLinked","inputs":[]},{"type":"error","name":"ENSNodeNotLinked","inputs":[]},{"type":"error","name":"ENSNotConfigured","inputs":[]},{"type":"error","name":"EmptyName","inputs":[]},{"type":"error","name":"NotENSOwner","inputs":[]}],"bytecode":{"object":"0x60a034606d57601f610e1038819003918201601f19168301916001600160401b03831184841017607157808492602094604052833981010312606d57516001600160a01b0381168103606d57608052604051610d8a908161008682396080518181816101c80152610a0d0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081631ffbb06414610b0f57508063361d30af1461068257806364e6f82c14610637578063770ed8171461056f57806391cab63e14610196578063935d8542146101f7578063964bee72146101b3578063b26f80d3146101965763fb3551ff1461007f575f80fd5b34610192576020366003190112610192576004356001600160a01b03811690819003610192575f60806040516100b481610ba1565b606081526060602082015282604082015282606082015201525f525f60205261016660405f20604051906100e782610ba1565b6040516100ff816100f88185610c17565b0382610bbd565b8252604051610115816100f88160018601610c17565b6020830190815260028201549160408401928352610179600460ff6003840154169260608701931515845201549260808601938452604051968796602088525160a0602089015260c0880190610b7d565b9051868203601f19016040880152610b7d565b9251606085015251151560808401525160a08301520390f35b5f80fd5b34610192575f366003190112610192576020600254604051908152f35b34610192575f366003190112610192576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101925760403660031901126101925760043567ffffffffffffffff811161019257610228903690600401610b4f565b9060243567ffffffffffffffff811161019257610249903690600401610b4f565b9290335f525f60205260ff600360405f200154166105605781156105515761028c906040519461027886610ba1565b610283368587610c98565b86523691610c98565b926020810193845260408101428152606082016001815260808301915f8352335f525f60205260405f20935180519067ffffffffffffffff8211610449576102de826102d88854610bdf565b88610cde565b602090601f83116001146104ee5761030d92915f91836104e3575b50508160011b915f199060031b1c19161790565b84555b60018401965196875167ffffffffffffffff81116104495761033c816103368454610bdf565b84610cde565b6020601f821160011461047c57908061036f92600498999a9b5f926104715750508160011b915f199060031b1c19161790565b90555b516002850155600384019051151560ff80198354169116179055519101556002545f19811461045d57600101600255600354600160401b811015610449576001810180600355811015610435577fda816ca2fc37b9eecec62ae8263008ec6be1afb38dc28bc9c7c51d7e348da9c2916104309160035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01336bffffffffffffffffffffffff60a01b825416179055604051918291339583610d2d565b0390a2005b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b015190508b806102f9565b601f19821699835f52815f209a5f5b8181106104cb575091600498999a9b918460019594106104b3575b505050811b019055610372565b01515f1960f88460031b161c191690558a80806104a6565b838301518d556001909c019b6020938401930161048b565b015190508a806102f9565b90601f19831691875f52815f20925f5b8181106105395750908460019594939210610521575b505050811b018455610310565b01515f1960f88460031b161c19169055898080610514565b929360206001819287860151815501950193016104fe565b632ef1310560e01b5f5260045ffd5b630ea075bf60e21b5f5260045ffd5b34610192575f366003190112610192576040518060206003549283815201809260035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f5b81811061061857505050816105cd910382610bbd565b604051918291602083019060208452518091526040830191905f5b8181106105f6575050500390f35b82516001600160a01b03168452859450602093840193909201916001016105e8565b82546001600160a01b03168452602090930192600192830192016105b7565b34610192576020366003190112610192576004355f908152600160205260409020546001600160a01b0316801561067357602090604051908152f35b6378eb687760e11b5f5260045ffd5b346101925760603660031901126101925760043567ffffffffffffffff8111610192576106b3903690600401610b4f565b9060243567ffffffffffffffff8111610192576106d4903690600401610b4f565b929060443593335f525f60205260ff600360405f20015416610560578215610551578415159182610a0b575b610725906040519261071184610ba1565b61071c368789610c98565b84523691610c98565b60208201908152604082014281526060830190600182526080840192888452335f525f60205260405f20945180519067ffffffffffffffff821161044957610777826107718954610bdf565b89610cde565b602090601f83116001146109a8576107a592915f918361099d5750508160011b915f199060031b1c19161790565b85555b518051600186019167ffffffffffffffff8211610449576107d3826107cd8554610bdf565b85610cde565b602090601f831160011461093457918061080892600498979695945f926109295750508160011b915f199060031b1c19161790565b90555b516002850155600384019051151560ff80198354169116179055519101556002545f19811461045d57600101600255600354600160401b8110156104495760018101806003558110156104355760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319163317905580610907575b6040517fda816ca2fc37b9eecec62ae8263008ec6be1afb38dc28bc9c7c51d7e348da9c23391806108c6868883610d2d565b0390a26108cf57005b6109027f6f154dce8355b83a71b4405f5f7ea53fa4d8091bfbdaa6e4c9712f8fefc46bac91604051918291339583610d2d565b0390a3005b5f84815260016020526040902080546001600160a01b03191633179055610894565b015190508d806102f9565b90601f19831691845f52815f20925f5b818110610985575091600193918560049a99989796941061096d575b505050811b01905561080b565b01515f1960f88460031b161c191690558c8080610960565b92936020600181928786015181550195019301610944565b015190508c806102f9565b90601f19831691885f52815f20925f5b8181106109f357509084600195949392106109db575b505050811b0185556107a8565b01515f1960f88460031b161c191690558b80806109ce565b929360206001819287860151815501950193016109b8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168015610b00576020602491604051928380926302571be360e01b82528b60048301525afa908115610af5575f91610ab3575b50336001600160a01b0390911603610aa4575f868152600160205260409020546001600160a01b031615610700576306b234cb60e11b5f5260045ffd5b632a2eb1cb60e01b5f5260045ffd5b90506020813d602011610aed575b81610ace60209383610bbd565b8101031261019257516001600160a01b03811681036101925787610a67565b3d9150610ac1565b6040513d5f823e3d90fd5b6388be8a3b60e01b5f5260045ffd5b34610192576020366003190112610192576004356001600160a01b0381169190829003610192576020915f525f825260ff600360405f2001541615158152f35b9181601f840112156101925782359167ffffffffffffffff8311610192576020838186019501011161019257565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a0810190811067ffffffffffffffff82111761044957604052565b90601f8019910116810190811067ffffffffffffffff82111761044957604052565b90600182811c92168015610c0d575b6020831014610bf957565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610bee565b5f9291815491610c2683610bdf565b8083529260018116908115610c7b5750600114610c4257505050565b5f9081526020812093945091925b838310610c61575060209250010190565b600181602092949394548385870101520191019190610c50565b915050602093945060ff929192191683830152151560051b010190565b92919267ffffffffffffffff82116104495760405191610cc2601f8201601f191660200184610bbd565b829481845281830111610192578281602093845f960137010152565b601f8211610ceb57505050565b5f5260205f20906020601f840160051c83019310610d23575b601f0160051c01905b818110610d18575050565b5f8155600101610d0d565b9091508190610d04565b90918060409360208452816020850152848401375f828201840152601f01601f191601019056fea26469706673582212200bd5c94c264edf4b0e2a679a215d4bbdc9863b61e2fc6f80b2d74f96fc54e99264736f6c634300081a0033","sourceMap":"1458:6636:95:-:0;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;-1:-1:-1;;;;;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1458:6636:95;;;;;;3186:28;;1458:6636;;;;;;;;3186:28;1458:6636;;;;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;-1:-1:-1;1458:6636:95;;;;;-1:-1:-1;1458:6636:95","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081631ffbb06414610b0f57508063361d30af1461068257806364e6f82c14610637578063770ed8171461056f57806391cab63e14610196578063935d8542146101f7578063964bee72146101b3578063b26f80d3146101965763fb3551ff1461007f575f80fd5b34610192576020366003190112610192576004356001600160a01b03811690819003610192575f60806040516100b481610ba1565b606081526060602082015282604082015282606082015201525f525f60205261016660405f20604051906100e782610ba1565b6040516100ff816100f88185610c17565b0382610bbd565b8252604051610115816100f88160018601610c17565b6020830190815260028201549160408401928352610179600460ff6003840154169260608701931515845201549260808601938452604051968796602088525160a0602089015260c0880190610b7d565b9051868203601f19016040880152610b7d565b9251606085015251151560808401525160a08301520390f35b5f80fd5b34610192575f366003190112610192576020600254604051908152f35b34610192575f366003190112610192576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101925760403660031901126101925760043567ffffffffffffffff811161019257610228903690600401610b4f565b9060243567ffffffffffffffff811161019257610249903690600401610b4f565b9290335f525f60205260ff600360405f200154166105605781156105515761028c906040519461027886610ba1565b610283368587610c98565b86523691610c98565b926020810193845260408101428152606082016001815260808301915f8352335f525f60205260405f20935180519067ffffffffffffffff8211610449576102de826102d88854610bdf565b88610cde565b602090601f83116001146104ee5761030d92915f91836104e3575b50508160011b915f199060031b1c19161790565b84555b60018401965196875167ffffffffffffffff81116104495761033c816103368454610bdf565b84610cde565b6020601f821160011461047c57908061036f92600498999a9b5f926104715750508160011b915f199060031b1c19161790565b90555b516002850155600384019051151560ff80198354169116179055519101556002545f19811461045d57600101600255600354600160401b811015610449576001810180600355811015610435577fda816ca2fc37b9eecec62ae8263008ec6be1afb38dc28bc9c7c51d7e348da9c2916104309160035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01336bffffffffffffffffffffffff60a01b825416179055604051918291339583610d2d565b0390a2005b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b015190508b806102f9565b601f19821699835f52815f209a5f5b8181106104cb575091600498999a9b918460019594106104b3575b505050811b019055610372565b01515f1960f88460031b161c191690558a80806104a6565b838301518d556001909c019b6020938401930161048b565b015190508a806102f9565b90601f19831691875f52815f20925f5b8181106105395750908460019594939210610521575b505050811b018455610310565b01515f1960f88460031b161c19169055898080610514565b929360206001819287860151815501950193016104fe565b632ef1310560e01b5f5260045ffd5b630ea075bf60e21b5f5260045ffd5b34610192575f366003190112610192576040518060206003549283815201809260035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f5b81811061061857505050816105cd910382610bbd565b604051918291602083019060208452518091526040830191905f5b8181106105f6575050500390f35b82516001600160a01b03168452859450602093840193909201916001016105e8565b82546001600160a01b03168452602090930192600192830192016105b7565b34610192576020366003190112610192576004355f908152600160205260409020546001600160a01b0316801561067357602090604051908152f35b6378eb687760e11b5f5260045ffd5b346101925760603660031901126101925760043567ffffffffffffffff8111610192576106b3903690600401610b4f565b9060243567ffffffffffffffff8111610192576106d4903690600401610b4f565b929060443593335f525f60205260ff600360405f20015416610560578215610551578415159182610a0b575b610725906040519261071184610ba1565b61071c368789610c98565b84523691610c98565b60208201908152604082014281526060830190600182526080840192888452335f525f60205260405f20945180519067ffffffffffffffff821161044957610777826107718954610bdf565b89610cde565b602090601f83116001146109a8576107a592915f918361099d5750508160011b915f199060031b1c19161790565b85555b518051600186019167ffffffffffffffff8211610449576107d3826107cd8554610bdf565b85610cde565b602090601f831160011461093457918061080892600498979695945f926109295750508160011b915f199060031b1c19161790565b90555b516002850155600384019051151560ff80198354169116179055519101556002545f19811461045d57600101600255600354600160401b8110156104495760018101806003558110156104355760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319163317905580610907575b6040517fda816ca2fc37b9eecec62ae8263008ec6be1afb38dc28bc9c7c51d7e348da9c23391806108c6868883610d2d565b0390a26108cf57005b6109027f6f154dce8355b83a71b4405f5f7ea53fa4d8091bfbdaa6e4c9712f8fefc46bac91604051918291339583610d2d565b0390a3005b5f84815260016020526040902080546001600160a01b03191633179055610894565b015190508d806102f9565b90601f19831691845f52815f20925f5b818110610985575091600193918560049a99989796941061096d575b505050811b01905561080b565b01515f1960f88460031b161c191690558c8080610960565b92936020600181928786015181550195019301610944565b015190508c806102f9565b90601f19831691885f52815f20925f5b8181106109f357509084600195949392106109db575b505050811b0185556107a8565b01515f1960f88460031b161c191690558b80806109ce565b929360206001819287860151815501950193016109b8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168015610b00576020602491604051928380926302571be360e01b82528b60048301525afa908115610af5575f91610ab3575b50336001600160a01b0390911603610aa4575f868152600160205260409020546001600160a01b031615610700576306b234cb60e11b5f5260045ffd5b632a2eb1cb60e01b5f5260045ffd5b90506020813d602011610aed575b81610ace60209383610bbd565b8101031261019257516001600160a01b03811681036101925787610a67565b3d9150610ac1565b6040513d5f823e3d90fd5b6388be8a3b60e01b5f5260045ffd5b34610192576020366003190112610192576004356001600160a01b0381169190829003610192576020915f525f825260ff600360405f2001541615158152f35b9181601f840112156101925782359167ffffffffffffffff8311610192576020838186019501011161019257565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a0810190811067ffffffffffffffff82111761044957604052565b90601f8019910116810190811067ffffffffffffffff82111761044957604052565b90600182811c92168015610c0d575b6020831014610bf957565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610bee565b5f9291815491610c2683610bdf565b8083529260018116908115610c7b5750600114610c4257505050565b5f9081526020812093945091925b838310610c61575060209250010190565b600181602092949394548385870101520191019190610c50565b915050602093945060ff929192191683830152151560051b010190565b92919267ffffffffffffffff82116104495760405191610cc2601f8201601f191660200184610bbd565b829481845281830111610192578281602093845f960137010152565b601f8211610ceb57505050565b5f5260205f20906020601f840160051c83019310610d23575b601f0160051c01905b818110610d18575050565b5f8155600101610d0d565b9091508190610d04565b90918060409360208452816020850152848401375f828201840152601f01601f191601019056fea26469706673582212200bd5c94c264edf4b0e2a679a215d4bbdc9863b61e2fc6f80b2d74f96fc54e99264736f6c634300081a0033","sourceMap":"1458:6636:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;;;-1:-1:-1;;;;;1458:6636:95;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1458:6636:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;;2657:27;1458:6636;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;;;2107:35;-1:-1:-1;;;;;1458:6636:95;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;3662:10;;;1458:6636;;;;;;6282:22;1458:6636;;;6282:22;1458:6636;;6278:79;;6371:23;;6367:72;;1458:6636;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;7301:178;1458:6636;7301:178;;1458:6636;;;;7301:178;;7397:15;1458:6636;;7301:178;;;6526:21;1458:6636;;7301:178;;;1458:6636;;;;3662:10;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:21;1458:6636;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6282:22;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:21;1458:6636;;;6282:22;1458:6636;-1:-1:-1;;;1458:6636:95;;;;;6526:21;1458:6636;;;6282:22;1458:6636;;;;;;7959:28;1458:6636;7959:28;1458:6636;6282:22;1458:6636;;;;3662:10;1458:6636;;;;;;;;;;;3662:10;;;;7959:28;;;:::i;:::-;;;;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:21;1458:6636;;;;;;;;;;;;;;;;;;;;;;;6282:22;1458:6636;;;;;;;;;;;;;;;;;;;6526:21;1458:6636;;;;;;;;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:21;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;6282:22;1458:6636;;;;;;;;;;;;;;;;6526:21;1458:6636;;;;;;;;;;;;;;;6367:72;6417:11;;;1458:6636;6417:11;1458:6636;;6417:11;6278:79;6327:19;;;1458:6636;6327:19;1458:6636;;6327:19;1458:6636;;;;;;-1:-1:-1;;1458:6636:95;;;;;;;;4655:16;1458:6636;;;;;;;;4655:16;1458:6636;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1458:6636:95;;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1458:6636:95;4942:19;;4938:75;;1458:6636;;;;;;;;4938:75;4984:18;;;1458:6636;4984:18;1458:6636;;4984:18;1458:6636;;;;;;-1:-1:-1;;1458:6636:95;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;4053:10;;1458:6636;;;;;;6282:22;1458:6636;;;6282:22;1458:6636;;6278:79;;6371:23;;6367:72;;6526:21;;;6522:553;;;;1458:6636;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;7301:178;;1458:6636;;;;7301:178;;7397:15;1458:6636;;;7301:178;;1458:6636;7434:4;1458:6636;;7301:178;;;1458:6636;;;;4053:10;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:4;1458:6636;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6282:22;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:4;1458:6636;;;6282:22;1458:6636;-1:-1:-1;;;1458:6636:95;;;;;7434:4;1458:6636;;;6282:22;1458:6636;;;;;;6282:22;1458:6636;;;;;;-1:-1:-1;;;;;;1458:6636:95;4053:10;1458:6636;;;;7659:85;;1458:6636;;;7959:28;4053:10;7959:28;;;;;;;:::i;:::-;;;;7998:88;;1458:6636;7998:88;8044:31;;1458:6636;;;4053:10;;;;8044:31;;;:::i;:::-;;;;1458:6636;7659:85;1458:6636;;;;7434:4;1458:6636;;;;;;;-1:-1:-1;;;;;;1458:6636:95;4053:10;1458:6636;;;7659:85;;1458:6636;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:4;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6282:22;1458:6636;;;;;;;;;;;;;;;;7434:4;1458:6636;;;;;;;;;;;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:4;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;6282:22;1458:6636;;;;;;;;;;;;;;;;7434:4;1458:6636;;;;;;;;;;;;;;;6522:553;6575:13;-1:-1:-1;;;;;1458:6636:95;6567:36;;6563:100;;1458:6636;;;;;;;;;;;;6776:28;;;1458:6636;6776:28;;1458:6636;6776:28;;;;;;;1458:6636;6776:28;;;6522:553;-1:-1:-1;4053:10:95;-1:-1:-1;;;;;1458:6636:95;;;6776:37;6772:96;;1458:6636;;;;6962:16;1458:6636;;;;;;-1:-1:-1;;;;;1458:6636:95;6958:107;6522:553;6958:107;7028:22;;;1458:6636;7028:22;1458:6636;;7028:22;6772:96;6840:13;;;1458:6636;6840:13;1458:6636;;6840:13;6776:28;;;1458:6636;6776:28;;1458:6636;6776:28;;;;;;1458:6636;6776:28;;;:::i;:::-;;;1458:6636;;;;;-1:-1:-1;;;;;1458:6636:95;;;;;;6776:28;;;;;;-1:-1:-1;6776:28:95;;;1458:6636;;;;;;;;;6563:100;6630:18;;;1458:6636;6630:18;1458:6636;;6630:18;1458:6636;;;;;;-1:-1:-1;;1458:6636:95;;;;;;-1:-1:-1;;;;;1458:6636:95;;;;;;;;;;;;;;;;;4217:21;1458:6636;;;4217:21;1458:6636;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;;;-1:-1:-1;;1458:6636:95;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1458:6636:95;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;-1:-1:-1;1458:6636:95;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1458:6636:95;;;;;;;;;-1:-1:-1;1458:6636:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1458:6636:95;;;;:::o","linkReferences":{},"immutableReferences":{"59781":[{"start":456,"length":32},{"start":2573,"length":32}]}},"methodIdentifiers":{"getAgent(address)":"fb3551ff","getAgentAddresses()":"770ed817","getAgentByENS(bytes32)":"64e6f82c","getAgentCount()":"91cab63e","i_ensRegistry()":"964bee72","isAgent(address)":"1ffbb064","registerAgent(string,bytes)":"935d8542","registerAgentWithENS(string,bytes,bytes32)":"361d30af","s_agentCount()":"b26f80d3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IENS\",\"name\":\"ensRegistry_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AgentNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ENSNodeAlreadyLinked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ENSNodeNotLinked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ENSNotConfigured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyName\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotENSOwner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agent\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"AgentRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agent\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ensNode\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ENSLinked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getAgent\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"attestation\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"registeredAt\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"ensNode\",\"type\":\"bytes32\"}],\"internalType\":\"struct IAgentRegistry.Agent\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAgentAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ensNode\",\"type\":\"bytes32\"}],\"name\":\"getAgentByENS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAgentCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_ensRegistry\",\"outputs\":[{\"internalType\":\"contract IENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isAgent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"attestation\",\"type\":\"bytes\"}],\"name\":\"registerAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"attestation\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"ensNode\",\"type\":\"bytes32\"}],\"name\":\"registerAgentWithENS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_agentCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"$CLAWLOGIC Team\",\"details\":\"This contract is the \\\"Silicon Gate\\\" of the $CLAWLOGIC protocol. The PredictionMarketHook's `beforeSwap` and `beforeAddLiquidity` hooks call `isAgent()` on this registry to enforce agent-only access to markets. For the MVP, registration is permissionless -- any address can register by calling `registerAgent()`. In production, this would require verified TEE attestation data to cryptographically prove the caller is an autonomous agent running inside a Trusted Execution Environment. **Phase 1.1 -- ENS Identity Integration:** Agents can optionally link an ENS node (e.g., `alpha.agent.eth`) to their address during registration. ENS ownership is verified on-chain by querying the ENS Registry's `owner()` function. The original `registerAgent()` signature is preserved for backward compatibility; agents that do not need ENS simply call the old function. If the ENS registry address is `address(0)` (the default for chains without ENS), all ENS-related operations will revert with `ENSNotConfigured()`.\",\"events\":{\"AgentRegistered(address,string)\":{\"params\":{\"agent\":\"The address of the newly registered agent\",\"name\":\"The human-readable name supplied at registration\"}},\"ENSLinked(address,bytes32,string)\":{\"params\":{\"agent\":\"The address of the agent\",\"ensNode\":\"The ENS namehash that was linked\",\"name\":\"The human-readable agent name for indexing convenience\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"ensRegistry_\":\"The ENS Registry address. Pass address(0) to disable ENS features.\"}},\"getAgent(address)\":{\"params\":{\"addr\":\"The agent address to look up\"},\"returns\":{\"_0\":\"The Agent struct containing name, attestation, registeredAt, exists, and ensNode\"}},\"getAgentAddresses()\":{\"returns\":{\"_0\":\"An array of every address that has registered as an agent\"}},\"getAgentByENS(bytes32)\":{\"details\":\"Reverts with `ENSNodeNotLinked` if no agent is linked to the given node.\",\"params\":{\"ensNode\":\"The ENS namehash to look up\"},\"returns\":{\"_0\":\"The address of the agent linked to this ENS node\"}},\"getAgentCount()\":{\"returns\":{\"_0\":\"The current agent count\"}},\"isAgent(address)\":{\"params\":{\"addr\":\"The address to check\"},\"returns\":{\"_0\":\"True if the address is registered, false otherwise\"}},\"registerAgent(string,bytes)\":{\"details\":\"Backward-compatible registration without ENS linkage. Delegates to the internal registration logic with ensNode = bytes32(0).\",\"params\":{\"attestation\":\"TEE attestation bytes (accepted as-is for MVP, not verified)\",\"name\":\"Human-readable agent name (e.g., \\\"AlphaTrader\\\"). Must be non-empty.\"}},\"registerAgentWithENS(string,bytes,bytes32)\":{\"details\":\"Registration with optional ENS linkage. If `ensNode` is non-zero, verifies that the caller owns the node in the ENS registry before linking it.\",\"params\":{\"attestation\":\"TEE attestation bytes (accepted as-is for MVP, not verified)\",\"ensNode\":\"The ENS namehash to link. Pass bytes32(0) for no ENS linkage. If non-zero, the caller must own this node in the ENS registry.\",\"name\":\"Human-readable agent name (e.g., \\\"AlphaTrader\\\"). Must be non-empty.\"}}},\"stateVariables\":{\"i_ensRegistry\":{\"details\":\"Set to address(0) on chains without ENS. All ENS operations will revert in that case.\"},\"s_agentAddresses\":{\"details\":\"Array of all registered agent addresses, used for enumeration via getAgentAddresses()\"},\"s_agents\":{\"details\":\"Maps agent address to its Agent struct (name, attestation, registeredAt, exists, ensNode)\"},\"s_ensNodeToAgent\":{\"details\":\"Maps ENS namehash to the agent address that claimed it. Used for ENS -> address resolution.\"}},\"title\":\"AgentRegistry\",\"version\":1},\"userdoc\":{\"errors\":{\"AgentNotFound()\":[{\"notice\":\"Thrown when a lookup is performed for an address that is not registered\"}],\"AlreadyRegistered()\":[{\"notice\":\"Thrown when an address attempts to register but is already registered\"}],\"ENSNodeAlreadyLinked()\":[{\"notice\":\"Thrown when the specified ENS node is already linked to another agent\"}],\"ENSNodeNotLinked()\":[{\"notice\":\"Thrown when an ENS lookup returns no linked agent\"}],\"ENSNotConfigured()\":[{\"notice\":\"Thrown when an ENS operation is attempted but no ENS registry was configured\"}],\"EmptyName()\":[{\"notice\":\"Thrown when an empty name string is provided during registration\"}],\"NotENSOwner()\":[{\"notice\":\"Thrown when the caller does not own the specified ENS node\"}]},\"events\":{\"AgentRegistered(address,string)\":{\"notice\":\"Emitted when a new agent registers\"},\"ENSLinked(address,bytes32,string)\":{\"notice\":\"Emitted when an agent links an ENS node to their address\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the AgentRegistry, optionally binding it to an ENS Registry.\"},\"getAgent(address)\":{\"notice\":\"Get the full Agent struct for a registered address\"},\"getAgentAddresses()\":{\"notice\":\"Get all registered agent addresses for enumeration\"},\"getAgentByENS(bytes32)\":{\"notice\":\"Resolve an ENS node to its linked agent address\"},\"getAgentCount()\":{\"notice\":\"Get the total number of registered agents\"},\"i_ensRegistry()\":{\"notice\":\"The ENS Registry contract used for ownership verification.\"},\"isAgent(address)\":{\"notice\":\"Check if an address is a registered agent\"},\"registerAgent(string,bytes)\":{\"notice\":\"Register the caller as an agent (without ENS linkage)\"},\"registerAgentWithENS(string,bytes,bytes32)\":{\"notice\":\"Register the caller as an agent with optional ENS identity linkage\"},\"s_agentCount()\":{\"notice\":\"The total number of registered agents\"}},\"notice\":\"On-chain identity registry for autonomous AI agents with optional ENS integration.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AgentRegistry.sol\":\"AgentRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/core/=lib/protocol/packages/core/\",\":@uniswap/v4-core/=lib/v4-core/\",\":@uniswap/v4-periphery/=lib/v4-periphery/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":permit2/=lib/v4-periphery/lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/\",\":v4-periphery/=lib/v4-periphery/\"],\"viaIR\":true},\"sources\":{\"src/AgentRegistry.sol\":{\"keccak256\":\"0xec4a5236321fdcce01bc376df591011e33b49ae7dc61477ecb73769cdb4d84b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dad7c25672fd824a32ea8cf2875c9b00f27f7ff62a8f21e137114228e54d3efc\",\"dweb:/ipfs/QmbPQRtQyxTjbb42jP9qVj9Pkb8MPKdmrkmRMcJwpfp8nT\"]},\"src/interfaces/IAgentRegistry.sol\":{\"keccak256\":\"0x544fb23b609c4b5df8c2b02789a4940ef712452c1e46679801649541e7b4cc04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://424bde53f5d739771ab856bed264e59119b21298206ebe77923068667470916b\",\"dweb:/ipfs/Qmf6FwgxFWJvfJhuq46pEQGSN9F3HPnyDZTWg7UxBNHx2P\"]},\"src/interfaces/IENS.sol\":{\"keccak256\":\"0x8a5b64523d7be8970af4fcfd4069eb99337eddf9acbe457467bc30b39c9b3dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644a8df9a1af88332258d7d43df4f4b017e32f6a0a2cec4454e6261ac452147\",\"dweb:/ipfs/QmfMyXejpuUj5ahqNYNqA5Yz55PABa68SYnwGNQ1bHG5Sx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IENS","name":"ensRegistry_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AgentNotFound"},{"inputs":[],"type":"error","name":"AlreadyRegistered"},{"inputs":[],"type":"error","name":"ENSNodeAlreadyLinked"},{"inputs":[],"type":"error","name":"ENSNodeNotLinked"},{"inputs":[],"type":"error","name":"ENSNotConfigured"},{"inputs":[],"type":"error","name":"EmptyName"},{"inputs":[],"type":"error","name":"NotENSOwner"},{"inputs":[{"internalType":"address","name":"agent","type":"address","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"AgentRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"agent","type":"address","indexed":true},{"internalType":"bytes32","name":"ensNode","type":"bytes32","indexed":true},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"ENSLinked","anonymous":false},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getAgent","outputs":[{"internalType":"struct IAgentRegistry.Agent","name":"","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"attestation","type":"bytes"},{"internalType":"uint256","name":"registeredAt","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"bytes32","name":"ensNode","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAgentAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"ensNode","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getAgentByENS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAgentCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"i_ensRegistry","outputs":[{"internalType":"contract IENS","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"isAgent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"attestation","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerAgent"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"attestation","type":"bytes"},{"internalType":"bytes32","name":"ensNode","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"registerAgentWithENS"},{"inputs":[],"stateMutability":"view","type":"function","name":"s_agentCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"ensRegistry_":"The ENS Registry address. Pass address(0) to disable ENS features."}},"getAgent(address)":{"params":{"addr":"The agent address to look up"},"returns":{"_0":"The Agent struct containing name, attestation, registeredAt, exists, and ensNode"}},"getAgentAddresses()":{"returns":{"_0":"An array of every address that has registered as an agent"}},"getAgentByENS(bytes32)":{"details":"Reverts with `ENSNodeNotLinked` if no agent is linked to the given node.","params":{"ensNode":"The ENS namehash to look up"},"returns":{"_0":"The address of the agent linked to this ENS node"}},"getAgentCount()":{"returns":{"_0":"The current agent count"}},"isAgent(address)":{"params":{"addr":"The address to check"},"returns":{"_0":"True if the address is registered, false otherwise"}},"registerAgent(string,bytes)":{"details":"Backward-compatible registration without ENS linkage. Delegates to the internal registration logic with ensNode = bytes32(0).","params":{"attestation":"TEE attestation bytes (accepted as-is for MVP, not verified)","name":"Human-readable agent name (e.g., \"AlphaTrader\"). Must be non-empty."}},"registerAgentWithENS(string,bytes,bytes32)":{"details":"Registration with optional ENS linkage. If `ensNode` is non-zero, verifies that the caller owns the node in the ENS registry before linking it.","params":{"attestation":"TEE attestation bytes (accepted as-is for MVP, not verified)","ensNode":"The ENS namehash to link. Pass bytes32(0) for no ENS linkage. If non-zero, the caller must own this node in the ENS registry.","name":"Human-readable agent name (e.g., \"AlphaTrader\"). Must be non-empty."}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the AgentRegistry, optionally binding it to an ENS Registry."},"getAgent(address)":{"notice":"Get the full Agent struct for a registered address"},"getAgentAddresses()":{"notice":"Get all registered agent addresses for enumeration"},"getAgentByENS(bytes32)":{"notice":"Resolve an ENS node to its linked agent address"},"getAgentCount()":{"notice":"Get the total number of registered agents"},"i_ensRegistry()":{"notice":"The ENS Registry contract used for ownership verification."},"isAgent(address)":{"notice":"Check if an address is a registered agent"},"registerAgent(string,bytes)":{"notice":"Register the caller as an agent (without ENS linkage)"},"registerAgentWithENS(string,bytes,bytes32)":{"notice":"Register the caller as an agent with optional ENS identity linkage"},"s_agentCount()":{"notice":"The total number of registered agents"}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uma/core/=lib/protocol/packages/core/","@uniswap/v4-core/=lib/v4-core/","@uniswap/v4-periphery/=lib/v4-periphery/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","permit2/=lib/v4-periphery/lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/","v4-periphery/=lib/v4-periphery/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/AgentRegistry.sol":"AgentRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/AgentRegistry.sol":{"keccak256":"0xec4a5236321fdcce01bc376df591011e33b49ae7dc61477ecb73769cdb4d84b6","urls":["bzz-raw://dad7c25672fd824a32ea8cf2875c9b00f27f7ff62a8f21e137114228e54d3efc","dweb:/ipfs/QmbPQRtQyxTjbb42jP9qVj9Pkb8MPKdmrkmRMcJwpfp8nT"],"license":"MIT"},"src/interfaces/IAgentRegistry.sol":{"keccak256":"0x544fb23b609c4b5df8c2b02789a4940ef712452c1e46679801649541e7b4cc04","urls":["bzz-raw://424bde53f5d739771ab856bed264e59119b21298206ebe77923068667470916b","dweb:/ipfs/Qmf6FwgxFWJvfJhuq46pEQGSN9F3HPnyDZTWg7UxBNHx2P"],"license":"MIT"},"src/interfaces/IENS.sol":{"keccak256":"0x8a5b64523d7be8970af4fcfd4069eb99337eddf9acbe457467bc30b39c9b3dac","urls":["bzz-raw://f644a8df9a1af88332258d7d43df4f4b017e32f6a0a2cec4454e6261ac452147","dweb:/ipfs/QmfMyXejpuUj5ahqNYNqA5Yz55PABa68SYnwGNQ1bHG5Sx"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"src/AgentRegistry.sol","id":60062,"exportedSymbols":{"AgentRegistry":[60061],"IAgentRegistry":[62508],"IENS":[62540]},"nodeType":"SourceUnit","src":"32:8063:95","nodes":[{"id":59767,"nodeType":"PragmaDirective","src":"32:24:95","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":59769,"nodeType":"ImportDirective","src":"58:63:95","nodes":[],"absolutePath":"src/interfaces/IAgentRegistry.sol","file":"./interfaces/IAgentRegistry.sol","nameLocation":"-1:-1:-1","scope":60062,"sourceUnit":62509,"symbolAliases":[{"foreign":{"id":59768,"name":"IAgentRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62508,"src":"66:14:95","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":59771,"nodeType":"ImportDirective","src":"122:43:95","nodes":[],"absolutePath":"src/interfaces/IENS.sol","file":"./interfaces/IENS.sol","nameLocation":"-1:-1:-1","scope":60062,"sourceUnit":62541,"symbolAliases":[{"foreign":{"id":59770,"name":"IENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62540,"src":"130:4:95","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60061,"nodeType":"ContractDefinition","src":"1458:6636:95","nodes":[{"id":59777,"nodeType":"ErrorDefinition","src":"1769:25:95","nodes":[],"documentation":{"id":59775,"nodeType":"StructuredDocumentation","src":"1676:88:95","text":"@notice Thrown when an ENS operation is attempted but no ENS registry was configured"},"errorSelector":"88be8a3b","name":"ENSNotConfigured","nameLocation":"1775:16:95","parameters":{"id":59776,"nodeType":"ParameterList","parameters":[],"src":"1791:2:95"}},{"id":59781,"nodeType":"VariableDeclaration","src":"2107:35:95","nodes":[],"constant":false,"documentation":{"id":59778,"nodeType":"StructuredDocumentation","src":"1933:169:95","text":"@notice The ENS Registry contract used for ownership verification.\n @dev Set to address(0) on chains without ENS. All ENS operations will revert in that case."},"functionSelector":"964bee72","mutability":"immutable","name":"i_ensRegistry","nameLocation":"2129:13:95","scope":60061,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"},"typeName":{"id":59780,"nodeType":"UserDefinedTypeName","pathNode":{"id":59779,"name":"IENS","nameLocations":["2107:4:95"],"nodeType":"IdentifierPath","referencedDeclaration":62540,"src":"2107:4:95"},"referencedDeclaration":62540,"src":"2107:4:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"visibility":"public"},{"id":59787,"nodeType":"VariableDeclaration","src":"2390:42:95","nodes":[],"constant":false,"documentation":{"id":59782,"nodeType":"StructuredDocumentation","src":"2287:98:95","text":"@dev Maps agent address to its Agent struct (name, attestation, registeredAt, exists, ensNode)"},"mutability":"mutable","name":"s_agents","nameLocation":"2424:8:95","scope":60061,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Agent_$62417_storage_$","typeString":"mapping(address => struct IAgentRegistry.Agent)"},"typeName":{"id":59786,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":59783,"name":"address","nodeType":"ElementaryTypeName","src":"2398:7:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2390:25:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Agent_$62417_storage_$","typeString":"mapping(address => struct IAgentRegistry.Agent)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":59785,"nodeType":"UserDefinedTypeName","pathNode":{"id":59784,"name":"Agent","nameLocations":["2409:5:95"],"nodeType":"IdentifierPath","referencedDeclaration":62417,"src":"2409:5:95"},"referencedDeclaration":62417,"src":"2409:5:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage_ptr","typeString":"struct IAgentRegistry.Agent"}}},"visibility":"private"},{"id":59792,"nodeType":"VariableDeclaration","src":"2544:52:95","nodes":[],"constant":false,"documentation":{"id":59788,"nodeType":"StructuredDocumentation","src":"2439:100:95","text":"@dev Maps ENS namehash to the agent address that claimed it. Used for ENS -> address resolution."},"mutability":"mutable","name":"s_ensNodeToAgent","nameLocation":"2580:16:95","scope":60061,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"typeName":{"id":59791,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":59789,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2552:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2544:27:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":59790,"name":"address","nodeType":"ElementaryTypeName","src":"2563:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"id":59795,"nodeType":"VariableDeclaration","src":"2657:27:95","nodes":[],"constant":false,"documentation":{"id":59793,"nodeType":"StructuredDocumentation","src":"2603:49:95","text":"@notice The total number of registered agents"},"functionSelector":"b26f80d3","mutability":"mutable","name":"s_agentCount","nameLocation":"2672:12:95","scope":60061,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59794,"name":"uint256","nodeType":"ElementaryTypeName","src":"2657:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":59799,"nodeType":"VariableDeclaration","src":"2790:34:95","nodes":[],"constant":false,"documentation":{"id":59796,"nodeType":"StructuredDocumentation","src":"2691:94:95","text":"@dev Array of all registered agent addresses, used for enumeration via getAgentAddresses()"},"mutability":"mutable","name":"s_agentAddresses","nameLocation":"2808:16:95","scope":60061,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":59797,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59798,"nodeType":"ArrayTypeName","src":"2790:9:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"private"},{"id":59811,"nodeType":"FunctionDefinition","src":"3145:76:95","nodes":[],"body":{"id":59810,"nodeType":"Block","src":"3176:45:95","nodes":[],"statements":[{"expression":{"id":59808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":59806,"name":"i_ensRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59781,"src":"3186:13:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59807,"name":"ensRegistry_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59803,"src":"3202:12:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"src":"3186:28:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"id":59809,"nodeType":"ExpressionStatement","src":"3186:28:95"}]},"documentation":{"id":59800,"nodeType":"StructuredDocumentation","src":"2965:175:95","text":"@notice Deploys the AgentRegistry, optionally binding it to an ENS Registry.\n @param ensRegistry_ The ENS Registry address. Pass address(0) to disable ENS features."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":59804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59803,"mutability":"mutable","name":"ensRegistry_","nameLocation":"3162:12:95","nodeType":"VariableDeclaration","scope":59811,"src":"3157:17:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"},"typeName":{"id":59802,"nodeType":"UserDefinedTypeName","pathNode":{"id":59801,"name":"IENS","nameLocations":["3157:4:95"],"nodeType":"IdentifierPath","referencedDeclaration":62540,"src":"3157:4:95"},"referencedDeclaration":62540,"src":"3157:4:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"visibility":"internal"}],"src":"3156:19:95"},"returnParameters":{"id":59805,"nodeType":"ParameterList","parameters":[],"src":"3176:0:95"},"scope":60061,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":59831,"nodeType":"FunctionDefinition","src":"3555:156:95","nodes":[],"body":{"id":59830,"nodeType":"Block","src":"3637:74:95","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":59820,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3662:3:95","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3666:6:95","memberName":"sender","nodeType":"MemberAccess","src":"3662:10:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59822,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59814,"src":"3674:4:95","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":59823,"name":"attestation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59816,"src":"3680:11:95","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"arguments":[{"hexValue":"30","id":59826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3701:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3693:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":59824,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3693:7:95","typeDescriptions":{}}},"id":59827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3693:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":59819,"name":"_registerAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60060,"src":"3647:14:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes32_$returns$__$","typeString":"function (address,string calldata,bytes calldata,bytes32)"}},"id":59828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3647:57:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59829,"nodeType":"ExpressionStatement","src":"3647:57:95"}]},"baseFunctions":[62459],"documentation":{"id":59812,"nodeType":"StructuredDocumentation","src":"3368:182:95","text":"@inheritdoc IAgentRegistry\n @dev Backward-compatible registration without ENS linkage. Delegates to the internal\n registration logic with ensNode = bytes32(0)."},"functionSelector":"935d8542","implemented":true,"kind":"function","modifiers":[],"name":"registerAgent","nameLocation":"3564:13:95","parameters":{"id":59817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59814,"mutability":"mutable","name":"name","nameLocation":"3594:4:95","nodeType":"VariableDeclaration","scope":59831,"src":"3578:20:95","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":59813,"name":"string","nodeType":"ElementaryTypeName","src":"3578:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":59816,"mutability":"mutable","name":"attestation","nameLocation":"3615:11:95","nodeType":"VariableDeclaration","scope":59831,"src":"3600:26:95","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":59815,"name":"bytes","nodeType":"ElementaryTypeName","src":"3600:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3577:50:95"},"returnParameters":{"id":59818,"nodeType":"ParameterList","parameters":[],"src":"3637:0:95"},"scope":60061,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":59850,"nodeType":"FunctionDefinition","src":"3922:177:95","nodes":[],"body":{"id":59849,"nodeType":"Block","src":"4028:71:95","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":59842,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4053:3:95","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4057:6:95","memberName":"sender","nodeType":"MemberAccess","src":"4053:10:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59844,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59834,"src":"4065:4:95","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":59845,"name":"attestation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59836,"src":"4071:11:95","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":59846,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59838,"src":"4084:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":59841,"name":"_registerAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60060,"src":"4038:14:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes32_$returns$__$","typeString":"function (address,string calldata,bytes calldata,bytes32)"}},"id":59847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4038:54:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59848,"nodeType":"ExpressionStatement","src":"4038:54:95"}]},"baseFunctions":[62469],"documentation":{"id":59832,"nodeType":"StructuredDocumentation","src":"3717:200:95","text":"@inheritdoc IAgentRegistry\n @dev Registration with optional ENS linkage. If `ensNode` is non-zero, verifies that\n the caller owns the node in the ENS registry before linking it."},"functionSelector":"361d30af","implemented":true,"kind":"function","modifiers":[],"name":"registerAgentWithENS","nameLocation":"3931:20:95","parameters":{"id":59839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59834,"mutability":"mutable","name":"name","nameLocation":"3968:4:95","nodeType":"VariableDeclaration","scope":59850,"src":"3952:20:95","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":59833,"name":"string","nodeType":"ElementaryTypeName","src":"3952:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":59836,"mutability":"mutable","name":"attestation","nameLocation":"3989:11:95","nodeType":"VariableDeclaration","scope":59850,"src":"3974:26:95","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":59835,"name":"bytes","nodeType":"ElementaryTypeName","src":"3974:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":59838,"mutability":"mutable","name":"ensNode","nameLocation":"4010:7:95","nodeType":"VariableDeclaration","scope":59850,"src":"4002:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59837,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4002:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3951:67:95"},"returnParameters":{"id":59840,"nodeType":"ParameterList","parameters":[],"src":"4028:0:95"},"scope":60061,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":59864,"nodeType":"FunctionDefinition","src":"4140:105:95","nodes":[],"body":{"id":59863,"nodeType":"Block","src":"4200:45:95","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":59858,"name":"s_agents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59787,"src":"4217:8:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Agent_$62417_storage_$","typeString":"mapping(address => struct IAgentRegistry.Agent storage ref)"}},"id":59860,"indexExpression":{"id":59859,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59853,"src":"4226:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4217:14:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage","typeString":"struct IAgentRegistry.Agent storage ref"}},"id":59861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4232:6:95","memberName":"exists","nodeType":"MemberAccess","referencedDeclaration":62414,"src":"4217:21:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":59857,"id":59862,"nodeType":"Return","src":"4210:28:95"}]},"baseFunctions":[62477],"documentation":{"id":59851,"nodeType":"StructuredDocumentation","src":"4105:30:95","text":"@inheritdoc IAgentRegistry"},"functionSelector":"1ffbb064","implemented":true,"kind":"function","modifiers":[],"name":"isAgent","nameLocation":"4149:7:95","parameters":{"id":59854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59853,"mutability":"mutable","name":"addr","nameLocation":"4165:4:95","nodeType":"VariableDeclaration","scope":59864,"src":"4157:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59852,"name":"address","nodeType":"ElementaryTypeName","src":"4157:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4156:14:95"},"returnParameters":{"id":59857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59864,"src":"4194:4:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":59855,"name":"bool","nodeType":"ElementaryTypeName","src":"4194:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4193:6:95"},"scope":60061,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":59878,"nodeType":"FunctionDefinition","src":"4286:107:95","nodes":[],"body":{"id":59877,"nodeType":"Block","src":"4355:38:95","nodes":[],"statements":[{"expression":{"baseExpression":{"id":59873,"name":"s_agents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59787,"src":"4372:8:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Agent_$62417_storage_$","typeString":"mapping(address => struct IAgentRegistry.Agent storage ref)"}},"id":59875,"indexExpression":{"id":59874,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59867,"src":"4381:4:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4372:14:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage","typeString":"struct IAgentRegistry.Agent storage ref"}},"functionReturnParameters":59872,"id":59876,"nodeType":"Return","src":"4365:21:95"}]},"baseFunctions":[62486],"documentation":{"id":59865,"nodeType":"StructuredDocumentation","src":"4251:30:95","text":"@inheritdoc IAgentRegistry"},"functionSelector":"fb3551ff","implemented":true,"kind":"function","modifiers":[],"name":"getAgent","nameLocation":"4295:8:95","parameters":{"id":59868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59867,"mutability":"mutable","name":"addr","nameLocation":"4312:4:95","nodeType":"VariableDeclaration","scope":59878,"src":"4304:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59866,"name":"address","nodeType":"ElementaryTypeName","src":"4304:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4303:14:95"},"returnParameters":{"id":59872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59878,"src":"4341:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_memory_ptr","typeString":"struct IAgentRegistry.Agent"},"typeName":{"id":59870,"nodeType":"UserDefinedTypeName","pathNode":{"id":59869,"name":"Agent","nameLocations":["4341:5:95"],"nodeType":"IdentifierPath","referencedDeclaration":62417,"src":"4341:5:95"},"referencedDeclaration":62417,"src":"4341:5:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage_ptr","typeString":"struct IAgentRegistry.Agent"}},"visibility":"internal"}],"src":"4340:14:95"},"scope":60061,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":59887,"nodeType":"FunctionDefinition","src":"4434:93:95","nodes":[],"body":{"id":59886,"nodeType":"Block","src":"4491:36:95","nodes":[],"statements":[{"expression":{"id":59884,"name":"s_agentCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59795,"src":"4508:12:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59883,"id":59885,"nodeType":"Return","src":"4501:19:95"}]},"baseFunctions":[62492],"documentation":{"id":59879,"nodeType":"StructuredDocumentation","src":"4399:30:95","text":"@inheritdoc IAgentRegistry"},"functionSelector":"91cab63e","implemented":true,"kind":"function","modifiers":[],"name":"getAgentCount","nameLocation":"4443:13:95","parameters":{"id":59880,"nodeType":"ParameterList","parameters":[],"src":"4456:2:95"},"returnParameters":{"id":59883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59887,"src":"4482:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4482:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4481:9:95"},"scope":60061,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":59897,"nodeType":"FunctionDefinition","src":"4568:110:95","nodes":[],"body":{"id":59896,"nodeType":"Block","src":"4638:40:95","nodes":[],"statements":[{"expression":{"id":59894,"name":"s_agentAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59799,"src":"4655:16:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":59893,"id":59895,"nodeType":"Return","src":"4648:23:95"}]},"baseFunctions":[62499],"documentation":{"id":59888,"nodeType":"StructuredDocumentation","src":"4533:30:95","text":"@inheritdoc IAgentRegistry"},"functionSelector":"770ed817","implemented":true,"kind":"function","modifiers":[],"name":"getAgentAddresses","nameLocation":"4577:17:95","parameters":{"id":59889,"nodeType":"ParameterList","parameters":[],"src":"4594:2:95"},"returnParameters":{"id":59893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59897,"src":"4620:16:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":59890,"name":"address","nodeType":"ElementaryTypeName","src":"4620:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59891,"nodeType":"ArrayTypeName","src":"4620:9:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4619:18:95"},"scope":60061,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":59925,"nodeType":"FunctionDefinition","src":"4805:236:95","nodes":[],"body":{"id":59924,"nodeType":"Block","src":"4877:164:95","nodes":[],"statements":[{"assignments":[59906],"declarations":[{"constant":false,"id":59906,"mutability":"mutable","name":"agent","nameLocation":"4895:5:95","nodeType":"VariableDeclaration","scope":59924,"src":"4887:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59905,"name":"address","nodeType":"ElementaryTypeName","src":"4887:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":59910,"initialValue":{"baseExpression":{"id":59907,"name":"s_ensNodeToAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59792,"src":"4903:16:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":59909,"indexExpression":{"id":59908,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59900,"src":"4920:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4903:25:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4887:41:95"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":59916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59911,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59906,"src":"4942:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":59914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4959:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4951:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59912,"name":"address","nodeType":"ElementaryTypeName","src":"4951:7:95","typeDescriptions":{}}},"id":59915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4951:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4942:19:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59921,"nodeType":"IfStatement","src":"4938:75:95","trueBody":{"id":59920,"nodeType":"Block","src":"4963:50:95","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59917,"name":"ENSNodeNotLinked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62451,"src":"4984:16:95","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:18:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59919,"nodeType":"RevertStatement","src":"4977:25:95"}]}},{"expression":{"id":59922,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59906,"src":"5029:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":59904,"id":59923,"nodeType":"Return","src":"5022:12:95"}]},"baseFunctions":[62507],"documentation":{"id":59898,"nodeType":"StructuredDocumentation","src":"4684:116:95","text":"@inheritdoc IAgentRegistry\n @dev Reverts with `ENSNodeNotLinked` if no agent is linked to the given node."},"functionSelector":"64e6f82c","implemented":true,"kind":"function","modifiers":[],"name":"getAgentByENS","nameLocation":"4814:13:95","parameters":{"id":59901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59900,"mutability":"mutable","name":"ensNode","nameLocation":"4836:7:95","nodeType":"VariableDeclaration","scope":59925,"src":"4828:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4828:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4827:17:95"},"returnParameters":{"id":59904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59925,"src":"4868:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59902,"name":"address","nodeType":"ElementaryTypeName","src":"4868:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4867:9:95"},"scope":60061,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":60060,"nodeType":"FunctionDefinition","src":"5953:2139:95","nodes":[],"body":{"id":60059,"nodeType":"Block","src":"6068:2024:95","nodes":[],"statements":[{"condition":{"expression":{"baseExpression":{"id":59937,"name":"s_agents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59787,"src":"6282:8:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Agent_$62417_storage_$","typeString":"mapping(address => struct IAgentRegistry.Agent storage ref)"}},"id":59939,"indexExpression":{"id":59938,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"6291:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6282:15:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage","typeString":"struct IAgentRegistry.Agent storage ref"}},"id":59940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6298:6:95","memberName":"exists","nodeType":"MemberAccess","referencedDeclaration":62414,"src":"6282:22:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59945,"nodeType":"IfStatement","src":"6278:79:95","trueBody":{"id":59944,"nodeType":"Block","src":"6306:51:95","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59941,"name":"AlreadyRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62436,"src":"6327:17:95","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6327:19:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59943,"nodeType":"RevertStatement","src":"6320:26:95"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":59948,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59930,"src":"6377:4:95","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":59947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6371:5:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":59946,"name":"bytes","nodeType":"ElementaryTypeName","src":"6371:5:95","typeDescriptions":{}}},"id":59949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6371:11:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":59950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6383:6:95","memberName":"length","nodeType":"MemberAccess","src":"6371:18:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":59951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6393:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6371:23:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59957,"nodeType":"IfStatement","src":"6367:72:95","trueBody":{"id":59956,"nodeType":"Block","src":"6396:43:95","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59953,"name":"EmptyName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62439,"src":"6417:9:95","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6417:11:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59955,"nodeType":"RevertStatement","src":"6410:18:95"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":59963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59958,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"6526:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":59961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6545:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6537:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":59959,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6537:7:95","typeDescriptions":{}}},"id":59962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6537:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6526:21:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60003,"nodeType":"IfStatement","src":"6522:553:95","trueBody":{"id":60002,"nodeType":"Block","src":"6549:526:95","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":59972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":59966,"name":"i_ensRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59781,"src":"6575:13:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}],"id":59965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6567:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59964,"name":"address","nodeType":"ElementaryTypeName","src":"6567:7:95","typeDescriptions":{}}},"id":59967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6567:22:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":59970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6601:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6593:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59968,"name":"address","nodeType":"ElementaryTypeName","src":"6593:7:95","typeDescriptions":{}}},"id":59971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6593:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6567:36:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59977,"nodeType":"IfStatement","src":"6563:100:95","trueBody":{"id":59976,"nodeType":"Block","src":"6605:58:95","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59973,"name":"ENSNotConfigured","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59777,"src":"6630:16:95","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6630:18:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59975,"nodeType":"RevertStatement","src":"6623:25:95"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":59983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":59980,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"6796:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":59978,"name":"i_ensRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59781,"src":"6776:13:95","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"id":59979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6790:5:95","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":62519,"src":"6776:19:95","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view external returns (address)"}},"id":59981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6776:28:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":59982,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"6808:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6776:37:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59988,"nodeType":"IfStatement","src":"6772:96:95","trueBody":{"id":59987,"nodeType":"Block","src":"6815:53:95","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59984,"name":"NotENSOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62445,"src":"6840:11:95","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6840:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59986,"nodeType":"RevertStatement","src":"6833:20:95"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":59996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":59989,"name":"s_ensNodeToAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59792,"src":"6962:16:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":59991,"indexExpression":{"id":59990,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"6979:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6962:25:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":59994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6999:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":59993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6991:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59992,"name":"address","nodeType":"ElementaryTypeName","src":"6991:7:95","typeDescriptions":{}}},"id":59995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6991:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6962:39:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60001,"nodeType":"IfStatement","src":"6958:107:95","trueBody":{"id":60000,"nodeType":"Block","src":"7003:62:95","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59997,"name":"ENSNodeAlreadyLinked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62448,"src":"7028:20:95","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7028:22:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59999,"nodeType":"RevertStatement","src":"7021:29:95"}]}}]}},{"expression":{"id":60015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60004,"name":"s_agents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59787,"src":"7283:8:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Agent_$62417_storage_$","typeString":"mapping(address => struct IAgentRegistry.Agent storage ref)"}},"id":60006,"indexExpression":{"id":60005,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"7292:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7283:15:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage","typeString":"struct IAgentRegistry.Agent storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60008,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59930,"src":"7327:4:95","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":60009,"name":"attestation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59932,"src":"7358:11:95","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":60010,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7397:5:95","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":60011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7403:9:95","memberName":"timestamp","nodeType":"MemberAccess","src":"7397:15:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":60012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7434:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":60013,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"7461:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":60007,"name":"Agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62417,"src":"7301:5:95","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Agent_$62417_storage_ptr_$","typeString":"type(struct IAgentRegistry.Agent storage pointer)"}},"id":60014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7321:4:95","7345:11:95","7383:12:95","7426:6:95","7452:7:95"],"names":["name","attestation","registeredAt","exists","ensNode"],"nodeType":"FunctionCall","src":"7301:178:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_memory_ptr","typeString":"struct IAgentRegistry.Agent memory"}},"src":"7283:196:95","typeDescriptions":{"typeIdentifier":"t_struct$_Agent_$62417_storage","typeString":"struct IAgentRegistry.Agent storage ref"}},"id":60016,"nodeType":"ExpressionStatement","src":"7283:196:95"},{"expression":{"id":60018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7490:14:95","subExpression":{"id":60017,"name":"s_agentCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59795,"src":"7490:12:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60019,"nodeType":"ExpressionStatement","src":"7490:14:95"},{"expression":{"arguments":[{"id":60023,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"7536:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":60020,"name":"s_agentAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59799,"src":"7514:16:95","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":60022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7531:4:95","memberName":"push","nodeType":"MemberAccess","src":"7514:21:95","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":60024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7514:28:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60025,"nodeType":"ExpressionStatement","src":"7514:28:95"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":60031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60026,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"7663:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":60029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7682:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":60028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7674:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":60027,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7674:7:95","typeDescriptions":{}}},"id":60030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7674:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7663:21:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60039,"nodeType":"IfStatement","src":"7659:85:95","trueBody":{"id":60038,"nodeType":"Block","src":"7686:58:95","statements":[{"expression":{"id":60036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60032,"name":"s_ensNodeToAgent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59792,"src":"7700:16:95","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_address_$","typeString":"mapping(bytes32 => address)"}},"id":60034,"indexExpression":{"id":60033,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"7717:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7700:25:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60035,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"7728:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7700:33:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60037,"nodeType":"ExpressionStatement","src":"7700:33:95"}]}},{"eventCall":{"arguments":[{"id":60041,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"7975:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60042,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59930,"src":"7982:4:95","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":60040,"name":"AgentRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62424,"src":"7959:15:95","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory)"}},"id":60043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7959:28:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60044,"nodeType":"EmitStatement","src":"7954:33:95"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":60050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60045,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"8002:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":60048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8021:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":60047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8013:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":60046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8013:7:95","typeDescriptions":{}}},"id":60049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8013:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8002:21:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60058,"nodeType":"IfStatement","src":"7998:88:95","trueBody":{"id":60057,"nodeType":"Block","src":"8025:61:95","statements":[{"eventCall":{"arguments":[{"id":60052,"name":"agent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59928,"src":"8054:5:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60053,"name":"ensNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59934,"src":"8061:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":60054,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59930,"src":"8070:4:95","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":60051,"name":"ENSLinked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62433,"src":"8044:9:95","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,bytes32,string memory)"}},"id":60055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8044:31:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60056,"nodeType":"EmitStatement","src":"8039:36:95"}]}}]},"documentation":{"id":59926,"nodeType":"StructuredDocumentation","src":"5188:760:95","text":"@notice Core registration logic shared by `registerAgent` and `registerAgentWithENS`.\n @dev Performs all validation, stores the agent, and optionally links an ENS node.\n Follows Checks-Effects-Interactions: all state is written before any external calls\n (though ENS ownership check is a view call, not a state mutation, so it is safe to\n perform before state writes -- we do it first for fail-fast behavior).\n @param agent The address being registered (always msg.sender from external callers).\n @param name Human-readable agent name. Must be non-empty.\n @param attestation TEE attestation bytes.\n @param ensNode Optional ENS namehash. bytes32(0) to skip ENS linkage."},"implemented":true,"kind":"function","modifiers":[],"name":"_registerAgent","nameLocation":"5962:14:95","parameters":{"id":59935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59928,"mutability":"mutable","name":"agent","nameLocation":"5985:5:95","nodeType":"VariableDeclaration","scope":60060,"src":"5977:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59927,"name":"address","nodeType":"ElementaryTypeName","src":"5977:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":59930,"mutability":"mutable","name":"name","nameLocation":"6008:4:95","nodeType":"VariableDeclaration","scope":60060,"src":"5992:20:95","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":59929,"name":"string","nodeType":"ElementaryTypeName","src":"5992:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":59932,"mutability":"mutable","name":"attestation","nameLocation":"6029:11:95","nodeType":"VariableDeclaration","scope":60060,"src":"6014:26:95","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":59931,"name":"bytes","nodeType":"ElementaryTypeName","src":"6014:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":59934,"mutability":"mutable","name":"ensNode","nameLocation":"6050:7:95","nodeType":"VariableDeclaration","scope":60060,"src":"6042:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59933,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6042:7:95","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5976:82:95"},"returnParameters":{"id":59936,"nodeType":"ParameterList","parameters":[],"src":"6068:0:95"},"scope":60061,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":59773,"name":"IAgentRegistry","nameLocations":["1484:14:95"],"nodeType":"IdentifierPath","referencedDeclaration":62508,"src":"1484:14:95"},"id":59774,"nodeType":"InheritanceSpecifier","src":"1484:14:95"}],"canonicalName":"AgentRegistry","contractDependencies":[],"contractKind":"contract","documentation":{"id":59772,"nodeType":"StructuredDocumentation","src":"167:1291:95","text":"@title AgentRegistry\n @author $CLAWLOGIC Team\n @notice On-chain identity registry for autonomous AI agents with optional ENS integration.\n @dev This contract is the \"Silicon Gate\" of the $CLAWLOGIC protocol.\n The PredictionMarketHook's `beforeSwap` and `beforeAddLiquidity` hooks\n call `isAgent()` on this registry to enforce agent-only access to markets.\n For the MVP, registration is permissionless -- any address can register by\n calling `registerAgent()`. In production, this would require verified TEE\n attestation data to cryptographically prove the caller is an autonomous agent\n running inside a Trusted Execution Environment.\n **Phase 1.1 -- ENS Identity Integration:**\n Agents can optionally link an ENS node (e.g., `alpha.agent.eth`) to their address\n during registration. ENS ownership is verified on-chain by querying the ENS\n Registry's `owner()` function. The original `registerAgent()` signature is preserved\n for backward compatibility; agents that do not need ENS simply call the old function.\n If the ENS registry address is `address(0)` (the default for chains without ENS),\n all ENS-related operations will revert with `ENSNotConfigured()`."},"fullyImplemented":true,"linearizedBaseContracts":[60061,62508],"name":"AgentRegistry","nameLocation":"1467:13:95","scope":60062,"usedErrors":[59777,62436,62439,62442,62445,62448,62451],"usedEvents":[62424,62433]}],"license":"MIT"},"id":95}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[{"name":"ensRegistry_","type":"address","internalType":"contract IENS"},{"name":"baseNode_","type":"bytes32","internalType":"bytes32"},{"name":"agentRegistry_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"computeSubnode","inputs":[{"name":"subdomain","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"i_agentRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"i_baseNode","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"i_ensRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IENS"}],"stateMutability":"view"},{"type":"function","name":"registerAgentSubdomain","inputs":[{"name":"subdomain","type":"string","internalType":"string"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"subnode","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"event","name":"AgentSubdomainRegistered","inputs":[{"name":"subdomain","type":"string","indexed":false,"internalType":"string"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"subnode","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"error","name":"EmptySubdomain","inputs":[]},{"type":"error","name":"OnlyAgentRegistry","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60e0346100ba57601f61055638819003918201601f19168301916001600160401b038311848410176100be578084926060946040528339810103126100ba578051906001600160a01b03821682036100ba576020810151604090910151916001600160a01b03831683036100ba5760805260a05260c05260405161048390816100d38239608051818181606501526101b3015260a05181818160af015281816101770152610363015260c05181818161011b01526102e80152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806315744e8d146103175780634eaeca32146102d35780636aae2f76146100d257806392cd341e146100985763964bee7214610050575f80fd5b34610094575f366003190112610094576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b34610094575f3660031901126100945760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100945760403660031901126100945760043567ffffffffffffffff8111610094576101039036906004016103a3565b906024356001600160a01b03811690819003610094577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036102c45782156102b55780156102a657610160368484610407565b80516020918201206040516306ab592360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024810191909152604481018390529290836064815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561029b575f93610243575b50907f9e90b787cc25043fa3d46409edffd5a567d3c2d451586f8d8f4b109dfd66a7f9846040859460209782519384928a8452818b850152848401375f828201840152601f01601f19168101030190a3604051908152f35b939250906020843d602011610293575b81610260602093836103d1565b810103126100945792519192907f9e90b787cc25043fa3d46409edffd5a567d3c2d451586f8d8f4b109dfd66a7f96101eb565b3d9150610253565b6040513d5f823e3d90fd5b63d92e233d60e01b5f5260045ffd5b631152713b60e21b5f5260045ffd5b6304052e6560e21b5f5260045ffd5b34610094575f366003190112610094576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100945760203660031901126100945760043567ffffffffffffffff81116100945761035461034d60209236906004016103a3565b3691610407565b818151910120604051828101917f000000000000000000000000000000000000000000000000000000000000000083526040820152604081526103986060826103d1565b519020604051908152f35b9181601f840112156100945782359167ffffffffffffffff8311610094576020838186019501011161009457565b90601f8019910116810190811067ffffffffffffffff8211176103f357604052565b634e487b7160e01b5f52604160045260245ffd5b92919267ffffffffffffffff82116103f35760405191610431601f8201601f1916602001846103d1565b829481845281830111610094578281602093845f96013701015256fea26469706673582212206db912caaadee1bd5e8bc483f5b7c4e6378822e48875e57435ff723e37943cd364736f6c634300081a0033","sourceMap":"1238:5134:96:-:0;;;;;;;;;;;;;-1:-1:-1;;1238:5134:96;;;;-1:-1:-1;;;;;1238:5134:96;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1238:5134:96;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1238:5134:96;;;;;;3429:28;;3467:22;;3499:32;;1238:5134;;;;;;;;3429:28;1238:5134;;;;;;;;;;3467:22;1238:5134;;;;;;;;;;;;;;;3499:32;1238:5134;;;;;;;;;;;;-1:-1:-1;1238:5134:96;;;;;;-1:-1:-1;1238:5134:96;;;;;-1:-1:-1;1238:5134:96","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806315744e8d146103175780634eaeca32146102d35780636aae2f76146100d257806392cd341e146100985763964bee7214610050575f80fd5b34610094575f366003190112610094576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b34610094575f3660031901126100945760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100945760403660031901126100945760043567ffffffffffffffff8111610094576101039036906004016103a3565b906024356001600160a01b03811690819003610094577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036102c45782156102b55780156102a657610160368484610407565b80516020918201206040516306ab592360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024810191909152604481018390529290836064815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561029b575f93610243575b50907f9e90b787cc25043fa3d46409edffd5a567d3c2d451586f8d8f4b109dfd66a7f9846040859460209782519384928a8452818b850152848401375f828201840152601f01601f19168101030190a3604051908152f35b939250906020843d602011610293575b81610260602093836103d1565b810103126100945792519192907f9e90b787cc25043fa3d46409edffd5a567d3c2d451586f8d8f4b109dfd66a7f96101eb565b3d9150610253565b6040513d5f823e3d90fd5b63d92e233d60e01b5f5260045ffd5b631152713b60e21b5f5260045ffd5b6304052e6560e21b5f5260045ffd5b34610094575f366003190112610094576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100945760203660031901126100945760043567ffffffffffffffff81116100945761035461034d60209236906004016103a3565b3691610407565b818151910120604051828101917f000000000000000000000000000000000000000000000000000000000000000083526040820152604081526103986060826103d1565b519020604051908152f35b9181601f840112156100945782359167ffffffffffffffff8311610094576020838186019501011161009457565b90601f8019910116810190811067ffffffffffffffff8211176103f357604052565b634e487b7160e01b5f52604160045260245ffd5b92919267ffffffffffffffff82116103f35760405191610431601f8201601f1916602001846103d1565b829481845281830111610094578281602093845f96013701015256fea26469706673582212206db912caaadee1bd5e8bc483f5b7c4e6378822e48875e57435ff723e37943cd364736f6c634300081a0033","sourceMap":"1238:5134:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1238:5134:96;;;;;;2433:35;-1:-1:-1;;;;;1238:5134:96;;;;;;;;;;;;;;;;-1:-1:-1;;1238:5134:96;;;;;;;2555:35;1238:5134;;;;;;;;;-1:-1:-1;;1238:5134:96;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1238:5134:96;;;;;;;;4783:15;-1:-1:-1;;;;;1238:5134:96;4769:10;:29;4765:86;;4865:28;;4861:82;;4957:19;;4953:70;;1238:5134;;;;;:::i;:::-;;;;;;;5302:27;1238:5134;;-1:-1:-1;;;5508:59:96;;5538:10;1238:5134;5508:59;;1238:5134;;;;;;;;;;;;;;;;;5508:59;1238:5134;-1:-1:-1;5508:13:96;-1:-1:-1;;;;;1238:5134:96;5508:59;;;;;;;1238:5134;5508:59;;;1238:5134;;;5783:51;1238:5134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1238:5134:96;;;5783:51;;;;1238:5134;;;;;;5508:59;;;;;1238:5134;5508:59;;1238:5134;5508:59;;;;;;1238:5134;5508:59;;;:::i;:::-;;;1238:5134;;;;;;;;5508:59;5783:51;5508:59;;;;;-1:-1:-1;5508:59:96;;;1238:5134;;;;;;;;;4953:70;4999:13;;;1238:5134;4999:13;1238:5134;;4999:13;4861:82;4916:16;;;1238:5134;4916:16;1238:5134;;4916:16;4765:86;4821:19;;;1238:5134;4821:19;1238:5134;;4821:19;1238:5134;;;;;;-1:-1:-1;;1238:5134:96;;;;;;2692:40;-1:-1:-1;;;;;1238:5134:96;;;;;;;;;;;;-1:-1:-1;;1238:5134:96;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;6269:27;1238:5134;;6323:39;;;6340:10;;1238:5134;;;;;;;6323:39;;;;;;:::i;:::-;1238:5134;6313:50;;1238:5134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1238:5134:96;;;;;-1:-1:-1;1238:5134:96;;;;;;;;;;;;;;;;;-1:-1:-1;;1238:5134:96;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1238:5134:96;;;;;;:::o","linkReferences":{},"immutableReferences":{"60088":[{"start":101,"length":32},{"start":435,"length":32}],"60091":[{"start":175,"length":32},{"start":375,"length":32},{"start":867,"length":32}],"60094":[{"start":283,"length":32},{"start":744,"length":32}]}},"methodIdentifiers":{"computeSubnode(string)":"15744e8d","i_agentRegistry()":"4eaeca32","i_baseNode()":"92cd341e","i_ensRegistry()":"964bee72","registerAgentSubdomain(string,address)":"6aae2f76"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IENS\",\"name\":\"ensRegistry_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"baseNode_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"agentRegistry_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EmptySubdomain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAgentRegistry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"subdomain\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"subnode\",\"type\":\"bytes32\"}],\"name\":\"AgentSubdomainRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"subdomain\",\"type\":\"string\"}],\"name\":\"computeSubnode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_agentRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_baseNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_ensRegistry\",\"outputs\":[{\"internalType\":\"contract IENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"subdomain\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerAgentSubdomain\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnode\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"$CLAWLOGIC Team\",\"details\":\"This contract must own the `agent.eth` parent node in the ENS Registry (or whichever base node is configured). It creates subdomains on behalf of the AgentRegistry, so that when an agent registers as \\\"alpha\\\", the helper can automatically provision `alpha.agent.eth` and assign ownership to the agent's address. **Access Control:** Only the designated AgentRegistry contract may call `registerAgentSubdomain()`. This prevents unauthorized subdomain creation. **ENS Namehash Calculation:** - `agent.eth` = namehash(\\\"agent.eth\\\") = keccak256(abi.encodePacked(namehash(\\\"eth\\\"), keccak256(\\\"agent\\\"))) - `alpha.agent.eth` = keccak256(abi.encodePacked(baseNode, keccak256(\\\"alpha\\\"))) The caller is responsible for computing the correct base node off-chain or in the deploy script. The full subnode is computed on-chain from `baseNode + label`.\",\"events\":{\"AgentSubdomainRegistered(string,address,bytes32)\":{\"params\":{\"owner\":\"The address assigned as the owner of the subdomain\",\"subdomain\":\"The human-readable subdomain label (e.g., \\\"alpha\\\")\",\"subnode\":\"The full ENS namehash of the registered subdomain\"}}},\"kind\":\"dev\",\"methods\":{\"computeSubnode(string)\":{\"details\":\"Pure helper for off-chain tooling and verification. Does not modify state.\",\"params\":{\"subdomain\":\"The subdomain label (e.g., \\\"alpha\\\").\"},\"returns\":{\"_0\":\"The full ENS namehash (e.g., namehash(\\\"alpha.agent.eth\\\")).\"}},\"constructor\":{\"details\":\"After deployment, the deployer must transfer ownership of `baseNode` in the ENS Registry to this contract's address so it can call `setSubnodeOwner`.\",\"params\":{\"agentRegistry_\":\"The AgentRegistry address authorized to request subdomain creation.\",\"baseNode_\":\"The namehash of the parent domain (e.g., namehash(\\\"agent.eth\\\")).\",\"ensRegistry_\":\"The ENS Registry address.\"}},\"registerAgentSubdomain(string,address)\":{\"details\":\"Only callable by the AgentRegistry. The subdomain is created by calling `ENS.setSubnodeOwner(baseNode, labelHash, owner)`. This contract must be the owner of `baseNode` in the ENS Registry for this to succeed. Example: If baseNode = namehash(\\\"agent.eth\\\") and subdomain = \\\"alpha\\\", this creates `alpha.agent.eth` with `owner` as its owner.\",\"params\":{\"owner\":\"The address to assign as owner of the new subdomain.\",\"subdomain\":\"The subdomain label (e.g., \\\"alpha\\\"). Must be non-empty.\"},\"returns\":{\"subnode\":\" The full ENS namehash of the newly created subdomain.\"}}},\"title\":\"ENSAgentHelper\",\"version\":1},\"userdoc\":{\"errors\":{\"EmptySubdomain()\":[{\"notice\":\"Thrown when the subdomain label is empty\"}],\"OnlyAgentRegistry()\":[{\"notice\":\"Thrown when a function restricted to the AgentRegistry is called by another address\"}],\"ZeroAddress()\":[{\"notice\":\"Thrown when the owner address is the zero address\"}]},\"events\":{\"AgentSubdomainRegistered(string,address,bytes32)\":{\"notice\":\"Emitted when a new agent subdomain is registered under the base node\"}},\"kind\":\"user\",\"methods\":{\"computeSubnode(string)\":{\"notice\":\"Computes the full ENS namehash for a subdomain under the base node.\"},\"constructor\":{\"notice\":\"Deploys the ENSAgentHelper.\"},\"i_agentRegistry()\":{\"notice\":\"The AgentRegistry contract -- sole authorized caller of registerAgentSubdomain\"},\"i_baseNode()\":{\"notice\":\"The ENS namehash of the base node (e.g., namehash(\\\"agent.eth\\\"))\"},\"i_ensRegistry()\":{\"notice\":\"The ENS Registry contract\"},\"registerAgentSubdomain(string,address)\":{\"notice\":\"Register a subdomain under the base node and assign ownership to the specified address.\"}},\"notice\":\"Helper contract for registering `<name>.agent.eth` subdomains under the $CLAWLOGIC agent namespace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ENSAgentHelper.sol\":\"ENSAgentHelper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uma/core/=lib/protocol/packages/core/\",\":@uniswap/v4-core/=lib/v4-core/\",\":@uniswap/v4-periphery/=lib/v4-periphery/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":permit2/=lib/v4-periphery/lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/\",\":v4-periphery/=lib/v4-periphery/\"],\"viaIR\":true},\"sources\":{\"src/ENSAgentHelper.sol\":{\"keccak256\":\"0xc321fb59dfeb339af21c72c7b5cea85c7ede4fbe951185b6cf6d6cb4d8428f30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eef23fb84dd26bca7ae1ac20f7a0f5eb8c9447cdc7fbe8101a7cda90acda3a84\",\"dweb:/ipfs/QmdE4m5CQVwvSNUiquQBVuE156bbCfc7eV6ZxAQGvrqEW2\"]},\"src/interfaces/IENS.sol\":{\"keccak256\":\"0x8a5b64523d7be8970af4fcfd4069eb99337eddf9acbe457467bc30b39c9b3dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644a8df9a1af88332258d7d43df4f4b017e32f6a0a2cec4454e6261ac452147\",\"dweb:/ipfs/QmfMyXejpuUj5ahqNYNqA5Yz55PABa68SYnwGNQ1bHG5Sx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IENS","name":"ensRegistry_","type":"address"},{"internalType":"bytes32","name":"baseNode_","type":"bytes32"},{"internalType":"address","name":"agentRegistry_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"EmptySubdomain"},{"inputs":[],"type":"error","name":"OnlyAgentRegistry"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"string","name":"subdomain","type":"string","indexed":false},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"bytes32","name":"subnode","type":"bytes32","indexed":true}],"type":"event","name":"AgentSubdomainRegistered","anonymous":false},{"inputs":[{"internalType":"string","name":"subdomain","type":"string"}],"stateMutability":"view","type":"function","name":"computeSubnode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"i_agentRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"i_baseNode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"i_ensRegistry","outputs":[{"internalType":"contract IENS","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"subdomain","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerAgentSubdomain","outputs":[{"internalType":"bytes32","name":"subnode","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"computeSubnode(string)":{"details":"Pure helper for off-chain tooling and verification. Does not modify state.","params":{"subdomain":"The subdomain label (e.g., \"alpha\")."},"returns":{"_0":"The full ENS namehash (e.g., namehash(\"alpha.agent.eth\"))."}},"constructor":{"details":"After deployment, the deployer must transfer ownership of `baseNode` in the ENS Registry to this contract's address so it can call `setSubnodeOwner`.","params":{"agentRegistry_":"The AgentRegistry address authorized to request subdomain creation.","baseNode_":"The namehash of the parent domain (e.g., namehash(\"agent.eth\")).","ensRegistry_":"The ENS Registry address."}},"registerAgentSubdomain(string,address)":{"details":"Only callable by the AgentRegistry. The subdomain is created by calling `ENS.setSubnodeOwner(baseNode, labelHash, owner)`. This contract must be the owner of `baseNode` in the ENS Registry for this to succeed. Example: If baseNode = namehash(\"agent.eth\") and subdomain = \"alpha\", this creates `alpha.agent.eth` with `owner` as its owner.","params":{"owner":"The address to assign as owner of the new subdomain.","subdomain":"The subdomain label (e.g., \"alpha\"). Must be non-empty."},"returns":{"subnode":" The full ENS namehash of the newly created subdomain."}}},"version":1},"userdoc":{"kind":"user","methods":{"computeSubnode(string)":{"notice":"Computes the full ENS namehash for a subdomain under the base node."},"constructor":{"notice":"Deploys the ENSAgentHelper."},"i_agentRegistry()":{"notice":"The AgentRegistry contract -- sole authorized caller of registerAgentSubdomain"},"i_baseNode()":{"notice":"The ENS namehash of the base node (e.g., namehash(\"agent.eth\"))"},"i_ensRegistry()":{"notice":"The ENS Registry contract"},"registerAgentSubdomain(string,address)":{"notice":"Register a subdomain under the base node and assign ownership to the specified address."}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uma/core/=lib/protocol/packages/core/","@uniswap/v4-core/=lib/v4-core/","@uniswap/v4-periphery/=lib/v4-periphery/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","permit2/=lib/v4-periphery/lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/","v4-periphery/=lib/v4-periphery/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ENSAgentHelper.sol":"ENSAgentHelper"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/ENSAgentHelper.sol":{"keccak256":"0xc321fb59dfeb339af21c72c7b5cea85c7ede4fbe951185b6cf6d6cb4d8428f30","urls":["bzz-raw://eef23fb84dd26bca7ae1ac20f7a0f5eb8c9447cdc7fbe8101a7cda90acda3a84","dweb:/ipfs/QmdE4m5CQVwvSNUiquQBVuE156bbCfc7eV6ZxAQGvrqEW2"],"license":"MIT"},"src/interfaces/IENS.sol":{"keccak256":"0x8a5b64523d7be8970af4fcfd4069eb99337eddf9acbe457467bc30b39c9b3dac","urls":["bzz-raw://f644a8df9a1af88332258d7d43df4f4b017e32f6a0a2cec4454e6261ac452147","dweb:/ipfs/QmfMyXejpuUj5ahqNYNqA5Yz55PABa68SYnwGNQ1bHG5Sx"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"src/ENSAgentHelper.sol","id":60213,"exportedSymbols":{"ENSAgentHelper":[60212],"IENS":[62540]},"nodeType":"SourceUnit","src":"32:6341:96","nodes":[{"id":60063,"nodeType":"PragmaDirective","src":"32:24:96","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":60065,"nodeType":"ImportDirective","src":"58:43:96","nodes":[],"absolutePath":"src/interfaces/IENS.sol","file":"./interfaces/IENS.sol","nameLocation":"-1:-1:-1","scope":60213,"sourceUnit":62541,"symbolAliases":[{"foreign":{"id":60064,"name":"IENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62540,"src":"66:4:96","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60212,"nodeType":"ContractDefinition","src":"1238:5134:96","nodes":[{"id":60069,"nodeType":"ErrorDefinition","src":"1504:26:96","nodes":[],"documentation":{"id":60067,"nodeType":"StructuredDocumentation","src":"1404:95:96","text":"@notice Thrown when a function restricted to the AgentRegistry is called by another address"},"errorSelector":"1014b994","name":"OnlyAgentRegistry","nameLocation":"1510:17:96","parameters":{"id":60068,"nodeType":"ParameterList","parameters":[],"src":"1527:2:96"}},{"id":60072,"nodeType":"ErrorDefinition","src":"1593:23:96","nodes":[],"documentation":{"id":60070,"nodeType":"StructuredDocumentation","src":"1536:52:96","text":"@notice Thrown when the subdomain label is empty"},"errorSelector":"4549c4ec","name":"EmptySubdomain","nameLocation":"1599:14:96","parameters":{"id":60071,"nodeType":"ParameterList","parameters":[],"src":"1613:2:96"}},{"id":60075,"nodeType":"ErrorDefinition","src":"1688:20:96","nodes":[],"documentation":{"id":60073,"nodeType":"StructuredDocumentation","src":"1622:61:96","text":"@notice Thrown when the owner address is the zero address"},"errorSelector":"d92e233d","name":"ZeroAddress","nameLocation":"1694:11:96","parameters":{"id":60074,"nodeType":"ParameterList","parameters":[],"src":"1705:2:96"}},{"id":60084,"nodeType":"EventDefinition","src":"2155:97:96","nodes":[],"anonymous":false,"documentation":{"id":60076,"nodeType":"StructuredDocumentation","src":"1843:307:96","text":"@notice Emitted when a new agent subdomain is registered under the base node\n @param subdomain The human-readable subdomain label (e.g., \"alpha\")\n @param owner The address assigned as the owner of the subdomain\n @param subnode The full ENS namehash of the registered subdomain"},"eventSelector":"9e90b787cc25043fa3d46409edffd5a567d3c2d451586f8d8f4b109dfd66a7f9","name":"AgentSubdomainRegistered","nameLocation":"2161:24:96","parameters":{"id":60083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60078,"indexed":false,"mutability":"mutable","name":"subdomain","nameLocation":"2193:9:96","nodeType":"VariableDeclaration","scope":60084,"src":"2186:16:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":60077,"name":"string","nodeType":"ElementaryTypeName","src":"2186:6:96","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":60080,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2220:5:96","nodeType":"VariableDeclaration","scope":60084,"src":"2204:21:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60079,"name":"address","nodeType":"ElementaryTypeName","src":"2204:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60082,"indexed":true,"mutability":"mutable","name":"subnode","nameLocation":"2243:7:96","nodeType":"VariableDeclaration","scope":60084,"src":"2227:23:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60081,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2227:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2185:66:96"}},{"id":60088,"nodeType":"VariableDeclaration","src":"2433:35:96","nodes":[],"constant":false,"documentation":{"id":60085,"nodeType":"StructuredDocumentation","src":"2391:37:96","text":"@notice The ENS Registry contract"},"functionSelector":"964bee72","mutability":"immutable","name":"i_ensRegistry","nameLocation":"2455:13:96","scope":60212,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"},"typeName":{"id":60087,"nodeType":"UserDefinedTypeName","pathNode":{"id":60086,"name":"IENS","nameLocations":["2433:4:96"],"nodeType":"IdentifierPath","referencedDeclaration":62540,"src":"2433:4:96"},"referencedDeclaration":62540,"src":"2433:4:96","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"visibility":"public"},{"id":60091,"nodeType":"VariableDeclaration","src":"2555:35:96","nodes":[],"constant":false,"documentation":{"id":60089,"nodeType":"StructuredDocumentation","src":"2475:75:96","text":"@notice The ENS namehash of the base node (e.g., namehash(\"agent.eth\"))"},"functionSelector":"92cd341e","mutability":"immutable","name":"i_baseNode","nameLocation":"2580:10:96","scope":60212,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60090,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2555:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":60094,"nodeType":"VariableDeclaration","src":"2692:40:96","nodes":[],"constant":false,"documentation":{"id":60092,"nodeType":"StructuredDocumentation","src":"2597:90:96","text":"@notice The AgentRegistry contract -- sole authorized caller of registerAgentSubdomain"},"functionSelector":"4eaeca32","mutability":"immutable","name":"i_agentRegistry","nameLocation":"2717:15:96","scope":60212,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60093,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":60118,"nodeType":"FunctionDefinition","src":"3345:193:96","nodes":[],"body":{"id":60117,"nodeType":"Block","src":"3419:119:96","nodes":[],"statements":[{"expression":{"id":60107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60105,"name":"i_ensRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60088,"src":"3429:13:96","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60106,"name":"ensRegistry_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60098,"src":"3445:12:96","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"src":"3429:28:96","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"id":60108,"nodeType":"ExpressionStatement","src":"3429:28:96"},{"expression":{"id":60111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60109,"name":"i_baseNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60091,"src":"3467:10:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60110,"name":"baseNode_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60100,"src":"3480:9:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3467:22:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":60112,"nodeType":"ExpressionStatement","src":"3467:22:96"},{"expression":{"id":60115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60113,"name":"i_agentRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60094,"src":"3499:15:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60114,"name":"agentRegistry_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60102,"src":"3517:14:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3499:32:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60116,"nodeType":"ExpressionStatement","src":"3499:32:96"}]},"documentation":{"id":60095,"nodeType":"StructuredDocumentation","src":"2873:467:96","text":"@notice Deploys the ENSAgentHelper.\n @dev After deployment, the deployer must transfer ownership of `baseNode` in the ENS\n Registry to this contract's address so it can call `setSubnodeOwner`.\n @param ensRegistry_ The ENS Registry address.\n @param baseNode_ The namehash of the parent domain (e.g., namehash(\"agent.eth\")).\n @param agentRegistry_ The AgentRegistry address authorized to request subdomain creation."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":60103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60098,"mutability":"mutable","name":"ensRegistry_","nameLocation":"3362:12:96","nodeType":"VariableDeclaration","scope":60118,"src":"3357:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"},"typeName":{"id":60097,"nodeType":"UserDefinedTypeName","pathNode":{"id":60096,"name":"IENS","nameLocations":["3357:4:96"],"nodeType":"IdentifierPath","referencedDeclaration":62540,"src":"3357:4:96"},"referencedDeclaration":62540,"src":"3357:4:96","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"visibility":"internal"},{"constant":false,"id":60100,"mutability":"mutable","name":"baseNode_","nameLocation":"3384:9:96","nodeType":"VariableDeclaration","scope":60118,"src":"3376:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60099,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3376:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":60102,"mutability":"mutable","name":"agentRegistry_","nameLocation":"3403:14:96","nodeType":"VariableDeclaration","scope":60118,"src":"3395:22:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60101,"name":"address","nodeType":"ElementaryTypeName","src":"3395:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3356:62:96"},"returnParameters":{"id":60104,"nodeType":"ParameterList","parameters":[],"src":"3419:0:96"},"scope":60212,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60185,"nodeType":"FunctionDefinition","src":"4446:1395:96","nodes":[],"body":{"id":60184,"nodeType":"Block","src":"4555:1286:96","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":60128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4769:3:96","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4773:6:96","memberName":"sender","nodeType":"MemberAccess","src":"4769:10:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":60130,"name":"i_agentRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60094,"src":"4783:15:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4769:29:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60136,"nodeType":"IfStatement","src":"4765:86:96","trueBody":{"id":60135,"nodeType":"Block","src":"4800:51:96","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":60132,"name":"OnlyAgentRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60069,"src":"4821:17:96","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":60133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":60134,"nodeType":"RevertStatement","src":"4814:26:96"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":60139,"name":"subdomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60121,"src":"4871:9:96","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":60138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4865:5:96","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":60137,"name":"bytes","nodeType":"ElementaryTypeName","src":"4865:5:96","typeDescriptions":{}}},"id":60140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:16:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":60141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4882:6:96","memberName":"length","nodeType":"MemberAccess","src":"4865:23:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":60142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4892:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4865:28:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60148,"nodeType":"IfStatement","src":"4861:82:96","trueBody":{"id":60147,"nodeType":"Block","src":"4895:48:96","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":60144,"name":"EmptySubdomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60072,"src":"4916:14:96","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":60145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4916:16:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":60146,"nodeType":"RevertStatement","src":"4909:23:96"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60149,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60123,"src":"4957:5:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":60152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4974:1:96","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":60151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4966:7:96","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60150,"name":"address","nodeType":"ElementaryTypeName","src":"4966:7:96","typeDescriptions":{}}},"id":60153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4966:10:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4957:19:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60159,"nodeType":"IfStatement","src":"4953:70:96","trueBody":{"id":60158,"nodeType":"Block","src":"4978:45:96","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":60155,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60075,"src":"4999:11:96","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":60156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4999:13:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":60157,"nodeType":"RevertStatement","src":"4992:20:96"}]}},{"assignments":[60161],"declarations":[{"constant":false,"id":60161,"mutability":"mutable","name":"labelHash","nameLocation":"5290:9:96","nodeType":"VariableDeclaration","scope":60184,"src":"5282:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5282:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":60168,"initialValue":{"arguments":[{"arguments":[{"id":60165,"name":"subdomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60121,"src":"5318:9:96","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":60164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5312:5:96","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":60163,"name":"bytes","nodeType":"ElementaryTypeName","src":"5312:5:96","typeDescriptions":{}}},"id":60166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5312:16:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":60162,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5302:9:96","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":60167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5302:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5282:47:96"},{"expression":{"id":60176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60169,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60126,"src":"5498:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60172,"name":"i_baseNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60091,"src":"5538:10:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":60173,"name":"labelHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60161,"src":"5550:9:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":60174,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60123,"src":"5561:5:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":60170,"name":"i_ensRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60088,"src":"5508:13:96","typeDescriptions":{"typeIdentifier":"t_contract$_IENS_$62540","typeString":"contract IENS"}},"id":60171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5522:15:96","memberName":"setSubnodeOwner","nodeType":"MemberAccess","referencedDeclaration":62531,"src":"5508:29:96","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,address) external returns (bytes32)"}},"id":60175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5508:59:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5498:69:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":60177,"nodeType":"ExpressionStatement","src":"5498:69:96"},{"eventCall":{"arguments":[{"id":60179,"name":"subdomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60121,"src":"5808:9:96","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":60180,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60123,"src":"5819:5:96","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60181,"name":"subnode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60126,"src":"5826:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":60178,"name":"AgentSubdomainRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60084,"src":"5783:24:96","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_string_memory_ptr_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (string memory,address,bytes32)"}},"id":60182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5783:51:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60183,"nodeType":"EmitStatement","src":"5778:56:96"}]},"documentation":{"id":60119,"nodeType":"StructuredDocumentation","src":"3685:756:96","text":"@notice Register a subdomain under the base node and assign ownership to the specified address.\n @dev Only callable by the AgentRegistry. The subdomain is created by calling\n `ENS.setSubnodeOwner(baseNode, labelHash, owner)`. This contract must be the\n owner of `baseNode` in the ENS Registry for this to succeed.\n Example: If baseNode = namehash(\"agent.eth\") and subdomain = \"alpha\",\n this creates `alpha.agent.eth` with `owner` as its owner.\n @param subdomain The subdomain label (e.g., \"alpha\"). Must be non-empty.\n @param owner The address to assign as owner of the new subdomain.\n @return subnode The full ENS namehash of the newly created subdomain."},"functionSelector":"6aae2f76","implemented":true,"kind":"function","modifiers":[],"name":"registerAgentSubdomain","nameLocation":"4455:22:96","parameters":{"id":60124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60121,"mutability":"mutable","name":"subdomain","nameLocation":"4494:9:96","nodeType":"VariableDeclaration","scope":60185,"src":"4478:25:96","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":60120,"name":"string","nodeType":"ElementaryTypeName","src":"4478:6:96","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":60123,"mutability":"mutable","name":"owner","nameLocation":"4513:5:96","nodeType":"VariableDeclaration","scope":60185,"src":"4505:13:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60122,"name":"address","nodeType":"ElementaryTypeName","src":"4505:7:96","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4477:42:96"},"returnParameters":{"id":60127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60126,"mutability":"mutable","name":"subnode","nameLocation":"4546:7:96","nodeType":"VariableDeclaration","scope":60185,"src":"4538:15:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60125,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4538:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4537:17:96"},"scope":60212,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":60211,"nodeType":"FunctionDefinition","src":"6156:214:96","nodes":[],"body":{"id":60210,"nodeType":"Block","src":"6239:131:96","nodes":[],"statements":[{"assignments":[60194],"declarations":[{"constant":false,"id":60194,"mutability":"mutable","name":"labelHash","nameLocation":"6257:9:96","nodeType":"VariableDeclaration","scope":60210,"src":"6249:17:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6249:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":60201,"initialValue":{"arguments":[{"arguments":[{"id":60198,"name":"subdomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60188,"src":"6285:9:96","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":60197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6279:5:96","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":60196,"name":"bytes","nodeType":"ElementaryTypeName","src":"6279:5:96","typeDescriptions":{}}},"id":60199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:16:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":60195,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6269:9:96","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":60200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6269:27:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6249:47:96"},{"expression":{"arguments":[{"arguments":[{"id":60205,"name":"i_baseNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60091,"src":"6340:10:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":60206,"name":"labelHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60194,"src":"6352:9:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":60203,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6323:3:96","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":60204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6327:12:96","memberName":"encodePacked","nodeType":"MemberAccess","src":"6323:16:96","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":60207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6323:39:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":60202,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6313:9:96","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":60208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6313:50:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":60192,"id":60209,"nodeType":"Return","src":"6306:57:96"}]},"documentation":{"id":60186,"nodeType":"StructuredDocumentation","src":"5847:304:96","text":"@notice Computes the full ENS namehash for a subdomain under the base node.\n @dev Pure helper for off-chain tooling and verification. Does not modify state.\n @param subdomain The subdomain label (e.g., \"alpha\").\n @return The full ENS namehash (e.g., namehash(\"alpha.agent.eth\"))."},"functionSelector":"15744e8d","implemented":true,"kind":"function","modifiers":[],"name":"computeSubnode","nameLocation":"6165:14:96","parameters":{"id":60189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60188,"mutability":"mutable","name":"subdomain","nameLocation":"6196:9:96","nodeType":"VariableDeclaration","scope":60211,"src":"6180:25:96","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":60187,"name":"string","nodeType":"ElementaryTypeName","src":"6180:6:96","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6179:27:96"},"returnParameters":{"id":60192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60211,"src":"6230:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":60190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6230:7:96","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6229:9:96"},"scope":60212,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ENSAgentHelper","contractDependencies":[],"contractKind":"contract","documentation":{"id":60066,"nodeType":"StructuredDocumentation","src":"103:1135:96","text":"@title ENSAgentHelper\n @author $CLAWLOGIC Team\n @notice Helper contract for registering `<name>.agent.eth` subdomains under the\n $CLAWLOGIC agent namespace.\n @dev This contract must own the `agent.eth` parent node in the ENS Registry (or\n whichever base node is configured). It creates subdomains on behalf of the\n AgentRegistry, so that when an agent registers as \"alpha\", the helper can\n automatically provision `alpha.agent.eth` and assign ownership to the agent's\n address.\n **Access Control:** Only the designated AgentRegistry contract may call\n `registerAgentSubdomain()`. This prevents unauthorized subdomain creation.\n **ENS Namehash Calculation:**\n - `agent.eth` = namehash(\"agent.eth\") = keccak256(abi.encodePacked(namehash(\"eth\"), keccak256(\"agent\")))\n - `alpha.agent.eth` = keccak256(abi.encodePacked(baseNode, keccak256(\"alpha\")))\n The caller is responsible for computing the correct base node off-chain or in\n the deploy script. The full subnode is computed on-chain from `baseNode + label`."},"fullyImplemented":true,"linearizedBaseContracts":[60212],"name":"ENSAgentHelper","nameLocation":"1247:14:96","scope":60213,"usedErrors":[60069,60072,60075],"usedEvents":[60084]}],"license":"MIT"},"id":96}
|