[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_token",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"_tokenId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_price",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"constructor"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"agentId",
            "type":"uint256"
         }
      ],
      "name":"AgentNotFound",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"expected",
            "type":"uint256"
         }
      ],
      "name":"NotEnoughPaid",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"max",
            "type":"uint256"
         }
      ],
      "name":"Overflow",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"requestId",
            "type":"uint256"
         }
      ],
      "name":"RequestIdNotFound",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroAddress",
      "type":"error"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"requestId",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"Deliver",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"price",
            "type":"uint256"
         }
      ],
      "name":"PriceUpdated",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"requestId",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"Request",
      "type":"event"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"requestId",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"deliver",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"entryPoint",
      "outputs":[
         {
            "internalType":"contract IEntryPoint",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"to",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"value",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         },
         {
            "internalType":"enum Enum.Operation",
            "name":"operation",
            "type":"uint8"
         },
         {
            "internalType":"uint256",
            "name":"txGas",
            "type":"uint256"
         }
      ],
      "name":"exec",
      "outputs":[
         {
            "internalType":"bytes",
            "name":"returnData",
            "type":"bytes"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"account",
            "type":"address"
         },
         {
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"getRequestId",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"requestId",
            "type":"uint256"
         }
      ],
      "stateMutability":"pure",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"account",
            "type":"address"
         }
      ],
      "name":"getRequestsCount",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"requestsCount",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"size",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"offset",
            "type":"uint256"
         }
      ],
      "name":"getUndeliveredRequestIds",
      "outputs":[
         {
            "internalType":"uint256[]",
            "name":"requestIds",
            "type":"uint256[]"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"signer",
            "type":"address"
         }
      ],
      "name":"isOperator",
      "outputs":[
         {
            "internalType":"bool",
            "name":"",
            "type":"bool"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes32",
            "name":"hash",
            "type":"bytes32"
         },
         {
            "internalType":"bytes",
            "name":"signature",
            "type":"bytes"
         }
      ],
      "name":"isValidSignature",
      "outputs":[
         {
            "internalType":"bytes4",
            "name":"magicValue",
            "type":"bytes4"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"mapRequestIds",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "name":"mapRequestsCounts",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"nonce",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"numUndeliveredRequests",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         },
         {
            "internalType":"uint256[]",
            "name":"",
            "type":"uint256[]"
         },
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         }
      ],
      "name":"onERC1155BatchReceived",
      "outputs":[
         {
            "internalType":"bytes4",
            "name":"",
            "type":"bytes4"
         }
      ],
      "stateMutability":"pure",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         }
      ],
      "name":"onERC1155Received",
      "outputs":[
         {
            "internalType":"bytes4",
            "name":"",
            "type":"bytes4"
         }
      ],
      "stateMutability":"pure",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         }
      ],
      "name":"onERC721Received",
      "outputs":[
         {
            "internalType":"bytes4",
            "name":"",
            "type":"bytes4"
         }
      ],
      "stateMutability":"pure",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"price",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"request",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"requestId",
            "type":"uint256"
         }
      ],
      "stateMutability":"payable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"newPrice",
            "type":"uint256"
         }
      ],
      "name":"setPrice",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes",
            "name":"initParams",
            "type":"bytes"
         }
      ],
      "name":"setUp",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"token",
      "outputs":[
         {
            "internalType":"contract IERC721",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"tokenId",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         },
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         },
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         }
      ],
      "name":"tokensReceived",
      "outputs":[
         
      ],
      "stateMutability":"pure",
      "type":"function"
   },
   {
      "inputs":[
         {
            "components":[
               {
                  "internalType":"address",
                  "name":"sender",
                  "type":"address"
               },
               {
                  "internalType":"uint256",
                  "name":"nonce",
                  "type":"uint256"
               },
               {
                  "internalType":"bytes",
                  "name":"initCode",
                  "type":"bytes"
               },
               {
                  "internalType":"bytes",
                  "name":"callData",
                  "type":"bytes"
               },
               {
                  "internalType":"uint256",
                  "name":"callGasLimit",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"verificationGasLimit",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"preVerificationGas",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"maxFeePerGas",
                  "type":"uint256"
               },
               {
                  "internalType":"uint256",
                  "name":"maxPriorityFeePerGas",
                  "type":"uint256"
               },
               {
                  "internalType":"bytes",
                  "name":"paymasterAndData",
                  "type":"bytes"
               },
               {
                  "internalType":"bytes",
                  "name":"signature",
                  "type":"bytes"
               }
            ],
            "internalType":"struct UserOperation",
            "name":"userOp",
            "type":"tuple"
         },
         {
            "internalType":"bytes32",
            "name":"userOpHash",
            "type":"bytes32"
         },
         {
            "internalType":"uint256",
            "name":"missingAccountFunds",
            "type":"uint256"
         }
      ],
      "name":"validateUserOp",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"validationData",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "stateMutability":"payable",
      "type":"receive"
   }
]