ABI Reference
Key function signatures for integrating with ClawWallet contracts. All contracts use Solidity ^0.8.24.
ClawWalletFactory V2
Address: 0xf6B945dBf532D376A475E31be32F51972915B1cc
// === Factory Functions ===
function createWallet(address agent) external payable returns (address wallet);
function createWalletDeterministic(address agent, bytes32 salt) external payable returns (address wallet);
function predictWalletAddress(address owner, address agent) external view returns (address);
function predictWalletAddressWithSalt(bytes32 salt) external view returns (address);
// === Views ===
function agentToWallet(address agent) external view returns (address);
function walletToAgent(address wallet) external view returns (address);
function isClawWallet(address wallet) external view returns (bool);
function getWalletCount() external view returns (uint256);
function getWalletByIndex(uint256 index) external view returns (address);
function allWallets(uint256 index) external view returns (address);
// === Fee ===
function creationFee() external view returns (uint256);
function treasury() external view returns (address);
// === Admin (onlyOwner) ===
function setCreationFee(uint256 _creationFee) external;
function setTreasury(address _treasury) external;
function setDefaultPaymaster(address paymaster) external;
function setSkillRegistry(address _skillRegistry) external;
function setWalletBytecodeHash(bytes32 _newHash) external;
function withdrawFees() external;
ClawWallet
Deployed per-agent by ClawWalletFactory
// === Core Execution ===
function execute(address target, uint256 value, bytes calldata data) external payable returns (bytes memory);
function executeBatch(address[] calldata targets, uint256[] calldata values, bytes[] calldata datas) external payable returns (bytes[] memory);
// === Session Keys ===
function addSessionKey(address key, uint256 validUntil, uint256 spendingLimit, address[] calldata allowedTargets) external;
function revokeSessionKey(address key) external;
function getSessionKey(address key) external view returns (SessionKey memory);
// === Spending Limits ===
function setSpendingLimits(uint256 perTxLimit, uint256 dailyLimit) external;
function getSpendingConfig() external view returns (SpendingConfig memory);
// === Skills ===
function installSkill(address skill) external;
function uninstallSkill(address skill) external;
function isSkillInstalled(address skill) external view returns (bool);
function getInstalledSkills() external view returns (address[] memory);
// === Emergency ===
function freeze() external;
function unfreeze() external;
function setCoSigner(address newCoSigner) external;
// === ERC-20 ===
function transferERC20(address token, address to, uint256 amount) external;
function approveERC20(address token, address spender, uint256 amount) external;
// === ERC-1271 ===
function isValidSignature(bytes32 hash, bytes calldata signature) external view returns (bytes4);
// === ERC-8004 Identity ===
function erc8004Register(string calldata agentURI) external returns (uint256 agentId);
function erc8004RegisterWithMetadata(string calldata agentURI, MetadataEntry[] calldata metadata) external returns (uint256 agentId);
function erc8004SetAgentURI(string calldata newURI) external;
function erc8004SetMetadata(string calldata key, bytes calldata value) external;
function erc8004GetMetadata(string calldata key) external view returns (bytes memory);
function setERC8004Registries(address _identity, address _reputation, address _validation) external;
function setERC8004Identity(address _identityContract, uint256 _tokenId) external;
// === ERC-8004 Reputation ===
function erc8004GiveFeedback(uint256 agentId, int128 value, uint8 valueDecimals, string calldata tag1, string calldata tag2, string calldata endpoint, string calldata feedbackURI, bytes32 feedbackHash) external;
function erc8004RevokeFeedback(uint256 agentId, uint64 feedbackIndex) external;
function erc8004AppendResponse(uint256 agentId, address clientAddress, uint64 feedbackIndex, string calldata responseURI, bytes32 responseHash) external;
function erc8004GetReputation(address[] calldata clientAddresses, string calldata tag1, string calldata tag2) external view returns (uint64 count, int128 summaryValue, uint8 summaryValueDecimals);
// === ERC-8004 Validation ===
function erc8004RequestValidation(address validatorAddress, string calldata requestURI, bytes32 requestHash) external;
function erc8004GetValidationStatus(bytes32 requestHash) external view returns (address, uint256, uint8, bytes32, string memory, uint256);
function erc8004GetValidationSummary(address[] calldata validatorAddresses, string calldata tag) external view returns (uint64 count, uint8 averageResponse);
// === Views ===
function owner() external view returns (address);
function agent() external view returns (address);
function coSigner() external view returns (address);
function isFrozen() external view returns (bool);
function nonce() external view returns (uint256);
function erc8004AgentId() external view returns (uint256);
function skillRegistry() external view returns (address);
ClawPaymaster
Address: 0x7BBBBbDaCE3EA19Fe317e620CbD89F1040F2ddAf
// === Sponsorship ===
function validateSponsorship(address wallet, uint256 gasAmount) external view returns (bool);
function recordSponsorship(address wallet, uint256 gasUsed) external;
// === Configuration ===
function setWalletConfig(address wallet, SponsorshipMode mode, uint256 dailyGasLimit) external;
function setDefaultMode(SponsorshipMode mode) external;
function setDefaultDailyGasLimit(uint256 limit) external;
// === Funding ===
function fund() external payable;
function defund(address payable to, uint256 amount) external;
// === Views ===
function getWalletConfig(address wallet) external view returns (WalletConfig memory);
function getBalance() external view returns (uint256);
function getRemainingDailyGas(address wallet) external view returns (uint256);
function defaultMode() external view returns (SponsorshipMode);
function defaultDailyGasLimit() external view returns (uint256);
function totalSponsored() external view returns (uint256);
function walletFactory() external view returns (address);
// enum SponsorshipMode { FREE_TIER, TOKEN_PAID, REVENUE_FUNDED }
ERC8004 IdentityRegistry
Address: 0x01949e45FabCD684bcD4747966145140aB4778E5
// === Registration ===
function register() external payable returns (uint256 agentId);
function register(string calldata agentURI) external payable returns (uint256 agentId);
function register(string calldata agentURI, MetadataEntry[] calldata metadata) external payable returns (uint256 agentId);
// === URI ===
function setAgentURI(uint256 agentId, string calldata newURI) external;
function tokenURI(uint256 tokenId) external view returns (string memory); // ERC-721
// === Metadata ===
function setMetadata(uint256 agentId, string memory key, bytes memory value) external;
function getMetadata(uint256 agentId, string memory key) external view returns (bytes memory);
// === Agent Wallet ===
function setAgentWallet(uint256 agentId, address newWallet, uint256 deadline, bytes calldata signature) external;
function getAgentWallet(uint256 agentId) external view returns (address);
function unsetAgentWallet(uint256 agentId) external;
// === Views ===
function totalAgents() external view returns (uint256);
function agentRegistry() external view returns (string memory);
function mintFee() external view returns (uint256);
function treasury() external view returns (address);
// === ERC-721 Standard ===
function ownerOf(uint256 tokenId) external view returns (address);
function balanceOf(address owner) external view returns (uint256);
function transferFrom(address from, address to, uint256 tokenId) external;
function approve(address to, uint256 tokenId) external;
function setApprovalForAll(address operator, bool approved) external;
// struct MetadataEntry { string metadataKey; bytes metadataValue; }
ERC8004 ReputationRegistry
Address: 0x2AAab9989a127F9Cad871311673fd8c727738F5F
function giveFeedback(uint256 agentId, int128 value, uint8 valueDecimals, string calldata tag1, string calldata tag2, string calldata endpoint, string calldata feedbackURI, bytes32 feedbackHash) external;
function revokeFeedback(uint256 agentId, uint64 feedbackIndex) external;
function appendResponse(uint256 agentId, address clientAddress, uint64 feedbackIndex, string calldata responseURI, bytes32 responseHash) external;
function getSummary(uint256 agentId, address[] calldata clientAddresses, string calldata tag1, string calldata tag2) external view returns (uint64 count, int128 summaryValue, uint8 summaryValueDecimals);
function readFeedback(uint256 agentId, address clientAddress, uint64 feedbackIndex) external view returns (int128 value, uint8 valueDecimals, string memory tag1, string memory tag2, bool isRevoked);
function getClients(uint256 agentId) external view returns (address[] memory);
function getLastIndex(uint256 agentId, address clientAddress) external view returns (uint64);
function getIdentityRegistry() external view returns (address);
ERC8004 ValidationRegistry
Address: 0x0703367EDa108aB5b7181c4d5feB6eC1C29476dc
function validationRequest(address validatorAddress, uint256 agentId, string calldata requestURI, bytes32 requestHash) external;
function validationResponse(bytes32 requestHash, uint8 response, string calldata responseURI, bytes32 responseHash, string calldata tag) external;
function getValidationStatus(bytes32 requestHash) external view returns (address, uint256, uint8, bytes32, string memory, uint256);
function getSummary(uint256 agentId, address[] calldata validatorAddresses, string calldata tag) external view returns (uint64 count, uint8 averageResponse);
function getAgentValidations(uint256 agentId) external view returns (bytes32[] memory);
function getValidatorRequests(address validatorAddress) external view returns (bytes32[] memory);
function getIdentityRegistry() external view returns (address);
ClawSkillRegistry V2
Address: 0xb9913F4fceA83fF3F9c7D56339Abc196408Cf21b
function registerSkill(address skill, string calldata name, string calldata version, string calldata description) external payable;
function approveSkill(address skill) external;
function revokeSkill(address skill) external;
function recordSkillCall(address skill) external;
function getSkillMetadata(address skill) external view returns (SkillMetadata memory);
function isApproved(address skill) external view returns (bool);
function isRegistered(address skill) external view returns (bool);
function getAllSkills() external view returns (address[] memory);
function getApprovedSkills() external view returns (address[] memory);
function getSkillCount() external view returns (uint256);
function registrationFee() external view returns (uint256);
function isGovernor(address) external view returns (bool);
// struct SkillMetadata { string name; string version; string description; address author; bool approved; uint256 registeredAt; uint256 totalCalls; }
PinchToken
Address: 0xF8e86087dc452a52aA5d1bb66FaE56F869C33412
// Standard ERC-20 + custom
function TOTAL_SUPPLY() external view returns (uint256);
function lockedSupply() external view returns (uint256);
function burn(uint256 amount) external;
function releaseLocked(address to, uint256 amount) external;
PinchStaking
Address: 0x4D43eD221a96db3C4A46E26ae19D05f07b65A3d7
function stake(uint256 amount, uint8 lockTier) external;
function unstake(uint256 stakeId) external;
function claimRewards(uint256 stakeId) external;
function addRewards(uint256 amount) external;
function getUserStakeCount(address user) external view returns (uint256);
function getUserStake(address user, uint256 stakeId) external view returns (Stake memory);
function pendingReward(address user, uint256 stakeId) external view returns (uint256);
function totalWeight() external view returns (uint256);
function accRewardPerWeight() external view returns (uint256);
function totalRewardsDeposited() external view returns (uint256);
function bufferedRewards() external view returns (uint256);
function tiers(uint256 index) external view returns (uint256 lockDuration, uint256 multiplier);
function pinchToken() external view returns (address);
// struct Stake { uint256 amount; uint8 tier; uint256 stakedAt; uint256 unlockAt; uint256 rewardDebt; bool withdrawn; }
ClawDividends
Address: 0x3441aa2Bf84EDF9f44A2ad3b93BDCce7D801Fb06
function depositETH() external payable;
function depositERC20(address token, uint256 amount) external;
function createEpoch(address token, address[] calldata holders, uint256[] calldata nftCounts, uint256 totalNFTs, bytes32 snapshotHash) external;
function cancelEpoch(uint256 epochId) external;
function claim(uint256 epochId) external;
function claimMultiple(uint256[] calldata epochIds) external;
function claimAll() external;
function pendingDividends(address holder) external view returns (uint256 ethPending, address[] memory tokens, uint256[] memory amounts);
function getClaimable(uint256 epochId, address holder) external view returns (uint256);
function getEpoch(uint256 epochId) external view returns (Epoch memory);
function getHolderSnapshot(uint256 epochId, address holder) external view returns (HolderSnapshot memory);
function getUnclaimedEpochs(address holder) external view returns (uint256[] memory);
function currentEpoch() external view returns (uint256);
function calculateShare(uint256 grossFees) external view returns (uint256);
ClawTokenLauncher
Address: 0x89B974b6977157f1E7D743D70e28fCA1B5Ca84b5
function launchToken(string calldata name, string calldata symbol, uint256 totalSupply, address agentWallet, uint256 feeRateBps, uint256 liquidityLockDays) external returns (address token);
function addLiquidity(address token, uint256 tokenAmount) external payable;
function withdrawLiquidity(address token) external;
function getTokenCount() external view returns (uint256);
function getLaunchConfig(address token) external view returns (LaunchConfig memory);
function getAgentTokens(address agentWallet) external view returns (address[] memory);
function isLiquidityLocked(address token) external view returns (bool);
function allTokens(uint256 index) external view returns (address);
function minFeeRate() external view returns (uint256);
function maxFeeRate() external view returns (uint256);
function minLiquidityLockDays() external view returns (uint256);
function defaultAgentFeeSplit() external view returns (uint256);