{
  "_format": "hh-sol-artifact-1",
  "contractName": "TechnicalPreview",
  "sourceName": "contracts/TechnicalPreview.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IVerifier",
          "name": "_verifier",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "MAX_FIELD_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "commitments",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32[16]",
              "name": "tx_in",
              "type": "bytes32[16]"
            },
            {
              "internalType": "bytes32",
              "name": "current_root",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "amount_public_in",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "amount_public_out",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32[16]",
              "name": "commitment_out",
              "type": "bytes32[16]"
            },
            {
              "internalType": "bytes32",
              "name": "recipient",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "oracle",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "old_root",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "new_root",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32[16]",
              "name": "nullifier_hashes",
              "type": "bytes32[16]"
            }
          ],
          "internalType": "struct BatchPublicInputs",
          "name": "input",
          "type": "tuple"
        }
      ],
      "name": "flattenBatchPublicInputs",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_commitment",
          "type": "bytes32"
        }
      ],
      "name": "getCommitment",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_utxo",
          "type": "bytes32"
        }
      ],
      "name": "getRootFromUtxo",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_nullifierHashes",
          "type": "bytes32[]"
        }
      ],
      "name": "getSpentNullifiers",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "spent",
          "type": "bool[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_root",
          "type": "bytes32"
        }
      ],
      "name": "getUtxoFromRoot",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getValidRoots",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_nullifierHash",
          "type": "bytes32"
        }
      ],
      "name": "isSpent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "merkleRoot",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nullifierHashes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_proof",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "bytes32[16]",
              "name": "tx_in",
              "type": "bytes32[16]"
            },
            {
              "internalType": "bytes32",
              "name": "current_root",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "amount_public_in",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "amount_public_out",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32[16]",
              "name": "commitment_out",
              "type": "bytes32[16]"
            },
            {
              "internalType": "bytes32",
              "name": "recipient",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "oracle",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "old_root",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "new_root",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32[16]",
              "name": "nullifier_hashes",
              "type": "bytes32[16]"
            }
          ],
          "internalType": "struct BatchPublicInputs",
          "name": "_batch",
          "type": "tuple"
        }
      ],
      "name": "publish",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "utxo",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "utxoPrevRoots",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "validRoots",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "verifier",
      "outputs": [
        {
          "internalType": "contract IVerifier",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_proof",
          "type": "bytes"
        },
        {
          "internalType": "bytes32[]",
          "name": "_publicInputs",
          "type": "bytes32[]"
        }
      ],
      "name": "verifyProof",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ]
}