{"vault": [{"type": "constructor", "inputs": [{"name": "owner_", "type": "address", "internalType": "address"}, {"name": "agent_", "type": "address", "internalType": "address"}, {"name": "policy_", "type": "tuple", "internalType": "struct WardenVault.Policy", "components": [{"name": "maxPerTx", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerHour", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerDay", "type": "uint128", "internalType": "uint128"}, {"name": "holdThreshold", "type": "uint128", "internalType": "uint128"}, {"name": "holdDelay", "type": "uint64", "internalType": "uint64"}]}, {"name": "targets", "type": "address[]", "internalType": "address[]"}, {"name": "selectors", "type": "bytes4[]", "internalType": "bytes4[]"}], "stateMutability": "nonpayable"}, {"type": "receive", "stateMutability": "payable"}, {"type": "function", "name": "PLAIN_ETH", "inputs": [], "outputs": [{"name": "", "type": "bytes4", "internalType": "bytes4"}], "stateMutability": "view"}, {"type": "function", "name": "acceptOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "agent", "inputs": [], "outputs": [{"name": "", "type": "address", "internalType": "address"}], "stateMutability": "view"}, {"type": "function", "name": "allowed", "inputs": [{"name": "", "type": "address", "internalType": "address"}, {"name": "", "type": "bytes4", "internalType": "bytes4"}], "outputs": [{"name": "", "type": "bool", "internalType": "bool"}], "stateMutability": "view"}, {"type": "function", "name": "cancelHeld", "inputs": [{"name": "id", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "dayIndex", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "daySpent", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "execute", "inputs": [{"name": "target", "type": "address", "internalType": "address"}, {"name": "value", "type": "uint256", "internalType": "uint256"}, {"name": "data", "type": "bytes", "internalType": "bytes"}], "outputs": [{"name": "id", "type": "uint256", "internalType": "uint256"}], "stateMutability": "nonpayable"}, {"type": "function", "name": "executeHeld", "inputs": [{"name": "id", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "getHeld", "inputs": [{"name": "id", "type": "uint256", "internalType": "uint256"}], "outputs": [{"name": "target", "type": "address", "internalType": "address"}, {"name": "value", "type": "uint256", "internalType": "uint256"}, {"name": "data", "type": "bytes", "internalType": "bytes"}, {"name": "eta", "type": "uint256", "internalType": "uint256"}, {"name": "state", "type": "uint8", "internalType": "uint8"}], "stateMutability": "view"}, {"type": "function", "name": "halt", "inputs": [], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "halted", "inputs": [], "outputs": [{"name": "", "type": "bool", "internalType": "bool"}], "stateMutability": "view"}, {"type": "function", "name": "heldCount", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "hourIndex", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "hourSpent", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "owner", "inputs": [], "outputs": [{"name": "", "type": "address", "internalType": "address"}], "stateMutability": "view"}, {"type": "function", "name": "ownerCall", "inputs": [{"name": "target", "type": "address", "internalType": "address"}, {"name": "value", "type": "uint256", "internalType": "uint256"}, {"name": "data", "type": "bytes", "internalType": "bytes"}], "outputs": [{"name": "", "type": "bytes", "internalType": "bytes"}], "stateMutability": "nonpayable"}, {"type": "function", "name": "pendingOwner", "inputs": [], "outputs": [{"name": "", "type": "address", "internalType": "address"}], "stateMutability": "view"}, {"type": "function", "name": "policy", "inputs": [], "outputs": [{"name": "maxPerTx", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerHour", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerDay", "type": "uint128", "internalType": "uint128"}, {"name": "holdThreshold", "type": "uint128", "internalType": "uint128"}, {"name": "holdDelay", "type": "uint64", "internalType": "uint64"}], "stateMutability": "view"}, {"type": "function", "name": "resume", "inputs": [], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "setAgent", "inputs": [{"name": "agent_", "type": "address", "internalType": "address"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "setAllowed", "inputs": [{"name": "targets", "type": "address[]", "internalType": "address[]"}, {"name": "selectors", "type": "bytes4[]", "internalType": "bytes4[]"}, {"name": "ok", "type": "bool", "internalType": "bool"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "setPolicy", "inputs": [{"name": "p", "type": "tuple", "internalType": "struct WardenVault.Policy", "components": [{"name": "maxPerTx", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerHour", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerDay", "type": "uint128", "internalType": "uint128"}, {"name": "holdThreshold", "type": "uint128", "internalType": "uint128"}, {"name": "holdDelay", "type": "uint64", "internalType": "uint64"}]}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "setTokenCap", "inputs": [{"name": "token", "type": "address", "internalType": "address"}, {"name": "cap", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "status", "inputs": [], "outputs": [{"name": "owner_", "type": "address", "internalType": "address"}, {"name": "agent_", "type": "address", "internalType": "address"}, {"name": "halted_", "type": "bool", "internalType": "bool"}, {"name": "balance_", "type": "uint256", "internalType": "uint256"}, {"name": "policy_", "type": "tuple", "internalType": "struct WardenVault.Policy", "components": [{"name": "maxPerTx", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerHour", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerDay", "type": "uint128", "internalType": "uint128"}, {"name": "holdThreshold", "type": "uint128", "internalType": "uint128"}, {"name": "holdDelay", "type": "uint64", "internalType": "uint64"}]}, {"name": "spentThisHour", "type": "uint256", "internalType": "uint256"}, {"name": "spentToday", "type": "uint256", "internalType": "uint256"}, {"name": "heldCount_", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "tokenDayCap", "inputs": [{"name": "", "type": "address", "internalType": "address"}], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "tokenSpent", "inputs": [{"name": "", "type": "address", "internalType": "address"}, {"name": "", "type": "uint256", "internalType": "uint256"}], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "transferOwnership", "inputs": [{"name": "to", "type": "address", "internalType": "address"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "withdraw", "inputs": [{"name": "to", "type": "address", "internalType": "address payable"}, {"name": "amount", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "function", "name": "withdrawToken", "inputs": [{"name": "token", "type": "address", "internalType": "address"}, {"name": "to", "type": "address", "internalType": "address"}, {"name": "amount", "type": "uint256", "internalType": "uint256"}], "outputs": [], "stateMutability": "nonpayable"}, {"type": "event", "name": "AgentSet", "inputs": [{"name": "agent", "type": "address", "indexed": true, "internalType": "address"}], "anonymous": false}, {"type": "event", "name": "AllowSet", "inputs": [{"name": "target", "type": "address", "indexed": true, "internalType": "address"}, {"name": "selector", "type": "bytes4", "indexed": true, "internalType": "bytes4"}, {"name": "ok", "type": "bool", "indexed": false, "internalType": "bool"}], "anonymous": false}, {"type": "event", "name": "Deposited", "inputs": [{"name": "from", "type": "address", "indexed": true, "internalType": "address"}, {"name": "value", "type": "uint256", "indexed": false, "internalType": "uint256"}], "anonymous": false}, {"type": "event", "name": "Executed", "inputs": [{"name": "target", "type": "address", "indexed": true, "internalType": "address"}, {"name": "value", "type": "uint256", "indexed": false, "internalType": "uint256"}, {"name": "selector", "type": "bytes4", "indexed": false, "internalType": "bytes4"}], "anonymous": false}, {"type": "event", "name": "HaltSet", "inputs": [{"name": "halted", "type": "bool", "indexed": false, "internalType": "bool"}], "anonymous": false}, {"type": "event", "name": "HeldCancelled", "inputs": [{"name": "id", "type": "uint256", "indexed": true, "internalType": "uint256"}], "anonymous": false}, {"type": "event", "name": "HeldExecuted", "inputs": [{"name": "id", "type": "uint256", "indexed": true, "internalType": "uint256"}], "anonymous": false}, {"type": "event", "name": "HeldMove", "inputs": [{"name": "id", "type": "uint256", "indexed": true, "internalType": "uint256"}, {"name": "target", "type": "address", "indexed": true, "internalType": "address"}, {"name": "value", "type": "uint256", "indexed": false, "internalType": "uint256"}, {"name": "eta", "type": "uint256", "indexed": false, "internalType": "uint256"}], "anonymous": false}, {"type": "event", "name": "OwnershipTransferStarted", "inputs": [{"name": "from", "type": "address", "indexed": true, "internalType": "address"}, {"name": "to", "type": "address", "indexed": true, "internalType": "address"}], "anonymous": false}, {"type": "event", "name": "OwnershipTransferred", "inputs": [{"name": "from", "type": "address", "indexed": true, "internalType": "address"}, {"name": "to", "type": "address", "indexed": true, "internalType": "address"}], "anonymous": false}, {"type": "event", "name": "PolicySet", "inputs": [{"name": "policy", "type": "tuple", "indexed": false, "internalType": "struct WardenVault.Policy", "components": [{"name": "maxPerTx", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerHour", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerDay", "type": "uint128", "internalType": "uint128"}, {"name": "holdThreshold", "type": "uint128", "internalType": "uint128"}, {"name": "holdDelay", "type": "uint64", "internalType": "uint64"}]}], "anonymous": false}, {"type": "event", "name": "TokenCapSet", "inputs": [{"name": "token", "type": "address", "indexed": true, "internalType": "address"}, {"name": "cap", "type": "uint256", "indexed": false, "internalType": "uint256"}], "anonymous": false}, {"type": "event", "name": "Withdrawn", "inputs": [{"name": "to", "type": "address", "indexed": true, "internalType": "address"}, {"name": "token", "type": "address", "indexed": true, "internalType": "address"}, {"name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256"}], "anonymous": false}, {"type": "error", "name": "CallFailed", "inputs": [{"name": "reason", "type": "bytes", "internalType": "bytes"}]}, {"type": "error", "name": "Halted", "inputs": []}, {"type": "error", "name": "InfiniteApproval", "inputs": []}, {"type": "error", "name": "NotAgent", "inputs": []}, {"type": "error", "name": "NotAllowlisted", "inputs": [{"name": "target", "type": "address", "internalType": "address"}, {"name": "selector", "type": "bytes4", "internalType": "bytes4"}]}, {"type": "error", "name": "NotOwner", "inputs": []}, {"type": "error", "name": "NotPending", "inputs": [{"name": "id", "type": "uint256", "internalType": "uint256"}]}, {"type": "error", "name": "OverDayCap", "inputs": [{"name": "wouldBe", "type": "uint256", "internalType": "uint256"}, {"name": "cap", "type": "uint256", "internalType": "uint256"}]}, {"type": "error", "name": "OverHourCap", "inputs": [{"name": "wouldBe", "type": "uint256", "internalType": "uint256"}, {"name": "cap", "type": "uint256", "internalType": "uint256"}]}, {"type": "error", "name": "OverTokenCap", "inputs": [{"name": "token", "type": "address", "internalType": "address"}, {"name": "wouldBe", "type": "uint256", "internalType": "uint256"}, {"name": "cap", "type": "uint256", "internalType": "uint256"}]}, {"type": "error", "name": "OverTxCap", "inputs": [{"name": "value", "type": "uint256", "internalType": "uint256"}, {"name": "cap", "type": "uint256", "internalType": "uint256"}]}, {"type": "error", "name": "Reentrancy", "inputs": []}, {"type": "error", "name": "StillHeld", "inputs": [{"name": "id", "type": "uint256", "internalType": "uint256"}, {"name": "eta", "type": "uint256", "internalType": "uint256"}]}, {"type": "error", "name": "ZeroAddress", "inputs": []}], "factory": [{"type": "function", "name": "allVaults", "inputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "outputs": [{"name": "", "type": "address", "internalType": "address"}], "stateMutability": "view"}, {"type": "function", "name": "createVault", "inputs": [{"name": "agent", "type": "address", "internalType": "address"}, {"name": "policy", "type": "tuple", "internalType": "struct WardenVault.Policy", "components": [{"name": "maxPerTx", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerHour", "type": "uint128", "internalType": "uint128"}, {"name": "maxPerDay", "type": "uint128", "internalType": "uint128"}, {"name": "holdThreshold", "type": "uint128", "internalType": "uint128"}, {"name": "holdDelay", "type": "uint64", "internalType": "uint64"}]}, {"name": "targets", "type": "address[]", "internalType": "address[]"}, {"name": "selectors", "type": "bytes4[]", "internalType": "bytes4[]"}], "outputs": [{"name": "vault", "type": "address", "internalType": "address"}], "stateMutability": "payable"}, {"type": "function", "name": "vaultCount", "inputs": [], "outputs": [{"name": "", "type": "uint256", "internalType": "uint256"}], "stateMutability": "view"}, {"type": "function", "name": "vaultsOf", "inputs": [{"name": "owner", "type": "address", "internalType": "address"}], "outputs": [{"name": "", "type": "address[]", "internalType": "address[]"}], "stateMutability": "view"}, {"type": "event", "name": "VaultCreated", "inputs": [{"name": "owner", "type": "address", "indexed": true, "internalType": "address"}, {"name": "vault", "type": "address", "indexed": true, "internalType": "address"}, {"name": "agent", "type": "address", "indexed": true, "internalType": "address"}], "anonymous": false}]}