[
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[2]",
        "name": "publicProvingKey",
        "type": "uint256[2]"
      }
    ],
    "name": "deregisterProvingKey",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256[2]",
            "name": "pk",
            "type": "uint256[2]"
          },
          {
            "internalType": "uint256[2]",
            "name": "gamma",
            "type": "uint256[2]"
          },
          {
            "internalType": "uint256",
            "name": "c",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "s",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "seed",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "uWitness",
            "type": "address"
          },
          {
            "internalType": "uint256[2]",
            "name": "cGammaWitness",
            "type": "uint256[2]"
          },
          {
            "internalType": "uint256[2]",
            "name": "sHashWitness",
            "type": "uint256[2]"
          },
          {
            "internalType": "uint256",
            "name": "zInv",
            "type": "uint256"
          }
        ],
        "internalType": "struct VRFTypes.Proof",
        "name": "proof",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "blockNum",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "subId",
            "type": "uint64"
          },
          {
            "internalType": "uint32",
            "name": "callbackGasLimit",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "numWords",
            "type": "uint32"
          },
          {
            "internalType": "address",
            "name": "sender",
            "type": "address"
          }
        ],
        "internalType": "struct VRFTypes.RequestCommitment",
        "name": "rc",
        "type": "tuple"
      }
    ],
    "name": "fulfillRandomWords",
    "outputs": [
      {
        "internalType": "uint96",
        "name": "",
        "type": "uint96"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getConfig",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "minimumRequestConfirmations",
        "type": "uint16"
      },
      {
        "internalType": "uint32",
        "name": "maxGasLimit",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "stalenessSeconds",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "gasAfterPaymentCalculation",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getFallbackWeiPerUnitLink",
    "outputs": [
      {
        "internalType": "int256",
        "name": "",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getFeeConfig",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "fulfillmentFlatFeeLinkPPMTier1",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "fulfillmentFlatFeeLinkPPMTier2",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "fulfillmentFlatFeeLinkPPMTier3",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "fulfillmentFlatFeeLinkPPMTier4",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "fulfillmentFlatFeeLinkPPMTier5",
        "type": "uint32"
      },
      {
        "internalType": "uint24",
        "name": "reqsForTier2",
        "type": "uint24"
      },
      {
        "internalType": "uint24",
        "name": "reqsForTier3",
        "type": "uint24"
      },
      {
        "internalType": "uint24",
        "name": "reqsForTier4",
        "type": "uint24"
      },
      {
        "internalType": "uint24",
        "name": "reqsForTier5",
        "type": "uint24"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[2]",
        "name": "publicKey",
        "type": "uint256[2]"
      }
    ],
    "name": "hashOfKey",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint64",
        "name": "subId",
        "type": "uint64"
      }
    ],
    "name": "ownerCancelSubscription",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "recoverFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "oracle",
        "type": "address"
      },
      {
        "internalType": "uint256[2]",
        "name": "publicProvingKey",
        "type": "uint256[2]"
      }
    ],
    "name": "registerProvingKey",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "minimumRequestConfirmations",
        "type": "uint16"
      },
      {
        "internalType": "uint32",
        "name": "maxGasLimit",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "stalenessSeconds",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "gasAfterPaymentCalculation",
        "type": "uint32"
      },
      {
        "internalType": "int256",
        "name": "fallbackWeiPerUnitLink",
        "type": "int256"
      },
      {
        "components": [
          {
            "internalType": "uint32",
            "name": "fulfillmentFlatFeeLinkPPMTier1",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "fulfillmentFlatFeeLinkPPMTier2",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "fulfillmentFlatFeeLinkPPMTier3",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "fulfillmentFlatFeeLinkPPMTier4",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "fulfillmentFlatFeeLinkPPMTier5",
            "type": "uint32"
          },
          {
            "internalType": "uint24",
            "name": "reqsForTier2",
            "type": "uint24"
          },
          {
            "internalType": "uint24",
            "name": "reqsForTier3",
            "type": "uint24"
          },
          {
            "internalType": "uint24",
            "name": "reqsForTier4",
            "type": "uint24"
          },
          {
            "internalType": "uint24",
            "name": "reqsForTier5",
            "type": "uint24"
          }
        ],
        "internalType": "struct FeeConfig",
        "name": "feeConfig",
        "type": "tuple"
      }
    ],
    "name": "setConfig",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
