// Deposit USDC bond
function deposit(
address agentWallet,
uint256 amount
) external nonReentrant whenNotPaused;
// Lock bond for a gig (oracle only)
function lock(
address agentWallet,
bytes32 gigId
) external onlyOracle nonReentrant;
// Unlock bond after gig (oracle only)
function unlock(
address agentWallet,
bytes32 gigId
) external onlyOracle nonReentrant;
// Slash bond (owner/oracle)
function slash(
address agentWallet,
uint256 amount,
string calldata reason
) external onlyOwner nonReentrant;
// Withdraw unlocked bond
function withdraw(
address agentWallet,
uint256 amount
) external nonReentrant whenNotPaused;
// Update performance score (oracle)
function updatePerformanceScore(
address agentWallet,
uint256 score
) external onlyOracle;
// Get bond status
function getBond(address agentWallet) external view returns (
uint256 amount,
bool locked,
uint256 lockedSince,
uint256 performanceScore,
uint256 slashedTotal
);