{
    "abi": [
        { "type": "constructor", "inputs": [], "stateMutability": "nonpayable" },
        {
            "type": "function",
            "name": "SATOSHI_CORE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "contract ISatoshiCore"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "TARGET_DIGITS",
            "inputs": [],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "fetchPrice",
            "inputs": [
                {
                    "name": "_token",
                    "type": "address",
                    "internalType": "contract IERC20"
                }
            ],
            "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "fetchPriceUnsafe",
            "inputs": [
                {
                    "name": "_token",
                    "type": "address",
                    "internalType": "contract IERC20"
                }
            ],
            "outputs": [
                { "name": "", "type": "uint256", "internalType": "uint256" },
                { "name": "", "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"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "oracleRecords",
            "inputs": [
                { "name": "", "type": "address", "internalType": "contract IERC20" }
            ],
            "outputs": [
                {
                    "name": "priceFeed",
                    "type": "address",
                    "internalType": "contract IPriceFeed"
                },
                { "name": "decimals", "type": "uint8", "internalType": "uint8" }
            ],
            "stateMutability": "view"
        },
        {
            "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": "setPriceFeed",
            "inputs": [
                {
                    "name": "_token",
                    "type": "address",
                    "internalType": "contract IERC20"
                },
                {
                    "name": "_priceFeed",
                    "type": "address",
                    "internalType": "contract IPriceFeed"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "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": "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": "Initialized",
            "inputs": [
                {
                    "name": "version",
                    "type": "uint8",
                    "indexed": false,
                    "internalType": "uint8"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "NewOracleRegistered",
            "inputs": [
                {
                    "name": "token",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract IERC20"
                },
                {
                    "name": "priceFeed",
                    "type": "address",
                    "indexed": true,
                    "internalType": "contract IPriceFeed"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Upgraded",
            "inputs": [
                {
                    "name": "implementation",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "error",
            "name": "InvalidFeedResponse",
            "inputs": [
                {
                    "name": "priceFeed",
                    "type": "address",
                    "internalType": "contract IPriceFeed"
                }
            ]
        },
        { "type": "error", "name": "InvalidPriceFeedAddress", "inputs": [] },
        { "type": "error", "name": "InvalidSatoshiCore", "inputs": [] }
    ]
}
