interface IBAP578 {
enum Status { Paused, Active, Terminated }
struct State {
uint256 balance;
Status status;
address owner;
address logicAddress;
uint256 lastActionTimestamp;
}
struct AgentMetadata {
string persona;
string experience;
string voiceHash;
string animationURI;
string vaultURI;
bytes32 vaultHash;
}
function createAgent(
address to,
address logicAddress,
string memory metadataURI,
AgentMetadata memory extendedMetadata
) external returns (uint256 tokenId);
function executeAction(uint256 tokenId, bytes calldata data) external returns (bytes memory);
function setLogicAddress(uint256 tokenId, address newLogic) external;
function fundAgent(uint256 tokenId) external payable;
function getState(uint256 tokenId) external view returns (State memory);
function pause(uint256 tokenId) external;
function unpause(uint256 tokenId) external;
function terminate(uint256 tokenId) external;
function getAgentMetadata(uint256 tokenId) external view returns (AgentMetadata memory);
}struct State {
uint256 balance; // Agent's BNB balance
Status status; // Current status (Active/Paused/Terminated)
address owner; // Current owner address
address logicAddress; // Logic contract address
uint256 lastActionTimestamp; // Last action execution time
}struct AgentMetadata {
string persona; // JSON-encoded character traits
string experience; // Agent's role and purpose
string voiceHash; // Audio profile reference
string animationURI; // Animation/avatar URI
string vaultURI; // Extended data storage URI
bytes32 vaultHash; // Vault content verification hash
}function createAgent(
address to,
address logicAddress,
string memory metadataURI,
AgentMetadata memory extendedMetadata
) external returns (uint256 tokenId);function executeAction(uint256 tokenId, bytes calldata data) external returns (bytes memory result);function setLogicAddress(uint256 tokenId, address newLogic) external;function pause(uint256 tokenId) external;
function unpause(uint256 tokenId) external;
function terminate(uint256 tokenId) external;function fundAgent(uint256 tokenId) external payable;event ActionExecuted(address indexed agent, bytes result);
event LogicUpgraded(address indexed agent, address oldLogic, address newLogic);
event AgentFunded(address indexed agent, address indexed funder, uint256 amount);
event StatusChanged(address indexed agent, Status newStatus);
event MetadataUpdated(uint256 indexed tokenId, string metadataURI);