/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import {
  Contract,
  ContractFactory,
  ContractTransactionResponse,
  Interface,
} from "ethers";
import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
import type { NonPayableOverrides } from "../common";
import type { VaultGetters, VaultGettersInterface } from "../VaultGetters";

const _abi = [
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "contract ERC20Token",
        name: "_collateralToken",
        type: "address",
      },
    ],
    name: "getCollateralInfo",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "contract ERC20Token",
        name: "_collateralToken",
        type: "address",
      },
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "getCollateralRatio",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "contract ERC20Token",
        name: "_collateralToken",
        type: "address",
      },
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "getHealthFactor",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "contract ERC20Token",
        name: "_collateralToken",
        type: "address",
      },
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "getMaxBorrowable",
    outputs: [
      {
        internalType: "int256",
        name: "",
        type: "int256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "contract ERC20Token",
        name: "_collateralToken",
        type: "address",
      },
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "getMaxWithdrawable",
    outputs: [
      {
        internalType: "int256",
        name: "",
        type: "int256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "contract ERC20Token",
        name: "_collateralToken",
        type: "address",
      },
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
    ],
    name: "getVault",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract Vault",
        name: "_vaultContract",
        type: "address",
      },
      {
        internalType: "address",
        name: "_owner",
        type: "address",
      },
      {
        internalType: "address",
        name: "_reliedUpon",
        type: "address",
      },
    ],
    name: "isReliedUpon",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
] as const;

const _bytecode =
  "0x608060405234801561001057600080fd5b50610f1e806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a6e91adf1161005b578063a6e91adf14610120578063b09758f014610141578063c03d887114610154578063f44364c51461016757600080fd5b8063347c5d431461008257806354510b9d146100b55780635d242b97146100d8575b600080fd5b610095610090366004610b16565b61017a565b604080519384526020840192909252908201526060015b60405180910390f35b6100c86100c3366004610b16565b6101d7565b60405190151581526020016100ac565b6100eb6100e6366004610b61565b610231565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016100ac565b61013361012e366004610b16565b6102b7565b6040519081526020016100ac565b6100c861014f366004610b16565b61037d565b610133610162366004610b16565b6103fb565b610133610175366004610b16565b61050b565b60008060008061018b878787610557565b905060006101998888610627565b905060006101a889838561070e565b50905060008184604001516101bd9190610bb0565b8451602090950151949b949a509850929650505050505050565b6000806101e5858585610557565b905060006101f38686610627565b60808101515190915060000361020e5760019250505061022a565b600061021b87838561083f565b60409092015190911115925050505b9392505050565b6000806000806000806000806102478a8a610627565b905060006102548b6108de565b805160808401515191925060009161026c9190610bb0565b61027a906301e13380610bc3565b60e084015184516020860151604087015160c088015160a090980151929e50909c509a509498509096509450919250505092959891949750929550565b6000806102c5858585610557565b905060006102d38686610627565b6080810151519091506000036102ee5760009250505061022a565b60006102fb87838561070e565b509050600081846040015185602001516103159190610bb0565b61031f9190610bb0565b9050600061032d848361098b565b9050600061035f6103406012600a610cbe565b61034b906064610bc3565b6103559084610bc3565b86604001516109e1565b865190915061036f908290610cca565b9a9950505050505050505050565b604051635881fc3360e01b81526001600160a01b038381166004830152828116602483015260009190851690635881fc3390604401602060405180830381865afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f39190610cf1565b949350505050565b600080610409858585610557565b905060006104178686610627565b8251909150158061042b5750608081015151155b1561043b5760009250505061022a565b60006104478284610a21565b905060006104576012600a610cbe565b610462906064610bc3565b60408401516104719084610bc3565b61047b9190610d13565b9050600061048a89858761070e565b509050600081866040015187602001516104a49190610bb0565b6104ae9190610bb0565b905060006104bc8285610cca565b90506000811380156104d15750808660c00151105b1561036f576001600160ff1b038660c0015111156104f757506001600160ff1b0361036f565b5060c08501519a9950505050505050505050565b600080610519858585610557565b905060006105278686610627565b6080810151519091506000036105425760009250505061022a565b61054d86828461083f565b9695505050505050565b6105826040518060800160405280600081526020016000815260200160008152602001600081525090565b60405163e2c7283f60e01b81526001600160a01b038481166004830152838116602483015260009182918291829189169063e2c7283f90604401608060405180830381865afa1580156105d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fd9190610d35565b60408051608081018252948552602085019390935291830152606082015298975050505050505050565b61062f610a90565b60008060008060008060008060008b6001600160a01b031663c665471f8c6040518263ffffffff1660e01b815260040161067891906001600160a01b0391909116815260200190565b61016060405180830381865afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba9190610d6b565b6040805161012081018252998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e083015261010082015299505050505050505050505b92915050565b6000806000856001600160a01b031663336d391e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107759190610e38565b6001600160a01b031663cf5696cb61078c886108de565b87608001516040518363ffffffff1660e01b81526004016107ae929190610e55565b602060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef9190610e8e565b905060006107ff6012600a610cbe565b61080a906064610bc3565b6020860151606087015161081e9085610ea7565b6108289190610bc3565b6108329190610d13565b9791965090945050505050565b60008061084d85858561070e565b509050600081846040015185602001516108679190610bb0565b6108719190610bb0565b9050806000036108865760009250505061022a565b835160000361089b576000199250505061022a565b60006108a78686610a21565b90506108d36108b86012600a610cbe565b6108c3906064610bc3565b6108cd9084610bc3565b826109e1565b979650505050505050565b61090260405180606001604052806000815260200160008152602001600081525090565b6000806000846001600160a01b03166313f60c9a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109699190610eba565b6040805160608101825293845260208401929092529082015295945050505050565b600061022a61099c6012600a610cbe565b6109a7906001610bc3565b6109b19084610bc3565b6101008501516109c290600a610cbe565b64e8d4a510008660a001516109d79190610bc3565b6109e19190610bc3565b6000816000036109f057600080fd5b82600003610a0057506000610708565b81610a0c600185610ea7565b610a169190610d13565b61022a906001610bb0565b600080610a306012600a610cbe565b610a3b906001610bc3565b64e8d4a510008560a00151610a54878760000151610a72565b610a5e9190610bc3565b610a689190610bc3565b6103f39190610d13565b6000826101000151600a610a869190610cbe565b61022a9083610bc3565b60405180610120016040528060008152602001600081526020016000815260200160008152602001610adc60405180606001604052806000815260200160008152602001600081525090565b8152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114610b1357600080fd5b50565b600080600060608486031215610b2b57600080fd5b8335610b3681610afe565b92506020840135610b4681610afe565b91506040840135610b5681610afe565b809150509250925092565b60008060408385031215610b7457600080fd5b8235610b7f81610afe565b91506020830135610b8f81610afe565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561070857610708610b9a565b808202811582820484141761070857610708610b9a565b600181815b80851115610c15578160001904821115610bfb57610bfb610b9a565b80851615610c0857918102915b93841c9390800290610bdf565b509250929050565b600082610c2c57506001610708565b81610c3957506000610708565b8160018114610c4f5760028114610c5957610c75565b6001915050610708565b60ff841115610c6a57610c6a610b9a565b50506001821b610708565b5060208310610133831016604e8410600b8410161715610c98575081810a610708565b610ca28383610bda565b8060001904821115610cb657610cb6610b9a565b029392505050565b600061022a8383610c1d565b8181036000831280158383131683831282161715610cea57610cea610b9a565b5092915050565b600060208284031215610d0357600080fd5b8151801515811461022a57600080fd5b600082610d3057634e487b7160e01b600052601260045260246000fd5b500490565b60008060008060808587031215610d4b57600080fd5b505082516020840151604085015160609095015191969095509092509050565b6000806000806000806000806000898b03610160811215610d8b57600080fd5b8a51995060208b0151985060408b0151975060608b015196506060607f1982011215610db657600080fd5b506040516060810181811067ffffffffffffffff82111715610de857634e487b7160e01b600052604160045260246000fd5b806040525060808b0151815260a08b0151602082015260c08b015160408201528095505060e08a015193506101008a015192506101208a015191506101408a015190509295985092959850929598565b600060208284031215610e4a57600080fd5b815161022a81610afe565b8251815260208084015181830152604080850151818401528351606084015290830151608083015282015160a082015260c0810161022a565b600060208284031215610ea057600080fd5b5051919050565b8181038181111561070857610708610b9a565b600080600060608486031215610ecf57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122088a8bbf0e50731659250053affd0c6fd68855ae8488831075089108d8fcb0b1864736f6c63430008150033";

type VaultGettersConstructorParams =
  | [signer?: Signer]
  | ConstructorParameters<typeof ContractFactory>;

const isSuperArgs = (
  xs: VaultGettersConstructorParams
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;

export class VaultGetters__factory extends ContractFactory {
  constructor(...args: VaultGettersConstructorParams) {
    if (isSuperArgs(args)) {
      super(...args);
    } else {
      super(_abi, _bytecode, args[0]);
    }
  }

  override getDeployTransaction(
    overrides?: NonPayableOverrides & { from?: string }
  ): Promise<ContractDeployTransaction> {
    return super.getDeployTransaction(overrides || {});
  }
  override deploy(overrides?: NonPayableOverrides & { from?: string }) {
    return super.deploy(overrides || {}) as Promise<
      VaultGetters & {
        deploymentTransaction(): ContractTransactionResponse;
      }
    >;
  }
  override connect(runner: ContractRunner | null): VaultGetters__factory {
    return super.connect(runner) as VaultGetters__factory;
  }

  static readonly bytecode = _bytecode;
  static readonly abi = _abi;
  static createInterface(): VaultGettersInterface {
    return new Interface(_abi) as VaultGettersInterface;
  }
  static connect(
    address: string,
    runner?: ContractRunner | null
  ): VaultGetters {
    return new Contract(address, _abi, runner) as unknown as VaultGetters;
  }
}
