text: "use strict";
  /* Generated by ts-generator ver. 0.0.8 */
  /* tslint:disable */
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.newDowntimeSlasher = exports.ABI = void 0;
  exports.ABI = [
      {
          inputs: [{ internalType: 'bool', name: 'test', type: 'bool' }],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'constructor',
      },
      {
          anonymous: false,
          inputs: [
              { indexed: true, internalType: 'address', name: 'sender', type: 'address' },
              {
                  indexed: true,
                  internalType: 'uint256',
                  name: 'startBlock',
                  type: 'uint256',
              },
              {
                  indexed: true,
                  internalType: 'uint256',
                  name: 'endBlock',
                  type: 'uint256',
              },
              {
                  indexed: false,
                  internalType: 'bytes32',
                  name: 'bitmap',
                  type: 'bytes32',
              },
          ],
          name: 'BitmapSetForInterval',
          type: 'event',
      },
      {
          anonymous: false,
          inputs: [
              {
                  indexed: true,
                  internalType: 'address',
                  name: 'validator',
                  type: 'address',
              },
              {
                  indexed: true,
                  internalType: 'uint256',
                  name: 'startBlock',
                  type: 'uint256',
              },
              {
                  indexed: true,
                  internalType: 'uint256',
                  name: 'endBlock',
                  type: 'uint256',
              },
          ],
          name: 'DowntimeSlashPerformed',
          type: 'event',
      },
      {
          anonymous: false,
          inputs: [
              {
                  indexed: true,
                  internalType: 'address',
                  name: 'previousOwner',
                  type: 'address',
              },
              {
                  indexed: true,
                  internalType: 'address',
                  name: 'newOwner',
                  type: 'address',
              },
          ],
          name: 'OwnershipTransferred',
          type: 'event',
      },
      {
          anonymous: false,
          inputs: [
              {
                  indexed: true,
                  internalType: 'address',
                  name: 'registryAddress',
                  type: 'address',
              },
          ],
          name: 'RegistrySet',
          type: 'event',
      },
      {
          anonymous: false,
          inputs: [
              {
                  indexed: false,
                  internalType: 'uint256',
                  name: 'interval',
                  type: 'uint256',
              },
          ],
          name: 'SlashableDowntimeSet',
          type: 'event',
      },
      {
          anonymous: false,
          inputs: [
              {
                  indexed: false,
                  internalType: 'uint256',
                  name: 'penalty',
                  type: 'uint256',
              },
              {
                  indexed: false,
                  internalType: 'uint256',
                  name: 'reward',
                  type: 'uint256',
              },
          ],
          name: 'SlashingIncentivesSet',
          type: 'event',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'address', name: '', type: 'address' },
              { internalType: 'uint256', name: '', type: 'uint256' },
              { internalType: 'uint256', name: '', type: 'uint256' },
          ],
          name: 'bitmaps',
          outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'address', name: 'sender', type: 'address' },
              { internalType: 'bytes', name: 'blsKey', type: 'bytes' },
              { internalType: 'bytes', name: 'blsPop', type: 'bytes' },
          ],
          name: 'checkProofOfPossession',
          outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'uint256', name: 'aNumerator', type: 'uint256' },
              { internalType: 'uint256', name: 'aDenominator', type: 'uint256' },
              { internalType: 'uint256', name: 'bNumerator', type: 'uint256' },
              { internalType: 'uint256', name: 'bDenominator', type: 'uint256' },
              { internalType: 'uint256', name: 'exponent', type: 'uint256' },
              { internalType: 'uint256', name: '_decimals', type: 'uint256' },
          ],
          name: 'fractionMulExp',
          outputs: [
              { internalType: 'uint256', name: '', type: 'uint256' },
              { internalType: 'uint256', name: '', type: 'uint256' },
          ],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'bytes', name: 'header', type: 'bytes' }],
          name: 'getBlockNumberFromHeader',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'getEpochNumber',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],
          name: 'getEpochNumberOfBlock',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'getEpochSize',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],
          name: 'getParentSealBitmap',
          outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'bytes', name: 'header', type: 'bytes' }],
          name: 'getVerifiedSealBitmapFromHeader',
          outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'address', name: 'validator', type: 'address' },
              { internalType: 'uint256', name: 'blockNumber', type: 'uint256' },
              {
                  internalType: 'uint256',
                  name: 'groupMembershipHistoryIndex',
                  type: 'uint256',
              },
          ],
          name: 'groupMembershipAtBlock',
          outputs: [{ internalType: 'address', name: '', type: 'address' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'bytes', name: 'header', type: 'bytes' }],
          name: 'hashHeader',
          outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'initialized',
          outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'isOwner',
          outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'address', name: '', type: 'address' }],
          name: 'lastSlashedBlock',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],
          name: 'minQuorumSize',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'minQuorumSizeInCurrentSet',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'numberValidatorsInCurrentSet',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'uint256', name: 'blockNumber', type: 'uint256' }],
          name: 'numberValidatorsInSet',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'owner',
          outputs: [{ internalType: 'address', name: '', type: 'address' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'registry',
          outputs: [{ internalType: 'contract IRegistry', name: '', type: 'address' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: false,
          inputs: [],
          name: 'renounceOwnership',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: false,
          inputs: [{ internalType: 'address', name: 'registryAddress', type: 'address' }],
          name: 'setRegistry',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: false,
          inputs: [
              { internalType: 'uint256', name: 'penalty', type: 'uint256' },
              { internalType: 'uint256', name: 'reward', type: 'uint256' },
          ],
          name: 'setSlashingIncentives',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'slashableDowntime',
          outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'slashingIncentives',
          outputs: [
              { internalType: 'uint256', name: 'penalty', type: 'uint256' },
              { internalType: 'uint256', name: 'reward', type: 'uint256' },
          ],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: false,
          inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],
          name: 'transferOwnership',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: true,
          inputs: [{ internalType: 'uint256', name: 'index', type: 'uint256' }],
          name: 'validatorSignerAddressFromCurrentSet',
          outputs: [{ internalType: 'address', name: '', type: 'address' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'uint256', name: 'index', type: 'uint256' },
              { internalType: 'uint256', name: 'blockNumber', type: 'uint256' },
          ],
          name: 'validatorSignerAddressFromSet',
          outputs: [{ internalType: 'address', name: '', type: 'address' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [],
          name: 'getVersionNumber',
          outputs: [
              { internalType: 'uint256', name: '', type: 'uint256' },
              { internalType: 'uint256', name: '', type: 'uint256' },
              { internalType: 'uint256', name: '', type: 'uint256' },
              { internalType: 'uint256', name: '', type: 'uint256' },
          ],
          payable: false,
          stateMutability: 'pure',
          type: 'function',
      },
      {
          constant: false,
          inputs: [
              { internalType: 'address', name: 'registryAddress', type: 'address' },
              { internalType: 'uint256', name: '_penalty', type: 'uint256' },
              { internalType: 'uint256', name: '_reward', type: 'uint256' },
              { internalType: 'uint256', name: '_slashableDowntime', type: 'uint256' },
          ],
          name: 'initialize',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: false,
          inputs: [{ internalType: 'uint256', name: 'interval', type: 'uint256' }],
          name: 'setSlashableDowntime',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'uint256', name: 'startBlock', type: 'uint256' },
              { internalType: 'uint256', name: 'endBlock', type: 'uint256' },
          ],
          name: 'getBitmapForInterval',
          outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: false,
          inputs: [
              { internalType: 'uint256', name: 'startBlock', type: 'uint256' },
              { internalType: 'uint256', name: 'endBlock', type: 'uint256' },
          ],
          name: 'setBitmapForInterval',
          outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'uint256', name: 'startBlock', type: 'uint256' },
              { internalType: 'uint256', name: 'endBlock', type: 'uint256' },
              { internalType: 'uint256', name: 'signerIndex', type: 'uint256' },
          ],
          name: 'wasDownForInterval',
          outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'uint256', name: 'startBlock', type: 'uint256' },
              { internalType: 'uint256', name: 'endBlock', type: 'uint256' },
          ],
          name: 'isBitmapSetForInterval',
          outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: true,
          inputs: [
              { internalType: 'uint256[]', name: 'startBlocks', type: 'uint256[]' },
              { internalType: 'uint256[]', name: 'endBlocks', type: 'uint256[]' },
              { internalType: 'uint256[]', name: 'signerIndices', type: 'uint256[]' },
          ],
          name: 'wasDownForIntervals',
          outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
          payable: false,
          stateMutability: 'view',
          type: 'function',
      },
      {
          constant: false,
          inputs: [
              { internalType: 'uint256[]', name: 'startBlocks', type: 'uint256[]' },
              { internalType: 'uint256[]', name: 'endBlocks', type: 'uint256[]' },
              { internalType: 'uint256[]', name: 'signerIndices', type: 'uint256[]' },
              {
                  internalType: 'uint256',
                  name: 'groupMembershipHistoryIndex',
                  type: 'uint256',
              },
              {
                  internalType: 'address[]',
                  name: 'validatorElectionLessers',
                  type: 'address[]',
              },
              {
                  internalType: 'address[]',
                  name: 'validatorElectionGreaters',
                  type: 'address[]',
              },
              {
                  internalType: 'uint256[]',
                  name: 'validatorElectionIndices',
                  type: 'uint256[]',
              },
              {
                  internalType: 'address[]',
                  name: 'groupElectionLessers',
                  type: 'address[]',
              },
              {
                  internalType: 'address[]',
                  name: 'groupElectionGreaters',
                  type: 'address[]',
              },
              {
                  internalType: 'uint256[]',
                  name: 'groupElectionIndices',
                  type: 'uint256[]',
              },
          ],
          name: 'slash',
          outputs: [],
          payable: false,
          stateMutability: 'nonpayable',
          type: 'function',
      },
  ];
  function newDowntimeSlasher(web3, address) {
      return new web3.eth.Contract(exports.ABI, address);
  }
  exports.newDowntimeSlasher = newDowntimeSlasher;
  //# sourceMappingURL=DowntimeSlasher.js.map