/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import type { Admin, AdminInterface } from "../Admin";

const _abi = [
  {
    inputs: [
      {
        internalType: "address",
        name: "_admin",
        type: "address",
      },
      {
        internalType: "address",
        name: "_advisor",
        type: "address",
      },
    ],
    stateMutability: "nonpayable",
    type: "constructor",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "amount0",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "amount1",
        type: "uint256",
      },
    ],
    name: "addBaseLiquidity",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "amount0",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "amount1",
        type: "uint256",
      },
    ],
    name: "addLimitLiquidity",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "admin",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "advisor",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "address[]",
        name: "listed",
        type: "address[]",
      },
    ],
    name: "appendList",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
    ],
    name: "pendingFees",
    outputs: [
      {
        internalType: "uint256",
        name: "fees0",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "fees1",
        type: "uint256",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "shares",
        type: "uint256",
      },
    ],
    name: "pullLiquidity",
    outputs: [
      {
        internalType: "uint256",
        name: "base0",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "base1",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "limit0",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "limit1",
        type: "uint256",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "int24",
        name: "_baseLower",
        type: "int24",
      },
      {
        internalType: "int24",
        name: "_baseUpper",
        type: "int24",
      },
      {
        internalType: "int24",
        name: "_limitLower",
        type: "int24",
      },
      {
        internalType: "int24",
        name: "_limitUpper",
        type: "int24",
      },
      {
        internalType: "address",
        name: "_feeRecipient",
        type: "address",
      },
      {
        internalType: "int256",
        name: "swapQuantity",
        type: "int256",
      },
    ],
    name: "rebalance",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "address",
        name: "listed",
        type: "address",
      },
    ],
    name: "removeListed",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract IERC20",
        name: "token",
        type: "address",
      },
      {
        internalType: "address",
        name: "recipient",
        type: "address",
      },
    ],
    name: "rescueERC20",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_deposit0Max",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_deposit1Max",
        type: "uint256",
      },
    ],
    name: "setDepositMax",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "_maxTotalSupply",
        type: "uint256",
      },
    ],
    name: "setMaxTotalSupply",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
    ],
    name: "toggleWhitelist",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "newAdmin",
        type: "address",
      },
    ],
    name: "transferAdmin",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "newAdvisor",
        type: "address",
      },
    ],
    name: "transferAdvisor",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_hypervisor",
        type: "address",
      },
      {
        internalType: "address",
        name: "newOwner",
        type: "address",
      },
    ],
    name: "transferHypervisorOwner",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];

const _bytecode =
  "0x608060405234801561001057600080fd5b506040516111393803806111398339818101604052604081101561003357600080fd5b5080516020909101516001600160a01b038216610097576040805162461bcd60e51b815260206004820152601960248201527f5f61646d696e2073686f756c64206265206e6f6e2d7a65726f00000000000000604482015290519081900360640190fd5b6001600160a01b0381166100f2576040805162461bcd60e51b815260206004820152601b60248201527f5f61647669736f722073686f756c64206265206e6f6e2d7a65726f0000000000604482015290519081900360640190fd5b600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905561100c8061012d6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806375829def11610097578063afadd52711610066578063afadd527146103f8578063d0645c5114610424578063f4642b5214610452578063f851a4401461048457610100565b806375829def1461031c5780637b79a6d81461034257806380a2236d14610374578063a6da8e0d146103a657610100565b806339393ac9116100d357806339393ac9146101ef5780634fe5ca8c146102155780635d799f871461023b5780636a9dc0da1461026957610100565b80630fdf7a4c146101055780631936e4be1461013557806325d2a3f31461015957806326ef39d114610198575b600080fd5b6101336004803603604081101561011b57600080fd5b506001600160a01b038135811691602001351661048c565b005b61013d610543565b604080516001600160a01b039092168252519081900360200190f35b61017f6004803603602081101561016f57600080fd5b50356001600160a01b0316610552565b6040805192835260208301919091528051918290030190f35b610133600480360360e08110156101ae57600080fd5b506001600160a01b0381358116916020810135600290810b926040830135820b926060810135830b926080820135900b9160a0820135169060c0013561061c565b6101336004803603602081101561020557600080fd5b50356001600160a01b03166106ff565b6101336004803603602081101561022b57600080fd5b50356001600160a01b03166107a1565b6101336004803603604081101561025157600080fd5b506001600160a01b0381358116916020013516610877565b6101336004803603604081101561027f57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460208302840111640100000000831117156102de57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a47945050505050565b6101336004803603602081101561033257600080fd5b50356001600160a01b0316610b14565b6101336004803603606081101561035857600080fd5b506001600160a01b038135169060208101359060400135610bea565b6101336004803603606081101561038a57600080fd5b506001600160a01b038135169060208101359060400135610ca3565b6103d2600480360360408110156103bc57600080fd5b506001600160a01b038135169060200135610d3d565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101336004803603604081101561040e57600080fd5b506001600160a01b038135169060200135610e27565b6101336004803603604081101561043a57600080fd5b506001600160a01b0381358116916020013516610eb9565b6101336004803603606081101561046857600080fd5b506001600160a01b038135169060208101359060400135610f54565b61013d610ff0565b6000546001600160a01b031633146104d8576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561052757600080fd5b505af115801561053b573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031681565b60015460009081906001600160a01b031633146105a5576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9030b23b34b9b7b960a11b604482015290519081900360640190fd5b826001600160a01b031663224438d16040518163ffffffff1660e01b81526004016040805180830381600087803b1580156105df57600080fd5b505af11580156105f3573d6000803e3d6000fd5b505050506040513d604081101561060957600080fd5b5080516020909101519094909350915050565b6001546001600160a01b0316331461066a576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9030b23b34b9b7b960a11b604482015290519081900360640190fd5b6040805163549f6dc960e01b8152600288810b600483015287810b602483015286810b604483015285900b60648201526001600160a01b03848116608483015260a4820184905291519189169163549f6dc99160c48082019260009290919082900301818387803b1580156106de57600080fd5b505af11580156106f2573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b0316331461074b576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b806001600160a01b0316637e15144b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146107ed576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6001600160a01b038116610848576040805162461bcd60e51b815260206004820152601d60248201527f6e657741647669736f722073686f756c64206265206e6f6e2d7a65726f000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108c3576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6001600160a01b03811661091e576040805162461bcd60e51b815260206004820152601c60248201527f726563697069656e742073686f756c64206265206e6f6e2d7a65726f00000000604482015290519081900360640190fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d60208110156109a557600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610a0e57600080fd5b505af1158015610a22573d6000803e3d6000fd5b505050506040513d6020811015610a3857600080fd5b5051610a4357600080fd5b5050565b6000546001600160a01b03163314610a93576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b604051637fe75b0760e01b81526020600482018181528351602484015283516001600160a01b03861693637fe75b0793869392839260440191808601910280838360005b83811015610aef578181015183820152602001610ad7565b5050505090500192505050600060405180830381600087803b15801561052757600080fd5b6000546001600160a01b03163314610b60576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b6001600160a01b038116610bbb576040805162461bcd60e51b815260206004820152601b60248201527f6e657741646d696e2073686f756c64206265206e6f6e2d7a65726f0000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b03163314610c38576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9030b23b34b9b7b960a11b604482015290519081900360640190fd5b826001600160a01b0316635dbba48e83836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610c8657600080fd5b505af1158015610c9a573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b03163314610cef576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b826001600160a01b0316633e091ee983836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610c8657600080fd5b6001546000908190819081906001600160a01b03163314610d94576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9030b23b34b9b7b960a11b604482015290519081900360640190fd5b856001600160a01b0316637f2116ff866040518263ffffffff1660e01b815260040180828152602001915050608060405180830381600087803b158015610dda57600080fd5b505af1158015610dee573d6000803e3d6000fd5b505050506040513d6080811015610e0457600080fd5b508051602082015160408301516060909301519199909850919650945092505050565b6000546001600160a01b03163314610e73576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b816001600160a01b0316633f3e4c11826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052757600080fd5b6000546001600160a01b03163314610f05576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9030b236b4b760b11b604482015290519081900360640190fd5b816001600160a01b03166328b0e4cc826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561052757600080fd5b6001546001600160a01b03163314610fa2576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9030b23b34b9b7b960a11b604482015290519081900360640190fd5b826001600160a01b0316630d1df8dc83836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610c8657600080fd5b6000546001600160a01b03168156fea164736f6c6343000706000a";

export class Admin__factory extends ContractFactory {
  constructor(
    ...args: [signer: Signer] | ConstructorParameters<typeof ContractFactory>
  ) {
    if (args.length === 1) {
      super(_abi, _bytecode, args[0]);
    } else {
      super(...args);
    }
  }

  deploy(
    _admin: string,
    _advisor: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): Promise<Admin> {
    return super.deploy(_admin, _advisor, overrides || {}) as Promise<Admin>;
  }
  getDeployTransaction(
    _admin: string,
    _advisor: string,
    overrides?: Overrides & { from?: string | Promise<string> }
  ): TransactionRequest {
    return super.getDeployTransaction(_admin, _advisor, overrides || {});
  }
  attach(address: string): Admin {
    return super.attach(address) as Admin;
  }
  connect(signer: Signer): Admin__factory {
    return super.connect(signer) as Admin__factory;
  }
  static readonly bytecode = _bytecode;
  static readonly abi = _abi;
  static createInterface(): AdminInterface {
    return new utils.Interface(_abi) as AdminInterface;
  }
  static connect(address: string, signerOrProvider: Signer | Provider): Admin {
    return new Contract(address, _abi, signerOrProvider) as Admin;
  }
}