{
    "abi": [
        { "type": "constructor", "inputs": [], "stateMutability": "nonpayable" },
        {
            "type": "function",
            "name": "CCR",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "DEBT_GAS_COMPENSATION",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "DECIMAL_PRECISION",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "PERCENT_DIVISOR",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "SATOSHI_CORE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "contract ISatoshiCore"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "addColl",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" },
                {
                    "name": "_collateralAmount",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                { "name": "_upperHint", "type": "address", "internalType": "address" },
                { "name": "_lowerHint", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "adjustTrove",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" },
                {
                    "name": "_maxFeePercentage",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "_collDeposit",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "_collWithdrawal",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                { "name": "_debtChange", "type": "uint256", "internalType": "uint256" },
                { "name": "_isDebtIncrease", "type": "bool", "internalType": "bool" },
                { "name": "_upperHint", "type": "address", "internalType": "address" },
                { "name": "_lowerHint", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "checkRecoveryMode",
            "inputs": [
                { "name": "TCR", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "pure"
        },
        {
            "type": "function",
            "name": "closeTrove",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "configureCollateral",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                {
                    "name": "collateralToken",
                    "type": "address",
                    "internalType": "contract IERC20"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "debtToken",
            "inputs": [],
            "outputs": [
                { "name": "", "type": "address", "internalType": "contract IDebtToken" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "factory",
            "inputs": [],
            "outputs": [
                { "name": "", "type": "address", "internalType": "contract IFactory" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "fetchBalances",
            "inputs": [],
            "outputs": [
                {
                    "name": "balances",
                    "type": "tuple",
                    "internalType": "struct Balances",
                    "components": [
                        {
                            "name": "collaterals",
                            "type": "uint256[]",
                            "internalType": "uint256[]"
                        },
                        {
                            "name": "debts",
                            "type": "uint256[]",
                            "internalType": "uint256[]"
                        },
                        {
                            "name": "prices",
                            "type": "uint256[]",
                            "internalType": "uint256[]"
                        }
                    ]
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "getCompositeDebt",
            "inputs": [
                { "name": "_debt", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getGlobalSystemBalances",
            "inputs": [],
            "outputs": [
                {
                    "name": "totalPricedCollateral",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                { "name": "totalDebt", "type": "uint256", "internalType": "uint256" }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "getTCR",
            "inputs": [],
            "outputs": [
                {
                    "name": "globalTotalCollateralRatio",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "guardian",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "initialize",
            "inputs": [
                {
                    "name": "_satoshiCore",
                    "type": "address",
                    "internalType": "contract ISatoshiCore"
                },
                {
                    "name": "_debtToken",
                    "type": "address",
                    "internalType": "contract IDebtToken"
                },
                {
                    "name": "_factory",
                    "type": "address",
                    "internalType": "contract IFactory"
                },
                { "name": "_minNetDebt", "type": "uint256", "internalType": "uint256" },
                {
                    "name": "_gasCompensation",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "isApprovedDelegate",
            "inputs": [
                { "name": "", "type": "address", "internalType": "address" },
                { "name": "", "type": "address", "internalType": "address" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "minNetDebt",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "openTrove",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" },
                {
                    "name": "_maxFeePercentage",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "_collateralAmount",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                { "name": "_debtAmount", "type": "uint256", "internalType": "uint256" },
                { "name": "_upperHint", "type": "address", "internalType": "address" },
                { "name": "_lowerHint", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "owner",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "proxiableUUID",
            "inputs": [],
            "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "removeTroveManager",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "repayDebt",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" },
                { "name": "_debtAmount", "type": "uint256", "internalType": "uint256" },
                { "name": "_upperHint", "type": "address", "internalType": "address" },
                { "name": "_lowerHint", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "setDelegateApproval",
            "inputs": [
                { "name": "_delegate", "type": "address", "internalType": "address" },
                { "name": "_isApproved", "type": "bool", "internalType": "bool" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "setMinNetDebt",
            "inputs": [
                { "name": "_minNetDebt", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "troveManagersData",
            "inputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                }
            ],
            "outputs": [
                {
                    "name": "collateralToken",
                    "type": "address",
                    "internalType": "contract IERC20"
                },
                { "name": "index", "type": "uint16", "internalType": "uint16" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "upgradeTo",
            "inputs": [
                {
                    "name": "newImplementation",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "upgradeToAndCall",
            "inputs": [
                {
                    "name": "newImplementation",
                    "type": "address",
                    "internalType": "address"
                },
                { "name": "data", "type": "bytes", "internalType": "bytes" }
            ],
            "outputs": [],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "withdrawColl",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" },
                {
                    "name": "_collWithdrawal",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                { "name": "_upperHint", "type": "address", "internalType": "address" },
                { "name": "_lowerHint", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "withdrawDebt",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                },
                { "name": "account", "type": "address", "internalType": "address" },
                {
                    "name": "_maxFeePercentage",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                { "name": "_debtAmount", "type": "uint256", "internalType": "uint256" },
                { "name": "_upperHint", "type": "address", "internalType": "address" },
                { "name": "_lowerHint", "type": "address", "internalType": "address" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "event",
            "name": "AdminChanged",
            "inputs": [
                {
                    "name": "previousAdmin",
                    "type": "address",
                    "indexed": false,
                    "internalType": "address"
                },
                {
                    "name": "newAdmin",
                    "type": "address",
                    "indexed": false,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "BeaconUpgraded",
            "inputs": [
                {
                    "name": "beacon",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "BorrowingFeePaid",
            "inputs": [
                {
                    "name": "borrower",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "collateralToken",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract IERC20"
                },
                {
                    "name": "amount",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "CollateralConfigured",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "indexed": false,
                    "internalType": "contract ITroveManager"
                },
                {
                    "name": "collateralToken",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract IERC20"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "DelegateApprovalSet",
            "inputs": [
                {
                    "name": "caller",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "delegate",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "isApproved",
                    "type": "bool",
                    "indexed": false,
                    "internalType": "bool"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Initialized",
            "inputs": [
                {
                    "name": "version",
                    "type": "uint8",
                    "indexed": false,
                    "internalType": "uint8"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "MinNetDebtUpdated",
            "inputs": [
                {
                    "name": "_minNetDebt",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "TroveCreated",
            "inputs": [
                {
                    "name": "_borrower",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "arrayIndex",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "TroveManagerRemoved",
            "inputs": [
                {
                    "name": "troveManager",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract ITroveManager"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Upgraded",
            "inputs": [
                {
                    "name": "implementation",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        { "type": "error", "name": "InvalidSatoshiCore", "inputs": [] }
    ]
}
