{
  "_format": "hh-sol-artifact-1",
  "contractName": "BondManager",
  "sourceName": "contracts/bridge/trustless/BondManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondMultiplier",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minBond",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "BondAlreadyReleased",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondAlreadySlashed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BondNotReleased",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InsufficientBond",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroDepositId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroRelayer",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondAmount",
          "type": "uint256"
        }
      ],
      "name": "BondPosted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondAmount",
          "type": "uint256"
        }
      ],
      "name": "BondReleased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "challenger",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bondAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "challengerReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "burnedAmount",
          "type": "uint256"
        }
      ],
      "name": "BondSlashed",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "bondMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "bonds",
      "outputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "slashed",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "released",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        }
      ],
      "name": "getBond",
      "outputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "slashed",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "released",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        }
      ],
      "name": "getRequiredBond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "getTotalBonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minBond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "depositAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "postBond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        }
      ],
      "name": "releaseBond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "depositIds",
          "type": "uint256[]"
        }
      ],
      "name": "releaseBondsBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalReleased",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "challenger",
          "type": "address"
        }
      ],
      "name": "slashBond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "challengerReward",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "burnedAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalBonds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "[encoded data, 6142 characters]",
  "deployedBytecode": "[encoded data, 5496 characters]",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
