UNPKG

@reclaimprotocol/attestor-core

Version:

<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>

1,444 lines (1,435 loc) 371 kB
// src/external-rpc/handle-incoming-msg.ts import { hexlify as hexlify3 } from "ethers"; // src/avs/client/create-claim-on-avs.ts import { EventLog as EventLog2, hexlify as hexlify2, Wallet as Wallet3 } from "ethers"; // src/utils/env.ts function detectEnvironment() { if (typeof navigator !== "undefined" && navigator.product === "ReactNative") { return "react-native"; } if (typeof window !== "undefined") { return "browser"; } return "node"; } function getEnvVariable(name) { if (typeof process === "undefined") { return void 0; } return process?.env[name]; } // src/avs/config.ts var CHAIN_CONFIGS = { "31337": { rpcUrl: "http://localhost:8545", contractAddress: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB", delegationManagerAddress: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", stakeRegistryAddress: "0x9E545E3C0baAB3E08CdfD552C960A1050f373042", avsDirectoryAddress: "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707" }, "17000": { rpcUrl: getEnvVariable("RPC_URL") || "https://rpc.holesky.ethpandaops.io", contractAddress: "0x0861afc305999bfD3028dB66145395BdD7299366", delegationManagerAddress: "0xA44151489861Fe9e3055d95adC98FbD462B948e7", stakeRegistryAddress: "0xDa11C9Da04Ab02C4AF9374B27A5E727944D3E1dD", avsDirectoryAddress: "0x055733000064333CaDDbC92763c58BF0192fFeBf" } }; var PRIVATE_KEY = getEnvVariable("PRIVATE_KEY"); var SELECTED_CHAIN_ID = getEnvVariable("CHAIN_ID"); var RECLAIM_PUBLIC_URL = getEnvVariable("RECLAIM_PUBLIC_URL"); // src/avs/utils/contracts.ts import { Contract as Contract2, JsonRpcProvider, Wallet } from "ethers"; // src/avs/abis/avsDirectoryABI.ts var avsDirectoryABI = [ { type: "constructor", inputs: [ { name: "_delegation", type: "address", internalType: "contract IDelegationManager" } ], stateMutability: "nonpayable" }, { type: "function", name: "DOMAIN_TYPEHASH", inputs: [], outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], stateMutability: "view" }, { type: "function", name: "OPERATOR_AVS_REGISTRATION_TYPEHASH", inputs: [], outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], stateMutability: "view" }, { type: "function", name: "avsOperatorStatus", inputs: [ { name: "", type: "address", internalType: "address" }, { name: "", type: "address", internalType: "address" } ], outputs: [ { name: "", type: "uint8", internalType: "enum IAVSDirectory.OperatorAVSRegistrationStatus" } ], stateMutability: "view" }, { type: "function", name: "calculateOperatorAVSRegistrationDigestHash", inputs: [ { name: "operator", type: "address", internalType: "address" }, { name: "avs", type: "address", internalType: "address" }, { name: "salt", type: "bytes32", internalType: "bytes32" }, { name: "expiry", type: "uint256", internalType: "uint256" } ], outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], stateMutability: "view" }, { type: "function", name: "cancelSalt", inputs: [{ name: "salt", type: "bytes32", internalType: "bytes32" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "delegation", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract IDelegationManager" } ], stateMutability: "view" }, { type: "function", name: "deregisterOperatorFromAVS", inputs: [{ name: "operator", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "domainSeparator", inputs: [], outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }], stateMutability: "view" }, { type: "function", name: "initialize", inputs: [ { name: "initialOwner", type: "address", internalType: "address" }, { name: "_pauserRegistry", type: "address", internalType: "contract IPauserRegistry" }, { name: "initialPausedStatus", type: "uint256", internalType: "uint256" } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "operatorSaltIsSpent", inputs: [ { name: "", type: "address", internalType: "address" }, { name: "", type: "bytes32", internalType: "bytes32" } ], outputs: [{ name: "", type: "bool", internalType: "bool" }], stateMutability: "view" }, { type: "function", name: "owner", inputs: [], outputs: [{ name: "", type: "address", internalType: "address" }], stateMutability: "view" }, { type: "function", name: "pause", inputs: [ { name: "newPausedStatus", type: "uint256", internalType: "uint256" } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "pauseAll", inputs: [], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "paused", inputs: [{ name: "index", type: "uint8", internalType: "uint8" }], outputs: [{ name: "", type: "bool", internalType: "bool" }], stateMutability: "view" }, { type: "function", name: "paused", inputs: [], outputs: [{ name: "", type: "uint256", internalType: "uint256" }], stateMutability: "view" }, { type: "function", name: "pauserRegistry", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract IPauserRegistry" } ], stateMutability: "view" }, { type: "function", name: "registerOperatorToAVS", inputs: [ { name: "operator", type: "address", internalType: "address" }, { name: "operatorSignature", type: "tuple", internalType: "struct ISignatureUtils.SignatureWithSaltAndExpiry", components: [ { name: "signature", type: "bytes", internalType: "bytes" }, { name: "salt", type: "bytes32", internalType: "bytes32" }, { name: "expiry", type: "uint256", internalType: "uint256" } ] } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "renounceOwnership", inputs: [], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "setPauserRegistry", inputs: [ { name: "newPauserRegistry", type: "address", internalType: "contract IPauserRegistry" } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "transferOwnership", inputs: [{ name: "newOwner", type: "address", internalType: "address" }], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "unpause", inputs: [ { name: "newPausedStatus", type: "uint256", internalType: "uint256" } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "updateAVSMetadataURI", inputs: [{ name: "metadataURI", type: "string", internalType: "string" }], outputs: [], stateMutability: "nonpayable" }, { type: "event", name: "AVSMetadataURIUpdated", inputs: [ { name: "avs", type: "address", indexed: true, internalType: "address" }, { name: "metadataURI", type: "string", indexed: false, internalType: "string" } ], anonymous: false }, { type: "event", name: "Initialized", inputs: [ { name: "version", type: "uint8", indexed: false, internalType: "uint8" } ], anonymous: false }, { type: "event", name: "OperatorAVSRegistrationStatusUpdated", inputs: [ { name: "operator", type: "address", indexed: true, internalType: "address" }, { name: "avs", type: "address", indexed: true, internalType: "address" }, { name: "status", type: "uint8", indexed: false, internalType: "enum IAVSDirectory.OperatorAVSRegistrationStatus" } ], anonymous: false }, { type: "event", name: "OwnershipTransferred", inputs: [ { name: "previousOwner", type: "address", indexed: true, internalType: "address" }, { name: "newOwner", type: "address", indexed: true, internalType: "address" } ], anonymous: false }, { type: "event", name: "Paused", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address" }, { name: "newPausedStatus", type: "uint256", indexed: false, internalType: "uint256" } ], anonymous: false }, { type: "event", name: "PauserRegistrySet", inputs: [ { name: "pauserRegistry", type: "address", indexed: false, internalType: "contract IPauserRegistry" }, { name: "newPauserRegistry", type: "address", indexed: false, internalType: "contract IPauserRegistry" } ], anonymous: false }, { type: "event", name: "Unpaused", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address" }, { name: "newPausedStatus", type: "uint256", indexed: false, internalType: "uint256" } ], anonymous: false } ]; // src/avs/abis/delegationABI.ts var delegationABI = [{ "type": "function", "name": "DELEGATION_APPROVAL_TYPEHASH", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "DOMAIN_TYPEHASH", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "STAKER_DELEGATION_TYPEHASH", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "beaconChainETHStrategy", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract IStrategy" }], "stateMutability": "view" }, { "type": "function", "name": "calculateCurrentStakerDelegationDigestHash", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "calculateDelegationApprovalDigestHash", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "_delegationApprover", "type": "address", "internalType": "address" }, { "name": "approverSalt", "type": "bytes32", "internalType": "bytes32" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "calculateStakerDelegationDigestHash", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "_stakerNonce", "type": "uint256", "internalType": "uint256" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "calculateWithdrawalRoot", "inputs": [{ "name": "withdrawal", "type": "tuple", "internalType": "struct IDelegationManager.Withdrawal", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "pure" }, { "type": "function", "name": "completeQueuedWithdrawal", "inputs": [{ "name": "withdrawal", "type": "tuple", "internalType": "struct IDelegationManager.Withdrawal", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }, { "name": "tokens", "type": "address[]", "internalType": "contract IERC20[]" }, { "name": "middlewareTimesIndex", "type": "uint256", "internalType": "uint256" }, { "name": "receiveAsTokens", "type": "bool", "internalType": "bool" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "completeQueuedWithdrawals", "inputs": [{ "name": "withdrawals", "type": "tuple[]", "internalType": "struct IDelegationManager.Withdrawal[]", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }, { "name": "tokens", "type": "address[][]", "internalType": "contract IERC20[][]" }, { "name": "middlewareTimesIndexes", "type": "uint256[]", "internalType": "uint256[]" }, { "name": "receiveAsTokens", "type": "bool[]", "internalType": "bool[]" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "cumulativeWithdrawalsQueued", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "decreaseDelegatedShares", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "delegateTo", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }, { "name": "approverSignatureAndExpiry", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithExpiry", "components": [{ "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }] }, { "name": "approverSalt", "type": "bytes32", "internalType": "bytes32" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "delegateToBySignature", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "stakerSignatureAndExpiry", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithExpiry", "components": [{ "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }] }, { "name": "approverSignatureAndExpiry", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithExpiry", "components": [{ "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }] }, { "name": "approverSalt", "type": "bytes32", "internalType": "bytes32" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "delegatedTo", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "delegationApprover", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "delegationApproverSaltIsSpent", "inputs": [{ "name": "_delegationApprover", "type": "address", "internalType": "address" }, { "name": "salt", "type": "bytes32", "internalType": "bytes32" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "domainSeparator", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "earningsReceiver", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "getOperatorShares", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }], "outputs": [{ "name": "", "type": "uint256[]", "internalType": "uint256[]" }], "stateMutability": "view" }, { "type": "function", "name": "getWithdrawalDelay", "inputs": [{ "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "increaseDelegatedShares", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "isDelegated", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "isOperator", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "migrateQueuedWithdrawals", "inputs": [{ "name": "withdrawalsToQueue", "type": "tuple[]", "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]", "components": [{ "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }, { "name": "staker", "type": "address", "internalType": "address" }, { "name": "withdrawerAndNonce", "type": "tuple", "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", "components": [{ "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint96", "internalType": "uint96" }] }, { "name": "withdrawalStartBlock", "type": "uint32", "internalType": "uint32" }, { "name": "delegatedAddress", "type": "address", "internalType": "address" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "minWithdrawalDelayBlocks", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "modifyOperatorDetails", "inputs": [{ "name": "newOperatorDetails", "type": "tuple", "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "operatorDetails", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "tuple", "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "stateMutability": "view" }, { "type": "function", "name": "operatorShares", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }, { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "queueWithdrawals", "inputs": [{ "name": "queuedWithdrawalParams", "type": "tuple[]", "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]", "components": [{ "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }, { "name": "withdrawer", "type": "address", "internalType": "address" }] }], "outputs": [{ "name": "", "type": "bytes32[]", "internalType": "bytes32[]" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "registerAsOperator", "inputs": [{ "name": "registeringOperatorDetails", "type": "tuple", "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }, { "name": "metadataURI", "type": "string", "internalType": "string" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "stakerNonce", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "stakerOptOutWindowBlocks", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "strategyWithdrawalDelayBlocks", "inputs": [{ "name": "strategy", "type": "address", "internalType": "contract IStrategy" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "undelegate", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "withdrawalRoot", "type": "bytes32[]", "internalType": "bytes32[]" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateOperatorMetadataURI", "inputs": [{ "name": "metadataURI", "type": "string", "internalType": "string" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "MinWithdrawalDelayBlocksSet", "inputs": [{ "name": "previousValue", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newValue", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "OperatorDetailsModified", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOperatorDetails", "type": "tuple", "indexed": false, "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "anonymous": false }, { "type": "event", "name": "OperatorMetadataURIUpdated", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "metadataURI", "type": "string", "indexed": false, "internalType": "string" }], "anonymous": false }, { "type": "event", "name": "OperatorRegistered", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operatorDetails", "type": "tuple", "indexed": false, "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "anonymous": false }, { "type": "event", "name": "OperatorSharesDecreased", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "staker", "type": "address", "indexed": false, "internalType": "address" }, { "name": "strategy", "type": "address", "indexed": false, "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "OperatorSharesIncreased", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "staker", "type": "address", "indexed": false, "internalType": "address" }, { "name": "strategy", "type": "address", "indexed": false, "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "StakerDelegated", "inputs": [{ "name": "staker", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StakerForceUndelegated", "inputs": [{ "name": "staker", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StakerUndelegated", "inputs": [{ "name": "staker", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StrategyWithdrawalDelayBlocksSet", "inputs": [{ "name": "strategy", "type": "address", "indexed": false, "internalType": "contract IStrategy" }, { "name": "previousValue", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newValue", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "WithdrawalCompleted", "inputs": [{ "name": "withdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }], "anonymous": false }, { "type": "event", "name": "WithdrawalMigrated", "inputs": [{ "name": "oldWithdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "newWithdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }], "anonymous": false }, { "type": "event", "name": "WithdrawalQueued", "inputs": [{ "name": "withdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "withdrawal", "type": "tuple", "indexed": false, "internalType": "struct IDelegationManager.Withdrawal", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }], "anonymous": false }]; // src/avs/abis/registryABI.ts var registryABI = [ { "type": "constructor", "inputs": [ { "name": "_delegationManager", "type": "address", "internalType": "contract IDelegationManager" } ], "stateMutability": "nonpayable" }, { "type": "function", "name": "deregisterOperator", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "getLastCheckpointOperatorWeight", "inputs": [ { "name": "_operator", "type": "address", "internalType": "address" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "getLastCheckpointThresholdWeight", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "getLastCheckpointThresholdWeightAtBlock", "inputs": [ { "name": "_blockNumber", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "getLastCheckpointTotalWeight", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "getLastCheckpointTotalWeightAtBlock", "inputs": [ { "name": "_blockNumber", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "getOperatorWeight", "inputs": [ { "name": "_operator", "type": "address", "internalType": "address" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "getOperatorWeightAtBlock", "inputs": [ { "name": "_operator", "type": "address", "internalType": "address" }, { "name": "_blockNumber", "type": "uint32", "internalType": "uint32" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "initialize", "inputs": [ { "name": "_serviceManager", "type": "address", "internalType": "address" }, { "name": "_thresholdWeight", "type": "uint256", "internalType": "uint256" }, { "name": "_quorum", "type": "tuple", "internalType": "struct Quorum", "components": [ { "name": "strategies", "type": "tuple[]", "internalType": "struct StrategyParams[]", "components": [ { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "multiplier", "type": "uint96", "internalType": "uint96" } ] } ] } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "isValidSignature", "inputs": [ { "name": "_dataHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "_signatureData", "type": "bytes", "internalType": "bytes" } ], "outputs": [ { "name": "", "type": "bytes4", "internalType": "bytes4" } ], "stateMutability": "view" }, { "type": "function", "name": "minimumWeight", "inputs": [], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "operatorRegistered", "inputs": [ { "name": "_operator", "type": "address", "internalType": "address" } ], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "owner", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", "name": "quorum", "inputs": [], "outputs": [ { "name": "", "type": "tuple", "internalType": "struct Quorum", "components": [ { "name": "strategies", "type": "tuple[]", "internalType": "struct StrategyParams[]", "components": [ { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "multiplier", "type": "uint96", "internalType": "uint96" } ] } ] } ], "stateMutability": "view" }, { "type": "function", "name": "registerOperatorWithSignature", "inputs": [ { "name": "_operator", "type": "address", "internalType": "address" }, { "name": "_operatorSignature", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry", "components": [ { "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" } ] } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "transferOwnership", "inputs": [ { "name": "newOwner", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateMinimumWeight", "inputs": [ { "name": "_newMinimumWeight", "type": "uint256", "internalType": "uint256" }, { "name": "_operators", "type": "address[]", "internalType": "address[]" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateOperators", "inputs": [ { "name": "_operators", "type": "address[]", "internalType": "address[]" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateOperatorsForQuorum", "inputs": [ { "name": "operatorsPerQuorum", "type": "address[][]", "internalType": "address[][]" }, { "name": "", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateQuorumConfig", "inputs": [ { "name": "_quorum", "type": "tuple", "internalType": "struct Quorum", "components": [ { "name": "strategies", "type": "tuple[]", "internalType": "struct StrategyParams[]", "components": [ { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "multiplier", "type": "uint96", "internalType": "uint96" } ] } ] }, { "name": "_operators", "type": "address[]", "internalType": "address[]" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateStakeThreshold", "inputs": [ { "name": "_thresholdWeight", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "Initialized", "inputs": [ { "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" } ], "anonymous": false }, { "type": "event", "name": "MinimumWeightUpdated", "inputs": [ { "name": "_old", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "_new", "type": "uint256", "indexed": false, "internalType": "uint256" } ], "anonymous": false }, { "type": "event", "name": "OperatorDeregistered", "inputs": [ { "name": "_operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "_avs", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "OperatorRegistered", "inputs": [ { "name": "_operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "_avs", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "OperatorWeightUpdated", "inputs": [ { "name": "_operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "oldWeight", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newWeight", "type": "uint256", "indexed": false, "internalType": "uint256" } ], "anonymous": false }, { "type": "event", "name": "OwnershipTransferred", "inputs": [ { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "QuorumUpdated", "inputs": [ { "name": "_old", "type": "tuple", "indexed": false, "internalType": "struct Quorum", "components": [ { "name": "strategies", "type": "tuple[]", "internalType": "struct StrategyParams[]", "components": [ { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "multiplier", "type": "uint96", "internalType": "uint96" } ] } ] }, { "name": "_new", "type": "tuple", "indexed": false, "internalType": "struct Quorum", "components": [ { "name": "strategies", "type": "tuple[]", "internalType": "struct StrategyParams[]", "components": [ { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "multiplier", "type": "uint96", "internalType": "uint96" } ] } ] } ], "anonymous": false }, { "type": "event", "name": "ThresholdWeightUpdated", "inputs": [ { "name": "_thresholdWeight", "type": "uint256", "indexed": false, "internalType": "uint256" } ], "anonymous": false }, { "type": "event", "name": "TotalWeightUpdated", "inputs": [ { "name": "oldTotalWeight", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newTotalWeight", "type": "uint256", "indexed": false, "internalType": "uint256" } ], "anonymous": false }, { "type": "event", "name": "UpdateMinimumWeight", "inputs": [ { "name": "oldMinimumWeight", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newMinimumWeight", "type": "uint256", "indexed": false, "internalType": "uint256" } ], "anonymous": false }, { "type": "error", "name": "InsufficientSignedStake", "inputs": [] }, { "type": "error", "name": "InsufficientWeight", "inputs": [] }, { "type": "error", "name": "InvalidLength", "inputs": [] }, { "type": "error", "name": "InvalidQuorum", "inputs": [] }, { "type": "error", "name": "InvalidSignature", "inputs": [] }, { "type": "error", "name": "InvalidSignedWeight", "inputs": [] }, { "type": "error", "name": "InvalidThreshold", "inputs": [] }, { "type": "error", "name": "LengthMismatch", "inputs": [] }, { "type": "error", "name": "MustUpdateAllOperators", "inputs": [] }, { "type": "error", "name": "NotSorted", "inputs": [] }, { "type": "error", "name": "OperatorAlreadyRegistered", "inputs": [] }, { "type": "error", "name": "OperatorNotRegistered", "inputs": [] } ]; // src/avs/contracts/factories/ReclaimServiceManager__factory.ts import { Contract, ContractFactory, Interface } from "ethers"; var _abi = [ { type: "constructor", inputs: [ { name: "_avsDirectory", type: "address", internalType: "address" }, { name: "_stakeRegistry", type: "address", internalType: "address" }, { name: "_delegationManager", type: "address", internalType: "address" } ], stateMutability: "nonpayable" }, { type: "function", name: "admins", inputs: [ { name: "", type: "uint256", internalType: "uint256" } ], outputs: [ { name: "", type: "address", internalType: "address" } ], stateMutability: "view" }, { type: "function", name: "allTaskHashes", inputs: [ { name: "", type: "uint32", internalType: "uint32" } ], outputs: [ { name: "", type: "bytes32", internalType: "bytes32" } ], stateMutability: "view" }, { type: "function", name: "avsDirectory", inputs: [], outputs: [ { name: "", type: "address", internalType: "address" } ], stateMutability: "view" }, { type: "function", name: "checkSignerAddress", inputs: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string" }, { name: "claimUserId", type: "bytes32", internalType: "bytes32" }, { name: "claimHash", type: "bytes32", internalType: "bytes32" }, { name: "requestedAt", type: "uint32", internalType: "uint32" }, { name: "owner", type: "address", internalType: "address" } ] }, { name: "requestSignature", type: "bytes", internalType: "bytes" } ], outputs: [ { name: "", type: "address", internalType: "address" } ], stateMutability: "pure" }, { type: "function", name: "createNewTask", inputs: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string" }, { name: "claimUserId", type: "bytes32", internalType: "bytes32" }, { name: "claimHash", type: "bytes32", internalType: "bytes32" }, { name: "requestedAt", type: "uint32", internalType: "uint32" }, { name: "owner", type: "address", internalType: "address" } ] }, { name: "requestSignature", type: "bytes", internalType: "bytes" } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "deregisterOperatorFromAVS", inputs: [ { name: "operator", type: "address", internalType: "address" } ], outputs: [], stateMutability: "nonpayable" }, { type: "function", name: "encodeClaimRequest", inputs: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string" }, { name: "claimUserId", type: "bytes32", internalType: "bytes32" }, { name: "claimHash", type: "bytes32", internalType: "bytes32" }, { name: "requestedAt", type: "uint32", internalType: "uint32" }, { name: "owner", type: "address", internalType: "address" } ] } ], outputs: [ { name: "", type: "bytes", internalType: "bytes" } ], stateMutability: "pure" }, { type: "function", name: "getMetadataForOperator", inputs: [ { name: "operator", type: "address", internalType: "address" } ], outputs: [ { name: "", type: "tuple", internalType: "struct IReclaimServiceManager.OperatorMetadata", components: [ { name: "addr", type: "address", internalType: "address" }, { name: "url", type: "string", internalType: "string" } ] } ], stateMutability: "view" }, { type: "function", name: "getOperatorRestakedStrategies", inputs: [ { name: "_operator", type: "address", internalType: "address" } ], outputs: [ { name: "", type: "address[]", internalType: "address[]" } ], stateMutability: "view" }, { type: "function", name: "getRestakeableStrategies", inputs: [], outputs: [ { name: "", type: "address[]", internalType: "address[]" } ], stateMutability: "view" }, { type: "function", name: "isAdmin", inputs: [ { name: "_admin", type: "address", internalType: "address" } ], outputs: [ { name: "", type: "bool", internalType: "bool" } ], stateMutability: "view" }, { type: "function", name: "isOperatorWhitelisted", inputs: [ { name: "operator", type: "address", internalType: "address"