{
  "name": "Orqen Agent",
  "chain": {
    "name": "Robinhood Chain",
    "id": 4663,
    "rpc": "https://rpc.mainnet.chain.robinhood.com",
    "explorer": "https://robinhoodchain.blockscout.com"
  },
  "contracts": {
    "OrqenMandates": {
      "address": "0x656839BE018b4632378DA2337A590F9C14c94Ca3",
      "deployedBlock": 112220737,
      "constructor": {},
      "abi": [
        {
          "type": "function",
          "name": "CLOSE_BY_AGENT",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CLOSE_BY_OWNER",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CLOSE_MANDATE_ENDED",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CLOSE_REVOKED",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CLOSE_TIMED_OUT",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_BATCH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_LABEL",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_LIVE_MANDATES",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_PENDING",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_RECIPIENTS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "MAX_TERM",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "QUEUED",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REASON_NEW_RECIPIENT",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REASON_OVER_DAILY_CAP",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REASON_OVER_TX_CAP",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_BAD_RECIPIENT",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_EXPIRED",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_QUEUE_FULL",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_REVOKED",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_TOKEN",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_TOO_LARGE",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REFUSED_ZERO",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "REQUEST_TTL",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "SENT",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "WINDOW_HOURS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "approve",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "trustRecipient",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "cancel",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "closeRequest",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "epochOf",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint32",
              "internalType": "uint32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "grant",
          "inputs": [
            {
              "name": "agent",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "perTxCap",
              "type": "uint96",
              "internalType": "uint96"
            },
            {
              "name": "dailyCap",
              "type": "uint96",
              "internalType": "uint96"
            },
            {
              "name": "expiresAt",
              "type": "uint64",
              "internalType": "uint64"
            },
            {
              "name": "recipients",
              "type": "address[]",
              "internalType": "address[]"
            },
            {
              "name": "label",
              "type": "string",
              "internalType": "string"
            }
          ],
          "outputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "isLive",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isRecipient",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "who",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "liveIdsOf",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]",
              "internalType": "uint256[]"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "mandate",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "v",
              "type": "tuple",
              "internalType": "struct OrqenMandates.MandateView",
              "components": [
                {
                  "name": "id",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "owner",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "agent",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "token",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "perTxCap",
                  "type": "uint96",
                  "internalType": "uint96"
                },
                {
                  "name": "dailyCap",
                  "type": "uint96",
                  "internalType": "uint96"
                },
                {
                  "name": "expiresAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "createdAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "live",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "revoked",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "expired",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "spentInWindow",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "leftInWindow",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "nextRelease",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "pending",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "label",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "recipients",
                  "type": "address[]",
                  "internalType": "address[]"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "mandateCount",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "mandatesOf",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "list",
              "type": "tuple[]",
              "internalType": "struct OrqenMandates.MandateView[]",
              "components": [
                {
                  "name": "id",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "owner",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "agent",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "token",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "perTxCap",
                  "type": "uint96",
                  "internalType": "uint96"
                },
                {
                  "name": "dailyCap",
                  "type": "uint96",
                  "internalType": "uint96"
                },
                {
                  "name": "expiresAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "createdAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "live",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "revoked",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "expired",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "spentInWindow",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "leftInWindow",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "nextRelease",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "pending",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "label",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "recipients",
                  "type": "address[]",
                  "internalType": "address[]"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "nextRelease",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "at",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingOf",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "list",
              "type": "tuple[]",
              "internalType": "struct OrqenMandates.RequestView[]",
              "components": [
                {
                  "name": "id",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "request",
                  "type": "tuple",
                  "internalType": "struct OrqenMandates.Request",
                  "components": [
                    {
                      "name": "mandateId",
                      "type": "uint256",
                      "internalType": "uint256"
                    },
                    {
                      "name": "to",
                      "type": "address",
                      "internalType": "address"
                    },
                    {
                      "name": "amount",
                      "type": "uint96",
                      "internalType": "uint96"
                    },
                    {
                      "name": "ref",
                      "type": "bytes32",
                      "internalType": "bytes32"
                    },
                    {
                      "name": "createdAt",
                      "type": "uint64",
                      "internalType": "uint64"
                    },
                    {
                      "name": "expiresAt",
                      "type": "uint64",
                      "internalType": "uint64"
                    },
                    {
                      "name": "reasons",
                      "type": "uint8",
                      "internalType": "uint8"
                    },
                    {
                      "name": "status",
                      "type": "uint8",
                      "internalType": "enum OrqenMandates.Status"
                    }
                  ]
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "preview",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "p",
              "type": "tuple",
              "internalType": "struct OrqenMandates.Preview",
              "components": [
                {
                  "name": "code",
                  "type": "uint8",
                  "internalType": "uint8"
                },
                {
                  "name": "reasons",
                  "type": "uint8",
                  "internalType": "uint8"
                },
                {
                  "name": "allowanceRead",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "allowance",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "balanceRead",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "balance",
                  "type": "uint256",
                  "internalType": "uint256"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "reject",
          "inputs": [
            {
              "name": "requestIds",
              "type": "uint256[]",
              "internalType": "uint256[]"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "request",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct OrqenMandates.Request",
              "components": [
                {
                  "name": "mandateId",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "to",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "amount",
                  "type": "uint96",
                  "internalType": "uint96"
                },
                {
                  "name": "ref",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "createdAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "expiresAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "reasons",
                  "type": "uint8",
                  "internalType": "uint8"
                },
                {
                  "name": "status",
                  "type": "uint8",
                  "internalType": "enum OrqenMandates.Status"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "requestCount",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "revoke",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "revokeAll",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setPolicy",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "perTxCap",
              "type": "uint96",
              "internalType": "uint96"
            },
            {
              "name": "dailyCap",
              "type": "uint96",
              "internalType": "uint96"
            },
            {
              "name": "expiresAt",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setRecipients",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "recipients",
              "type": "address[]",
              "internalType": "address[]"
            },
            {
              "name": "allowed",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "spend",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "ref",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "code",
              "type": "uint8",
              "internalType": "uint8"
            },
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "windowSpent",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "sum",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "event",
          "name": "AllRevoked",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "epoch",
              "type": "uint32",
              "indexed": false,
              "internalType": "uint32"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "MandateGranted",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "agent",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "perTxCap",
              "type": "uint96",
              "indexed": false,
              "internalType": "uint96"
            },
            {
              "name": "dailyCap",
              "type": "uint96",
              "indexed": false,
              "internalType": "uint96"
            },
            {
              "name": "expiresAt",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            },
            {
              "name": "label",
              "type": "string",
              "indexed": false,
              "internalType": "string"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "MandateRevoked",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PolicyChanged",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "perTxCap",
              "type": "uint96",
              "indexed": false,
              "internalType": "uint96"
            },
            {
              "name": "dailyCap",
              "type": "uint96",
              "indexed": false,
              "internalType": "uint96"
            },
            {
              "name": "expiresAt",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "RecipientSet",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "allowed",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "RequestClosed",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "requestId",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "status",
              "type": "uint8",
              "indexed": false,
              "internalType": "enum OrqenMandates.Status"
            },
            {
              "name": "reason",
              "type": "uint8",
              "indexed": false,
              "internalType": "uint8"
            },
            {
              "name": "by",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "SpendQueued",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "requestId",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "ref",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            },
            {
              "name": "reasons",
              "type": "uint8",
              "indexed": false,
              "internalType": "uint8"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "SpendRefused",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "ref",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            },
            {
              "name": "code",
              "type": "uint8",
              "indexed": false,
              "internalType": "uint8"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Spent",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "ref",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            },
            {
              "name": "requestId",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "BadAgent",
          "inputs": [
            {
              "name": "agent",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "BadCaps",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadExpiry",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadLabel",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BadRecipient",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "BadToken",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "BatchTooLarge",
          "inputs": []
        },
        {
          "type": "error",
          "name": "MandateNotLive",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "NotAgent",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "NotOwner",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "Reentered",
          "inputs": []
        },
        {
          "type": "error",
          "name": "RequestNotPending",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "RequestStillOpen",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "RequestTimedOut",
          "inputs": [
            {
              "name": "requestId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "TokenCallFailed",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "TooManyMandates",
          "inputs": []
        },
        {
          "type": "error",
          "name": "TooManyRecipients",
          "inputs": []
        },
        {
          "type": "error",
          "name": "TransferFailed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "TransferMismatch",
          "inputs": [
            {
              "name": "expected",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "left",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "arrived",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "UnknownMandate",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        }
      ]
    }
  },
  "notes": "No owner, no admin, no fee, no pause, no upgrade. The contract never holds tokens: allowed spends move owner -> recipient in the same transaction."
}