[
 {
  "type": "constructor",
  "inputs": [
   {
    "name": "timelock_",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "admin_",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "admin",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "assetMarket",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "tuple",
    "internalType": "struct KerbClock.AssetMarket",
    "components": [
     {
      "name": "marketCode",
      "type": "bytes8",
      "internalType": "bytes8"
     },
     {
      "name": "cureWindowSec",
      "type": "uint32",
      "internalType": "uint32"
     },
     {
      "name": "exists",
      "type": "bool",
      "internalType": "bool"
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "calendar",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "tuple",
    "internalType": "struct KerbClock.MarketCalendar",
    "components": [
     {
      "name": "exists",
      "type": "bool",
      "internalType": "bool"
     },
     {
      "name": "dstRule",
      "type": "uint8",
      "internalType": "enum KerbClock.DstRule"
     },
     {
      "name": "utcOffsetMin",
      "type": "int32",
      "internalType": "int32"
     },
     {
      "name": "dstOffsetMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "coverageFromDay",
      "type": "uint32",
      "internalType": "uint32"
     },
     {
      "name": "coverageToDay",
      "type": "uint32",
      "internalType": "uint32"
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "calendarRegime",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "ts",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "uint8",
    "internalType": "enum KerbClock.Regime"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "cureWindowOpen",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "ts",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [
   {
    "name": "open",
    "type": "bool",
    "internalType": "bool"
   },
   {
    "name": "closesAt",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "dayOverride",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   },
   {
    "name": "localDay",
    "type": "uint32",
    "internalType": "uint32"
   }
  ],
  "outputs": [
   {
    "name": "set",
    "type": "bool",
    "internalType": "bool"
   },
   {
    "name": "",
    "type": "tuple[]",
    "internalType": "struct KerbClock.Session[]",
    "components": [
     {
      "name": "startMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "endMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "kind",
      "type": "uint8",
      "internalType": "enum KerbClock.SessionKind"
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "isAttester",
  "inputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "isHalted",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "ts",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "nextTransition",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "ts",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [
   {
    "name": "kind",
    "type": "uint8",
    "internalType": "uint8"
   },
   {
    "name": "at",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "nextWeakening",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "ts",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [
   {
    "name": "kind",
    "type": "uint8",
    "internalType": "uint8"
   },
   {
    "name": "at",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "sessionAt",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "ts",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [
   {
    "name": "kind",
    "type": "uint8",
    "internalType": "enum KerbClock.SessionKind"
   },
   {
    "name": "startsAt",
    "type": "uint64",
    "internalType": "uint64"
   },
   {
    "name": "endsAt",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "setAdmin",
  "inputs": [
   {
    "name": "newAdmin",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setAssetMarket",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   },
   {
    "name": "cureWindowSec",
    "type": "uint32",
    "internalType": "uint32"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setAttester",
  "inputs": [
   {
    "name": "attester",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "allowed",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setCalendar",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   },
   {
    "name": "c",
    "type": "tuple",
    "internalType": "struct KerbClock.MarketCalendar",
    "components": [
     {
      "name": "exists",
      "type": "bool",
      "internalType": "bool"
     },
     {
      "name": "dstRule",
      "type": "uint8",
      "internalType": "enum KerbClock.DstRule"
     },
     {
      "name": "utcOffsetMin",
      "type": "int32",
      "internalType": "int32"
     },
     {
      "name": "dstOffsetMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "coverageFromDay",
      "type": "uint32",
      "internalType": "uint32"
     },
     {
      "name": "coverageToDay",
      "type": "uint32",
      "internalType": "uint32"
     }
    ]
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setDayOverride",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   },
   {
    "name": "localDay",
    "type": "uint32",
    "internalType": "uint32"
   },
   {
    "name": "sessions",
    "type": "tuple[]",
    "internalType": "struct KerbClock.Session[]",
    "components": [
     {
      "name": "startMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "endMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "kind",
      "type": "uint8",
      "internalType": "enum KerbClock.SessionKind"
     }
    ]
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setHalt",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   },
   {
    "name": "halted",
    "type": "bool",
    "internalType": "bool"
   },
   {
    "name": "expiry",
    "type": "uint64",
    "internalType": "uint64"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setTimelock",
  "inputs": [
   {
    "name": "newTimelock",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setWeekly",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   },
   {
    "name": "weekday",
    "type": "uint8",
    "internalType": "uint8"
   },
   {
    "name": "sessions",
    "type": "tuple[]",
    "internalType": "struct KerbClock.Session[]",
    "components": [
     {
      "name": "startMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "endMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "kind",
      "type": "uint8",
      "internalType": "enum KerbClock.SessionKind"
     }
    ]
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "timelock",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "weekly",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   },
   {
    "name": "weekday",
    "type": "uint8",
    "internalType": "uint8"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "tuple[]",
    "internalType": "struct KerbClock.Session[]",
    "components": [
     {
      "name": "startMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "endMin",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "kind",
      "type": "uint8",
      "internalType": "enum KerbClock.SessionKind"
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "event",
  "name": "AdminSet",
  "inputs": [
   {
    "name": "admin",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "AssetMarketSet",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "indexed": true,
    "internalType": "bytes32"
   },
   {
    "name": "marketCode",
    "type": "bytes8",
    "indexed": true,
    "internalType": "bytes8"
   },
   {
    "name": "cureWindowSec",
    "type": "uint32",
    "indexed": false,
    "internalType": "uint32"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "AttesterSet",
  "inputs": [
   {
    "name": "attester",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "allowed",
    "type": "bool",
    "indexed": false,
    "internalType": "bool"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "CalendarSet",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "indexed": true,
    "internalType": "bytes8"
   },
   {
    "name": "utcOffsetMin",
    "type": "int32",
    "indexed": false,
    "internalType": "int32"
   },
   {
    "name": "dstRule",
    "type": "uint8",
    "indexed": false,
    "internalType": "enum KerbClock.DstRule"
   },
   {
    "name": "coverageFromDay",
    "type": "uint32",
    "indexed": false,
    "internalType": "uint32"
   },
   {
    "name": "coverageToDay",
    "type": "uint32",
    "indexed": false,
    "internalType": "uint32"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "DayOverrideSet",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "indexed": true,
    "internalType": "bytes8"
   },
   {
    "name": "localDay",
    "type": "uint32",
    "indexed": true,
    "internalType": "uint32"
   },
   {
    "name": "sessions",
    "type": "uint256",
    "indexed": false,
    "internalType": "uint256"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "HaltSet",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "indexed": true,
    "internalType": "bytes32"
   },
   {
    "name": "halted",
    "type": "bool",
    "indexed": false,
    "internalType": "bool"
   },
   {
    "name": "expiry",
    "type": "uint64",
    "indexed": false,
    "internalType": "uint64"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "TimelockSet",
  "inputs": [
   {
    "name": "timelock",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "WeeklySet",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "indexed": true,
    "internalType": "bytes8"
   },
   {
    "name": "weekday",
    "type": "uint8",
    "indexed": true,
    "internalType": "uint8"
   },
   {
    "name": "sessions",
    "type": "uint256",
    "indexed": false,
    "internalType": "uint256"
   }
  ],
  "anonymous": false
 },
 {
  "type": "error",
  "name": "BadSession",
  "inputs": []
 },
 {
  "type": "error",
  "name": "HaltNotExpiring",
  "inputs": []
 },
 {
  "type": "error",
  "name": "NoTransitionFound",
  "inputs": []
 },
 {
  "type": "error",
  "name": "NotAdmin",
  "inputs": []
 },
 {
  "type": "error",
  "name": "NotAttester",
  "inputs": []
 },
 {
  "type": "error",
  "name": "NotTimelock",
  "inputs": []
 },
 {
  "type": "error",
  "name": "OutOfCoverage",
  "inputs": [
   {
    "name": "localDay",
    "type": "uint32",
    "internalType": "uint32"
   }
  ]
 },
 {
  "type": "error",
  "name": "UnknownAsset",
  "inputs": [
   {
    "name": "assetId",
    "type": "bytes32",
    "internalType": "bytes32"
   }
  ]
 },
 {
  "type": "error",
  "name": "UnknownMarket",
  "inputs": [
   {
    "name": "marketCode",
    "type": "bytes8",
    "internalType": "bytes8"
   }
  ]
 },
 {
  "type": "error",
  "name": "ZeroAddress",
  "inputs": []
 }
]
