[
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"_mechMarketplace",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"_serviceRegistry",
            "type":"address"
         },
         {
            "internalType":"uint256",
            "name":"_serviceId",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"_maxDeliveryRate",
            "type":"uint256"
         }
      ],
      "stateMutability":"nonpayable",
      "type":"constructor"
   },
   {
      "inputs":[
         
      ],
      "name":"AlreadyInitialized",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"sender",
            "type":"address"
         },
         {
            "internalType":"address",
            "name":"marketplace",
            "type":"address"
         }
      ],
      "name":"MarketplaceOnly",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"provided",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"max",
            "type":"uint256"
         }
      ],
      "name":"Overflow",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ReentrancyGuard",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"numValues1",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"numValues2",
            "type":"uint256"
         }
      ],
      "name":"WrongArrayLength",
      "type":"error"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"state",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"serviceId",
            "type":"uint256"
         }
      ],
      "name":"WrongServiceState",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroAddress",
      "type":"error"
   },
   {
      "inputs":[
         
      ],
      "name":"ZeroValue",
      "type":"error"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"mech",
            "type":"address"
         },
         {
            "indexed":true,
            "internalType":"address",
            "name":"mechServiceMultisig",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"bytes32",
            "name":"requestId",
            "type":"bytes32"
         },
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"deliveryRate",
            "type":"uint256"
         },
         {
            "indexed":false,
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"Deliver",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"maxDeliveryRate",
            "type":"uint256"
         }
      ],
      "name":"MaxDeliveryRateUpdated",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"uint256",
            "name":"numRequests",
            "type":"uint256"
         }
      ],
      "name":"NumRequestsIncrease",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":true,
            "internalType":"address",
            "name":"mech",
            "type":"address"
         },
         {
            "indexed":false,
            "internalType":"bytes32",
            "name":"requestId",
            "type":"bytes32"
         },
         {
            "indexed":false,
            "internalType":"bytes",
            "name":"data",
            "type":"bytes"
         }
      ],
      "name":"Request",
      "type":"event"
   },
   {
      "anonymous":false,
      "inputs":[
         {
            "indexed":false,
            "internalType":"bytes32",
            "name":"requestId",
            "type":"bytes32"
         }
      ],
      "name":"RevokeRequest",
      "type":"event"
   },
   {
      "inputs":[
         
      ],
      "name":"PAYMENT_TYPE",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"VERSION",
      "outputs":[
         {
            "internalType":"string",
            "name":"",
            "type":"string"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"newMaxDeliveryRate",
            "type":"uint256"
         }
      ],
      "name":"changeMaxDeliveryRate",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"requester",
            "type":"address"
         },
         {
            "components":[
               {
                  "internalType":"bytes",
                  "name":"requestData",
                  "type":"bytes"
               },
               {
                  "internalType":"bytes",
                  "name":"signature",
                  "type":"bytes"
               },
               {
                  "internalType":"bytes",
                  "name":"deliveryData",
                  "type":"bytes"
               }
            ],
            "internalType":"struct DeliverWithSignature[]",
            "name":"deliverWithSignatures",
            "type":"tuple[]"
         },
         {
            "internalType":"uint256[]",
            "name":"deliveryRates",
            "type":"uint256[]"
         },
         {
            "internalType":"bytes",
            "name":"paymentData",
            "type":"bytes"
         }
      ],
      "name":"deliverMarketplaceWithSignatures",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes32[]",
            "name":"requestIds",
            "type":"bytes32[]"
         },
         {
            "internalType":"bytes[]",
            "name":"datas",
            "type":"bytes[]"
         }
      ],
      "name":"deliverToMarketplace",
      "outputs":[
         {
            "internalType":"bool[]",
            "name":"deliveredRequests",
            "type":"bool[]"
         }
      ],
      "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":[
         
      ],
      "name":"getOperator",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"uint256",
            "name":"size",
            "type":"uint256"
         },
         {
            "internalType":"uint256",
            "name":"offset",
            "type":"uint256"
         }
      ],
      "name":"getUndeliveredRequestIds",
      "outputs":[
         {
            "internalType":"bytes32[]",
            "name":"requestIds",
            "type":"bytes32[]"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"address",
            "name":"multisig",
            "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":"bytes32",
            "name":"",
            "type":"bytes32"
         },
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "name":"mapRequestIds",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"maxDeliveryRate",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"mechMarketplace",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"nonce",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"numTotalDeliveries",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"numTotalRequests",
      "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":"paymentType",
      "outputs":[
         {
            "internalType":"bytes32",
            "name":"",
            "type":"bytes32"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes32[]",
            "name":"requestIds",
            "type":"bytes32[]"
         },
         {
            "internalType":"bytes[]",
            "name":"datas",
            "type":"bytes[]"
         }
      ],
      "name":"requestFromMarketplace",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"serviceId",
      "outputs":[
         {
            "internalType":"uint256",
            "name":"",
            "type":"uint256"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"serviceRegistry",
      "outputs":[
         {
            "internalType":"address",
            "name":"",
            "type":"address"
         }
      ],
      "stateMutability":"view",
      "type":"function"
   },
   {
      "inputs":[
         {
            "internalType":"bytes",
            "name":"",
            "type":"bytes"
         }
      ],
      "name":"setUp",
      "outputs":[
         
      ],
      "stateMutability":"pure",
      "type":"function"
   },
   {
      "inputs":[
         
      ],
      "name":"token",
      "outputs":[
         {
            "internalType":"address",
            "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":[
         {
            "internalType":"uint256",
            "name":"numRequests",
            "type":"uint256"
         }
      ],
      "name":"updateNumRequests",
      "outputs":[
         
      ],
      "stateMutability":"nonpayable",
      "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"
   }
]