{
  "_format": "hh-sol-artifact-1",
  "contractName": "ObservationLibHarness",
  "sourceName": "contracts/test/libraries/ObservationLibHarness.sol",
  "abi": [
    {
      "inputs": [],
      "name": "MAX_CARDINALITY",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint24",
          "name": "_observationIndex",
          "type": "uint24"
        },
        {
          "internalType": "uint24",
          "name": "_oldestObservationIndex",
          "type": "uint24"
        },
        {
          "internalType": "uint32",
          "name": "_target",
          "type": "uint32"
        },
        {
          "internalType": "uint24",
          "name": "_cardinality",
          "type": "uint24"
        },
        {
          "internalType": "uint32",
          "name": "_time",
          "type": "uint32"
        }
      ],
      "name": "binarySearch",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint224",
              "name": "amount",
              "type": "uint224"
            },
            {
              "internalType": "uint32",
              "name": "timestamp",
              "type": "uint32"
            }
          ],
          "internalType": "struct ObservationLib.Observation",
          "name": "beforeOrAt",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint224",
              "name": "amount",
              "type": "uint224"
            },
            {
              "internalType": "uint32",
              "name": "timestamp",
              "type": "uint32"
            }
          ],
          "internalType": "struct ObservationLib.Observation",
          "name": "atOrAfter",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint224",
              "name": "amount",
              "type": "uint224"
            },
            {
              "internalType": "uint32",
              "name": "timestamp",
              "type": "uint32"
            }
          ],
          "internalType": "struct ObservationLib.Observation[]",
          "name": "_observations",
          "type": "tuple[]"
        }
      ],
      "name": "setObservations",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610784806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638200d87314610046578063d1f18b6b14610069578063efd911451461008a575b600080fd5b61005062ffffff81565b60405162ffffff90911681526020015b60405180910390f35b61007c6100773660046104f1565b61009f565b60405161006092919061055c565b61009d61009836600461047c565b6100e4565b005b604080518082019091526000808252602082015260408051808201909152600080825260208201526100d660008888888888610141565b915091509550959350505050565b60005b8181101561013c57828282818110610101576101016106b1565b90506040020160008262ffffff811061011c5761011c6106b1565b0161012782826106c7565b5081905061013481610638565b9150506100e7565b505050565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260008662ffffff1690506000818962ffffff161061018c578862ffffff166101a7565b600161019d62ffffff8816846105cc565b6101a79190610621565b905060005b60026101b883856105cc565b6101c2919061060d565b90508a6101d4828962ffffff1661036a565b62ffffff1662ffffff81106101eb576101eb6106b1565b604080518082019091529101547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c0100000000000000000000000000000000000000000000000000000000900463ffffffff166020820181905290955080610261576102598260016105cc565b9350506101ac565b8b610271838a62ffffff1661037d565b62ffffff1662ffffff8110610288576102886106b1565b604080518082019091529101547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116825263ffffffff7c0100000000000000000000000000000000000000000000000000000000909104811660208301529095506000906102fb90838116908c908b9061039316565b905080801561032457506103248660200151898c63ffffffff166103939092919063ffffffff16565b1561033057505061035c565b8061034757610340600184610621565b9350610355565b6103528360016105cc565b94505b50506101ac565b505050965096945050505050565b60006103768284610671565b9392505050565b600061037661038d8460016105cc565b8361036a565b60008163ffffffff168463ffffffff16111580156103bd57508163ffffffff168363ffffffff1611155b156103d9578263ffffffff168463ffffffff1611159050610376565b60008263ffffffff168563ffffffff16116104085761040363ffffffff86166401000000006105e4565b610410565b8463ffffffff165b64ffffffffff16905060008363ffffffff168563ffffffff16116104485761044363ffffffff86166401000000006105e4565b610450565b8463ffffffff165b64ffffffffff169091111595945050505050565b803562ffffff8116811461047757600080fd5b919050565b6000806020838503121561048f57600080fd5b823567ffffffffffffffff808211156104a757600080fd5b818501915085601f8301126104bb57600080fd5b8135818111156104ca57600080fd5b8660208260061b85010111156104df57600080fd5b60209290920196919550909350505050565b600080600080600060a0868803121561050957600080fd5b61051286610464565b945061052060208701610464565b9350604086013561053081610739565b925061053e60608701610464565b9150608086013561054e81610739565b809150509295509295909350565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260208084015163ffffffff16908201526080810182517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166040830152602083015163ffffffff166060830152610376565b600082198211156105df576105df610685565b500190565b600064ffffffffff80831681851680830382111561060457610604610685565b01949350505050565b60008261061c5761061c61069b565b500490565b60008282101561063357610633610685565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561066a5761066a610685565b5060010190565b6000826106805761068061069b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b81357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168082146106f457600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000091508082845416178355602084013561072d81610739565b60e01b90911617905550565b63ffffffff8116811461074b57600080fd5b5056fea26469706673582212209aa8782ce58e5745dcb9c01bcb4fa98e632b83bf3341fcf11a460c3e5dc4058764736f6c63430008060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80638200d87314610046578063d1f18b6b14610069578063efd911451461008a575b600080fd5b61005062ffffff81565b60405162ffffff90911681526020015b60405180910390f35b61007c6100773660046104f1565b61009f565b60405161006092919061055c565b61009d61009836600461047c565b6100e4565b005b604080518082019091526000808252602082015260408051808201909152600080825260208201526100d660008888888888610141565b915091509550959350505050565b60005b8181101561013c57828282818110610101576101016106b1565b90506040020160008262ffffff811061011c5761011c6106b1565b0161012782826106c7565b5081905061013481610638565b9150506100e7565b505050565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260008662ffffff1690506000818962ffffff161061018c578862ffffff166101a7565b600161019d62ffffff8816846105cc565b6101a79190610621565b905060005b60026101b883856105cc565b6101c2919061060d565b90508a6101d4828962ffffff1661036a565b62ffffff1662ffffff81106101eb576101eb6106b1565b604080518082019091529101547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c0100000000000000000000000000000000000000000000000000000000900463ffffffff166020820181905290955080610261576102598260016105cc565b9350506101ac565b8b610271838a62ffffff1661037d565b62ffffff1662ffffff8110610288576102886106b1565b604080518082019091529101547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116825263ffffffff7c0100000000000000000000000000000000000000000000000000000000909104811660208301529095506000906102fb90838116908c908b9061039316565b905080801561032457506103248660200151898c63ffffffff166103939092919063ffffffff16565b1561033057505061035c565b8061034757610340600184610621565b9350610355565b6103528360016105cc565b94505b50506101ac565b505050965096945050505050565b60006103768284610671565b9392505050565b600061037661038d8460016105cc565b8361036a565b60008163ffffffff168463ffffffff16111580156103bd57508163ffffffff168363ffffffff1611155b156103d9578263ffffffff168463ffffffff1611159050610376565b60008263ffffffff168563ffffffff16116104085761040363ffffffff86166401000000006105e4565b610410565b8463ffffffff165b64ffffffffff16905060008363ffffffff168563ffffffff16116104485761044363ffffffff86166401000000006105e4565b610450565b8463ffffffff165b64ffffffffff169091111595945050505050565b803562ffffff8116811461047757600080fd5b919050565b6000806020838503121561048f57600080fd5b823567ffffffffffffffff808211156104a757600080fd5b818501915085601f8301126104bb57600080fd5b8135818111156104ca57600080fd5b8660208260061b85010111156104df57600080fd5b60209290920196919550909350505050565b600080600080600060a0868803121561050957600080fd5b61051286610464565b945061052060208701610464565b9350604086013561053081610739565b925061053e60608701610464565b9150608086013561054e81610739565b809150509295509295909350565b82517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260208084015163ffffffff16908201526080810182517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166040830152602083015163ffffffff166060830152610376565b600082198211156105df576105df610685565b500190565b600064ffffffffff80831681851680830382111561060457610604610685565b01949350505050565b60008261061c5761061c61069b565b500490565b60008282101561063357610633610685565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561066a5761066a610685565b5060010190565b6000826106805761068061069b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b81357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168082146106f457600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000091508082845416178355602084013561072d81610739565b60e01b90911617905550565b63ffffffff8116811461074b57600080fd5b5056fea26469706673582212209aa8782ce58e5745dcb9c01bcb4fa98e632b83bf3341fcf11a460c3e5dc4058764736f6c63430008060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
