[
 {
  "inputs": [
   {
    "internalType": "uint256",
    "name": "_hourlyThreshold",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "_gracePeriod",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "_hourDuration",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "_minDeposit",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "_minEscalation",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "_creditCap",
    "type": "uint256"
   }
  ],
  "stateMutability": "nonpayable",
  "type": "constructor"
 },
 {
  "inputs": [],
  "name": "AlreadySettled",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "AmountTooLarge",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "InvalidConfig",
  "type": "error"
 },
 {
  "inputs": [
   {
    "internalType": "uint256",
    "name": "sent",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "required",
    "type": "uint256"
   }
  ],
  "name": "MustEscalate",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "NotDeployer",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "NotSettled",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "NothingToRescue",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "OnlyEOA",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "Reentrancy",
  "type": "error"
 },
 {
  "inputs": [],
  "name": "RefundFailed",
  "type": "error"
 },
 {
  "anonymous": false,
  "inputs": [
   {
    "indexed": true,
    "internalType": "address",
    "name": "contributor",
    "type": "address"
   },
   {
    "indexed": true,
    "internalType": "uint256",
    "name": "hour",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "amount",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "creditedDelta",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "weightAdded",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "newWeight",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "txCount",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "hourTotal",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "earlyBps",
    "type": "uint256"
   }
  ],
  "name": "Deposited",
  "type": "event"
 },
 {
  "anonymous": false,
  "inputs": [
   {
    "indexed": true,
    "internalType": "address",
    "name": "contributor",
    "type": "address"
   },
   {
    "indexed": true,
    "internalType": "uint256",
    "name": "index",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "timestamp",
    "type": "uint256"
   }
  ],
  "name": "FirstDeposit",
  "type": "event"
 },
 {
  "anonymous": false,
  "inputs": [
   {
    "indexed": true,
    "internalType": "address",
    "name": "savior",
    "type": "address"
   },
   {
    "indexed": true,
    "internalType": "uint256",
    "name": "hour",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "hourTotal",
    "type": "uint256"
   }
  ],
  "name": "HourSaved",
  "type": "event"
 },
 {
  "anonymous": false,
  "inputs": [
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "launchTime",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "hourlyThreshold",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "gracePeriod",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "hourDuration",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "minDeposit",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "minEscalation",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "creditCap",
    "type": "uint256"
   }
  ],
  "name": "Launched",
  "type": "event"
 },
 {
  "anonymous": false,
  "inputs": [
   {
    "indexed": true,
    "internalType": "address",
    "name": "to",
    "type": "address"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "amount",
    "type": "uint256"
   }
  ],
  "name": "Rescued",
  "type": "event"
 },
 {
  "anonymous": false,
  "inputs": [
   {
    "indexed": true,
    "internalType": "uint256",
    "name": "hour",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "timestamp",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "totalContributors",
    "type": "uint256"
   },
   {
    "indexed": false,
    "internalType": "uint256",
    "name": "totalVolume",
    "type": "uint256"
   }
  ],
  "name": "Settled",
  "type": "event"
 },
 {
  "inputs": [],
  "name": "POINTS_PER_ETH",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "account",
    "type": "address"
   }
  ],
  "name": "contributedBy",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "",
    "type": "address"
   }
  ],
  "name": "contributors",
  "outputs": [
   {
    "internalType": "uint96",
    "name": "highWater",
    "type": "uint96"
   },
   {
    "internalType": "uint96",
    "name": "weight",
    "type": "uint96"
   },
   {
    "internalType": "uint32",
    "name": "txCount",
    "type": "uint32"
   },
   {
    "internalType": "uint32",
    "name": "firstHour",
    "type": "uint32"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "creditCap",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "currentHour",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "currentHourTotal",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "deployer",
  "outputs": [
   {
    "internalType": "address",
    "name": "",
    "type": "address"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "deposit",
  "outputs": [],
  "stateMutability": "payable",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "earlyMultiplierBps",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "ethNeededThisHour",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "account",
    "type": "address"
   }
  ],
  "name": "firstHourOf",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "hour",
    "type": "uint256"
   },
   {
    "internalType": "bool",
    "name": "hasJoined",
    "type": "bool"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "firstJudgedHour",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "gracePeriod",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "hourDuration",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "hourlyThreshold",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "isSettled",
  "outputs": [
   {
    "internalType": "bool",
    "name": "",
    "type": "bool"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "lastActiveHour",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "hour",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "total",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "launchTime",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "minDeposit",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "minEscalation",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "account",
    "type": "address"
   }
  ],
  "name": "pointsOf",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "uint256",
    "name": "weight",
    "type": "uint256"
   }
  ],
  "name": "previewPoints",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "pure",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "account",
    "type": "address"
   }
  ],
  "name": "requiredNext",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "rescue",
  "outputs": [],
  "stateMutability": "nonpayable",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "settle",
  "outputs": [],
  "stateMutability": "nonpayable",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "stats",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "volume",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "people",
    "type": "uint256"
   },
   {
    "internalType": "uint256",
    "name": "txs",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "timeLeftInHour",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "totalContributors",
  "outputs": [
   {
    "internalType": "uint64",
    "name": "",
    "type": "uint64"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "totalTxCount",
  "outputs": [
   {
    "internalType": "uint64",
    "name": "",
    "type": "uint64"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [],
  "name": "totalVolume",
  "outputs": [
   {
    "internalType": "uint128",
    "name": "",
    "type": "uint128"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "account",
    "type": "address"
   }
  ],
  "name": "txCountOf",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "inputs": [
   {
    "internalType": "address",
    "name": "account",
    "type": "address"
   }
  ],
  "name": "weightOf",
  "outputs": [
   {
    "internalType": "uint256",
    "name": "",
    "type": "uint256"
   }
  ],
  "stateMutability": "view",
  "type": "function"
 },
 {
  "stateMutability": "payable",
  "type": "receive"
 }
]