{
    "abi": [
        { "type": "constructor", "inputs": [], "stateMutability": "nonpayable" },
        {
            "type": "function",
            "name": "DEBT_GAS_COMPENSATION",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "DOMAIN_SEPARATOR",
            "inputs": [],
            "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "FLASH_LOAN_FEE",
            "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": "allowance",
            "inputs": [
                { "name": "owner", "type": "address", "internalType": "address" },
                { "name": "spender", "type": "address", "internalType": "address" }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "approve",
            "inputs": [
                { "name": "spender", "type": "address", "internalType": "address" },
                { "name": "amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "balanceOf",
            "inputs": [
                { "name": "account", "type": "address", "internalType": "address" }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "borrowerOperations",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "contract IBorrowerOperations"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "burn",
            "inputs": [
                { "name": "_account", "type": "address", "internalType": "address" },
                { "name": "_amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "burnWithGasCompensation",
            "inputs": [
                { "name": "_account", "type": "address", "internalType": "address" },
                { "name": "_amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "decimals",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint8", "internalType": "uint8" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "decreaseAllowance",
            "inputs": [
                { "name": "spender", "type": "address", "internalType": "address" },
                {
                    "name": "subtractedValue",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "eip712Domain",
            "inputs": [],
            "outputs": [
                { "name": "fields", "type": "bytes1", "internalType": "bytes1" },
                { "name": "name", "type": "string", "internalType": "string" },
                { "name": "version", "type": "string", "internalType": "string" },
                { "name": "chainId", "type": "uint256", "internalType": "uint256" },
                {
                    "name": "verifyingContract",
                    "type": "address",
                    "internalType": "address"
                },
                { "name": "salt", "type": "bytes32", "internalType": "bytes32" },
                {
                    "name": "extensions",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "enableTroveManager",
            "inputs": [
                {
                    "name": "_troveManager",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "factory",
            "inputs": [],
            "outputs": [
                { "name": "", "type": "address", "internalType": "contract IFactory" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "flashFee",
            "inputs": [
                { "name": "token", "type": "address", "internalType": "address" },
                { "name": "amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "flashLoan",
            "inputs": [
                {
                    "name": "receiver",
                    "type": "address",
                    "internalType": "contract IERC3156FlashBorrower"
                },
                { "name": "token", "type": "address", "internalType": "address" },
                { "name": "amount", "type": "uint256", "internalType": "uint256" },
                { "name": "data", "type": "bytes", "internalType": "bytes" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "gasPool",
            "inputs": [],
            "outputs": [
                { "name": "", "type": "address", "internalType": "contract IGasPool" }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "guardian",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "increaseAllowance",
            "inputs": [
                { "name": "spender", "type": "address", "internalType": "address" },
                { "name": "addedValue", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "initialize",
            "inputs": [
                {
                    "name": "_satoshiCore",
                    "type": "address",
                    "internalType": "contract ISatoshiCore"
                },
                { "name": "_name", "type": "string", "internalType": "string" },
                { "name": "_symbol", "type": "string", "internalType": "string" },
                {
                    "name": "_stabilityPool",
                    "type": "address",
                    "internalType": "contract IStabilityPool"
                },
                {
                    "name": "_borrowerOperations",
                    "type": "address",
                    "internalType": "contract IBorrowerOperations"
                },
                {
                    "name": "_factory",
                    "type": "address",
                    "internalType": "contract IFactory"
                },
                {
                    "name": "_gasPool",
                    "type": "address",
                    "internalType": "contract IGasPool"
                },
                {
                    "name": "_gasCompensation",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "maxFlashLoan",
            "inputs": [
                { "name": "token", "type": "address", "internalType": "address" }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "mint",
            "inputs": [
                { "name": "_account", "type": "address", "internalType": "address" },
                { "name": "_amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "mintWithGasCompensation",
            "inputs": [
                { "name": "_account", "type": "address", "internalType": "address" },
                { "name": "_amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "name",
            "inputs": [],
            "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "nonces",
            "inputs": [
                { "name": "owner", "type": "address", "internalType": "address" }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "owner",
            "inputs": [],
            "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "permit",
            "inputs": [
                { "name": "owner", "type": "address", "internalType": "address" },
                { "name": "spender", "type": "address", "internalType": "address" },
                { "name": "value", "type": "uint256", "internalType": "uint256" },
                { "name": "deadline", "type": "uint256", "internalType": "uint256" },
                { "name": "v", "type": "uint8", "internalType": "uint8" },
                { "name": "r", "type": "bytes32", "internalType": "bytes32" },
                { "name": "s", "type": "bytes32", "internalType": "bytes32" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "proxiableUUID",
            "inputs": [],
            "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "returnFromPool",
            "inputs": [
                {
                    "name": "_poolAddress",
                    "type": "address",
                    "internalType": "address"
                },
                { "name": "_receiver", "type": "address", "internalType": "address" },
                { "name": "_amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "sendToSP",
            "inputs": [
                { "name": "_sender", "type": "address", "internalType": "address" },
                { "name": "_amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "stabilityPool",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "contract IStabilityPool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "symbol",
            "inputs": [],
            "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "totalSupply",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "transfer",
            "inputs": [
                { "name": "recipient", "type": "address", "internalType": "address" },
                { "name": "amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "transferFrom",
            "inputs": [
                { "name": "sender", "type": "address", "internalType": "address" },
                { "name": "recipient", "type": "address", "internalType": "address" },
                { "name": "amount", "type": "uint256", "internalType": "uint256" }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "troveManager",
            "inputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "contract ITroveManager"
                }
            ],
            "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
            "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": "version",
            "inputs": [],
            "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
            "stateMutability": "view"
        },
        {
            "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": "Approval",
            "inputs": [
                {
                    "name": "owner",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "spender",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "BeaconUpgraded",
            "inputs": [
                {
                    "name": "beacon",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "EIP712DomainChanged",
            "inputs": [],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Initialized",
            "inputs": [
                {
                    "name": "version",
                    "type": "uint8",
                    "indexed": false,
                    "internalType": "uint8"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Transfer",
            "inputs": [
                {
                    "name": "from",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "to",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Upgraded",
            "inputs": [
                {
                    "name": "implementation",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        { "type": "error", "name": "InvalidSatoshiCore", "inputs": [] }
    ]
}
