{
  "_format": "hh-sol-artifact-1",
  "contractName": "BoostVerifier",
  "sourceName": "contracts/BoostVerifier.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "identity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "boostId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "paid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reimbursed",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tip",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "carrier",
          "type": "address"
        }
      ],
      "name": "BoostPresented",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "identity",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "epoch",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "by",
          "type": "address"
        }
      ],
      "name": "EpochAdvanced",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BOOST_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FEE_HEADROOM",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GAS_PER_WRITE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRESENT_OVERHEAD",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "advanceEpoch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "currentEpoch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "identity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "capWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tipWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "writes",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "notAfter",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "boostId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "epoch",
          "type": "uint256"
        }
      ],
      "name": "digest",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "identity",
              "type": "address"
            },
            {
              "internalType": "address payable",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "capWei",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tipWei",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "writes",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "notAfter",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "boostId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "epoch",
              "type": "uint256"
            }
          ],
          "internalType": "struct BoostVerifier.Boost",
          "name": "b",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "present",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "spent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b5061100e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063445322a311610066578063445322a31461011b578063ba62ef5d14610125578063bed9bf391461014c578063e20519dd14610161578063ecaa25301461017457600080fd5b8063016191d5146100985780630736e19f146100b35780630b24a269146100d357806342c6cc8c14610111575b600080fd5b6100a0600281565b6040519081526020015b60405180910390f35b6100a06100c1366004610d80565b60006020819052908152604090205481565b6101016100e1366004610da4565b600160209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016100aa565b6100a06203d09081565b6100a062015f9081565b6100a07f0295854092d5e178b9b36d8644dc8f1902a782fe7e04d99298de4b61810f422d81565b61015f61015a366004610dd0565b610187565b005b6100a061016f366004610d80565b610b1b565b6100a0610182366004610e60565b610ccd565b60005a9050600061019b6020860186610d80565b90508460a001356000036101ec5760405162461bcd60e51b8152602060048201526013602482015272626f6f737420686173206e6f2065787069727960681b60448201526064015b60405180910390fd5b8460a001354211156102305760405162461bcd60e51b815260206004820152600d60248201526c189bdbdcdd08195e1c1a5c9959609a1b60448201526064016101e3565b846040013560000361027b5760405162461bcd60e51b8152602060048201526014602482015273626f6f737420686173206e6f206365696c696e6760601b60448201526064016101e3565b6001600061028c6020880188610d80565b6001600160a01b031681526020808201929092526040908101600090812060c0890135825290925290205460ff16156103075760405162461bcd60e51b815260206004820152601760248201527f626f6f737420616c72656164792070726573656e74656400000000000000000060448201526064016101e3565b60e085013560008061031c6020890189610d80565b6001600160a01b03166001600160a01b0316815260200190815260200160002054146103835760405162461bcd60e51b8152602060048201526016602482015275189bdbdcdd08195c1bd8da081cdd5c195c9cd959195960521b60448201526064016101e3565b6040516301fd3f7760e71b81523060048201526001600160a01b0382169063fe9fbb8090602401602060405180830381865afa1580156103c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103eb9190610ecb565b801561045a5750604051635ff0ffe560e11b81523060048201526001600160a01b0382169063bfe1ffca90602401602060405180830381865afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610ecb565b6104bc5760405162461bcd60e51b815260206004820152602d60248201527f74686973207665726966696572206973206e6f742061207269766574206f662060448201526c74686174206964656e7469747960981b60648201526084016101e3565b6001600160a01b03811663fe9fbb806104db6040880160208901610d80565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190610ecb565b80156105d157506001600160a01b03811663bfe1ffca6105696040880160208901610d80565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156105ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d19190610ecb565b61061d5760405162461bcd60e51b815260206004820181905260248201527f726563697069656e74206973206e6f7420616e2061637469766520726976657460448201526064016101e3565b630b135d3f60e11b6001600160a01b038216631626ba7e61067761064460208a018a610d80565b61065460408b0160208c01610d80565b8a604001358b606001358c608001358d60a001358e60c001358f60e00135610ccd565b87876040518463ffffffff1660e01b815260040161069793929190610eed565b602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d89190610f23565b6001600160e01b0319161461073b5760405162461bcd60e51b815260206004820152602360248201527f626f6f7374206e6f742069737375656420627920616e206163746976652072696044820152621d995d60ea1b60648201526084016101e3565b600180600061074d6020890189610d80565b6001600160a01b031681526020808201929092526040908101600090812060c08a013582529092528120805460ff19169215159290921790915580803a62015f905a6107999088610f63565b6107a39190610f7c565b6107ad9190610f8f565b905087604001358111156107c2575060408701355b60006107d28260408b0135610f63565b9050808960600135116107e95788606001356107eb565b805b92506107f78382610f63565b905048801561082d576002816108146203d09060808e0135610f8f565b61081e9190610f8f565b6108289190610f8f565b61082f565b815b94508185111561083d578194505b801561085557610850816203d090610f8f565b610858565b60015b8510156108b85760405162461bcd60e51b815260206004820152602860248201527f626f6f7374206365696c696e6720746f6f206c6f77206174207468652063757260448201526772656e742066656560c01b60648201526084016101e3565b508290506108c68285610f7c565b6108d09190610f7c565b846001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190610fa6565b10156109805760405162461bcd60e51b815260206004820181905260248201527f74726561737572792063616e6e6f7420636f766572207468697320626f6f737460448201526064016101e3565b6001600160a01b0384166364a197f361099f60408b0160208c01610d80565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401600060405180830381600087803b1580156109e757600080fd5b505af11580156109fb573d6000803e3d6000fd5b5050505060008282610a0d9190610f7c565b1115610a8c576001600160a01b0384166364a197f333610a2d8585610f7c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610a7357600080fd5b505af1158015610a87573d6000803e3d6000fd5b505050505b610a9c6040890160208a01610d80565b6001600160a01b0316610ab260208a018a610d80565b6040805160c08c0135815260208101879052908101849052606081018590523360808201526001600160a01b0391909116907ffc81bb984905c360e80dc580c5477471426d3a12715290c13ab1227a9ffeae719060a00160405180910390a35050505050505050565b6040516301fd3f7760e71b815233600482015260009082906001600160a01b0382169063fe9fbb8090602401602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190610ecb565b8015610bf75750604051635ff0ffe560e11b81523360048201526001600160a01b0382169063bfe1ffca90602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190610ecb565b610c565760405162461bcd60e51b815260206004820152602a60248201527f6f6e6c7920616e20616374697665207269766574206d617920616476616e6365604482015269040e8d0ca40cae0dec6d60b31b60648201526084016101e3565b6001600160a01b038316600090815260208190526040812080548290610c7b90610fbf565b9182905550604080518281523360208201529192506001600160a01b038616917f674d995dc85855ce52d468f391f3c2703dc66ad7588fd77e64743409b8f1d513910160405180910390a29392505050565b604080517f0295854092d5e178b9b36d8644dc8f1902a782fe7e04d99298de4b61810f422d60208083019190915230828401526001600160a01b039a8b1660608301524660808301529890991660a08a015260c089019690965260e088019490945261010087019290925261012086015261014085015261016080850191909152815180850390910181526101809093019052815191012090565b6001600160a01b0381168114610d7d57600080fd5b50565b600060208284031215610d9257600080fd5b8135610d9d81610d68565b9392505050565b60008060408385031215610db757600080fd5b8235610dc281610d68565b946020939093013593505050565b6000806000838503610120811215610de757600080fd5b610100811215610df657600080fd5b5083925061010084013567ffffffffffffffff811115610e1557600080fd5b8401601f81018613610e2657600080fd5b803567ffffffffffffffff811115610e3d57600080fd5b866020828401011115610e4f57600080fd5b939660209190910195509293505050565b600080600080600080600080610100898b031215610e7d57600080fd5b8835610e8881610d68565b97506020890135610e9881610d68565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b600060208284031215610edd57600080fd5b81518015158114610d9d57600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208284031215610f3557600080fd5b81516001600160e01b031981168114610d9d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610f7657610f76610f4d565b92915050565b80820180821115610f7657610f76610f4d565b8082028115828204841417610f7657610f76610f4d565b600060208284031215610fb857600080fd5b5051919050565b600060018201610fd157610fd1610f4d565b506001019056fea26469706673582212205f03dac4aa0a4d23e661a20de7daabff74df69b12565f1c39677200f650261d364736f6c634300081b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063445322a311610066578063445322a31461011b578063ba62ef5d14610125578063bed9bf391461014c578063e20519dd14610161578063ecaa25301461017457600080fd5b8063016191d5146100985780630736e19f146100b35780630b24a269146100d357806342c6cc8c14610111575b600080fd5b6100a0600281565b6040519081526020015b60405180910390f35b6100a06100c1366004610d80565b60006020819052908152604090205481565b6101016100e1366004610da4565b600160209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016100aa565b6100a06203d09081565b6100a062015f9081565b6100a07f0295854092d5e178b9b36d8644dc8f1902a782fe7e04d99298de4b61810f422d81565b61015f61015a366004610dd0565b610187565b005b6100a061016f366004610d80565b610b1b565b6100a0610182366004610e60565b610ccd565b60005a9050600061019b6020860186610d80565b90508460a001356000036101ec5760405162461bcd60e51b8152602060048201526013602482015272626f6f737420686173206e6f2065787069727960681b60448201526064015b60405180910390fd5b8460a001354211156102305760405162461bcd60e51b815260206004820152600d60248201526c189bdbdcdd08195e1c1a5c9959609a1b60448201526064016101e3565b846040013560000361027b5760405162461bcd60e51b8152602060048201526014602482015273626f6f737420686173206e6f206365696c696e6760601b60448201526064016101e3565b6001600061028c6020880188610d80565b6001600160a01b031681526020808201929092526040908101600090812060c0890135825290925290205460ff16156103075760405162461bcd60e51b815260206004820152601760248201527f626f6f737420616c72656164792070726573656e74656400000000000000000060448201526064016101e3565b60e085013560008061031c6020890189610d80565b6001600160a01b03166001600160a01b0316815260200190815260200160002054146103835760405162461bcd60e51b8152602060048201526016602482015275189bdbdcdd08195c1bd8da081cdd5c195c9cd959195960521b60448201526064016101e3565b6040516301fd3f7760e71b81523060048201526001600160a01b0382169063fe9fbb8090602401602060405180830381865afa1580156103c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103eb9190610ecb565b801561045a5750604051635ff0ffe560e11b81523060048201526001600160a01b0382169063bfe1ffca90602401602060405180830381865afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610ecb565b6104bc5760405162461bcd60e51b815260206004820152602d60248201527f74686973207665726966696572206973206e6f742061207269766574206f662060448201526c74686174206964656e7469747960981b60648201526084016101e3565b6001600160a01b03811663fe9fbb806104db6040880160208901610d80565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190610ecb565b80156105d157506001600160a01b03811663bfe1ffca6105696040880160208901610d80565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156105ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d19190610ecb565b61061d5760405162461bcd60e51b815260206004820181905260248201527f726563697069656e74206973206e6f7420616e2061637469766520726976657460448201526064016101e3565b630b135d3f60e11b6001600160a01b038216631626ba7e61067761064460208a018a610d80565b61065460408b0160208c01610d80565b8a604001358b606001358c608001358d60a001358e60c001358f60e00135610ccd565b87876040518463ffffffff1660e01b815260040161069793929190610eed565b602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d89190610f23565b6001600160e01b0319161461073b5760405162461bcd60e51b815260206004820152602360248201527f626f6f7374206e6f742069737375656420627920616e206163746976652072696044820152621d995d60ea1b60648201526084016101e3565b600180600061074d6020890189610d80565b6001600160a01b031681526020808201929092526040908101600090812060c08a013582529092528120805460ff19169215159290921790915580803a62015f905a6107999088610f63565b6107a39190610f7c565b6107ad9190610f8f565b905087604001358111156107c2575060408701355b60006107d28260408b0135610f63565b9050808960600135116107e95788606001356107eb565b805b92506107f78382610f63565b905048801561082d576002816108146203d09060808e0135610f8f565b61081e9190610f8f565b6108289190610f8f565b61082f565b815b94508185111561083d578194505b801561085557610850816203d090610f8f565b610858565b60015b8510156108b85760405162461bcd60e51b815260206004820152602860248201527f626f6f7374206365696c696e6720746f6f206c6f77206174207468652063757260448201526772656e742066656560c01b60648201526084016101e3565b508290506108c68285610f7c565b6108d09190610f7c565b846001600160a01b03166312065fe06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109329190610fa6565b10156109805760405162461bcd60e51b815260206004820181905260248201527f74726561737572792063616e6e6f7420636f766572207468697320626f6f737460448201526064016101e3565b6001600160a01b0384166364a197f361099f60408b0160208c01610d80565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401600060405180830381600087803b1580156109e757600080fd5b505af11580156109fb573d6000803e3d6000fd5b5050505060008282610a0d9190610f7c565b1115610a8c576001600160a01b0384166364a197f333610a2d8585610f7c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610a7357600080fd5b505af1158015610a87573d6000803e3d6000fd5b505050505b610a9c6040890160208a01610d80565b6001600160a01b0316610ab260208a018a610d80565b6040805160c08c0135815260208101879052908101849052606081018590523360808201526001600160a01b0391909116907ffc81bb984905c360e80dc580c5477471426d3a12715290c13ab1227a9ffeae719060a00160405180910390a35050505050505050565b6040516301fd3f7760e71b815233600482015260009082906001600160a01b0382169063fe9fbb8090602401602060405180830381865afa158015610b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b889190610ecb565b8015610bf75750604051635ff0ffe560e11b81523360048201526001600160a01b0382169063bfe1ffca90602401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190610ecb565b610c565760405162461bcd60e51b815260206004820152602a60248201527f6f6e6c7920616e20616374697665207269766574206d617920616476616e6365604482015269040e8d0ca40cae0dec6d60b31b60648201526084016101e3565b6001600160a01b038316600090815260208190526040812080548290610c7b90610fbf565b9182905550604080518281523360208201529192506001600160a01b038616917f674d995dc85855ce52d468f391f3c2703dc66ad7588fd77e64743409b8f1d513910160405180910390a29392505050565b604080517f0295854092d5e178b9b36d8644dc8f1902a782fe7e04d99298de4b61810f422d60208083019190915230828401526001600160a01b039a8b1660608301524660808301529890991660a08a015260c089019690965260e088019490945261010087019290925261012086015261014085015261016080850191909152815180850390910181526101809093019052815191012090565b6001600160a01b0381168114610d7d57600080fd5b50565b600060208284031215610d9257600080fd5b8135610d9d81610d68565b9392505050565b60008060408385031215610db757600080fd5b8235610dc281610d68565b946020939093013593505050565b6000806000838503610120811215610de757600080fd5b610100811215610df657600080fd5b5083925061010084013567ffffffffffffffff811115610e1557600080fd5b8401601f81018613610e2657600080fd5b803567ffffffffffffffff811115610e3d57600080fd5b866020828401011115610e4f57600080fd5b939660209190910195509293505050565b600080600080600080600080610100898b031215610e7d57600080fd5b8835610e8881610d68565b97506020890135610e9881610d68565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b600060208284031215610edd57600080fd5b81518015158114610d9d57600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208284031215610f3557600080fd5b81516001600160e01b031981168114610d9d57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610f7657610f76610f4d565b92915050565b80820180821115610f7657610f76610f4d565b8082028115828204841417610f7657610f76610f4d565b600060208284031215610fb857600080fd5b5051919050565b600060018201610fd157610fd1610f4d565b506001019056fea26469706673582212205f03dac4aa0a4d23e661a20de7daabff74df69b12565f1c39677200f650261d364736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
