{
  "_format": "hh-sol-artifact-1",
  "contractName": "DrawRingBufferLibHarness",
  "sourceName": "contracts/test/libraries/DrawRingBufferLibHarness.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_cardinality",
          "type": "uint8"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "MAX_CARDINALITY",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "lastDrawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "nextIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "cardinality",
              "type": "uint32"
            }
          ],
          "internalType": "struct DrawRingBufferLib.Buffer",
          "name": "_buffer",
          "type": "tuple"
        },
        {
          "internalType": "uint32",
          "name": "_drawId",
          "type": "uint32"
        }
      ],
      "name": "_getIndex",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "lastDrawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "nextIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "cardinality",
              "type": "uint32"
            }
          ],
          "internalType": "struct DrawRingBufferLib.Buffer",
          "name": "_buffer",
          "type": "tuple"
        }
      ],
      "name": "_isInitialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "lastDrawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "nextIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "cardinality",
              "type": "uint32"
            }
          ],
          "internalType": "struct DrawRingBufferLib.Buffer",
          "name": "_buffer",
          "type": "tuple"
        },
        {
          "internalType": "uint32",
          "name": "_drawId",
          "type": "uint32"
        }
      ],
      "name": "_push",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "lastDrawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "nextIndex",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "cardinality",
              "type": "uint32"
            }
          ],
          "internalType": "struct DrawRingBufferLib.Buffer",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161065238038061065283398101604081905261002f91610059565b6000805463ffffffff60401b191660ff929092166801000000000000000002919091179055610083565b60006020828403121561006b57600080fd5b815160ff8116811461007c57600080fd5b9392505050565b6105c0806100926000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806311f807df1461005157806379ba59ff1461007e5780638200d873146100c0578063f3a94e61146100dc575b600080fd5b61006461005f3660046104a2565b6100ff565b60405163ffffffff90911681526020015b60405180910390f35b61009161008c3660046104a2565b610114565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610075565b6100c961010081565b60405161ffff9091168152602001610075565b6100ef6100ea366004610486565b61013b565b6040519015158152602001610075565b600061010b8383610146565b90505b92915050565b604080516060810182526000808252602082018190529181019190915261010b838361027b565b600061010e82610366565b600061015183610366565b801561016d5750826000015163ffffffff168263ffffffff1611155b6101be5760405162461bcd60e51b815260206004820152600f60248201527f4452422f6675747572652d64726177000000000000000000000000000000000060448201526064015b60405180910390fd5b82516000906101ce90849061052d565b9050836040015163ffffffff168163ffffffff161061022f5760405162461bcd60e51b815260206004820152601060248201527f4452422f657870697265642d647261770000000000000000000000000000000060448201526064016101b5565b600061024f856020015163ffffffff16866040015163ffffffff1661038e565b90506102728163ffffffff168363ffffffff16876040015163ffffffff166103bc565b95945050505050565b60408051606081018252600080825260208201819052918101919091526102a183610366565b15806102c4575082516102b59060016104ee565b63ffffffff168263ffffffff16145b6103105760405162461bcd60e51b815260206004820152601260248201527f4452422f6d7573742d62652d636f6e746967000000000000000000000000000060448201526064016101b5565b60405180606001604052808363ffffffff168152602001610345856020015163ffffffff16866040015163ffffffff166103d4565b63ffffffff168152602001846040015163ffffffff16815250905092915050565b6000816020015163ffffffff1660001480156103875750815163ffffffff16155b1592915050565b60008161039d5750600061010e565b61010b60016103ac84866104d6565b6103b69190610516565b836103e4565b60006103cc836103ac84876104d6565b949350505050565b600061010b6103b68460016104d6565b600061010b8284610552565b60006060828403121561040257600080fd5b6040516060810181811067ffffffffffffffff8211171561043357634e487b7160e01b600052604160045260246000fd5b6040529050806104428361046d565b81526104506020840161046d565b60208201526104616040840161046d565b60408201525092915050565b803563ffffffff8116811461048157600080fd5b919050565b60006060828403121561049857600080fd5b61010b83836103f0565b600080608083850312156104b557600080fd5b6104bf84846103f0565b91506104cd6060840161046d565b90509250929050565b600082198211156104e9576104e9610574565b500190565b600063ffffffff80831681851680830382111561050d5761050d610574565b01949350505050565b60008282101561052857610528610574565b500390565b600063ffffffff8381169083168181101561054a5761054a610574565b039392505050565b60008261056f57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220775ca116e9344e45558cd5b5d2dd9513fd6981579d673c4fd3e1e1307ee8f9ca64736f6c63430008060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806311f807df1461005157806379ba59ff1461007e5780638200d873146100c0578063f3a94e61146100dc575b600080fd5b61006461005f3660046104a2565b6100ff565b60405163ffffffff90911681526020015b60405180910390f35b61009161008c3660046104a2565b610114565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610075565b6100c961010081565b60405161ffff9091168152602001610075565b6100ef6100ea366004610486565b61013b565b6040519015158152602001610075565b600061010b8383610146565b90505b92915050565b604080516060810182526000808252602082018190529181019190915261010b838361027b565b600061010e82610366565b600061015183610366565b801561016d5750826000015163ffffffff168263ffffffff1611155b6101be5760405162461bcd60e51b815260206004820152600f60248201527f4452422f6675747572652d64726177000000000000000000000000000000000060448201526064015b60405180910390fd5b82516000906101ce90849061052d565b9050836040015163ffffffff168163ffffffff161061022f5760405162461bcd60e51b815260206004820152601060248201527f4452422f657870697265642d647261770000000000000000000000000000000060448201526064016101b5565b600061024f856020015163ffffffff16866040015163ffffffff1661038e565b90506102728163ffffffff168363ffffffff16876040015163ffffffff166103bc565b95945050505050565b60408051606081018252600080825260208201819052918101919091526102a183610366565b15806102c4575082516102b59060016104ee565b63ffffffff168263ffffffff16145b6103105760405162461bcd60e51b815260206004820152601260248201527f4452422f6d7573742d62652d636f6e746967000000000000000000000000000060448201526064016101b5565b60405180606001604052808363ffffffff168152602001610345856020015163ffffffff16866040015163ffffffff166103d4565b63ffffffff168152602001846040015163ffffffff16815250905092915050565b6000816020015163ffffffff1660001480156103875750815163ffffffff16155b1592915050565b60008161039d5750600061010e565b61010b60016103ac84866104d6565b6103b69190610516565b836103e4565b60006103cc836103ac84876104d6565b949350505050565b600061010b6103b68460016104d6565b600061010b8284610552565b60006060828403121561040257600080fd5b6040516060810181811067ffffffffffffffff8211171561043357634e487b7160e01b600052604160045260246000fd5b6040529050806104428361046d565b81526104506020840161046d565b60208201526104616040840161046d565b60408201525092915050565b803563ffffffff8116811461048157600080fd5b919050565b60006060828403121561049857600080fd5b61010b83836103f0565b600080608083850312156104b557600080fd5b6104bf84846103f0565b91506104cd6060840161046d565b90509250929050565b600082198211156104e9576104e9610574565b500190565b600063ffffffff80831681851680830382111561050d5761050d610574565b01949350505050565b60008282101561052857610528610574565b500390565b600063ffffffff8381169083168181101561054a5761054a610574565b039392505050565b60008261056f57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220775ca116e9344e45558cd5b5d2dd9513fd6981579d673c4fd3e1e1307ee8f9ca64736f6c63430008060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
