[
    {
        "type": "event",
        "name": "Swap",
        "inputs": [
            {
                "name": "tokenIn",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "tokenOut",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "amountIn",
                "type": "uint256",
                "indexed": false,
                "internalType": "uint256"
            },
            {
                "name": "amountOut",
                "type": "uint256",
                "indexed": false,
                "internalType": "uint256"
            },
            {
                "name": "from",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "to",
                "type": "address",
                "indexed": false,
                "internalType": "address"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "Redeemed",
        "inputs": [
            {
                "name": "amount",
                "type": "uint256",
                "indexed": false,
                "internalType": "uint256"
            },
            {
                "name": "tokens",
                "type": "address[]",
                "indexed": false,
                "internalType": "address[]"
            },
            {
                "name": "amounts",
                "type": "uint256[]",
                "indexed": false,
                "internalType": "uint256[]"
            },
            {
                "name": "forfeitTokens",
                "type": "address[]",
                "indexed": false,
                "internalType": "address[]"
            },
            {
                "name": "from",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "to",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "CollateralAdded",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "CollateralManagerSet",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "managerData",
                "type": "tuple",
                "indexed": false,
                "internalType": "struct ManagerStorage",
                "components": [
                    {
                        "name": "subCollaterals",
                        "type": "address[]",
                        "internalType": "contract IERC20[]"
                    },
                    {
                        "name": "config",
                        "type": "bytes",
                        "internalType": "bytes"
                    }
                ]
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "CollateralRevoked",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "CollateralWhitelistStatusUpdated",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "whitelistData",
                "type": "bytes",
                "indexed": false,
                "internalType": "bytes"
            },
            {
                "name": "whitelistStatus",
                "type": "uint8",
                "indexed": false,
                "internalType": "uint8"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "FeesSet",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "xFee",
                "type": "uint64[]",
                "indexed": false,
                "internalType": "uint64[]"
            },
            {
                "name": "yFee",
                "type": "int64[]",
                "indexed": false,
                "internalType": "int64[]"
            },
            {
                "name": "mint",
                "type": "bool",
                "indexed": false,
                "internalType": "bool"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "OracleSet",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "oracleConfig",
                "type": "bytes",
                "indexed": false,
                "internalType": "bytes"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "OwnershipTransferred",
        "inputs": [
            {
                "name": "previousOwner",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "newOwner",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "PauseToggled",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "pausedType",
                "type": "uint256",
                "indexed": false,
                "internalType": "uint256"
            },
            {
                "name": "isPaused",
                "type": "bool",
                "indexed": false,
                "internalType": "bool"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "RedemptionCurveParamsSet",
        "inputs": [
            {
                "name": "xFee",
                "type": "uint64[]",
                "indexed": false,
                "internalType": "uint64[]"
            },
            {
                "name": "yFee",
                "type": "int64[]",
                "indexed": false,
                "internalType": "int64[]"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "ReservesAdjusted",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "amount",
                "type": "uint256",
                "indexed": false,
                "internalType": "uint256"
            },
            {
                "name": "increase",
                "type": "bool",
                "indexed": false,
                "internalType": "bool"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "TrustedToggled",
        "inputs": [
            {
                "name": "sender",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "isTrusted",
                "type": "bool",
                "indexed": false,
                "internalType": "bool"
            },
            {
                "name": "trustedType",
                "type": "uint8",
                "indexed": false,
                "internalType": "enum TrustedType"
            }
        ],
        "anonymous": false
    },
    {
        "type": "event",
        "name": "WhitelistStatusToggled",
        "inputs": [
            {
                "name": "whitelistType",
                "type": "uint8",
                "indexed": false,
                "internalType": "enum WhitelistType"
            },
            {
                "name": "who",
                "type": "address",
                "indexed": true,
                "internalType": "address"
            },
            {
                "name": "whitelistStatus",
                "type": "uint256",
                "indexed": false,
                "internalType": "uint256"
            }
        ],
        "anonymous": false
    },
    {
        "inputs": [],
        "name": "accessControlManager",
        "outputs": [
            {
                "internalType": "contract IAccessControlManager",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "addCollateral",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "uint128",
                "name": "amount",
                "type": "uint128"
            },
            {
                "internalType": "bool",
                "name": "increase",
                "type": "bool"
            }
        ],
        "name": "adjustStablecoins",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "agToken",
        "outputs": [
            {
                "internalType": "contract IAgToken",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "contract IERC20",
                "name": "token",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "spender",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "changeAllowance",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "facetAddress",
                        "type": "address"
                    },
                    {
                        "internalType": "enum FacetCutAction",
                        "name": "action",
                        "type": "uint8"
                    },
                    {
                        "internalType": "bytes4[]",
                        "name": "functionSelectors",
                        "type": "bytes4[]"
                    }
                ],
                "internalType": "struct FacetCut[]",
                "name": "_diamondCut",
                "type": "tuple[]"
            },
            {
                "internalType": "address",
                "name": "_init",
                "type": "address"
            },
            {
                "internalType": "bytes",
                "name": "_calldata",
                "type": "bytes"
            }
        ],
        "name": "diamondCut",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes4",
                "name": "_functionSelector",
                "type": "bytes4"
            }
        ],
        "name": "facetAddress",
        "outputs": [
            {
                "internalType": "address",
                "name": "facetAddress_",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "facetAddresses",
        "outputs": [
            {
                "internalType": "address[]",
                "name": "facetAddresses_",
                "type": "address[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_facet",
                "type": "address"
            }
        ],
        "name": "facetFunctionSelectors",
        "outputs": [
            {
                "internalType": "bytes4[]",
                "name": "facetFunctionSelectors_",
                "type": "bytes4[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "facets",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "address",
                        "name": "facetAddress",
                        "type": "address"
                    },
                    {
                        "internalType": "bytes4[]",
                        "name": "functionSelectors",
                        "type": "bytes4[]"
                    }
                ],
                "internalType": "struct Facet[]",
                "name": "facets_",
                "type": "tuple[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getCollateralBurnFees",
        "outputs": [
            {
                "internalType": "uint64[]",
                "name": "xFeeBurn",
                "type": "uint64[]"
            },
            {
                "internalType": "int64[]",
                "name": "yFeeBurn",
                "type": "int64[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getCollateralDecimals",
        "outputs": [
            {
                "internalType": "uint8",
                "name": "",
                "type": "uint8"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getCollateralInfo",
        "outputs": [
            {
                "components": [
                    {
                        "internalType": "uint8",
                        "name": "isManaged",
                        "type": "uint8"
                    },
                    {
                        "internalType": "uint8",
                        "name": "isMintLive",
                        "type": "uint8"
                    },
                    {
                        "internalType": "uint8",
                        "name": "isBurnLive",
                        "type": "uint8"
                    },
                    {
                        "internalType": "uint8",
                        "name": "decimals",
                        "type": "uint8"
                    },
                    {
                        "internalType": "uint8",
                        "name": "onlyWhitelisted",
                        "type": "uint8"
                    },
                    {
                        "internalType": "uint216",
                        "name": "normalizedStables",
                        "type": "uint216"
                    },
                    {
                        "internalType": "uint64[]",
                        "name": "xFeeMint",
                        "type": "uint64[]"
                    },
                    {
                        "internalType": "int64[]",
                        "name": "yFeeMint",
                        "type": "int64[]"
                    },
                    {
                        "internalType": "uint64[]",
                        "name": "xFeeBurn",
                        "type": "uint64[]"
                    },
                    {
                        "internalType": "int64[]",
                        "name": "yFeeBurn",
                        "type": "int64[]"
                    },
                    {
                        "internalType": "bytes",
                        "name": "oracleConfig",
                        "type": "bytes"
                    },
                    {
                        "internalType": "bytes",
                        "name": "whitelistData",
                        "type": "bytes"
                    },
                    {
                        "components": [
                            {
                                "internalType": "contract IERC20[]",
                                "name": "subCollaterals",
                                "type": "address[]"
                            },
                            {
                                "internalType": "bytes",
                                "name": "config",
                                "type": "bytes"
                            }
                        ],
                        "internalType": "struct ManagerStorage",
                        "name": "managerData",
                        "type": "tuple"
                    }
                ],
                "internalType": "struct Collateral",
                "name": "",
                "type": "tuple"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getCollateralList",
        "outputs": [
            {
                "internalType": "address[]",
                "name": "",
                "type": "address[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getCollateralMintFees",
        "outputs": [
            {
                "internalType": "uint64[]",
                "name": "xFeeMint",
                "type": "uint64[]"
            },
            {
                "internalType": "int64[]",
                "name": "yFeeMint",
                "type": "int64[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getCollateralRatio",
        "outputs": [
            {
                "internalType": "uint64",
                "name": "collatRatio",
                "type": "uint64"
            },
            {
                "internalType": "uint256",
                "name": "stablecoinsIssued",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getCollateralWhitelistData",
        "outputs": [
            {
                "internalType": "bytes",
                "name": "",
                "type": "bytes"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getIssuedByCollateral",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "stablecoinsFromCollateral",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "stablecoinsIssued",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getManagerData",
        "outputs": [
            {
                "internalType": "bool",
                "name": "isManaged",
                "type": "bool"
            },
            {
                "internalType": "contract IERC20[]",
                "name": "subCollaterals",
                "type": "address[]"
            },
            {
                "internalType": "bytes",
                "name": "config",
                "type": "bytes"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getOracle",
        "outputs": [
            {
                "internalType": "enum OracleReadType",
                "name": "oracleType",
                "type": "uint8"
            },
            {
                "internalType": "enum OracleTargetType",
                "name": "targetType",
                "type": "uint8"
            },
            {
                "internalType": "bytes",
                "name": "oracleData",
                "type": "bytes"
            },
            {
                "internalType": "bytes",
                "name": "targetData",
                "type": "bytes"
            },
            {
                "internalType": "bytes",
                "name": "hyperparameters",
                "type": "bytes"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "getOracleValues",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "mint",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "burn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "ratio",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "minRatio",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "redemption",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getRedemptionFees",
        "outputs": [
            {
                "internalType": "uint64[]",
                "name": "xRedemptionCurve",
                "type": "uint64[]"
            },
            {
                "internalType": "int64[]",
                "name": "yRedemptionCurve",
                "type": "int64[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getTotalIssued",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "stablecoinsIssued",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "enum ActionType",
                "name": "action",
                "type": "uint8"
            }
        ],
        "name": "isPaused",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "sender",
                "type": "address"
            }
        ],
        "name": "isTrusted",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "sender",
                "type": "address"
            }
        ],
        "name": "isTrustedSeller",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "bytes4",
                "name": "selector",
                "type": "bytes4"
            }
        ],
        "name": "isValidSelector",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "isWhitelistedCollateral",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "sender",
                "type": "address"
            }
        ],
        "name": "isWhitelistedForCollateral",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "enum WhitelistType",
                "name": "whitelistType",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "sender",
                "type": "address"
            }
        ],
        "name": "isWhitelistedForType",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenIn",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "tokenOut",
                "type": "address"
            }
        ],
        "name": "quoteIn",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenIn",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "tokenOut",
                "type": "address"
            }
        ],
        "name": "quoteOut",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "quoteRedemptionCurve",
        "outputs": [
            {
                "internalType": "address[]",
                "name": "tokens",
                "type": "address[]"
            },
            {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "contract IERC20",
                "name": "token",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "recoverERC20",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "receiver",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint256[]",
                "name": "minAmountOuts",
                "type": "uint256[]"
            }
        ],
        "name": "redeem",
        "outputs": [
            {
                "internalType": "address[]",
                "name": "tokens",
                "type": "address[]"
            },
            {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "receiver",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "uint256[]",
                "name": "minAmountOuts",
                "type": "uint256[]"
            },
            {
                "internalType": "address[]",
                "name": "forfeitTokens",
                "type": "address[]"
            }
        ],
        "name": "redeemWithForfeit",
        "outputs": [
            {
                "internalType": "address[]",
                "name": "tokens",
                "type": "address[]"
            },
            {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            }
        ],
        "name": "revokeCollateral",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "minAmountOut",
                "type": "uint256"
            },
            {
                "internalType": "bytes",
                "name": "payload",
                "type": "bytes"
            }
        ],
        "name": "sellRewards",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "_newAccessControlManager",
                "type": "address"
            }
        ],
        "name": "setAccessControlManager",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "components": [
                    {
                        "internalType": "contract IERC20[]",
                        "name": "subCollaterals",
                        "type": "address[]"
                    },
                    {
                        "internalType": "bytes",
                        "name": "config",
                        "type": "bytes"
                    }
                ],
                "internalType": "struct ManagerStorage",
                "name": "managerData",
                "type": "tuple"
            }
        ],
        "name": "setCollateralManager",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "uint64[]",
                "name": "xFee",
                "type": "uint64[]"
            },
            {
                "internalType": "int64[]",
                "name": "yFee",
                "type": "int64[]"
            },
            {
                "internalType": "bool",
                "name": "mint",
                "type": "bool"
            }
        ],
        "name": "setFees",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "bytes",
                "name": "oracleConfig",
                "type": "bytes"
            }
        ],
        "name": "setOracle",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint64[]",
                "name": "xFee",
                "type": "uint64[]"
            },
            {
                "internalType": "int64[]",
                "name": "yFee",
                "type": "int64[]"
            }
        ],
        "name": "setRedemptionCurveParams",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "uint8",
                "name": "whitelistStatus",
                "type": "uint8"
            },
            {
                "internalType": "bytes",
                "name": "whitelistData",
                "type": "bytes"
            }
        ],
        "name": "setWhitelistStatus",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenIn",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "tokenOut",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            }
        ],
        "name": "swapExactInput",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenIn",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "bytes",
                "name": "permitData",
                "type": "bytes"
            }
        ],
        "name": "swapExactInputWithPermit",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "amountInMax",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenIn",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "tokenOut",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            }
        ],
        "name": "swapExactOutput",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "amountInMax",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "tokenIn",
                "type": "address"
            },
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
            },
            {
                "internalType": "bytes",
                "name": "permitData",
                "type": "bytes"
            }
        ],
        "name": "swapExactOutputWithPermit",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "collateral",
                "type": "address"
            },
            {
                "internalType": "uint8",
                "name": "pausedType",
                "type": "uint8"
            }
        ],
        "name": "togglePause",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "sender",
                "type": "address"
            },
            {
                "internalType": "enum TrustedType",
                "name": "t",
                "type": "uint8"
            }
        ],
        "name": "toggleTrusted",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "type": "function",
        "name": "updateOracle",
        "inputs": [
            {
                "name": "collateral",
                "type": "address",
                "internalType": "address"
            }
        ],
        "outputs": [],
        "stateMutability": "nonpayable"
    },
    {
        "inputs": [
            {
                "internalType": "enum WhitelistType",
                "name": "whitelistType",
                "type": "uint8"
            },
            {
                "internalType": "address",
                "name": "who",
                "type": "address"
            }
        ],
        "name": "toggleWhitelist",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            },
            {
                "internalType": "bool",
                "name": "increase",
                "type": "bool"
            }
        ],
        "name": "updateNormalizer",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
