diff --git a/.env.example b/.env.example
index d46bd10..8b19a60 100644
--- a/.env.example
+++ b/.env.example
@@ -1,2 +1,3 @@
ETH_RPC_URL=
+ETH_RPC_URL_HOLESKY=
ETHERSCAN_API_KEY=
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index b12ecd7..c25ba9e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,13 @@
# Compiler files
cache/
-out/
+out/**/
+!out/FullRestakeDecreaseHook.sol/
+!out/FullRestakeResetHook.sol/
+!out/NetworkRestakeDecreaseHook.sol/
+!out/NetworkRestakeRedistributeHook.sol/
+!out/NetworkRestakeResetHook.sol/
+!out/OperatorSpecificDecreaseHook.sol/
+!out/OperatorSpecificResetHook.sol/
# Ignores development broadcast logs
!/broadcast
@@ -16,4 +23,7 @@ docs/
# Other files
.gas-snapshot
-lcov.info
\ No newline at end of file
+lcov.info
+
+node_modules
+package-lock.json
\ No newline at end of file
diff --git a/README.md b/README.md
index 28b2a75..b10d509 100644
--- a/README.md
+++ b/README.md
@@ -16,12 +16,11 @@ Create `.env` file using a template:
```
ETH_RPC_URL=
+ETH_RPC_URL_HOLESKY=
ETHERSCAN_API_KEY=
```
-\* ETH_RPC_URL is optional.
-
-\* ETHERSCAN_API_KEY is optional.
+\* ETH_RPC_URL is optional.
\* ETH_RPC_URL_HOLESKY is optional.
\* ETHERSCAN_API_KEY is optional.
### Build
diff --git a/foundry.toml b/foundry.toml
index 114a7d8..8002a88 100644
--- a/foundry.toml
+++ b/foundry.toml
@@ -1,14 +1,19 @@
[profile.default]
+evm_version = "cancun"
solc = "0.8.25"
+optimizer = true
+optimizer_runs = 200
via_ir = true
src = "src"
out = "out"
libs = ["lib"]
fs_permissions = [{ access = "read-write", path = "./"}]
gas_reports = ["*"]
+gas_limit = "18446744073709551615"
[rpc_endpoints]
mainnet = "${ETH_RPC_URL}"
+holesky = "${ETH_RPC_URL_HOLESKY}"
[fmt]
bracket_spacing = false
@@ -20,7 +25,7 @@ quote_style = "double"
tab_width = 4
[fuzz]
-runs = 2048
+runs = 4096
max_test_rejects = 262144
diff --git a/lib/core b/lib/core
index feb15ec..5fca005 160000
--- a/lib/core
+++ b/lib/core
@@ -1 +1 @@
-Subproject commit feb15ec0b55e30b56b9595a8b9d8f179f173bb76
+Subproject commit 5fca0051002703b9ba050724de1f584d4e776e22
diff --git a/out/FullRestakeDecreaseHook.sol/FullRestakeDecreaseHook.json b/out/FullRestakeDecreaseHook.sol/FullRestakeDecreaseHook.json
new file mode 100644
index 0000000..0be674b
--- /dev/null
+++ b/out/FullRestakeDecreaseHook.sol/FullRestakeDecreaseHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashedAmount","type":"uint256","internalType":"uint256"},{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"NotFullRestakeDelegator","inputs":[]}],"bytecode":{"object":"0x6080806040523460155761039b908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b346100a05760a03660031901126100a0576024356001600160a01b03811681036100a05760643565ffffffffffff8116036100a05760843567ffffffffffffffff8082116100a057366023830112156100a05781600401359081116100a057369101602401116100a05761009e906044359060043561010f565b005b5f80fd5b67ffffffffffffffff81116100b857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176100b857604052565b919082039182116100fb57565b634e487b7160e01b5f52601160045260245ffd5b604090815192635d927f4560e11b84525f94602060049581818881335afa9081156102d8575f9161031f575b5067ffffffffffffffff600191160361030f5781156101c7578451633eb22c0f60e01b81528681018590528181602481335afa9081156102d8575f916102e2575b5080610281575b508451631142209560e01b81528681018590526001600160a01b0390931660248401819052928181604481335afa918215610277578892610249575b5050806101d0575b50505050505050565b8181806101e394109118028118906100ee565b91333b15610245578351630106786160e11b81529485015260248401526044830152828260648183335af190811561023c5750610225575b80808080806101c7565b61022f82916100a4565b610239578061021b565b80fd5b513d84823e3d90fd5b8580fd5b90809250813d8311610270575b61026081836100cc565b810103126100a057515f806101bf565b503d610256565b86513d8a823e3d90fd5b80610294918410818518028118906100ee565b333b156100a05785519062428a6960e31b8252858883015260248201525f8160448183335af180156102d85715610183576102d09197506100a4565b5f955f610183565b86513d5f823e3d90fd5b90508181813d8311610308575b6102f981836100cc565b810103126100a057515f61017c565b503d6102ef565b8451636c430fb160e11b81528690fd5b90508181813d831161035e575b61033681836100cc565b810103126100a0575167ffffffffffffffff811681036100a05767ffffffffffffffff61013b565b503d61032c56fea2646970667358221220013d3c8b97686484d93049685391c37b829f03327dc0e36fff6cc38407f7413b64736f6c63430008190033","sourceMap":"514:1170:110:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b346100a05760a03660031901126100a0576024356001600160a01b03811681036100a05760643565ffffffffffff8116036100a05760843567ffffffffffffffff8082116100a057366023830112156100a05781600401359081116100a057369101602401116100a05761009e906044359060043561010f565b005b5f80fd5b67ffffffffffffffff81116100b857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176100b857604052565b919082039182116100fb57565b634e487b7160e01b5f52601160045260245ffd5b604090815192635d927f4560e11b84525f94602060049581818881335afa9081156102d8575f9161031f575b5067ffffffffffffffff600191160361030f5781156101c7578451633eb22c0f60e01b81528681018590528181602481335afa9081156102d8575f916102e2575b5080610281575b508451631142209560e01b81528681018590526001600160a01b0390931660248401819052928181604481335afa918215610277578892610249575b5050806101d0575b50505050505050565b8181806101e394109118028118906100ee565b91333b15610245578351630106786160e11b81529485015260248401526044830152828260648183335af190811561023c5750610225575b80808080806101c7565b61022f82916100a4565b610239578061021b565b80fd5b513d84823e3d90fd5b8580fd5b90809250813d8311610270575b61026081836100cc565b810103126100a057515f806101bf565b503d610256565b86513d8a823e3d90fd5b80610294918410818518028118906100ee565b333b156100a05785519062428a6960e31b8252858883015260248201525f8160448183335af180156102d85715610183576102d09197506100a4565b5f955f610183565b86513d5f823e3d90fd5b90508181813d8311610308575b6102f981836100cc565b810103126100a057515f61017c565b503d6102ef565b8451636c430fb160e11b81528690fd5b90508181813d831161035e575b61033681836100cc565b810103126100a0575167ffffffffffffffff811681036100a05767ffffffffffffffff61013b565b503d61032c56fea2646970667358221220013d3c8b97686484d93049685391c37b829f03327dc0e36fff6cc38407f7413b64736f6c63430008190033","sourceMap":"514:1170:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;514:1170:110;;;;;;-1:-1:-1;;;;;514:1170:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;660:1022;514:1170;;;;;;;;865:26;;;;;;873:10;;;;;;865:26;;;;;;;;;;;660:1022;514:1170;;895:1;514:1170;;865:31;861:94;;969:18;;965:55;;514:1170;;-1:-1:-1;;;1053:58:110;;;;;514:1170;;;873:10;514:1170;;;873:10;1053:58;;;;;;;865:26;1053:58;;;660:1022;1125:17;;1121:193;;660:1022;-1:-1:-1;514:1170:110;;-1:-1:-1;;;1355:76:110;;;;;514:1170;;;-1:-1:-1;;;;;514:1170:110;;;;;;;;;;873:10;514:1170;;;873:10;1355:76;;;;;;;;;;;660:1022;1445:25;;;1441:235;;660:1022;;;;;;;;:::o;1441:235::-;3463:5:104;;;1583:68:110;3463:5:104;;3066;;514:1170:110;3060:42:104;;1583:68:110;;:::i;:::-;873:10;;1486:179;;;;514:1170;;-1:-1:-1;;;1486:179:110;;;;;514:1170;;;;;;;;;873:10;514:1170;;;873:10;;1486:179;;;;;;;;;;1441:235;;;;;;;;1486:179;;;;;:::i;:::-;514:1170;;1486:179;;;514:1170;;;1486:179;514:1170;;;;;;;;1486:179;514:1170;;;1355:76;;;;;;;;;;;;;;;;:::i;:::-;;;514:1170;;;;;1355:76;;;;;;;;;;514:1170;;;;;;;;;1121:193;3463:5:104;1237:52:110;3463:5:104;;;3066;;;514:1170:110;3060:42:104;;1237:52:110;;:::i;:::-;873:10;1158:145;;;;514:1170;;;;;;1158:145;;;;;;514:1170;;;;;865:26;873:10;514:1170;873:10;;;1158:145;;;;;;;1121:193;1158:145;;;;;;:::i;:::-;865:26;1158:145;;1121:193;;1158:145;514:1170;;;865:26;514:1170;;;;;1053:58;;;;;;;;;;;;;;;;:::i;:::-;;;514:1170;;;;;1053:58;;;;;;;;861:94;514:1170;;-1:-1:-1;;;919:25:110;;514:1170;;919:25;865:26;;;;;;;;;;;;;;;;:::i;:::-;;;514:1170;;;;;;;;;;;;;865:26;;;;;;","linkReferences":{}},"methodIdentifiers":{"onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotFullRestakeDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/fullRestakeDelegator/FullRestakeDecreaseHook.sol\":\"FullRestakeDecreaseHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"src/contracts/fullRestakeDelegator/FullRestakeDecreaseHook.sol\":{\"keccak256\":\"0xee2ec4e6b08210f25f3c4d50947ab56938c4271a8112daba021454241190fec9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b1a6c8a4c76c3045daa9e3134d064a1db1d987a3e5ffa28b6ff121bf91701a8\",\"dweb:/ipfs/QmcU7x33V6RXgnLnWv8gcrG8ApRqR6MbkYTTsuuFtLgUvR\"]},\"src/interfaces/fullRestakeDelegator/IFullRestakeDecreaseHook.sol\":{\"keccak256\":\"0xcef8fdb80b39f22b7b023dc29594c0f91b7f4197f4c981d7b0f826b8bf9a5ba9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53832cefb6b8c72efaeed4461e85ebf6c84a5a8ae50b408241ed9098addb23cc\",\"dweb:/ipfs/QmSpEt45vZyNQKCer7DCT6RWAShuTe86G585SFnNtq49KT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"NotFullRestakeDelegator"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"slashedAmount","type":"uint256"},{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/fullRestakeDelegator/FullRestakeDecreaseHook.sol":"FullRestakeDecreaseHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"src/contracts/fullRestakeDelegator/FullRestakeDecreaseHook.sol":{"keccak256":"0xee2ec4e6b08210f25f3c4d50947ab56938c4271a8112daba021454241190fec9","urls":["bzz-raw://1b1a6c8a4c76c3045daa9e3134d064a1db1d987a3e5ffa28b6ff121bf91701a8","dweb:/ipfs/QmcU7x33V6RXgnLnWv8gcrG8ApRqR6MbkYTTsuuFtLgUvR"],"license":"MIT"},"src/interfaces/fullRestakeDelegator/IFullRestakeDecreaseHook.sol":{"keccak256":"0xcef8fdb80b39f22b7b023dc29594c0f91b7f4197f4c981d7b0f826b8bf9a5ba9","urls":["bzz-raw://53832cefb6b8c72efaeed4461e85ebf6c84a5a8ae50b408241ed9098addb23cc","dweb:/ipfs/QmSpEt45vZyNQKCer7DCT6RWAShuTe86G585SFnNtq49KT"],"license":"MIT"}},"version":1},"id":110}
\ No newline at end of file
diff --git a/out/FullRestakeResetHook.sol/FullRestakeResetHook.json b/out/FullRestakeResetHook.sol/FullRestakeResetHook.json
new file mode 100644
index 0000000..d07cab1
--- /dev/null
+++ b/out/FullRestakeResetHook.sol/FullRestakeResetHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"constructor","inputs":[{"name":"period","type":"uint48","internalType":"uint48"},{"name":"slashCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"PERIOD","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"SLASH_COUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"InvalidBufferSize","inputs":[]},{"type":"error","name":"InvalidSlashCount","inputs":[]},{"type":"error","name":"NotFullRestakeDelegator","inputs":[]},{"type":"error","name":"NotVaultDelegator","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60c03460a357601f6106b638819003918201601f19168301916001600160401b0383118484101760a757808492604094855283398101031260a35780519065ffffffffffff8216820360a3576020015190811560915760805260a0526040516105fa90816100bc823960805181818161032801526104da015260a0518181816101a20152818161038c015261049b0152f35b6040516339b5ac3d60e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060409080825260049182361015610016575f80fd5b5f915f3560e01c908163b4d1d795146104be57508063d524c328146104845763e49561ee14610043575f80fd5b346102935760a0366003190112610293576001600160a01b0360248035828116958035949390918790036102935765ffffffffffff96606435888116036102935767ffffffffffffffff916084358381116102935736602382011215610293578085013584811161029357369101860111610293578551635d927f4560e11b81526020919082818781335afa80156104315785905f9061044b575b60019250160361043b57865163fbfa77cf60e01b815282818781335afa908115610431579082915f91610414575b508851630ce9b79360e41b815291169183828881865afa91821561040a575f926103db575b50339116036103cb575f525f8152855f20875f528152855f20825f528152855f209860018a019081541561038a575b8061016a42610592565b168b54905f199182811461035657600181018e55845461018991610574565b845f52855f2001558b54928054808510818618028118927f000000000000000000000000000000000000000000000000000000000000000080851496876102cf575b505050505050506101da578780f35b8551631142209560e01b8152878582015282868201528181604481335afa9182156102c5575f92610297575b5050610222575b505050505050809155805f8080808080808780f35b333b1561029357845195630106786160e11b875283870152838601525f60448601525f8560648183335af180156102895761025e575b8061020d565b9091929380955011610278575050525f8080808080610258565b604190634e487b7160e01b5f52525ffd5b84513d5f823e3d90fd5b5f80fd5b90809250813d83116102be575b6102ae81836104fe565b8101031261029357515f80610206565b503d6102a4565b87513d5f823e3d90fd5b90919293949596506102e042610592565b958383019283116103785782101561036857906102fc91610553565b908101908111610356579161031685926103259594610574565b905f52855f2001549116610553565b907f00000000000000000000000000000000000000000000000000000000000000001610155f8080808080806101cb565b8960118a634e487b7160e01b5f52525ffd5b8b603289634e487b715f5252601cfd5b8c60118d634e487b7160e01b5f52525ffd5b7f000000000000000000000000000000000000000000000000000000000000000080156103bb575f8c558255610160565b8851630c01a34b60e41b81528790fd5b86516318c0166360e31b81528590fd5b6103fc919250843d8611610403575b6103f481836104fe565b810190610534565b905f610131565b503d6103ea565b89513d5f823e3d90fd5b61042b9150843d8611610403576103f481836104fe565b5f61010c565b88513d5f823e3d90fd5b8651636c430fb160e11b81528590fd5b50508281813d831161047d575b61046281836104fe565b810103126102935751848116810361029357846001916100de565b503d610458565b5034610293575f36600319011261029357602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610293575f3660031901126102935760209065ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90601f8019910116810190811067ffffffffffffffff82111761052057604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261029357516001600160a01b03811681036102935790565b9190820391821161056057565b634e487b7160e01b5f52601160045260245ffd5b811561057e570690565b634e487b7160e01b5f52601260045260245ffd5b65ffffffffffff908181116105a5571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfea264697066735822122016dce2ce49df343c20ecbda6775ea25ea931ecf7ba37dd086205b370bf0b5e1064736f6c63430008190033","sourceMap":"672:1854:100:-:0;;;;;;;;;;;;;-1:-1:-1;;672:1854:100;;;;-1:-1:-1;;;;;672:1854:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1237:15;;;1233:72;;1315:15;;1340:24;;672:1854;;;;;;;;1315:15;672:1854;;;;;;;;;;1340:24;672:1854;;;;;;;;;;;;;;;;1233:72;672:1854;;-1:-1:-1;;;1275:19:100;;;;;672:1854;-1:-1:-1;672:1854:100;;;;;;-1:-1:-1;672:1854:100;;;;;-1:-1:-1;672:1854:100","linkReferences":{}},"deployedBytecode":{"object":"0x608060409080825260049182361015610016575f80fd5b5f915f3560e01c908163b4d1d795146104be57508063d524c328146104845763e49561ee14610043575f80fd5b346102935760a0366003190112610293576001600160a01b0360248035828116958035949390918790036102935765ffffffffffff96606435888116036102935767ffffffffffffffff916084358381116102935736602382011215610293578085013584811161029357369101860111610293578551635d927f4560e11b81526020919082818781335afa80156104315785905f9061044b575b60019250160361043b57865163fbfa77cf60e01b815282818781335afa908115610431579082915f91610414575b508851630ce9b79360e41b815291169183828881865afa91821561040a575f926103db575b50339116036103cb575f525f8152855f20875f528152855f20825f528152855f209860018a019081541561038a575b8061016a42610592565b168b54905f199182811461035657600181018e55845461018991610574565b845f52855f2001558b54928054808510818618028118927f000000000000000000000000000000000000000000000000000000000000000080851496876102cf575b505050505050506101da578780f35b8551631142209560e01b8152878582015282868201528181604481335afa9182156102c5575f92610297575b5050610222575b505050505050809155805f8080808080808780f35b333b1561029357845195630106786160e11b875283870152838601525f60448601525f8560648183335af180156102895761025e575b8061020d565b9091929380955011610278575050525f8080808080610258565b604190634e487b7160e01b5f52525ffd5b84513d5f823e3d90fd5b5f80fd5b90809250813d83116102be575b6102ae81836104fe565b8101031261029357515f80610206565b503d6102a4565b87513d5f823e3d90fd5b90919293949596506102e042610592565b958383019283116103785782101561036857906102fc91610553565b908101908111610356579161031685926103259594610574565b905f52855f2001549116610553565b907f00000000000000000000000000000000000000000000000000000000000000001610155f8080808080806101cb565b8960118a634e487b7160e01b5f52525ffd5b8b603289634e487b715f5252601cfd5b8c60118d634e487b7160e01b5f52525ffd5b7f000000000000000000000000000000000000000000000000000000000000000080156103bb575f8c558255610160565b8851630c01a34b60e41b81528790fd5b86516318c0166360e31b81528590fd5b6103fc919250843d8611610403575b6103f481836104fe565b810190610534565b905f610131565b503d6103ea565b89513d5f823e3d90fd5b61042b9150843d8611610403576103f481836104fe565b5f61010c565b88513d5f823e3d90fd5b8651636c430fb160e11b81528590fd5b50508281813d831161047d575b61046281836104fe565b810103126102935751848116810361029357846001916100de565b503d610458565b5034610293575f36600319011261029357602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610293575f3660031901126102935760209065ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90601f8019910116810190811067ffffffffffffffff82111761052057604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261029357516001600160a01b03811681036102935790565b9190820391821161056057565b634e487b7160e01b5f52601160045260245ffd5b811561057e570690565b634e487b7160e01b5f52601260045260245ffd5b65ffffffffffff908181116105a5571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfea264697066735822122016dce2ce49df343c20ecbda6775ea25ea931ecf7ba37dd086205b370bf0b5e1064736f6c63430008190033","sourceMap":"672:1854:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;672:1854:100;;;;-1:-1:-1;;;;;672:1854:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1638:26:100;;672:1854;;;;;1646:10;672:1854;1646:10;1638:26;;;;;;;;672:1854;1638:26;;;672:1854;;;;;1638:31;1634:94;;672:1854;;-1:-1:-1;;;1754:41:100;;1646:10;672:1854;1646:10;672:1854;1646:10;1754:41;;;;;;;;;;672:1854;1754:41;;;672:1854;-1:-1:-1;672:1854:100;;-1:-1:-1;;;1810:25:100;;672:1854;;;1810:25;672:1854;1810:25;672:1854;;1810:25;;;;;;;672:1854;1810:25;;;672:1854;1646:10;;672:1854;;1810:39;1806:96;;672:1854;;;;;;;;;;;;;;;;;;;;;;;;3808:10:97;672:1854:100;3808:10:97;;672:1854:100;;;2019:20;2015:76;;672:1854;837:15:98;819:34;837:15;819:34;:::i;:::-;672:1854:100;;;;;;;;;;;;;;;;;;;3246:15:97;;;:::i;:::-;2399:111:90;672:1854:100;2399:111:90;;672:1854:100;2399:111:90;672:1854:100;;;;;;;3463:5:94;;;3066;;;672:1854:100;3060:42:94;;2181:11:100;;2163:29;;;:99;;;;672:1854;2159:359;;;;;;;;;672:1854;;;2159:359;672:1854;;;;;2282:76;;;;;;672:1854;;;;;;1646:10;;672:1854;1646:10;;2282:76;;;;;;;672:1854;2282:76;;;2159:359;2282:81;;2278:202;;2159:359;672:1854;;;;;;;;;2159:359;;;;;;;;672:1854;;;2278:202;1646:10;2383:82;;;;672:1854;;;;;;2383:82;;;;;672:1854;;;;;;;;;;;1646:10;672:1854;1646:10;;;2383:82;;;;;;;;2278:202;;;;2383:82;672:1854;;;;;;;;;;;;;;2383:82;;;;;;;672:1854;;;;;;;;;;;2383:82;672:1854;;;;;;;;;2383:82;672:1854;;;2282:76;;;;;;;;;;;;;;;;:::i;:::-;;;672:1854;;;;;2282:76;;;;;;;;;;672:1854;;;;;;;;;2163:99;837:15:98;;;;;;;;819:34;837:15;819:34;:::i;:::-;672:1854:100;;;;;;;;;4342:10:97;;;4338:79;;4466:9;;;;:::i;:::-;672:1854:100;;;;;;;;4465:25:97;;;;2196:56:100;4465:25:97;;;:::i;:::-;2399:111:90;672:1854:100;2399:111:90;;672:1854:100;2399:111:90;672:1854:100;1347:4:89;672:1854:100;;2196:56;:::i;:::-;2256:6;;672:1854;-1:-1:-1;2196:66:100;2163:99;;;;;;;;;672:1854;;;;;;;;;;;;4338:79:97;1763:135:89;1347:4;1763:135;;672:1854:100;1763:135:89;;;;672:1854:100;;;;;;;;;;;;2015:76;2068:11;2564:9:97;;2560:41;;672:1854:100;;;17855:72:85;;2015:76:100;;2560:41:97;672:1854:100;;-1:-1:-1;;;2582:19:97;;672:1854:100;;2582:19:97;1806:96:100;672:1854;;-1:-1:-1;;;1872:19:100;;672:1854;;1872:19;1810:25;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;672:1854;;;;;;;;;1754:41;;;;;;;;;;;;;;:::i;:::-;;;;;672:1854;;;;;;;;;1634:94;672:1854;;-1:-1:-1;;;1692:25:100;;672:1854;;1692:25;1638:26;;;;;;;;;;;;;;;;:::i;:::-;;;672:1854;;;;;;;;;;;;1638:26;672:1854;1638:26;;;;;;;;672:1854;;;;;;;-1:-1:-1;;672:1854:100;;;;;;;952:36;672:1854;;;;;;;;;-1:-1:-1;;672:1854:100;;;;;858:30;672:1854;858:30;672:1854;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;672:1854:100;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;14296:213:95;672:1854:100;14374:24:95;;;;14370:103;;672:1854:100;14296:213:95;:::o;14370:103::-;672:1854:100;;;;14421:41:95;;;;;;14452:2;14421:41;;;672:1854:100;;;;;14421:41:95","linkReferences":{},"immutableReferences":{"59781":[{"start":808,"length":32},{"start":1242,"length":32}],"59784":[{"start":418,"length":32},{"start":908,"length":32},{"start":1179,"length":32}]}},"methodIdentifiers":{"PERIOD()":"b4d1d795","SLASH_COUNT()":"d524c328","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"period\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"slashCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidBufferSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlashCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFullRestakeDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PERIOD\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidBufferSize()\":[{\"details\":\"Error emitted when trying to setup a buffer with a size of 0.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"stateVariables\":{\"PERIOD\":{\"return\":\"threshold period\",\"returns\":{\"_0\":\"threshold period\"}},\"SLASH_COUNT\":{\"return\":\"threshold count\",\"returns\":{\"_0\":\"threshold count\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERIOD()\":{\"notice\":\"Get a period during which the slashing should occur to reset the operator's stake.\"},\"SLASH_COUNT()\":{\"notice\":\"Get a number of slashes that should occur during the PERIOD to reset the operator's stake.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol\":\"FullRestakeResetHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/IFullRestakeDelegator.sol\":{\"keccak256\":\"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e\",\"dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A\"]},\"lib/core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0x144dc121fe2c3f7f43d4a98afd74ca2adc71a6b1acc5b160a3f85ab5a1361c15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5dab57e8d40023254f2786f1909423b02fae08b04ac77080ad545d5592098cfe\",\"dweb:/ipfs/Qmb4qhaSCzZxcsykJSz4wPmWiZYocRdbyuVyA6qFRvf2uS\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x0aec5c16d6ebc343da74055b19e4f54e7d5ffeb85debf2fab0644bef87b7f86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e0ffb34cb439d66f5f63d09f9c0091e0a84c654f1793fe66bd568a23350905d\",\"dweb:/ipfs/QmdNTizRpzFLcvxskw1BJ6VgmCBgHcJAym7wB72G1wGv76\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0xc1805f86a4f1ff277a7434b0aaff1cc02207f549d5a89cbaabfb203e19090432\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ff2eff3221171ccee5124ed8abd9036e23f7cfb66469e2397c6138b8cdf4f1\",\"dweb:/ipfs/Qme4kSEnCseAzudZcrvFdWVqtWn14QxhX4JSpo1GipbUqr\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xb8657b94520fd19c0d47e68b01dbe3fe2898be60572dfe75e9dc0ef0835be0ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db16b48d7aaf8a641202d5e9f0a76eac11da20b53c1de7b614a3ce338efce902\",\"dweb:/ipfs/QmZTzTDbdXfWTqXTBRmvN8H4BqpsWqyoGmrCsz8F2MiLpX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol\":{\"keccak256\":\"0x297e88719cef1cbe9a65c0148bf4455815f03a8732209796c9cee54cae259858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a7ce38c53515056f2c40719e466b401bde8144287ea7c1c60032ec19a397d0a\",\"dweb:/ipfs/QmXPdHnqYJ7GZ9oiFkDc9wLHMZfcwWZrscunYM1SsJkNaf\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xf643942e4b4fff9a0a3cfac3d5e0743ce2024ea2a4efd86ae5e4ec250869d309\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ac5628966565ffb9ac245f0f7e2d2e73381fb8e20693e83d51fa6414005f38\",\"dweb:/ipfs/QmQizNNvZFEb4WEKgq4LPAxEAW3HAQiNDpboNb3MDmin5x\"]},\"src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol\":{\"keccak256\":\"0xe8b011201ed29abf8a70dd4a3b31c664095eaa89c811032921050bfb04ba1522\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4989188fa18dfa867ca288e5885970a8cc770e5c02865544c34239c4daea3251\",\"dweb:/ipfs/QmTCASGUpRonXKY7MrSqbt166KuEFt46MZoYPCrV75QdRc\"]},\"src/interfaces/fullRestakeDelegator/IFullRestakeResetHook.sol\":{\"keccak256\":\"0xb5d8997031e2bb2dcb491663495e22d9088f7ba87b587056d43f89664bf62634\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5affa4a5891e7ce9b7ae49f4b7731963dc2052a678120ff8492ee8a7364cbbc1\",\"dweb:/ipfs/QmTfibYvhmgUhFrSYES35G7mmwBmEwiRYqQEmsyK6Fn7rQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint48","name":"period","type":"uint48"},{"internalType":"uint256","name":"slashCount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidBufferSize"},{"inputs":[],"type":"error","name":"InvalidSlashCount"},{"inputs":[],"type":"error","name":"NotFullRestakeDelegator"},{"inputs":[],"type":"error","name":"NotVaultDelegator"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"stateMutability":"view","type":"function","name":"PERIOD","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"PERIOD()":{"notice":"Get a period during which the slashing should occur to reset the operator's stake."},"SLASH_COUNT()":{"notice":"Get a number of slashes that should occur during the PERIOD to reset the operator's stake."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol":"FullRestakeResetHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/IFullRestakeDelegator.sol":{"keccak256":"0xa3c8cb2e45d4d8ce90e95263bea40c01dc400f05ad65bc29597d878606be5e7d","urls":["bzz-raw://782cf5e201aa4cca037ebafd3807a68ff1cc721d5b8416a35244db0d0607369e","dweb:/ipfs/QmQkJks6x7CKndeTPa9LxgTNygD5uEi7obhADhpq1Lsr9A"],"license":"MIT"},"lib/core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0x144dc121fe2c3f7f43d4a98afd74ca2adc71a6b1acc5b160a3f85ab5a1361c15","urls":["bzz-raw://5dab57e8d40023254f2786f1909423b02fae08b04ac77080ad545d5592098cfe","dweb:/ipfs/Qmb4qhaSCzZxcsykJSz4wPmWiZYocRdbyuVyA6qFRvf2uS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x0aec5c16d6ebc343da74055b19e4f54e7d5ffeb85debf2fab0644bef87b7f86a","urls":["bzz-raw://8e0ffb34cb439d66f5f63d09f9c0091e0a84c654f1793fe66bd568a23350905d","dweb:/ipfs/QmdNTizRpzFLcvxskw1BJ6VgmCBgHcJAym7wB72G1wGv76"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0xc1805f86a4f1ff277a7434b0aaff1cc02207f549d5a89cbaabfb203e19090432","urls":["bzz-raw://34ff2eff3221171ccee5124ed8abd9036e23f7cfb66469e2397c6138b8cdf4f1","dweb:/ipfs/Qme4kSEnCseAzudZcrvFdWVqtWn14QxhX4JSpo1GipbUqr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xb8657b94520fd19c0d47e68b01dbe3fe2898be60572dfe75e9dc0ef0835be0ef","urls":["bzz-raw://db16b48d7aaf8a641202d5e9f0a76eac11da20b53c1de7b614a3ce338efce902","dweb:/ipfs/QmZTzTDbdXfWTqXTBRmvN8H4BqpsWqyoGmrCsz8F2MiLpX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol":{"keccak256":"0x297e88719cef1cbe9a65c0148bf4455815f03a8732209796c9cee54cae259858","urls":["bzz-raw://7a7ce38c53515056f2c40719e466b401bde8144287ea7c1c60032ec19a397d0a","dweb:/ipfs/QmXPdHnqYJ7GZ9oiFkDc9wLHMZfcwWZrscunYM1SsJkNaf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xf643942e4b4fff9a0a3cfac3d5e0743ce2024ea2a4efd86ae5e4ec250869d309","urls":["bzz-raw://20ac5628966565ffb9ac245f0f7e2d2e73381fb8e20693e83d51fa6414005f38","dweb:/ipfs/QmQizNNvZFEb4WEKgq4LPAxEAW3HAQiNDpboNb3MDmin5x"],"license":"MIT"},"src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol":{"keccak256":"0xe8b011201ed29abf8a70dd4a3b31c664095eaa89c811032921050bfb04ba1522","urls":["bzz-raw://4989188fa18dfa867ca288e5885970a8cc770e5c02865544c34239c4daea3251","dweb:/ipfs/QmTCASGUpRonXKY7MrSqbt166KuEFt46MZoYPCrV75QdRc"],"license":"MIT"},"src/interfaces/fullRestakeDelegator/IFullRestakeResetHook.sol":{"keccak256":"0xb5d8997031e2bb2dcb491663495e22d9088f7ba87b587056d43f89664bf62634","urls":["bzz-raw://5affa4a5891e7ce9b7ae49f4b7731963dc2052a678120ff8492ee8a7364cbbc1","dweb:/ipfs/QmTfibYvhmgUhFrSYES35G7mmwBmEwiRYqQEmsyK6Fn7rQ"],"license":"MIT"}},"version":1},"id":100}
\ No newline at end of file
diff --git a/out/NetworkRestakeDecreaseHook.sol/NetworkRestakeDecreaseHook.json b/out/NetworkRestakeDecreaseHook.sol/NetworkRestakeDecreaseHook.json
new file mode 100644
index 0000000..c05b046
--- /dev/null
+++ b/out/NetworkRestakeDecreaseHook.sol/NetworkRestakeDecreaseHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashedAmount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"NotNetworkRestakeDelegator","inputs":[]}],"bytecode":{"object":"0x6080806040523460155761077c908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b346100a85760a03660031901126100a8576024356001600160a01b03811681036100a85760643565ffffffffffff811681036100a8576084359167ffffffffffffffff918284116100a857366023850112156100a85783600401359283116100a85736602484860101116100a85760246100a69401916044359060043561019c565b005b5f80fd5b6040810190811067ffffffffffffffff8211176100c857604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116100c857604052565b6020810190811067ffffffffffffffff8211176100c857604052565b90601f8019910116810190811067ffffffffffffffff8211176100c857604052565b9265ffffffffffff9060209360a096938652600180881b031684860152166040840152608060608401528051918291826080860152018484015e5f828201840152601f01601f1916010190565b9190820391821161018857565b634e487b7160e01b5f52601160045260245ffd5b60408051635d927f4560e11b81525f976004979296939560209390929184838b81335afa92831561050c575f93610659575b5067ffffffffffffffff80931661064957831561063c5781019084818303126100a8578035908382116100a8570188818303126100a857885190610211826100ac565b803584811681036100a857825285810135908482116100a857019082601f830112156100a8578135848111610629578a5193610256601f8301601f191689018661010c565b8185528782850101116100a85786815f9282889601838801378501015280860192835251168061054f575090505186818051810103126100a85782908780519161029f836100ac565b838101518352015191829101525b8651633eb22c0f60e01b81528881018790526024949084818781335afa90811561050c578a8c899488948c945f91610516575b50806104a3575b5090610313918d51916102f9836100f0565b82528d5163069e9c1160e21b81529687958695860161012e565b0381335afa908115610499578a9161046c575b5087516342c53e3360e01b81528981018890526001600160a01b03909616858701819052958481604481335afa948515610462578b95610432575b505083610375575b50505050505050505050565b610380828285610699565b92821561042057091515810180911161040e57908181806103a7941091180281189061017b565b92333b1561040a57845163a33bc28760e01b8152958601528401526044830152828260648183335af190811561040157506103ea575b8080808080808080610369565b6103f482916100dc565b6103fe57806103dd565b80fd5b513d84823e3d90fd5b8680fd5b634e487b7160e01b8852601187528288fd5b634e487b7160e01b8b5260128a52858bfd5b9080929550813d831161045b575b61044a818361010c565b810103126100a85751925f80610361565b503d610440565b89513d8d823e3d90fd5b90508381813d8311610492575b610483818361010c565b810103126100a857515f610326565b503d610479565b88513d8c823e3d90fd5b9350945050506104bd91508085108186180281189061017b565b333b156100a85788519062428a6960e31b8252888b830152868201525f8160448183335af1801561050c576104f9575b878a8c899488946102e7565b610504919a506100dc565b5f98836104ed565b89513d5f823e3d90fd5b965050939250505082813d8311610548575b610532818361010c565b810103126100a857878a8c87938a95515f6102e0565b503d610528565b6001036105a95751906060828051810103126100a85787519060608201908111828210176105965788528382015181528760608184015193848785015201519101526102ad565b60418a634e487b7160e01b5f525260245ffd5b5050838286896105d98a516105bd816100f0565b5f8152888c51968795869563e02f693760e01b8752860161012e565b0381335afa90811561061f575f916105f2575b506102ad565b90508281813d8311610618575b610609818361010c565b810103126100a857515f6105ec565b503d6105ff565b87513d5f823e3d90fd5b60418c634e487b7160e01b5f525260245ffd5b5050505050505050505050565b88516306d4818960e01b81528a90fd5b9092508481813d8311610692575b610671818361010c565b810103126100a8575167ffffffffffffffff811681036100a857915f6101ce565b503d610667565b91818302915f1981850993838086109503948086039514610724578483111561070c5790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82634e487b715f52156003026011186020526024601cfd5b505080925015610732570490565b634e487b7160e01b5f52601260045260245ffdfea26469706673582212208a470a149e5a4cbc020afdf746a49ea0ce43026fdf701404593fd30fb8b4104264736f6c63430008190033","sourceMap":"785:2238:112:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b346100a85760a03660031901126100a8576024356001600160a01b03811681036100a85760643565ffffffffffff811681036100a8576084359167ffffffffffffffff918284116100a857366023850112156100a85783600401359283116100a85736602484860101116100a85760246100a69401916044359060043561019c565b005b5f80fd5b6040810190811067ffffffffffffffff8211176100c857604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116100c857604052565b6020810190811067ffffffffffffffff8211176100c857604052565b90601f8019910116810190811067ffffffffffffffff8211176100c857604052565b9265ffffffffffff9060209360a096938652600180881b031684860152166040840152608060608401528051918291826080860152018484015e5f828201840152601f01601f1916010190565b9190820391821161018857565b634e487b7160e01b5f52601160045260245ffd5b60408051635d927f4560e11b81525f976004979296939560209390929184838b81335afa92831561050c575f93610659575b5067ffffffffffffffff80931661064957831561063c5781019084818303126100a8578035908382116100a8570188818303126100a857885190610211826100ac565b803584811681036100a857825285810135908482116100a857019082601f830112156100a8578135848111610629578a5193610256601f8301601f191689018661010c565b8185528782850101116100a85786815f9282889601838801378501015280860192835251168061054f575090505186818051810103126100a85782908780519161029f836100ac565b838101518352015191829101525b8651633eb22c0f60e01b81528881018790526024949084818781335afa90811561050c578a8c899488948c945f91610516575b50806104a3575b5090610313918d51916102f9836100f0565b82528d5163069e9c1160e21b81529687958695860161012e565b0381335afa908115610499578a9161046c575b5087516342c53e3360e01b81528981018890526001600160a01b03909616858701819052958481604481335afa948515610462578b95610432575b505083610375575b50505050505050505050565b610380828285610699565b92821561042057091515810180911161040e57908181806103a7941091180281189061017b565b92333b1561040a57845163a33bc28760e01b8152958601528401526044830152828260648183335af190811561040157506103ea575b8080808080808080610369565b6103f482916100dc565b6103fe57806103dd565b80fd5b513d84823e3d90fd5b8680fd5b634e487b7160e01b8852601187528288fd5b634e487b7160e01b8b5260128a52858bfd5b9080929550813d831161045b575b61044a818361010c565b810103126100a85751925f80610361565b503d610440565b89513d8d823e3d90fd5b90508381813d8311610492575b610483818361010c565b810103126100a857515f610326565b503d610479565b88513d8c823e3d90fd5b9350945050506104bd91508085108186180281189061017b565b333b156100a85788519062428a6960e31b8252888b830152868201525f8160448183335af1801561050c576104f9575b878a8c899488946102e7565b610504919a506100dc565b5f98836104ed565b89513d5f823e3d90fd5b965050939250505082813d8311610548575b610532818361010c565b810103126100a857878a8c87938a95515f6102e0565b503d610528565b6001036105a95751906060828051810103126100a85787519060608201908111828210176105965788528382015181528760608184015193848785015201519101526102ad565b60418a634e487b7160e01b5f525260245ffd5b5050838286896105d98a516105bd816100f0565b5f8152888c51968795869563e02f693760e01b8752860161012e565b0381335afa90811561061f575f916105f2575b506102ad565b90508281813d8311610618575b610609818361010c565b810103126100a857515f6105ec565b503d6105ff565b87513d5f823e3d90fd5b60418c634e487b7160e01b5f525260245ffd5b5050505050505050505050565b88516306d4818960e01b81528a90fd5b9092508481813d8311610692575b610671818361010c565b810103126100a8575167ffffffffffffffff811681036100a857915f6101ce565b503d610667565b91818302915f1981850993838086109503948086039514610724578483111561070c5790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82634e487b715f52156003026011186020526024601cfd5b505080925015610732570490565b634e487b7160e01b5f52601260045260245ffdfea26469706673582212208a470a149e5a4cbc020afdf746a49ea0ce43026fdf701404593fd30fb8b4104264736f6c63430008190033","sourceMap":"785:2238:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;785:2238:112;;;;;;-1:-1:-1;;;;;785:2238:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;1130:26;785:2238;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;785:2238:112;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;937:2084;785:2238;;;-1:-1:-1;;;1130:26:112;;;;;;785:2238;;937:2084;;1130:26;;937:2084;;785:2238;1130:26;785:2238;1130:26;785:2238;1138:10;1130:26;;;;;;;;;;;937:2084;785:2238;;;;;1126:97;;1237:18;;1233:55;;1353:53;;785:2238;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;785:2238:112;;;;;:::i;:::-;;;;;;;;;;;;;;1130:26;785:2238;;;;;;;;;;;;;;;;;;;;;1445:28;;;1546:16;;;;785:2238;;;;1535:54;;785:2238;;;;;;;;;;;;;:::i;:::-;1535:54;;;785:2238;;;;;;;;;;1441:561;785:2238;;-1:-1:-1;;;2035:61:112;;;;;785:2238;;;;;;1138:10;785:2238;;;1138:10;2035:61;;;;;;;;;;;;;;;1130:26;2035:61;;;1441:561;2110:17;;2106:196;;1441:561;785:2238;;2346:136;785:2238;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;2346:136:112;;785:2238;;;;;2346:136;;;:::i;:::-;;1138:10;;2346:136;;;;;;;;;;;1441:561;-1:-1:-1;785:2238:112;;-1:-1:-1;;;2524:80:112;;;;;785:2238;;;-1:-1:-1;;;;;785:2238:112;;;;;;;;;;1138:10;785:2238;;;1138:10;2524:80;;;;;;;;;;;1441:561;2618:26;;;2614:401;;1441:561;937:2084;;;;;;;;;;:::o;2614:401::-;9478:25:104;;;;;:::i;:::-;9552;;;;;;:29;;785:2238:112;;;;;;;3463:5:104;;;;2793:197:112;3463:5:104;;3066;;785:2238:112;3060:42:104;;2793:197:112;;:::i;:::-;1138:10;;2660:344;;;;785:2238;;-1:-1:-1;;;2660:344:112;;;;;785:2238;;;;;;;;1138:10;785:2238;;;1138:10;;2660:344;;;;;;;;;;2614:401;;;;;;;;;;;2660:344;;;;;:::i;:::-;785:2238;;2660:344;;;785:2238;;;2660:344;785:2238;;;;;;;;2660:344;785:2238;;;;-1:-1:-1;;;785:2238:112;;;;;;;;9552:25:104;-1:-1:-1;;;785:2238:112;;;;;;;;2524:80;;;;;;;;;;;;;;;;;:::i;:::-;;;785:2238;;;;;2524:80;;;;;;;;;;;785:2238;;;;;;;;;2346:136;;;;;;;;;;;;;;;;:::i;:::-;;;785:2238;;;;;2346:136;;;;;;;;;785:2238;;;;;;;;;2106:196;3463:5:104;;;;;;2225:52:112;3463:5:104;;;;;3066;;;785:2238:112;3060:42:104;;2225:52:112;;:::i;:::-;1138:10;2143:148;;;;785:2238;;;;;;2143:148;;;;;;785:2238;;;;;1130:26;1138:10;785:2238;1138:10;;;2143:148;;;;;;;;2106:196;;;;;;;;;;2143:148;;;;;;:::i;:::-;1130:26;;785:2238;2143:148;;;785:2238;;;1130:26;785:2238;;;;;2035:61;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;785:2238;;;;;;;;;;;;2035:61;;;;;;;;1441:561;1682:1;1655:28;1682:1;;1760:16;785:2238;;;;;1749:58;;785:2238;;;;;;;;;;;;;;;;;;;;;1749:58;;;785:2238;;;;;;;;;;;;;;;;;;;;1441:561;;785:2238;;;;;;1130:26;785:2238;;;1130:26;785:2238;1651:351;785:2238;;;;;;1893:98;785:2238;;;;;:::i;:::-;1130:26;785:2238;;;;;;;;;;;;;1893:98;;;;;:::i;:::-;;1138:10;;1893:98;;;;;;;1130:26;1893:98;;;1651:351;1883:108;1441:561;;1893:98;;;;;;;;;;;;;;;;:::i;:::-;;;785:2238;;;;;1893:98;;;;;;;;;785:2238;;;1130:26;785:2238;;;;;;;;;;;1130:26;785:2238;;;1130:26;785:2238;1233:55;1271:7;;;;;;;;;;;:::o;1126:97::-;785:2238;;-1:-1:-1;;;1184:28:112;;785:2238;;1184:28;1130:26;;;;;;;;;;;;;;;;;:::i;:::-;;;785:2238;;;;;;;;;;;;1130:26;;;;;;;;;4996:4226:104;;785:2238:112;;;;-1:-1:-1;;785:2238:112;4996:4226:104;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;874:4:98;-1:-1:-1;874:4:98;7214:31:104;;7259:375;;;8094:1;785:2238:112;;8075:1:104;785:2238:112;8074:21:104;785:2238:112;;;874:4:98;;785:2238:112;;;;874:4:98;;785:2238:112;;;;874:4:98;;785:2238:112;;;;874:4:98;;785:2238:112;;;;874:4:98;;785:2238:112;;;;874:4:98;;785:2238:112;7259:375:104;;;;-1:-1:-1;7259:375:104;;;6695:300;;;;;;785:2238:112;6695:300:104;;7259:375;7700:21;785:2238:112;4996:4226:104;:::o;6266:143::-;1763:135:98;;-1:-1:-1;1763:135:98;6330:16:104;3066:5;785:2238:112;874:4:98;3060:42:104;1763:135:98;;;;;5792:368:104;785:2238:112;;;;;;;;;6119:26:104;:::o;785:2238:112:-;;;;-1:-1:-1;785:2238:112;;;;;-1:-1:-1;785:2238:112","linkReferences":{}},"methodIdentifiers":{"onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotNetworkRestakeDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/networkRestakeDelegator/NetworkRestakeDecreaseHook.sol\":\"NetworkRestakeDecreaseHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"lib/core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/core/src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"lib/core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"src/contracts/networkRestakeDelegator/NetworkRestakeDecreaseHook.sol\":{\"keccak256\":\"0x600ba04b14099e0a17368ed9d29637431b0a46cdc563f1951f4b1ec892d712a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6740a7a523d1ced33ded789f54afb520b0d6dd72f05f82c7cc8e7da63c4584a5\",\"dweb:/ipfs/QmZ2PFC7QfzHXzqHzbLWAyh7QksWjTmYJCMnqC86Dk9KB2\"]},\"src/interfaces/networkRestakeDelegator/INetworkRestakeDecreaseHook.sol\":{\"keccak256\":\"0x4c0b40a8ff8065816a5bf77ff3f790a867bc20a630de65d7963b1af3e89d3f3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff722f23f65de8a11a4e2db25b4924eb3ebc4e0a1fcd52f6dcdfbe4e96a68389\",\"dweb:/ipfs/QmVMC5XpFpk24WXsT1HcBSpZ79UbJmJvVB3Pvi7j94kGQC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"NotNetworkRestakeDelegator"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"slashedAmount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/networkRestakeDelegator/NetworkRestakeDecreaseHook.sol":"NetworkRestakeDecreaseHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"lib/core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/core/src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"lib/core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"src/contracts/networkRestakeDelegator/NetworkRestakeDecreaseHook.sol":{"keccak256":"0x600ba04b14099e0a17368ed9d29637431b0a46cdc563f1951f4b1ec892d712a8","urls":["bzz-raw://6740a7a523d1ced33ded789f54afb520b0d6dd72f05f82c7cc8e7da63c4584a5","dweb:/ipfs/QmZ2PFC7QfzHXzqHzbLWAyh7QksWjTmYJCMnqC86Dk9KB2"],"license":"MIT"},"src/interfaces/networkRestakeDelegator/INetworkRestakeDecreaseHook.sol":{"keccak256":"0x4c0b40a8ff8065816a5bf77ff3f790a867bc20a630de65d7963b1af3e89d3f3c","urls":["bzz-raw://ff722f23f65de8a11a4e2db25b4924eb3ebc4e0a1fcd52f6dcdfbe4e96a68389","dweb:/ipfs/QmVMC5XpFpk24WXsT1HcBSpZ79UbJmJvVB3Pvi7j94kGQC"],"license":"MIT"}},"version":1},"id":112}
\ No newline at end of file
diff --git a/out/NetworkRestakeRedistributeHook.sol/NetworkRestakeRedistributeHook.json b/out/NetworkRestakeRedistributeHook.sol/NetworkRestakeRedistributeHook.json
new file mode 100644
index 0000000..9778435
--- /dev/null
+++ b/out/NetworkRestakeRedistributeHook.sol/NetworkRestakeRedistributeHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashedAmount","type":"uint256","internalType":"uint256"},{"name":"captureTimestamp","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"NotNetworkRestakeDelegator","inputs":[]}],"bytecode":{"object":"0x608080604052346015576107c1908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b346100a85760a03660031901126100a8576024356001600160a01b03811681036100a85760643565ffffffffffff811681036100a8576084359167ffffffffffffffff918284116100a857366023850112156100a85783600401359283116100a85736602484860101116100a85760246100a6940191604435906004356101a7565b005b5f80fd5b6040810190811067ffffffffffffffff8211176100c857604052565b634e487b7160e01b5f52604160045260245ffd5b6020810190811067ffffffffffffffff8211176100c857604052565b90601f8019910116810190811067ffffffffffffffff8211176100c857604052565b908160209103126100a857516001600160a01b03811681036100a85790565b9265ffffffffffff9060209360a096938652600180881b031684860152166040840152608060608401528051918291826080860152018484015e5f828201840152601f01601f1916010190565b9190820391821161019357565b634e487b7160e01b5f52601160045260245ffd5b60408051635d927f4560e11b81529196909560049592949260209283878981335afa96871561059e575f9761069e575b5067ffffffffffffffff80971661068e5784156106825782019183818403126100a8578035908782116100a8570188818403126100a85788519061021a826100ac565b803588811681036100a857825284810135908882116100a857019083601f830112156100a857813588811161066f578a519461025f601f8301601f19168801876100f8565b8186528682850101116100a85785815f92828c960183890137860101528085019384525116806103c65750505186818051810103126100a85786516102a3816100ac565b828881840151938484520151910152905b86516342c53e3360e01b81528681018981526001600160a01b03861660208201528290829081906040010381335afa9182156103bc575f9261038e575b505080610303575b5050505050505050565b6103106103159383610186565b6106de565b90333b156100a857845163a33bc28760e01b8152848101969096526001600160a01b0316602486015260448501525f8460648183335af1801561038457610360575b808080806102f9565b83116103715750525f808080610357565b604190634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b90809250813d83116103b5575b6103a581836100f8565b810103126100a857515f806102f1565b503d61039b565b88513d5f823e3d90fd5b6001036104205750516060818051810103126100a8578651606081018181108782111761040d578852876060848401519384845282810151868501520151910152906102b4565b604188634e487b7160e01b5f525260245ffd5b875163fbfa77cf60e01b815290915082818881335afa9081156103bc579083915f91610652575b50885163b134427160e01b81526001600160a01b0392909182908a90829086165afa90811561059e5790869392915f91610625575b50848b8a6104ab8d87815191610491836100dc565b5f83525163e02f693760e01b8152998a9586958601610139565b0381335afa9384156105ec575f946105f6575b50895163068af8b160e21b8152808a018c81526001600160a01b038916602082015292909116918590829081906040010381855afa9081156105ec578a9493928c8b8989958c955f916105a8575b506105439161051a91610186565b98805190610527826100dc565b5f82525163aa8e648960e01b8152978896879586958601610139565b03915afa90811561059e575f9161056f575b506105639061056993610186565b90610186565b906102b4565b90508381813d8311610597575b61058681836100f8565b810103126100a85751610569610555565b503d61057c565b89513d5f823e3d90fd5b99505050505091905084813d83116105e5575b6105c581836100f8565b810103126100a8578685918c8b61054361051a8f998c905191509161050c565b503d6105bb565b8a513d5f823e3d90fd5b9093508481813d831161061e575b61060e81836100f8565b810103126100a85751925f6104be565b503d610604565b6106459150853d871161064b575b61063d81836100f8565b81019061011a565b5f61047c565b503d610633565b6106699150823d841161064b5761063d81836100f8565b5f610447565b60418a634e487b7160e01b5f525260245ffd5b50505050505050505050565b88516306d4818960e01b81528890fd5b9096508381813d83116106d7575b6106b681836100f8565b810103126100a8575167ffffffffffffffff811681036100a857955f6101d7565b503d6106ac565b91818302915f198185099383808610950394808603951461076957848311156107515790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82634e487b715f52156003026011186020526024601cfd5b505080925015610777570490565b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220e44f5d66ab82e980f12696d5a8d61eeb4bef3d9c837506ef7f8af509c789ee6664736f6c63430008190033","sourceMap":"871:2037:102:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b346100a85760a03660031901126100a8576024356001600160a01b03811681036100a85760643565ffffffffffff811681036100a8576084359167ffffffffffffffff918284116100a857366023850112156100a85783600401359283116100a85736602484860101116100a85760246100a6940191604435906004356101a7565b005b5f80fd5b6040810190811067ffffffffffffffff8211176100c857604052565b634e487b7160e01b5f52604160045260245ffd5b6020810190811067ffffffffffffffff8211176100c857604052565b90601f8019910116810190811067ffffffffffffffff8211176100c857604052565b908160209103126100a857516001600160a01b03811681036100a85790565b9265ffffffffffff9060209360a096938652600180881b031684860152166040840152608060608401528051918291826080860152018484015e5f828201840152601f01601f1916010190565b9190820391821161019357565b634e487b7160e01b5f52601160045260245ffd5b60408051635d927f4560e11b81529196909560049592949260209283878981335afa96871561059e575f9761069e575b5067ffffffffffffffff80971661068e5784156106825782019183818403126100a8578035908782116100a8570188818403126100a85788519061021a826100ac565b803588811681036100a857825284810135908882116100a857019083601f830112156100a857813588811161066f578a519461025f601f8301601f19168801876100f8565b8186528682850101116100a85785815f92828c960183890137860101528085019384525116806103c65750505186818051810103126100a85786516102a3816100ac565b828881840151938484520151910152905b86516342c53e3360e01b81528681018981526001600160a01b03861660208201528290829081906040010381335afa9182156103bc575f9261038e575b505080610303575b5050505050505050565b6103106103159383610186565b6106de565b90333b156100a857845163a33bc28760e01b8152848101969096526001600160a01b0316602486015260448501525f8460648183335af1801561038457610360575b808080806102f9565b83116103715750525f808080610357565b604190634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b90809250813d83116103b5575b6103a581836100f8565b810103126100a857515f806102f1565b503d61039b565b88513d5f823e3d90fd5b6001036104205750516060818051810103126100a8578651606081018181108782111761040d578852876060848401519384845282810151868501520151910152906102b4565b604188634e487b7160e01b5f525260245ffd5b875163fbfa77cf60e01b815290915082818881335afa9081156103bc579083915f91610652575b50885163b134427160e01b81526001600160a01b0392909182908a90829086165afa90811561059e5790869392915f91610625575b50848b8a6104ab8d87815191610491836100dc565b5f83525163e02f693760e01b8152998a9586958601610139565b0381335afa9384156105ec575f946105f6575b50895163068af8b160e21b8152808a018c81526001600160a01b038916602082015292909116918590829081906040010381855afa9081156105ec578a9493928c8b8989958c955f916105a8575b506105439161051a91610186565b98805190610527826100dc565b5f82525163aa8e648960e01b8152978896879586958601610139565b03915afa90811561059e575f9161056f575b506105639061056993610186565b90610186565b906102b4565b90508381813d8311610597575b61058681836100f8565b810103126100a85751610569610555565b503d61057c565b89513d5f823e3d90fd5b99505050505091905084813d83116105e5575b6105c581836100f8565b810103126100a8578685918c8b61054361051a8f998c905191509161050c565b503d6105bb565b8a513d5f823e3d90fd5b9093508481813d831161061e575b61060e81836100f8565b810103126100a85751925f6104be565b503d610604565b6106459150853d871161064b575b61063d81836100f8565b81019061011a565b5f61047c565b503d610633565b6106699150823d841161064b5761063d81836100f8565b5f610447565b60418a634e487b7160e01b5f525260245ffd5b50505050505050505050565b88516306d4818960e01b81528890fd5b9096508381813d83116106d7575b6106b681836100f8565b810103126100a8575167ffffffffffffffff811681036100a857955f6101d7565b503d6106ac565b91818302915f198185099383808610950394808603951461076957848311156107515790829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b82634e487b715f52156003026011186020526024601cfd5b505080925015610777570490565b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220e44f5d66ab82e980f12696d5a8d61eeb4bef3d9c837506ef7f8af509c789ee6664736f6c63430008190033","sourceMap":"871:2037:102:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:2037:102;;;;;;-1:-1:-1;;;;;871:2037:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;1224:26;871:2037;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;871:2037:102;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:2037:102;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1031:1875;871:2037;;;-1:-1:-1;;;1224:26:102;;1031:1875;;871:2037;;1224:26;;871:2037;;1031:1875;1224:26;;;871:2037;1224:26;871:2037;1232:10;1224:26;;;;;;;;;;;1031:1875;871:2037;;;;;1220:97;;1331:18;;1327:55;;1447:53;;871:2037;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;871:2037:102;;;;;:::i;:::-;;;;;;;;;;;;;;1224:26;871:2037;;;;;;;;;;;;;;;;;;;;;1546:28;;;1647:16;;;871:2037;;;;1636:54;;871:2037;;;;;;;;;:::i;:::-;1636:54;;;;;871:2037;;;;;;;;;;1542:976;;871:2037;;-1:-1:-1;;;2560:80:102;;;;;871:2037;;;-1:-1:-1;;;;;871:2037:102;;;;;;2560:80;;871:2037;;;;;;2560:80;1232:10;;2560:80;;;;;;;1224:26;2560:80;;;1542:976;2654:26;;;2650:250;;1542:976;1031:1875;;;;;;;;:::o;2650:250::-;2798:30;2797:78;2798:30;;;:::i;:::-;2797:78;:::i;:::-;1232:10;;2696:193;;;;871:2037;;-1:-1:-1;;;2696:193:102;;;;;871:2037;;;;-1:-1:-1;;;;;871:2037:102;;;;;;;;;-1:-1:-1;871:2037:102;;;-1:-1:-1;1232:10:102;2696:193;;;;;;;;2650:250;;;;;;;2696:193;871:2037;;;;;;2696:193;;;;;;871:2037;;;;;;1224:26;871:2037;;;1224:26;871:2037;2696:193;871:2037;;;1224:26;871:2037;;;;;2560:80;;;;;;;;;;;;;;;;:::i;:::-;;;871:2037;;;;;2560:80;;;;;;;;;;871:2037;;;1224:26;871:2037;;;;;1542:976;1797:1;1770:28;1797:1;;1875:16;;871:2037;;;;1864:58;;871:2037;;;;;;;;;;;;;;;;;;;;1864:58;871:2037;1864:58;;;871:2037;;;;;;;;;;;;;;;;;;1766:752;1542:976;;871:2037;;;;;;1224:26;871:2037;;;1224:26;871:2037;1766:752;871:2037;;-1:-1:-1;;;2037:44:102;;871:2037;;-1:-1:-1;1232:10:102;871:2037;1232:10;871:2037;1232:10;2037:44;;;;;;;;;;1224:26;2037:44;;;1766:752;-1:-1:-1;871:2037:102;;-1:-1:-1;;;2030:62:102;;-1:-1:-1;;;;;871:2037:102;;;;;;;;;;;2030:62;;;;;;;;;;;;1224:26;2030:62;;;1766:752;871:2037;;;;2123:128;871:2037;;;;;;;;:::i;:::-;1224:26;871:2037;;;-1:-1:-1;;;2123:128:102;;871:2037;;;;;2123:128;;;:::i;:::-;;1232:10;;2123:128;;;;;;;1224:26;2123:128;;;1766:752;-1:-1:-1;871:2037:102;;-1:-1:-1;;;2293:59:102;;;;;871:2037;;;-1:-1:-1;;;;;871:2037:102;;;;;;;;;;;;;;;;;;;2293:59;;;;;;;;;;;;;;;;;;;;;1224:26;2293:59;;;1766:752;2293:75;2396:93;2293:75;;;;:::i;:::-;871:2037;;;;;;;:::i;:::-;1224:26;871:2037;;;-1:-1:-1;;;2396:93:102;;871:2037;;;;;;;2396:93;;;:::i;:::-;;;;;;;;;;1224:26;2396:93;;;1766:752;2292:197;;;2123:384;2292:197;;:::i;:::-;2123:384;;:::i;:::-;1766:752;1542:976;;2396:93;;;;;;;;;;;;;;;;:::i;:::-;;;871:2037;;;;;2123:384;2396:93;;;;;;;;871:2037;;;1224:26;871:2037;;;;;2293:59;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;871:2037;;;;;;;;;2396:93;2293:75;871:2037;;;;;2293:59;;;;;;;;;;;871:2037;;;1224:26;871:2037;;;;;2123:128;;;;;;;;;;;;;;;;;:::i;:::-;;;871:2037;;;;;2123:128;;;;;;;;;2030:62;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2037:44;;;;;;;;;;;;;;:::i;:::-;;;;871:2037;;;;;;1224:26;871:2037;;;1224:26;871:2037;1327:55;1365:7;;;;;;;;;;:::o;1220:97::-;871:2037;;-1:-1:-1;;;1278:28:102;;871:2037;;1278:28;1224:26;;;;;;;;;;;;;;;;;:::i;:::-;;;871:2037;;;;;;;;;;;;1224:26;;;;;;;;;4996:4226:94;;871:2037:102;;;;-1:-1:-1;;871:2037:102;4996:4226:94;5584:131;;;;;;;;;;;;5796:10;;5792:368;;6270:20;;;;6266:143;;6695:300;;;;874:4:89;-1:-1:-1;874:4:89;7214:31:94;;7259:375;;;8094:1;871:2037:102;;8075:1:94;871:2037:102;8074:21:94;871:2037:102;;;874:4:89;;871:2037:102;;;;874:4:89;;871:2037:102;;;;874:4:89;;871:2037:102;;;;874:4:89;;871:2037:102;;;;874:4:89;;871:2037:102;;;;874:4:89;;871:2037:102;7259:375:94;;;;-1:-1:-1;7259:375:94;;;6695:300;;;;;;871:2037:102;6695:300:94;;7259:375;7700:21;871:2037:102;4996:4226:94;:::o;6266:143::-;1763:135:89;;-1:-1:-1;1763:135:89;6330:16:94;3066:5;871:2037:102;874:4:89;3060:42:94;1763:135:89;;;;;5792:368:94;871:2037:102;;;;;;;;;6119:26:94;:::o;871:2037:102:-;;;;-1:-1:-1;871:2037:102;;;;;-1:-1:-1;871:2037:102","linkReferences":{}},"methodIdentifiers":{"onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotNetworkRestakeDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"captureTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/networkRestakeDelegator/NetworkRestakeRedistributeHook.sol\":\"NetworkRestakeRedistributeHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"lib/core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/core/src/interfaces/slasher/ISlasher.sol\":{\"keccak256\":\"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1\",\"dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ\"]},\"lib/core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"src/contracts/networkRestakeDelegator/NetworkRestakeRedistributeHook.sol\":{\"keccak256\":\"0x630852c4e4045dfe66f0919a3fdad0ab65c7fc0774bb11f6bb0b295897bb2119\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8df6586c0998bbd98107f8e2e84b12ed725217147ce77627e5034f362b9bce63\",\"dweb:/ipfs/QmVsUgizrkmX6j3Vv3k4pdbNUAM9r6UBzx8WJiPTZaEavT\"]},\"src/interfaces/networkRestakeDelegator/INetworkRestakeRedistributeHook.sol\":{\"keccak256\":\"0x153d682bb26bf114a18500ff24e9acdbca7234014a213221b73c2bce515ae0b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c98a90e198896c12f75e4d038c4d04a08a3765d7bdcefcc544fb01cbef18963a\",\"dweb:/ipfs/QmTMaufaRnhGKTLDHiwQZPYg31s9dxVzoUQHD6w5XQaCPD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"NotNetworkRestakeDelegator"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"slashedAmount","type":"uint256"},{"internalType":"uint48","name":"captureTimestamp","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/networkRestakeDelegator/NetworkRestakeRedistributeHook.sol":"NetworkRestakeRedistributeHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"lib/core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/core/src/interfaces/slasher/ISlasher.sol":{"keccak256":"0x34d226d67a3d5e16571f2fac91a8b9773551bcc41c88a96279669dd78d192625","urls":["bzz-raw://7a6e8c1462ee4a1b0f745414be043c09012ea676613790aba004b06c85c980d1","dweb:/ipfs/QmadjNEbHKRthtA1EeNy3Kg2sXpejH2KBeHm8QZtBPvXbJ"],"license":"MIT"},"lib/core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"src/contracts/networkRestakeDelegator/NetworkRestakeRedistributeHook.sol":{"keccak256":"0x630852c4e4045dfe66f0919a3fdad0ab65c7fc0774bb11f6bb0b295897bb2119","urls":["bzz-raw://8df6586c0998bbd98107f8e2e84b12ed725217147ce77627e5034f362b9bce63","dweb:/ipfs/QmVsUgizrkmX6j3Vv3k4pdbNUAM9r6UBzx8WJiPTZaEavT"],"license":"MIT"},"src/interfaces/networkRestakeDelegator/INetworkRestakeRedistributeHook.sol":{"keccak256":"0x153d682bb26bf114a18500ff24e9acdbca7234014a213221b73c2bce515ae0b9","urls":["bzz-raw://c98a90e198896c12f75e4d038c4d04a08a3765d7bdcefcc544fb01cbef18963a","dweb:/ipfs/QmTMaufaRnhGKTLDHiwQZPYg31s9dxVzoUQHD6w5XQaCPD"],"license":"MIT"}},"version":1},"id":102}
\ No newline at end of file
diff --git a/out/NetworkRestakeResetHook.sol/NetworkRestakeResetHook.json b/out/NetworkRestakeResetHook.sol/NetworkRestakeResetHook.json
new file mode 100644
index 0000000..acc9d09
--- /dev/null
+++ b/out/NetworkRestakeResetHook.sol/NetworkRestakeResetHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"constructor","inputs":[{"name":"period","type":"uint48","internalType":"uint48"},{"name":"slashCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"PERIOD","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"SLASH_COUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"operator","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"InvalidBufferSize","inputs":[]},{"type":"error","name":"InvalidSlashCount","inputs":[]},{"type":"error","name":"NotNetworkRestakeDelegator","inputs":[]},{"type":"error","name":"NotVaultDelegator","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60c03460a357601f6106b538819003918201601f19168301916001600160401b0383118484101760a757808492604094855283398101031260a35780519065ffffffffffff8216820360a3576020015190811560915760805260a0526040516105f990816100bc823960805181818161032601526104d9015260a0518181816101a00152818161038a015261049a0152f35b6040516339b5ac3d60e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060409080825260049182361015610016575f80fd5b5f915f3560e01c908163b4d1d795146104bd57508063d524c328146104835763e49561ee14610043575f80fd5b346102915760a0366003190112610291576001600160a01b0360248035828116958035949390918790036102915765ffffffffffff96606435888116036102915767ffffffffffffffff916084358381116102915736602382011215610291578085013584811161029157369101860111610291578551635d927f4560e11b81526020919082818781335afa90811561042f579085915f91610449575b501661043957865163fbfa77cf60e01b815282818781335afa90811561042f579082915f91610412575b508851630ce9b79360e41b815291169183828881865afa918215610408575f926103d9575b50339116036103c9575f525f8152855f20875f528152855f20825f528152855f209860018a0190815415610388575b8061016842610591565b168b54905f199182811461035457600181018e55845461018791610573565b845f52855f2001558b54928054808510818618028118927f000000000000000000000000000000000000000000000000000000000000000080851496876102cd575b505050505050506101d8578780f35b85516342c53e3360e01b8152878582015282868201528181604481335afa9182156102c3575f92610295575b5050610220575b505050505050809155805f8080808080808780f35b333b156102915784519563a33bc28760e01b875283870152838601525f60448601525f8560648183335af180156102875761025c575b8061020b565b9091929380955011610276575050525f8080808080610256565b604190634e487b7160e01b5f52525ffd5b84513d5f823e3d90fd5b5f80fd5b90809250813d83116102bc575b6102ac81836104fd565b8101031261029157515f80610204565b503d6102a2565b87513d5f823e3d90fd5b90919293949596506102de42610591565b958383019283116103765782101561036657906102fa91610552565b908101908111610354579161031485926103239594610573565b905f52855f2001549116610552565b907f00000000000000000000000000000000000000000000000000000000000000001610155f8080808080806101c9565b8960118a634e487b7160e01b5f52525ffd5b8b603289634e487b715f5252601cfd5b8c60118d634e487b7160e01b5f52525ffd5b7f000000000000000000000000000000000000000000000000000000000000000080156103b9575f8c55825561015e565b8851630c01a34b60e41b81528790fd5b86516318c0166360e31b81528590fd5b6103fa919250843d8611610401575b6103f281836104fd565b810190610533565b905f61012f565b503d6103e8565b89513d5f823e3d90fd5b6104299150843d8611610401576103f281836104fd565b5f61010a565b88513d5f823e3d90fd5b86516306d4818960e01b81528590fd5b809250848092503d831161047c575b61046281836104fd565b81010312610291575184811681036102915784905f6100e0565b503d610458565b5034610291575f36600319011261029157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610291575f3660031901126102915760209065ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90601f8019910116810190811067ffffffffffffffff82111761051f57604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261029157516001600160a01b03811681036102915790565b9190820391821161055f57565b634e487b7160e01b5f52601160045260245ffd5b811561057d570690565b634e487b7160e01b5f52601260045260245ffd5b65ffffffffffff908181116105a4571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfea2646970667358221220226ec11a821b4df2a738d3ff234b56f8de26117456dde6f63d204563d70c43bf64736f6c63430008190033","sourceMap":"687:1880:103:-:0;;;;;;;;;;;;;-1:-1:-1;;687:1880:103;;;;-1:-1:-1;;;;;687:1880:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1264:15;;;1260:72;;1342:15;;1367:24;;687:1880;;;;;;;;1342:15;687:1880;;;;;;;;;;1367:24;687:1880;;;;;;;;;;;;;;;;1260:72;687:1880;;-1:-1:-1;;;1302:19:103;;;;;687:1880;-1:-1:-1;687:1880:103;;;;;;-1:-1:-1;687:1880:103;;;;;-1:-1:-1;687:1880:103","linkReferences":{}},"deployedBytecode":{"object":"0x608060409080825260049182361015610016575f80fd5b5f915f3560e01c908163b4d1d795146104bd57508063d524c328146104835763e49561ee14610043575f80fd5b346102915760a0366003190112610291576001600160a01b0360248035828116958035949390918790036102915765ffffffffffff96606435888116036102915767ffffffffffffffff916084358381116102915736602382011215610291578085013584811161029157369101860111610291578551635d927f4560e11b81526020919082818781335afa90811561042f579085915f91610449575b501661043957865163fbfa77cf60e01b815282818781335afa90811561042f579082915f91610412575b508851630ce9b79360e41b815291169183828881865afa918215610408575f926103d9575b50339116036103c9575f525f8152855f20875f528152855f20825f528152855f209860018a0190815415610388575b8061016842610591565b168b54905f199182811461035457600181018e55845461018791610573565b845f52855f2001558b54928054808510818618028118927f000000000000000000000000000000000000000000000000000000000000000080851496876102cd575b505050505050506101d8578780f35b85516342c53e3360e01b8152878582015282868201528181604481335afa9182156102c3575f92610295575b5050610220575b505050505050809155805f8080808080808780f35b333b156102915784519563a33bc28760e01b875283870152838601525f60448601525f8560648183335af180156102875761025c575b8061020b565b9091929380955011610276575050525f8080808080610256565b604190634e487b7160e01b5f52525ffd5b84513d5f823e3d90fd5b5f80fd5b90809250813d83116102bc575b6102ac81836104fd565b8101031261029157515f80610204565b503d6102a2565b87513d5f823e3d90fd5b90919293949596506102de42610591565b958383019283116103765782101561036657906102fa91610552565b908101908111610354579161031485926103239594610573565b905f52855f2001549116610552565b907f00000000000000000000000000000000000000000000000000000000000000001610155f8080808080806101c9565b8960118a634e487b7160e01b5f52525ffd5b8b603289634e487b715f5252601cfd5b8c60118d634e487b7160e01b5f52525ffd5b7f000000000000000000000000000000000000000000000000000000000000000080156103b9575f8c55825561015e565b8851630c01a34b60e41b81528790fd5b86516318c0166360e31b81528590fd5b6103fa919250843d8611610401575b6103f281836104fd565b810190610533565b905f61012f565b503d6103e8565b89513d5f823e3d90fd5b6104299150843d8611610401576103f281836104fd565b5f61010a565b88513d5f823e3d90fd5b86516306d4818960e01b81528590fd5b809250848092503d831161047c575b61046281836104fd565b81010312610291575184811681036102915784905f6100e0565b503d610458565b5034610291575f36600319011261029157602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610291575f3660031901126102915760209065ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90601f8019910116810190811067ffffffffffffffff82111761051f57604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261029157516001600160a01b03811681036102915790565b9190820391821161055f57565b634e487b7160e01b5f52601160045260245ffd5b811561057d570690565b634e487b7160e01b5f52601260045260245ffd5b65ffffffffffff908181116105a4571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfea2646970667358221220226ec11a821b4df2a738d3ff234b56f8de26117456dde6f63d204563d70c43bf64736f6c63430008190033","sourceMap":"687:1880:103:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;687:1880:103;;;;-1:-1:-1;;;;;687:1880:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1665:26:103;;687:1880;;;;;1673:10;687:1880;1673:10;1665:26;;;;;;;;;;687:1880;1665:26;;;687:1880;;;1661:97;;687:1880;;-1:-1:-1;;;1784:44:103;;1673:10;687:1880;1673:10;687:1880;1673:10;1784:44;;;;;;;;;;687:1880;1784:44;;;687:1880;-1:-1:-1;687:1880:103;;-1:-1:-1;;;1843:25:103;;687:1880;;;1843:25;687:1880;1843:25;687:1880;;1843:25;;;;;;;687:1880;1843:25;;;687:1880;1673:10;;687:1880;;1843:39;1839:96;;687:1880;;;;;;;;;;;;;;;;;;;;;;;;3808:10:97;687:1880:103;3808:10:97;;687:1880:103;;;2052:20;2048:76;;687:1880;837:15:98;819:34;837:15;819:34;:::i;:::-;687:1880:103;;;;;;;;;;;;;;;;;;;3246:15:97;;;:::i;:::-;2399:111:90;687:1880:103;2399:111:90;;687:1880:103;2399:111:90;687:1880:103;;;;;;;3463:5:94;;;3066;;;687:1880:103;3060:42:94;;2214:11:103;;2196:29;;;:99;;;;687:1880;2192:367;;;;;;;;;687:1880;;;2192:367;687:1880;;;;;2315:80;;;;;;687:1880;;;;;;1673:10;;687:1880;1673:10;;2315:80;;;;;;;687:1880;2315:80;;;2192:367;2315:85;;2311:210;;2192:367;687:1880;;;;;;;;;2192:367;;;;;;;;687:1880;;;2311:210;1673:10;2420:86;;;;687:1880;;;;;;2420:86;;;;;687:1880;;;;;;;;;;;1673:10;687:1880;1673:10;;;2420:86;;;;;;;;2311:210;;;;2420:86;687:1880;;;;;;;;;;;;;;2420:86;;;;;;;687:1880;;;;;;;;;;;2420:86;687:1880;;;;;;;;;2420:86;687:1880;;;2315:80;;;;;;;;;;;;;;;;:::i;:::-;;;687:1880;;;;;2315:80;;;;;;;;;;687:1880;;;;;;;;;2196:99;837:15:98;;;;;;;;819:34;837:15;819:34;:::i;:::-;687:1880:103;;;;;;;;;4342:10:97;;;4338:79;;4466:9;;;;:::i;:::-;687:1880:103;;;;;;;;4465:25:97;;;;2229:56:103;4465:25:97;;;:::i;:::-;2399:111:90;687:1880:103;2399:111:90;;687:1880:103;2399:111:90;687:1880:103;1347:4:89;687:1880:103;;2229:56;:::i;:::-;2289:6;;687:1880;-1:-1:-1;2229:66:103;2196:99;;;;;;;;;687:1880;;;;;;;;;;;;4338:79:97;1763:135:89;1347:4;1763:135;;687:1880:103;1763:135:89;;;;687:1880:103;;;;;;;;;;;;2048:76;2101:11;2564:9:97;;2560:41;;687:1880:103;;;17855:72:85;;2048:76:103;;2560:41:97;687:1880:103;;-1:-1:-1;;;2582:19:97;;687:1880:103;;2582:19:97;1839:96:103;687:1880;;-1:-1:-1;;;1905:19:103;;687:1880;;1905:19;1843:25;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;687:1880;;;;;;;;;1784:44;;;;;;;;;;;;;;:::i;:::-;;;;;687:1880;;;;;;;;;1661:97;687:1880;;-1:-1:-1;;;1719:28:103;;687:1880;;1719:28;1665:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;687:1880;;;;;;;;;;;;1665:26;;;;;;;;;;687:1880;;;;;;;-1:-1:-1;;687:1880:103;;;;;;;979:36;687:1880;;;;;;;;;-1:-1:-1;;687:1880:103;;;;;882:30;687:1880;882:30;687:1880;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;687:1880:103;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;14296:213:95;687:1880:103;14374:24:95;;;;14370:103;;687:1880:103;14296:213:95;:::o;14370:103::-;687:1880:103;;;;14421:41:95;;;;;;14452:2;14421:41;;;687:1880:103;;;;;14421:41:95","linkReferences":{},"immutableReferences":{"60423":[{"start":806,"length":32},{"start":1241,"length":32}],"60426":[{"start":416,"length":32},{"start":906,"length":32},{"start":1178,"length":32}]}},"methodIdentifiers":{"PERIOD()":"b4d1d795","SLASH_COUNT()":"d524c328","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"period\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"slashCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidBufferSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlashCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotNetworkRestakeDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PERIOD\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidBufferSize()\":[{\"details\":\"Error emitted when trying to setup a buffer with a size of 0.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"stateVariables\":{\"PERIOD\":{\"return\":\"threshold period\",\"returns\":{\"_0\":\"threshold period\"}},\"SLASH_COUNT\":{\"return\":\"threshold count\",\"returns\":{\"_0\":\"threshold count\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERIOD()\":{\"notice\":\"Get a period during which the slashing should occur to reset the operator's stake.\"},\"SLASH_COUNT()\":{\"notice\":\"Get a number of slashes that should occur during the PERIOD to reset the operator's stake.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/networkRestakeDelegator/NetworkRestakeResetHook.sol\":\"NetworkRestakeResetHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/INetworkRestakeDelegator.sol\":{\"keccak256\":\"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad\",\"dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z\"]},\"lib/core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0x144dc121fe2c3f7f43d4a98afd74ca2adc71a6b1acc5b160a3f85ab5a1361c15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5dab57e8d40023254f2786f1909423b02fae08b04ac77080ad545d5592098cfe\",\"dweb:/ipfs/Qmb4qhaSCzZxcsykJSz4wPmWiZYocRdbyuVyA6qFRvf2uS\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x0aec5c16d6ebc343da74055b19e4f54e7d5ffeb85debf2fab0644bef87b7f86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e0ffb34cb439d66f5f63d09f9c0091e0a84c654f1793fe66bd568a23350905d\",\"dweb:/ipfs/QmdNTizRpzFLcvxskw1BJ6VgmCBgHcJAym7wB72G1wGv76\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0xc1805f86a4f1ff277a7434b0aaff1cc02207f549d5a89cbaabfb203e19090432\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ff2eff3221171ccee5124ed8abd9036e23f7cfb66469e2397c6138b8cdf4f1\",\"dweb:/ipfs/Qme4kSEnCseAzudZcrvFdWVqtWn14QxhX4JSpo1GipbUqr\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xb8657b94520fd19c0d47e68b01dbe3fe2898be60572dfe75e9dc0ef0835be0ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db16b48d7aaf8a641202d5e9f0a76eac11da20b53c1de7b614a3ce338efce902\",\"dweb:/ipfs/QmZTzTDbdXfWTqXTBRmvN8H4BqpsWqyoGmrCsz8F2MiLpX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol\":{\"keccak256\":\"0x297e88719cef1cbe9a65c0148bf4455815f03a8732209796c9cee54cae259858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a7ce38c53515056f2c40719e466b401bde8144287ea7c1c60032ec19a397d0a\",\"dweb:/ipfs/QmXPdHnqYJ7GZ9oiFkDc9wLHMZfcwWZrscunYM1SsJkNaf\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xf643942e4b4fff9a0a3cfac3d5e0743ce2024ea2a4efd86ae5e4ec250869d309\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ac5628966565ffb9ac245f0f7e2d2e73381fb8e20693e83d51fa6414005f38\",\"dweb:/ipfs/QmQizNNvZFEb4WEKgq4LPAxEAW3HAQiNDpboNb3MDmin5x\"]},\"src/contracts/networkRestakeDelegator/NetworkRestakeResetHook.sol\":{\"keccak256\":\"0x5553e819035f19a3c1ce3fe1005d2a28aedb48fe420a5f34fb2ae15c7fcab8c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161555dfeecaa1056c9ac3e10a6fb6898910fbb6175a7831b4c8c181f1f89206\",\"dweb:/ipfs/Qma5jKA6KvrkZzUs4YFC21s6PNPHYuF3Tb1m1gM7gmAUHb\"]},\"src/interfaces/networkRestakeDelegator/INetworkRestakeResetHook.sol\":{\"keccak256\":\"0x252996d764b7dacd377670bcd049382a6cf00d54e5683d9fa20f0fecab134ded\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf62184cafe2163737bcb585462ce74d718c7f6c828b6890e2378fb0c8f8b311\",\"dweb:/ipfs/QmRGivFjiXyTvpVmLdgb8KZ44s6E5N48vzuQ6NATzzZ9nh\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint48","name":"period","type":"uint48"},{"internalType":"uint256","name":"slashCount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidBufferSize"},{"inputs":[],"type":"error","name":"InvalidSlashCount"},{"inputs":[],"type":"error","name":"NotNetworkRestakeDelegator"},{"inputs":[],"type":"error","name":"NotVaultDelegator"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"stateMutability":"view","type":"function","name":"PERIOD","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"PERIOD()":{"notice":"Get a period during which the slashing should occur to reset the operator's stake."},"SLASH_COUNT()":{"notice":"Get a number of slashes that should occur during the PERIOD to reset the operator's stake."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/networkRestakeDelegator/NetworkRestakeResetHook.sol":"NetworkRestakeResetHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/INetworkRestakeDelegator.sol":{"keccak256":"0xe7030fe30389a147fd710e3436ec346b4842695fd3e65a81b95375c9f1d633fc","urls":["bzz-raw://739c7e66d301778054f5c90bee45ec9438f68afba8a03eaaac52064c73b115ad","dweb:/ipfs/QmfZ2ytKcTykAc76nxhg8ikUXV8NdBpetqb8W4YWPcox1Z"],"license":"MIT"},"lib/core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0x144dc121fe2c3f7f43d4a98afd74ca2adc71a6b1acc5b160a3f85ab5a1361c15","urls":["bzz-raw://5dab57e8d40023254f2786f1909423b02fae08b04ac77080ad545d5592098cfe","dweb:/ipfs/Qmb4qhaSCzZxcsykJSz4wPmWiZYocRdbyuVyA6qFRvf2uS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x0aec5c16d6ebc343da74055b19e4f54e7d5ffeb85debf2fab0644bef87b7f86a","urls":["bzz-raw://8e0ffb34cb439d66f5f63d09f9c0091e0a84c654f1793fe66bd568a23350905d","dweb:/ipfs/QmdNTizRpzFLcvxskw1BJ6VgmCBgHcJAym7wB72G1wGv76"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0xc1805f86a4f1ff277a7434b0aaff1cc02207f549d5a89cbaabfb203e19090432","urls":["bzz-raw://34ff2eff3221171ccee5124ed8abd9036e23f7cfb66469e2397c6138b8cdf4f1","dweb:/ipfs/Qme4kSEnCseAzudZcrvFdWVqtWn14QxhX4JSpo1GipbUqr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xb8657b94520fd19c0d47e68b01dbe3fe2898be60572dfe75e9dc0ef0835be0ef","urls":["bzz-raw://db16b48d7aaf8a641202d5e9f0a76eac11da20b53c1de7b614a3ce338efce902","dweb:/ipfs/QmZTzTDbdXfWTqXTBRmvN8H4BqpsWqyoGmrCsz8F2MiLpX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol":{"keccak256":"0x297e88719cef1cbe9a65c0148bf4455815f03a8732209796c9cee54cae259858","urls":["bzz-raw://7a7ce38c53515056f2c40719e466b401bde8144287ea7c1c60032ec19a397d0a","dweb:/ipfs/QmXPdHnqYJ7GZ9oiFkDc9wLHMZfcwWZrscunYM1SsJkNaf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xf643942e4b4fff9a0a3cfac3d5e0743ce2024ea2a4efd86ae5e4ec250869d309","urls":["bzz-raw://20ac5628966565ffb9ac245f0f7e2d2e73381fb8e20693e83d51fa6414005f38","dweb:/ipfs/QmQizNNvZFEb4WEKgq4LPAxEAW3HAQiNDpboNb3MDmin5x"],"license":"MIT"},"src/contracts/networkRestakeDelegator/NetworkRestakeResetHook.sol":{"keccak256":"0x5553e819035f19a3c1ce3fe1005d2a28aedb48fe420a5f34fb2ae15c7fcab8c0","urls":["bzz-raw://161555dfeecaa1056c9ac3e10a6fb6898910fbb6175a7831b4c8c181f1f89206","dweb:/ipfs/Qma5jKA6KvrkZzUs4YFC21s6PNPHYuF3Tb1m1gM7gmAUHb"],"license":"MIT"},"src/interfaces/networkRestakeDelegator/INetworkRestakeResetHook.sol":{"keccak256":"0x252996d764b7dacd377670bcd049382a6cf00d54e5683d9fa20f0fecab134ded","urls":["bzz-raw://cf62184cafe2163737bcb585462ce74d718c7f6c828b6890e2378fb0c8f8b311","dweb:/ipfs/QmRGivFjiXyTvpVmLdgb8KZ44s6E5N48vzuQ6NATzzZ9nh"],"license":"MIT"}},"version":1},"id":103}
\ No newline at end of file
diff --git a/out/OperatorSpecificDecreaseHook.sol/OperatorSpecificDecreaseHook.json b/out/OperatorSpecificDecreaseHook.sol/OperatorSpecificDecreaseHook.json
new file mode 100644
index 0000000..26246e5
--- /dev/null
+++ b/out/OperatorSpecificDecreaseHook.sol/OperatorSpecificDecreaseHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"slashedAmount","type":"uint256","internalType":"uint256"},{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"NotOperatorSpecificDelegator","inputs":[]}],"bytecode":{"object":"0x608080604052346015576102a6908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b3461009d5760a036600319011261009d576024356001600160a01b0381160361009d5760643565ffffffffffff81160361009d5760843567ffffffffffffffff80821161009d573660238301121561009d57816004013590811161009d573691016024011161009d5761009b6044356004356100d7565b005b5f80fd5b90601f8019910116810190811067ffffffffffffffff8211176100c357604052565b634e487b7160e01b5f52604160045260245ffd5b906040908151635d927f4560e11b8152602060049281838581335afa928315610266575f93610226575b50600267ffffffffffffffff8094160361021757801561014b578451633eb22c0f60e01b81528481018790528281602481335afa92831561020d575f936101dd575b505081610153575b505050505050565b81808210911802811881039081116101ca57333b1561009d5783519462428a6960e31b86528386015260248501525f8460448183335af180156101c05761019c575b808061014b565b83116101ad5750525f808080610195565b604190634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b601183634e487b7160e01b5f525260245ffd5b9080929350813d8311610206575b6101f581836100a1565b8101031261009d5751905f80610143565b503d6101eb565b86513d5f823e3d90fd5b84516263a0ed60e51b81528490fd5b9092508181813d831161025f575b61023e81836100a1565b8101031261009d575167ffffffffffffffff8116810361009d57915f610101565b503d610234565b85513d5f823e3d90fdfea264697066735822122099c403524ebbf16895748fadcfdde3c9c5ed5540911b3123465cded0661befc364736f6c63430008190033","sourceMap":"543:839:115:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c63e49561ee14610024575f80fd5b3461009d5760a036600319011261009d576024356001600160a01b0381160361009d5760643565ffffffffffff81160361009d5760843567ffffffffffffffff80821161009d573660238301121561009d57816004013590811161009d573691016024011161009d5761009b6044356004356100d7565b005b5f80fd5b90601f8019910116810190811067ffffffffffffffff8211176100c357604052565b634e487b7160e01b5f52604160045260245ffd5b906040908151635d927f4560e11b8152602060049281838581335afa928315610266575f93610226575b50600267ffffffffffffffff8094160361021757801561014b578451633eb22c0f60e01b81528481018790528281602481335afa92831561020d575f936101dd575b505081610153575b505050505050565b81808210911802811881039081116101ca57333b1561009d5783519462428a6960e31b86528386015260248501525f8460448183335af180156101c05761019c575b808061014b565b83116101ad5750525f808080610195565b604190634e487b7160e01b5f525260245ffd5b83513d5f823e3d90fd5b601183634e487b7160e01b5f525260245ffd5b9080929350813d8311610206575b6101f581836100a1565b8101031261009d5751905f80610143565b503d6101eb565b86513d5f823e3d90fd5b84516263a0ed60e51b81528490fd5b9092508181813d831161025f575b61023e81836100a1565b8101031261009d575167ffffffffffffffff8116810361009d57915f610101565b503d610234565b85513d5f823e3d90fdfea264697066735822122099c403524ebbf16895748fadcfdde3c9c5ed5540911b3123465cded0661befc364736f6c63430008190033","sourceMap":"543:839:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:839:115;;;;;;-1:-1:-1;;;;;543:839:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;699:681;;543:839;;;;;;;910:26;;;;918:10;;;;;;910:26;;;;;;;;;;;699:681;543:839;940:1;543:839;;;;910:31;906:99;;1019:18;;1015:55;;543:839;;-1:-1:-1;;;1103:63:115;;;;;543:839;;;918:10;543:839;;;918:10;1103:63;;;;;;;910:26;1103:63;;;699:681;1180:17;;;1176:198;;699:681;;;;;;;:::o;1176:198::-;3463:5:104;;;;3066;;543:839:115;3060:42:104;;543:839:115;;;;;;;918:10;1213:150;;;;543:839;;;;;;1213:150;;;;;543:839;;;;;910:26;918:10;543:839;918:10;;;1213:150;;;;;;;;1176:198;;;;;1213:150;543:839;;;;;;1213:150;;;;;;543:839;;;;;;910:26;543:839;;;910:26;543:839;1213:150;543:839;;;910:26;543:839;;;;;;;;;;;910:26;543:839;;;910:26;543:839;1103:63;;;;;;;;;;;;;;;;;:::i;:::-;;;543:839;;;;;1103:63;;;;;;;;;;;543:839;;;910:26;543:839;;;;;906:99;543:839;;-1:-1:-1;;;964:30:115;;543:839;;964:30;910:26;;;;;;;;;;;;;;;;;:::i;:::-;;;543:839;;;;;;;;;;;;910:26;;;;;;;;;;543:839;;;910:26;543:839;;;;","linkReferences":{}},"methodIdentifiers":{"onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotOperatorSpecificDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slashedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/operatorSpecificDelegator/OperatorSpecificDecreaseHook.sol\":\"OperatorSpecificDecreaseHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"src/contracts/operatorSpecificDelegator/OperatorSpecificDecreaseHook.sol\":{\"keccak256\":\"0x3f4e95fad7074d026cb8fcced6874a60af8c9964f3308296b5d1c826ca5fce9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d0c038010e2416e6282e7819017f76d94dfd25cde6c62e228da1f939e330f97\",\"dweb:/ipfs/QmQynh7oxsf2MqeCnxucgL9cvoK6gsi68iYYqvrUMWAsNG\"]},\"src/interfaces/operatorSpecificDelegator/IOperatorSpecificDecreaseHook.sol\":{\"keccak256\":\"0x9b0518b66e4fd417079ef7376323aed939b5fe4c7e4a91a15b4bcd7693fdffb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d1fb73b893741bfca57b17112ed4cdf739815054a843adde5e13711c9c7177d\",\"dweb:/ipfs/QmecU7ZpQT5TbT7TLgqo3J3iR2j3JM26CTMZ38ErNQTPjS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"NotOperatorSpecificDelegator"},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"slashedAmount","type":"uint256"},{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/operatorSpecificDelegator/OperatorSpecificDecreaseHook.sol":"OperatorSpecificDecreaseHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"src/contracts/operatorSpecificDelegator/OperatorSpecificDecreaseHook.sol":{"keccak256":"0x3f4e95fad7074d026cb8fcced6874a60af8c9964f3308296b5d1c826ca5fce9f","urls":["bzz-raw://9d0c038010e2416e6282e7819017f76d94dfd25cde6c62e228da1f939e330f97","dweb:/ipfs/QmQynh7oxsf2MqeCnxucgL9cvoK6gsi68iYYqvrUMWAsNG"],"license":"MIT"},"src/interfaces/operatorSpecificDelegator/IOperatorSpecificDecreaseHook.sol":{"keccak256":"0x9b0518b66e4fd417079ef7376323aed939b5fe4c7e4a91a15b4bcd7693fdffb6","urls":["bzz-raw://3d1fb73b893741bfca57b17112ed4cdf739815054a843adde5e13711c9c7177d","dweb:/ipfs/QmecU7ZpQT5TbT7TLgqo3J3iR2j3JM26CTMZ38ErNQTPjS"],"license":"MIT"}},"version":1},"id":115}
\ No newline at end of file
diff --git a/out/OperatorSpecificResetHook.sol/OperatorSpecificResetHook.json b/out/OperatorSpecificResetHook.sol/OperatorSpecificResetHook.json
new file mode 100644
index 0000000..a4058ea
--- /dev/null
+++ b/out/OperatorSpecificResetHook.sol/OperatorSpecificResetHook.json
@@ -0,0 +1 @@
+{"abi":[{"type":"constructor","inputs":[{"name":"period","type":"uint48","internalType":"uint48"},{"name":"slashCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"PERIOD","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"SLASH_COUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"onSlash","inputs":[{"name":"subnetwork","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"InvalidBufferSize","inputs":[]},{"type":"error","name":"InvalidSlashCount","inputs":[]},{"type":"error","name":"NotOperatorSpecificDelegator","inputs":[]},{"type":"error","name":"NotVaultDelegator","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60c03460a357601f61069738819003918201601f19168301916001600160401b0383118484101760a757808492604094855283398101031260a35780519065ffffffffffff8216820360a3576020015190811560915760805260a0526040516105db90816100bc823960805181818161030a01526104bb015260a0518181816101970152818161036e015261047c0152f35b6040516339b5ac3d60e01b8152600490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060409080825260049182361015610016575f80fd5b5f915f3560e01c908163b4d1d7951461049f57508063d524c328146104655763e49561ee14610043575f80fd5b346102755760a0366003190112610275576001600160a01b0392803591906024908135868116036102755765ffffffffffff95606435878116036102755767ffffffffffffffff906084358281116102755736602382011215610275578084013583811161027557369101850111610275578451635d927f4560e11b81526020919082818681335afa80156104135784905f9061042c575b60029250160361041d57855163fbfa77cf60e01b815282818681335afa908115610413579082915f916103f6575b508751630ce9b79360e41b815291169183828781865afa9182156103ec575f926103bd575b50339116036103ad575f525f8152845f20865f528152845f2097600189019081541561036c575b8061015f42610573565b168a54905f199182811461033857600181018d55845461017e91610555565b845f52855f2001558a54928054808510818618028118927f000000000000000000000000000000000000000000000000000000000000000080851496876102b1575b505050505050506101cf578680f35b8451633eb22c0f60e01b815283810187905281818681335afa9182156102a7575f92610279575b5050610210575b5050505050809155805f80808080808680f35b333b156102755783519462428a6960e31b8652828601525f838601525f8560448183335af1801561026b57156101fd57909192938095501161025a575050525f80808080806101fd565b604190634e487b7160e01b5f52525ffd5b84513d5f823e3d90fd5b5f80fd5b90809250813d83116102a0575b61029081836104df565b8101031261027557515f806101f6565b503d610286565b86513d5f823e3d90fd5b90919293949596506102c242610573565b9583830192831161035a5782101561034a57906102de91610534565b90810190811161033857916102f885926103079594610555565b905f52855f2001549116610534565b907f00000000000000000000000000000000000000000000000000000000000000001610155f8080808080806101c0565b88601189634e487b7160e01b5f52525ffd5b8a603289634e487b715f5252601cfd5b8b60118c634e487b7160e01b5f52525ffd5b7f0000000000000000000000000000000000000000000000000000000000000000801561039d575f8b558255610155565b8751630c01a34b60e41b81528690fd5b85516318c0166360e31b81528490fd5b6103de919250843d86116103e5575b6103d681836104df565b810190610515565b905f61012e565b503d6103cc565b88513d5f823e3d90fd5b61040d9150843d86116103e5576103d681836104df565b5f610109565b87513d5f823e3d90fd5b85516263a0ed60e51b81528490fd5b50508281813d831161045e575b61044381836104df565b810103126102755751838116810361027557836002916100db565b503d610439565b5034610275575f36600319011261027557602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610275575f3660031901126102755760209065ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90601f8019910116810190811067ffffffffffffffff82111761050157604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261027557516001600160a01b03811681036102755790565b9190820391821161054157565b634e487b7160e01b5f52601160045260245ffd5b811561055f570690565b634e487b7160e01b5f52601260045260245ffd5b65ffffffffffff90818111610586571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfea2646970667358221220c55ffd58682350e60c60144fa60cbbb6299d2cb19e2ca7a62f435b687c31f6ff64736f6c63430008190033","sourceMap":"697:1807:105:-:0;;;;;;;;;;;;;-1:-1:-1;;697:1807:105;;;;-1:-1:-1;;;;;697:1807:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:15;;;1231:72;;1313:15;;1338:24;;697:1807;;;;;;;;1313:15;697:1807;;;;;;;;;;1338:24;697:1807;;;;;;;;;;;;;;;;1231:72;697:1807;;-1:-1:-1;;;1273:19:105;;;;;697:1807;-1:-1:-1;697:1807:105;;;;;;-1:-1:-1;697:1807:105;;;;;-1:-1:-1;697:1807:105","linkReferences":{}},"deployedBytecode":{"object":"0x608060409080825260049182361015610016575f80fd5b5f915f3560e01c908163b4d1d7951461049f57508063d524c328146104655763e49561ee14610043575f80fd5b346102755760a0366003190112610275576001600160a01b0392803591906024908135868116036102755765ffffffffffff95606435878116036102755767ffffffffffffffff906084358281116102755736602382011215610275578084013583811161027557369101850111610275578451635d927f4560e11b81526020919082818681335afa80156104135784905f9061042c575b60029250160361041d57855163fbfa77cf60e01b815282818681335afa908115610413579082915f916103f6575b508751630ce9b79360e41b815291169183828781865afa9182156103ec575f926103bd575b50339116036103ad575f525f8152845f20865f528152845f2097600189019081541561036c575b8061015f42610573565b168a54905f199182811461033857600181018d55845461017e91610555565b845f52855f2001558a54928054808510818618028118927f000000000000000000000000000000000000000000000000000000000000000080851496876102b1575b505050505050506101cf578680f35b8451633eb22c0f60e01b815283810187905281818681335afa9182156102a7575f92610279575b5050610210575b5050505050809155805f80808080808680f35b333b156102755783519462428a6960e31b8652828601525f838601525f8560448183335af1801561026b57156101fd57909192938095501161025a575050525f80808080806101fd565b604190634e487b7160e01b5f52525ffd5b84513d5f823e3d90fd5b5f80fd5b90809250813d83116102a0575b61029081836104df565b8101031261027557515f806101f6565b503d610286565b86513d5f823e3d90fd5b90919293949596506102c242610573565b9583830192831161035a5782101561034a57906102de91610534565b90810190811161033857916102f885926103079594610555565b905f52855f2001549116610534565b907f00000000000000000000000000000000000000000000000000000000000000001610155f8080808080806101c0565b88601189634e487b7160e01b5f52525ffd5b8a603289634e487b715f5252601cfd5b8b60118c634e487b7160e01b5f52525ffd5b7f0000000000000000000000000000000000000000000000000000000000000000801561039d575f8b558255610155565b8751630c01a34b60e41b81528690fd5b85516318c0166360e31b81528490fd5b6103de919250843d86116103e5575b6103d681836104df565b810190610515565b905f61012e565b503d6103cc565b88513d5f823e3d90fd5b61040d9150843d86116103e5576103d681836104df565b5f610109565b87513d5f823e3d90fd5b85516263a0ed60e51b81528490fd5b50508281813d831161045e575b61044381836104df565b810103126102755751838116810361027557836002916100db565b503d610439565b5034610275575f36600319011261027557602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610275575f3660031901126102755760209065ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90601f8019910116810190811067ffffffffffffffff82111761050157604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261027557516001600160a01b03811681036102755790565b9190820391821161054157565b634e487b7160e01b5f52601160045260245ffd5b811561055f570690565b634e487b7160e01b5f52601260045260245ffd5b65ffffffffffff90818111610586571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fdfea2646970667358221220c55ffd58682350e60c60144fa60cbbb6299d2cb19e2ca7a62f435b687c31f6ff64736f6c63430008190033","sourceMap":"697:1807:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;697:1807:105;;;;-1:-1:-1;;;;;697:1807:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1642:26:105;;697:1807;;;;;1650:10;697:1807;1650:10;1642:26;;;;;;;;697:1807;1642:26;;;697:1807;1672:1;697:1807;;;1642:31;1638:99;;697:1807;;-1:-1:-1;;;1763:46:105;;1650:10;697:1807;1650:10;697:1807;1650:10;1763:46;;;;;;;;;;697:1807;1763:46;;;697:1807;-1:-1:-1;697:1807:105;;-1:-1:-1;;;1824:25:105;;697:1807;;;1824:25;697:1807;1824:25;697:1807;;1824:25;;;;;;;697:1807;1824:25;;;697:1807;1650:10;;697:1807;;1824:39;1820:96;;697:1807;;;;;;;;;;;;;;;;3808:10:97;697:1807:105;3808:10:97;;697:1807:105;;;2023:20;2019:76;;697:1807;837:15:98;819:34;837:15;819:34;:::i;:::-;697:1807:105;;;;;;;;;;;;;;;;;;;3246:15:97;;;:::i;:::-;2399:111:90;697:1807:105;2399:111:90;;697:1807:105;2399:111:90;697:1807:105;;;;;;;3463:5:94;;;3066;;;697:1807:105;3060:42:94;;2185:11:105;;2167:29;;;:99;;;;697:1807;2163:333;;;;;;;;;697:1807;;;2163:333;697:1807;;-1:-1:-1;;;2286:63:105;;;;;697:1807;;;1650:10;697:1807;1650:10;697:1807;1650:10;2286:63;;;;;;;697:1807;2286:63;;;2163:333;2286:68;;2282:176;;2163:333;697:1807;;;;;;;;2163:333;;;;;;;697:1807;;;2282:176;1650:10;2374:69;;;;697:1807;;;;;;2374:69;;;;;697:1807;;;;;;;1650:10;697:1807;1650:10;;;2374:69;;;;;;;2282:176;2374:69;697:1807;;;;;;;;;;;;;;2374:69;;;;;2282:176;;697:1807;;;;;;;;;;;2374:69;697:1807;;;;;;;;;2374:69;697:1807;;;2286:63;;;;;;;;;;;;;;;;:::i;:::-;;;697:1807;;;;;2286:63;;;;;;;;;;697:1807;;;;;;;;;2167:99;837:15:98;;;;;;;;819:34;837:15;819:34;:::i;:::-;697:1807:105;;;;;;;;;4342:10:97;;;4338:79;;4466:9;;;;:::i;:::-;697:1807:105;;;;;;;;4465:25:97;;;;2200:56:105;4465:25:97;;;:::i;:::-;2399:111:90;697:1807:105;2399:111:90;;697:1807:105;2399:111:90;697:1807:105;1347:4:89;697:1807:105;;2200:56;:::i;:::-;2260:6;;697:1807;-1:-1:-1;2200:66:105;2167:99;;;;;;;;;697:1807;;;;;;;;;;;;4338:79:97;1763:135:89;1347:4;1763:135;;697:1807:105;1763:135:89;;;;697:1807:105;;;;;;;;;;;;2019:76;2072:11;2564:9:97;;2560:41;;697:1807:105;;;17855:72:85;;2019:76:105;;2560:41:97;697:1807:105;;-1:-1:-1;;;2582:19:97;;697:1807:105;;2582:19:97;1820:96:105;697:1807;;-1:-1:-1;;;1886:19:105;;697:1807;;1886:19;1824:25;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;697:1807;;;;;;;;;1763:46;;;;;;;;;;;;;;:::i;:::-;;;;;697:1807;;;;;;;;;1638:99;697:1807;;-1:-1:-1;;;1696:30:105;;697:1807;;1696:30;1642:26;;;;;;;;;;;;;;;;:::i;:::-;;;697:1807;;;;;;;;;;;;1642:26;1672:1;1642:26;;;;;;;;697:1807;;;;;;;-1:-1:-1;;697:1807:105;;;;;;;997:36;697:1807;;;;;;;;;-1:-1:-1;;697:1807:105;;;;;898:30;697:1807;898:30;697:1807;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;697:1807:105;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;14296:213:95;697:1807:105;14374:24:95;;;;14370:103;;697:1807:105;14296:213:95;:::o;14370:103::-;697:1807:105;;;;14421:41:95;;;;;;14452:2;14421:41;;;697:1807:105;;;;;14421:41:95","linkReferences":{},"immutableReferences":{"60707":[{"start":778,"length":32},{"start":1211,"length":32}],"60710":[{"start":407,"length":32},{"start":878,"length":32},{"start":1148,"length":32}]}},"methodIdentifiers":{"PERIOD()":"b4d1d795","SLASH_COUNT()":"d524c328","onSlash(bytes32,address,uint256,uint48,bytes)":"e49561ee"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"period\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"slashCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidBufferSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSlashCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperatorSpecificDelegator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PERIOD\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"subnetwork\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidBufferSize()\":[{\"details\":\"Error emitted when trying to setup a buffer with a size of 0.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"params\":{\"amount\":\"amount of the collateral to be slashed\",\"captureTimestamp\":\"time point when the stake was captured\",\"data\":\"some additional data\",\"operator\":\"address of the operator\",\"subnetwork\":\"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)\"}}},\"stateVariables\":{\"PERIOD\":{\"return\":\"threshold period\",\"returns\":{\"_0\":\"threshold period\"}},\"SLASH_COUNT\":{\"return\":\"threshold count\",\"returns\":{\"_0\":\"threshold count\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERIOD()\":{\"notice\":\"Get a period during which the slashing should occur to reset the operator's stake.\"},\"SLASH_COUNT()\":{\"notice\":\"Get a number of slashes that should occur during the PERIOD to reset the operator's stake.\"},\"onSlash(bytes32,address,uint256,uint48,bytes)\":{\"notice\":\"Called when a slash happens.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/operatorSpecificDelegator/OperatorSpecificResetHook.sol\":\"OperatorSpecificResetHook\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/core/src/interfaces/delegator/IDelegatorHook.sol\":{\"keccak256\":\"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780\",\"dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW\"]},\"lib/core/src/interfaces/delegator/IOperatorSpecificDelegator.sol\":{\"keccak256\":\"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441\",\"dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ\"]},\"lib/core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0x144dc121fe2c3f7f43d4a98afd74ca2adc71a6b1acc5b160a3f85ab5a1361c15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5dab57e8d40023254f2786f1909423b02fae08b04ac77080ad545d5592098cfe\",\"dweb:/ipfs/Qmb4qhaSCzZxcsykJSz4wPmWiZYocRdbyuVyA6qFRvf2uS\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x0aec5c16d6ebc343da74055b19e4f54e7d5ffeb85debf2fab0644bef87b7f86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e0ffb34cb439d66f5f63d09f9c0091e0a84c654f1793fe66bd568a23350905d\",\"dweb:/ipfs/QmdNTizRpzFLcvxskw1BJ6VgmCBgHcJAym7wB72G1wGv76\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4\",\"dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0xc1805f86a4f1ff277a7434b0aaff1cc02207f549d5a89cbaabfb203e19090432\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ff2eff3221171ccee5124ed8abd9036e23f7cfb66469e2397c6138b8cdf4f1\",\"dweb:/ipfs/Qme4kSEnCseAzudZcrvFdWVqtWn14QxhX4JSpo1GipbUqr\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xb8657b94520fd19c0d47e68b01dbe3fe2898be60572dfe75e9dc0ef0835be0ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db16b48d7aaf8a641202d5e9f0a76eac11da20b53c1de7b614a3ce338efce902\",\"dweb:/ipfs/QmZTzTDbdXfWTqXTBRmvN8H4BqpsWqyoGmrCsz8F2MiLpX\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966\",\"dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb\",\"dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol\":{\"keccak256\":\"0x297e88719cef1cbe9a65c0148bf4455815f03a8732209796c9cee54cae259858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a7ce38c53515056f2c40719e466b401bde8144287ea7c1c60032ec19a397d0a\",\"dweb:/ipfs/QmXPdHnqYJ7GZ9oiFkDc9wLHMZfcwWZrscunYM1SsJkNaf\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xf643942e4b4fff9a0a3cfac3d5e0743ce2024ea2a4efd86ae5e4ec250869d309\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ac5628966565ffb9ac245f0f7e2d2e73381fb8e20693e83d51fa6414005f38\",\"dweb:/ipfs/QmQizNNvZFEb4WEKgq4LPAxEAW3HAQiNDpboNb3MDmin5x\"]},\"src/contracts/operatorSpecificDelegator/OperatorSpecificResetHook.sol\":{\"keccak256\":\"0xf6b2e9beaaf00478880c10230e1c663d8ac833ce00638000676d2e2a66ddf481\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41347cd2738d7263f1ec4084d3414c182c9f81bb0eea69259cdd87dc7e3414a8\",\"dweb:/ipfs/QmU3MQ5eZgBz4NqCVXmYMESjfxQkB3TDG7iqE9C2mf9YPU\"]},\"src/interfaces/operatorSpecificDelegator/IOperatorSpecificResetHook.sol\":{\"keccak256\":\"0x7fe08de2e2edf2e4b238fadb88e97b648b5164cefca398e42bdfee7d72aa09c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cda027026737bd4f9cae795da8f44097ba19f4772e9def47d41526e0e4e3892\",\"dweb:/ipfs/QmZJQcvCqt4C8Ljpixqmfw4Bk4ZLhM14fBcPmd5ZzV5o2W\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint48","name":"period","type":"uint48"},{"internalType":"uint256","name":"slashCount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidBufferSize"},{"inputs":[],"type":"error","name":"InvalidSlashCount"},{"inputs":[],"type":"error","name":"NotOperatorSpecificDelegator"},{"inputs":[],"type":"error","name":"NotVaultDelegator"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"stateMutability":"view","type":"function","name":"PERIOD","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"subnetwork","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onSlash"}],"devdoc":{"kind":"dev","methods":{"onSlash(bytes32,address,uint256,uint48,bytes)":{"params":{"amount":"amount of the collateral to be slashed","captureTimestamp":"time point when the stake was captured","data":"some additional data","operator":"address of the operator","subnetwork":"full identifier of the subnetwork (address of the network concatenated with the uint96 identifier)"}}},"version":1},"userdoc":{"kind":"user","methods":{"PERIOD()":{"notice":"Get a period during which the slashing should occur to reset the operator's stake."},"SLASH_COUNT()":{"notice":"Get a number of slashes that should occur during the PERIOD to reset the operator's stake."},"onSlash(bytes32,address,uint256,uint48,bytes)":{"notice":"Called when a slash happens."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/contracts/operatorSpecificDelegator/OperatorSpecificResetHook.sol":"OperatorSpecificResetHook"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/core/src/interfaces/delegator/IDelegatorHook.sol":{"keccak256":"0xc51aa8d7d1f6c8043ee819b7aeb86da0e993912e1442098df897e299f01f9f46","urls":["bzz-raw://adddf5cb2ba282aeb576b26efb28640f865a1721cc9b6eee8b3ee0457a2c9780","dweb:/ipfs/QmNYgAmnLRwWZbhTuQhZs9rx4zcme1df5mEepkrniorSoW"],"license":"MIT"},"lib/core/src/interfaces/delegator/IOperatorSpecificDelegator.sol":{"keccak256":"0x72075cab585dc17240cc3e32bc99b92f0d5627ddd988fed680e3e1a52d5a01e4","urls":["bzz-raw://7448bc90699409ae61d85216b5efc2143a37f0f73354be2aea993bc54afca441","dweb:/ipfs/QmXE4gAxM8pHosZK8mcTcj17puBx484meDCcmrDePskGHZ"],"license":"MIT"},"lib/core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0x144dc121fe2c3f7f43d4a98afd74ca2adc71a6b1acc5b160a3f85ab5a1361c15","urls":["bzz-raw://5dab57e8d40023254f2786f1909423b02fae08b04ac77080ad545d5592098cfe","dweb:/ipfs/Qmb4qhaSCzZxcsykJSz4wPmWiZYocRdbyuVyA6qFRvf2uS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x0aec5c16d6ebc343da74055b19e4f54e7d5ffeb85debf2fab0644bef87b7f86a","urls":["bzz-raw://8e0ffb34cb439d66f5f63d09f9c0091e0a84c654f1793fe66bd568a23350905d","dweb:/ipfs/QmdNTizRpzFLcvxskw1BJ6VgmCBgHcJAym7wB72G1wGv76"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x156d11cd8394cb9245b0bb9d7a27f5b3e7193e3cec7b91a66474ae01af8d818c","urls":["bzz-raw://6f171e65be237fe4aaa2f7a74862c10a06535b8c04baa42e848a63c6fc96bcd4","dweb:/ipfs/QmUdz8WHcrjqYmbRaz5PFN2N2thfvQjcqTorZUfcmWTfat"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0xc1805f86a4f1ff277a7434b0aaff1cc02207f549d5a89cbaabfb203e19090432","urls":["bzz-raw://34ff2eff3221171ccee5124ed8abd9036e23f7cfb66469e2397c6138b8cdf4f1","dweb:/ipfs/Qme4kSEnCseAzudZcrvFdWVqtWn14QxhX4JSpo1GipbUqr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xb8657b94520fd19c0d47e68b01dbe3fe2898be60572dfe75e9dc0ef0835be0ef","urls":["bzz-raw://db16b48d7aaf8a641202d5e9f0a76eac11da20b53c1de7b614a3ce338efce902","dweb:/ipfs/QmZTzTDbdXfWTqXTBRmvN8H4BqpsWqyoGmrCsz8F2MiLpX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd2fb25b789ccaf6bf50b147ecff4c9d62d05d3f5c5d562fdf568f6926a2a280c","urls":["bzz-raw://521e2df6ed2080c9ae2f442b27a827551ab96ff2e5f920ad6dc978c355b4b966","dweb:/ipfs/Qme1Z6dU7ZDQMfKiHwpLejAyFGsP9HpijvX9uzxivEGjga"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cdcfbd2484c2e7db797f57ff8731fe11d7ab0092c7a1112f8ad6047ad6d4481","urls":["bzz-raw://356742c148ca77b9d953059072c32cf9d0d98ae782129fe442c73a6736bfd7cb","dweb:/ipfs/QmZN5jdoBbCihsv1RK8n6pf6cC89pi77KGAasn7ZvyuNTn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sol":{"keccak256":"0x297e88719cef1cbe9a65c0148bf4455815f03a8732209796c9cee54cae259858","urls":["bzz-raw://7a7ce38c53515056f2c40719e466b401bde8144287ea7c1c60032ec19a397d0a","dweb:/ipfs/QmXPdHnqYJ7GZ9oiFkDc9wLHMZfcwWZrscunYM1SsJkNaf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0xf643942e4b4fff9a0a3cfac3d5e0743ce2024ea2a4efd86ae5e4ec250869d309","urls":["bzz-raw://20ac5628966565ffb9ac245f0f7e2d2e73381fb8e20693e83d51fa6414005f38","dweb:/ipfs/QmQizNNvZFEb4WEKgq4LPAxEAW3HAQiNDpboNb3MDmin5x"],"license":"MIT"},"src/contracts/operatorSpecificDelegator/OperatorSpecificResetHook.sol":{"keccak256":"0xf6b2e9beaaf00478880c10230e1c663d8ac833ce00638000676d2e2a66ddf481","urls":["bzz-raw://41347cd2738d7263f1ec4084d3414c182c9f81bb0eea69259cdd87dc7e3414a8","dweb:/ipfs/QmU3MQ5eZgBz4NqCVXmYMESjfxQkB3TDG7iqE9C2mf9YPU"],"license":"MIT"},"src/interfaces/operatorSpecificDelegator/IOperatorSpecificResetHook.sol":{"keccak256":"0x7fe08de2e2edf2e4b238fadb88e97b648b5164cefca398e42bdfee7d72aa09c9","urls":["bzz-raw://6cda027026737bd4f9cae795da8f44097ba19f4772e9def47d41526e0e4e3892","dweb:/ipfs/QmZJQcvCqt4C8Ljpixqmfw4Bk4ZLhM14fBcPmd5ZzV5o2W"],"license":"MIT"}},"version":1},"id":105}
\ No newline at end of file
diff --git a/test/integration/SymbioticHooksBindings.sol b/test/integration/SymbioticHooksBindings.sol
new file mode 100644
index 0000000..aab5343
--- /dev/null
+++ b/test/integration/SymbioticHooksBindings.sol
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import "./SymbioticHooksImports.sol";
+
+import {Test} from "forge-std/Test.sol";
+
+contract SymbioticHooksBindings is Test {}
diff --git a/test/integration/SymbioticHooksConstants.sol b/test/integration/SymbioticHooksConstants.sol
new file mode 100644
index 0000000..c422386
--- /dev/null
+++ b/test/integration/SymbioticHooksConstants.sol
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import "./SymbioticHooksImports.sol";
+
+library SymbioticHooksConstants {}
diff --git a/test/integration/SymbioticHooksImports.sol b/test/integration/SymbioticHooksImports.sol
new file mode 100644
index 0000000..5385fb0
--- /dev/null
+++ b/test/integration/SymbioticHooksImports.sol
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import {IFullRestakeDecreaseHook as ISymbioticFullRestakeDecreaseHook} from
+ "../../src/interfaces/fullRestakeDelegator/IFullRestakeDecreaseHook.sol";
+import {IFullRestakeResetHook as ISymbioticFullRestakeResetHook} from
+ "../../src/interfaces/fullRestakeDelegator/IFullRestakeResetHook.sol";
+import {INetworkRestakeDecreaseHook as ISymbioticNetworkRestakeDecreaseHook} from
+ "../../src/interfaces/networkRestakeDelegator/INetworkRestakeDecreaseHook.sol";
+import {INetworkRestakeResetHook as ISymbioticNetworkRestakeResetHook} from
+ "../../src/interfaces/networkRestakeDelegator/INetworkRestakeResetHook.sol";
+import {INetworkRestakeRedistributeHook as ISymbioticNetworkRestakeRedistributeHook} from
+ "../../src/interfaces/networkRestakeDelegator/INetworkRestakeRedistributeHook.sol";
+import {IOperatorSpecificDecreaseHook as ISymbioticOperatorSpecificDecreaseHook} from
+ "../../src/interfaces/operatorSpecificDelegator/IOperatorSpecificDecreaseHook.sol";
+import {IOperatorSpecificResetHook as ISymbioticOperatorSpecificResetHook} from
+ "../../src/interfaces/operatorSpecificDelegator/IOperatorSpecificResetHook.sol";
+
+interface SymbioticHooksImports {}
diff --git a/test/integration/SymbioticHooksImportsContracts.sol b/test/integration/SymbioticHooksImportsContracts.sol
new file mode 100644
index 0000000..6b51299
--- /dev/null
+++ b/test/integration/SymbioticHooksImportsContracts.sol
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.25;
+
+import {FullRestakeDecreaseHook as SymbioticFullRestakeDecreaseHook} from
+ "../../src/contracts/fullRestakeDelegator/FullRestakeDecreaseHook.sol";
+import {FullRestakeResetHook as SymbioticFullRestakeResetHook} from
+ "../../src/contracts/fullRestakeDelegator/FullRestakeResetHook.sol";
+import {NetworkRestakeDecreaseHook as SymbioticNetworkRestakeDecreaseHook} from
+ "../../src/contracts/networkRestakeDelegator/NetworkRestakeDecreaseHook.sol";
+import {NetworkRestakeResetHook as SymbioticNetworkRestakeResetHook} from
+ "../../src/contracts/networkRestakeDelegator/NetworkRestakeResetHook.sol";
+import {NetworkRestakeRedistributeHook as SymbioticNetworkRestakeRedistributeHook} from
+ "../../src/contracts/networkRestakeDelegator/NetworkRestakeRedistributeHook.sol";
+import {OperatorSpecificDecreaseHook as SymbioticOperatorSpecificDecreaseHook} from
+ "../../src/contracts/operatorSpecificDelegator/OperatorSpecificDecreaseHook.sol";
+import {OperatorSpecificResetHook as SymbioticOperatorSpecificResetHook} from
+ "../../src/contracts/operatorSpecificDelegator/OperatorSpecificResetHook.sol";
+
+interface SymbioticHooksImportsContracts {}
diff --git a/test/integration/SymbioticHooksInit.sol b/test/integration/SymbioticHooksInit.sol
new file mode 100644
index 0000000..4971e6e
--- /dev/null
+++ b/test/integration/SymbioticHooksInit.sol
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import "@symbioticfi/core/test/integration/SymbioticCoreInit.sol";
+
+import "./SymbioticHooksImports.sol";
+
+import {SymbioticHooksConstants} from "./SymbioticHooksConstants.sol";
+import {SymbioticHooksBindings} from "./SymbioticHooksBindings.sol";
+
+import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
+
+contract SymbioticHooksInit is SymbioticCoreInit, SymbioticHooksBindings {
+ using SafeERC20 for IERC20;
+ using Math for uint256;
+
+ // General config
+
+ string public SYMBIOTIC_HOOKS_PROJECT_ROOT = "";
+
+ function setUp() public virtual override {
+ SymbioticCoreInit.setUp();
+ }
+
+ // ------------------------------------------------------------ HOOKS-RELATED HELPERS ------------------------------------------------------------ //
+
+ function _getNetworkRestakeDecreaseHook_SymbioticHooks() internal virtual returns (address) {
+ return deployCode(
+ string.concat(
+ SYMBIOTIC_HOOKS_PROJECT_ROOT, "out/NetworkRestakeDecreaseHook.sol/NetworkRestakeDecreaseHook.json"
+ )
+ );
+ }
+
+ function _getNetworkRestakeRedistributeHook_SymbioticHooks() internal virtual returns (address) {
+ return deployCode(
+ string.concat(
+ SYMBIOTIC_HOOKS_PROJECT_ROOT,
+ "out/NetworkRestakeRedistributeHook.sol/NetworkRestakeRedistributeHook.json"
+ )
+ );
+ }
+
+ function _getNetworkRestakeResetHook_SymbioticHooks(
+ uint48 period,
+ uint256 slashCount
+ ) internal virtual returns (address) {
+ return deployCode(
+ string.concat(SYMBIOTIC_HOOKS_PROJECT_ROOT, "out/NetworkRestakeResetHook.sol/NetworkRestakeResetHook.json"),
+ abi.encode(period, slashCount)
+ );
+ }
+
+ function _getNetworkRestakeResetHook_SymbioticHooks() internal virtual returns (address) {
+ return _getNetworkRestakeResetHook_SymbioticHooks(7 days, 3);
+ }
+
+ function _getFullRestakeDecreaseHook_SymbioticHooks() internal virtual returns (address) {
+ return deployCode(
+ string.concat(SYMBIOTIC_HOOKS_PROJECT_ROOT, "out/FullRestakeDecreaseHook.sol/FullRestakeDecreaseHook.json")
+ );
+ }
+
+ function _getFullRestakeResetHook_SymbioticHooks(
+ uint48 period,
+ uint256 slashCount
+ ) internal virtual returns (address) {
+ return deployCode(
+ string.concat(SYMBIOTIC_HOOKS_PROJECT_ROOT, "out/FullRestakeResetHook.sol/FullRestakeResetHook.json"),
+ abi.encode(period, slashCount)
+ );
+ }
+
+ function _getFullRestakeResetHook_SymbioticHooks() internal virtual returns (address) {
+ return _getFullRestakeResetHook_SymbioticHooks(7 days, 3);
+ }
+
+ function _getOperatorSpecificDecreaseHook_SymbioticHooks() internal virtual returns (address) {
+ return deployCode(
+ string.concat(
+ SYMBIOTIC_HOOKS_PROJECT_ROOT, "out/OperatorSpecificDecreaseHook.sol/OperatorSpecificDecreaseHook.json"
+ )
+ );
+ }
+
+ function _getOperatorSpecificResetHook_SymbioticHooks(
+ uint48 period,
+ uint256 slashCount
+ ) internal virtual returns (address) {
+ return deployCode(
+ string.concat(
+ SYMBIOTIC_HOOKS_PROJECT_ROOT, "out/OperatorSpecificResetHook.sol/OperatorSpecificResetHook.json"
+ )
+ );
+ }
+
+ function _getOperatorSpecificResetHook_SymbioticHooks() internal virtual returns (address) {
+ return _getOperatorSpecificResetHook_SymbioticHooks(7 days, 3);
+ }
+
+ function _getDecreaseHook_SymbioticHooks(
+ uint256 delegatorIndex
+ ) internal virtual returns (address) {
+ if (delegatorIndex == 0) {
+ return _getNetworkRestakeDecreaseHook_SymbioticHooks();
+ } else if (delegatorIndex == 1) {
+ return _getFullRestakeDecreaseHook_SymbioticHooks();
+ } else if (delegatorIndex == 2) {
+ return _getOperatorSpecificDecreaseHook_SymbioticHooks();
+ }
+ }
+
+ function _getRedistributionHook_SymbioticHooks(
+ uint256 delegatorIndex
+ ) internal virtual returns (address) {
+ if (delegatorIndex == 0) {
+ return _getNetworkRestakeRedistributeHook_SymbioticHooks();
+ }
+ }
+
+ function _getResetHook_SymbioticHooks(
+ uint256 delegatorIndex
+ ) internal virtual returns (address) {
+ if (delegatorIndex == 0) {
+ return _getNetworkRestakeResetHook_SymbioticHooks();
+ } else if (delegatorIndex == 1) {
+ return _getFullRestakeResetHook_SymbioticHooks();
+ } else if (delegatorIndex == 2) {
+ return _getOperatorSpecificResetHook_SymbioticHooks();
+ }
+ }
+
+ function _getHookRandom_SymbioticHooks(
+ uint256 delegatorIndex
+ ) internal virtual returns (address) {
+ uint256 hookType = _randomWithBounds_Symbiotic(0, 2);
+ if (hookType == 0) {
+ return _getDecreaseHook_SymbioticHooks(delegatorIndex);
+ } else if (hookType == 1) {
+ return _getRedistributionHook_SymbioticHooks(delegatorIndex);
+ } else if (hookType == 2) {
+ return _getResetHook_SymbioticHooks(delegatorIndex);
+ }
+ }
+}
diff --git a/test/integration/SymbioticHooksIntegration.sol b/test/integration/SymbioticHooksIntegration.sol
new file mode 100644
index 0000000..60af2a8
--- /dev/null
+++ b/test/integration/SymbioticHooksIntegration.sol
@@ -0,0 +1,74 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import "@symbioticfi/core/test/integration/SymbioticCoreIntegration.sol";
+
+import "./SymbioticHooksInit.sol";
+
+contract SymbioticHooksIntegration is SymbioticHooksInit, SymbioticCoreIntegration {
+ function setUp() public virtual override(SymbioticHooksInit, SymbioticCoreIntegration) {
+ SymbioticCoreIntegration.setUp();
+ }
+
+ function _getVaultRandom_SymbioticCore(
+ address[] memory operators,
+ address collateral
+ ) internal virtual override returns (address) {
+ uint48 epochDuration =
+ uint48(_randomWithBounds_Symbiotic(SYMBIOTIC_CORE_MIN_EPOCH_DURATION, SYMBIOTIC_CORE_MAX_EPOCH_DURATION));
+ uint48 vetoDuration = uint48(
+ _randomWithBounds_Symbiotic(
+ SYMBIOTIC_CORE_MIN_VETO_DURATION, Math.min(SYMBIOTIC_CORE_MAX_VETO_DURATION, epochDuration / 2)
+ )
+ );
+
+ uint256 count_ = 0;
+ uint64[] memory delegatorTypes = new uint64[](SYMBIOTIC_CORE_DELEGATOR_TYPES.length);
+ for (uint64 i; i < SYMBIOTIC_CORE_DELEGATOR_TYPES.length; ++i) {
+ if (SYMBIOTIC_CORE_DELEGATOR_TYPES[i] == 3) {
+ continue;
+ }
+ if (operators.length == 0 && SYMBIOTIC_CORE_DELEGATOR_TYPES[i] == 2) {
+ continue;
+ }
+ delegatorTypes[count_] = SYMBIOTIC_CORE_DELEGATOR_TYPES[i];
+ ++count_;
+ }
+ assembly ("memory-safe") {
+ mstore(delegatorTypes, count_)
+ }
+ uint64 delegatorIndex = _randomPick_Symbiotic(delegatorTypes);
+
+ count_ = 0;
+ uint64[] memory slasherTypes = new uint64[](SYMBIOTIC_CORE_SLASHER_TYPES.length);
+ for (uint64 i; i < SYMBIOTIC_CORE_SLASHER_TYPES.length; ++i) {
+ if (false) {
+ continue;
+ }
+ slasherTypes[count_] = SYMBIOTIC_CORE_SLASHER_TYPES[i];
+ ++count_;
+ }
+ assembly ("memory-safe") {
+ mstore(slasherTypes, count_)
+ }
+ uint64 slasherIndex = _randomPick_Symbiotic(slasherTypes);
+
+ // New code
+ address hook = _getHookRandom_SymbioticHooks(delegatorIndex);
+
+ return _getVault_SymbioticCore(
+ operators.length == 0 ? address(this) : _randomPick_Symbiotic(operators),
+ collateral,
+ 0x000000000000000000000000000000000000dEaD,
+ epochDuration,
+ new address[](0),
+ 0,
+ delegatorIndex,
+ hook,
+ address(0),
+ true,
+ slasherIndex,
+ vetoDuration
+ );
+ }
+}
diff --git a/test/integration/SymbioticHooksIntegrationExample.sol b/test/integration/SymbioticHooksIntegrationExample.sol
new file mode 100644
index 0000000..d4136e2
--- /dev/null
+++ b/test/integration/SymbioticHooksIntegrationExample.sol
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.0;
+
+import "./SymbioticHooksIntegration.sol";
+
+import {console2} from "forge-std/Test.sol";
+
+contract SymbioticHooksIntegrationExample is SymbioticHooksIntegration {
+ using SymbioticSubnetwork for bytes32;
+ using SymbioticSubnetwork for address;
+
+ address[] public networkVaults;
+
+ address[] public confirmedNetworkVaults;
+ mapping(address vault => address[]) public confirmedNetworkOperators;
+ mapping(address vault => bytes32[]) public neighborNetworks;
+
+ uint256 public SELECT_OPERATOR_CHANCE = 1; // lower -> higher probability
+
+ function setUp() public override {
+ SYMBIOTIC_CORE_PROJECT_ROOT = "lib/core/";
+ SYMBIOTIC_HOOKS_PROJECT_ROOT = "";
+ // vm.selectFork(vm.createFork(vm.rpcUrl("holesky")));
+ // SYMBIOTIC_INIT_BLOCK = 2_727_202;
+ // SYMBIOTIC_CORE_USE_EXISTING_DEPLOYMENT = true;
+
+ SYMBIOTIC_CORE_NUMBER_OF_STAKERS = 10;
+
+ super.setUp();
+ }
+
+ function test_NetworkWithHooks() public {
+ address middleware = address(111);
+ Vm.Wallet memory network = _getNetworkWithMiddleware_SymbioticCore(middleware);
+ uint96 identifier = 0;
+ address collateral = tokens_SymbioticCore[0];
+ bytes32 subnetwork = network.addr.subnetwork(identifier);
+
+ console2.log("Network:", network.addr);
+ console2.log("Identifier:", identifier);
+ console2.log("Collateral:", collateral);
+
+ for (uint256 i; i < vaults_SymbioticCore.length; ++i) {
+ address slasher = ISymbioticVault(vaults_SymbioticCore[i]).slasher();
+ if (
+ ISymbioticVault(vaults_SymbioticCore[i]).collateral() == collateral && slasher != address(0)
+ && ISymbioticBaseSlasher(slasher).TYPE() == 0
+ ) {
+ networkVaults.push(vaults_SymbioticCore[i]);
+ }
+ }
+
+ console2.log("Network Vaults:", networkVaults.length);
+
+ for (uint256 i; i < networkVaults.length; ++i) {
+ _networkSetMaxNetworkLimitRandom_SymbioticCore(network.addr, networkVaults[i], identifier);
+ if (_delegateToNetworkTry_SymbioticCore(networkVaults[i], subnetwork)) {
+ confirmedNetworkVaults.push(networkVaults[i]);
+ }
+ }
+
+ console2.log("Confirmed Network Vaults:", confirmedNetworkVaults.length);
+ console2.log("Operators:", operators_SymbioticCore.length);
+
+ for (uint256 i; i < confirmedNetworkVaults.length; ++i) {
+ for (uint256 j; j < operators_SymbioticCore.length; ++j) {
+ if (
+ ISymbioticOptInService(symbioticCore.operatorVaultOptInService).isOptedIn(
+ operators_SymbioticCore[j].addr, confirmedNetworkVaults[i]
+ ) && _randomChoice_Symbiotic(SELECT_OPERATOR_CHANCE)
+ ) {
+ _operatorOptInWeak_SymbioticCore(operators_SymbioticCore[j].addr, network.addr);
+ if (
+ _delegateToOperatorTry_SymbioticCore(
+ confirmedNetworkVaults[i], subnetwork, operators_SymbioticCore[j].addr
+ )
+ ) {
+ confirmedNetworkOperators[confirmedNetworkVaults[i]].push(operators_SymbioticCore[j].addr);
+ }
+ }
+ }
+
+ console2.log("Confirmed Network Operators:", confirmedNetworkOperators[confirmedNetworkVaults[i]].length);
+ }
+
+ for (uint256 i; i < confirmedNetworkVaults.length; ++i) {
+ console2.log("Confirmed Network Vault:", confirmedNetworkVaults[i]);
+ console2.log("Confirmed Network Operators:", confirmedNetworkOperators[confirmedNetworkVaults[i]].length);
+ for (uint256 j; j < confirmedNetworkOperators[confirmedNetworkVaults[i]].length; ++j) {
+ console2.log("Operator:", confirmedNetworkOperators[confirmedNetworkVaults[i]][j]);
+ console2.log(
+ "Stake:",
+ ISymbioticBaseDelegator(ISymbioticVault(confirmedNetworkVaults[i]).delegator()).stake(
+ subnetwork, confirmedNetworkOperators[confirmedNetworkVaults[i]][j]
+ )
+ );
+ }
+ }
+
+ _skipBlocks_Symbiotic(1);
+
+ uint48 captureTimestamp = uint48(vm.getBlockTimestamp() - 1);
+ for (uint256 i; i < confirmedNetworkVaults.length; ++i) {
+ for (uint256 j; j < confirmedNetworkOperators[confirmedNetworkVaults[i]].length; ++j) {
+ address slasher = ISymbioticVault(confirmedNetworkVaults[i]).slasher();
+ uint256 slashableStake = ISymbioticBaseSlasher(slasher).slashableStake(
+ subnetwork, confirmedNetworkOperators[confirmedNetworkVaults[i]][j], captureTimestamp, new bytes(0)
+ );
+ if (slashableStake == 0) {
+ continue;
+ }
+ console2.log("________________________________");
+ console2.log("Vault:", confirmedNetworkVaults[i]);
+ console2.log("Operator:", confirmedNetworkOperators[confirmedNetworkVaults[i]][j]);
+ _logAllocations(
+ confirmedNetworkVaults[i], subnetwork, confirmedNetworkOperators[confirmedNetworkVaults[i]][j]
+ );
+ console2.log("--------------");
+ _slash_SymbioticCore({
+ who: middleware,
+ vault: confirmedNetworkVaults[i],
+ subnetwork: subnetwork,
+ operator: confirmedNetworkOperators[confirmedNetworkVaults[i]][j],
+ amount: slashableStake,
+ captureTimestamp: captureTimestamp
+ });
+ _logAllocations(
+ confirmedNetworkVaults[i], subnetwork, confirmedNetworkOperators[confirmedNetworkVaults[i]][j]
+ );
+ }
+ }
+ }
+
+ function _logAllocations(address vault, bytes32 subnetwork, address operator) internal {
+ address delegator = ISymbioticVault(vault).delegator();
+ uint256 type_ = ISymbioticBaseDelegator(delegator).TYPE();
+ if (type_ == 0) {
+ console2.log("Network Limit:", ISymbioticNetworkRestakeDelegator(delegator).networkLimit(subnetwork));
+ console2.log(
+ "Operator Network Shares:",
+ ISymbioticNetworkRestakeDelegator(delegator).operatorNetworkShares(subnetwork, operator)
+ );
+ } else if (type_ == 1) {
+ console2.log("Network Limit:", ISymbioticFullRestakeDelegator(delegator).networkLimit(subnetwork));
+ console2.log(
+ "Operator Network Shares:",
+ ISymbioticFullRestakeDelegator(delegator).operatorNetworkLimit(subnetwork, operator)
+ );
+ } else if (type_ == 2) {
+ console2.log("Network Limit:", ISymbioticOperatorSpecificDelegator(delegator).networkLimit(subnetwork));
+ }
+ }
+}