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

import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type { IAccounting, IAccountingInterface } from "../IAccounting";

const _abi = [
  {
    anonymous: false,
    inputs: [],
    name: "DebtPositionIndexingDisabled",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [],
    name: "PoolPositionIndexingDisabled",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint32",
        name: "interfaceID",
        type: "uint32",
      },
      {
        indexed: true,
        internalType: "address",
        name: "kickbackDestination",
        type: "address",
      },
      {
        indexed: false,
        internalType: "string",
        name: "ipfsHash",
        type: "string",
      },
    ],
    name: "UIInitialized",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint32",
        name: "interfaceID",
        type: "uint32",
      },
      {
        indexed: true,
        internalType: "address",
        name: "kickbackDestination",
        type: "address",
      },
      {
        indexed: true,
        internalType: "uint24",
        name: "tags",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "kickbackPortion",
        type: "uint256",
      },
    ],
    name: "UIRegistered",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint32[]",
        name: "uis",
        type: "uint32[]",
      },
    ],
    name: "UIsApproved",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint32[]",
        name: "uis",
        type: "uint32[]",
      },
    ],
    name: "UIsDisapproved",
    type: "event",
  },
  {
    inputs: [
      {
        internalType: "uint32[]",
        name: "ids",
        type: "uint32[]",
      },
    ],
    name: "approveUIs",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "debt",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "count",
        type: "uint256",
      },
    ],
    name: "decreaseDebt",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "liquidity",
        type: "uint256",
      },
    ],
    name: "decreasePoolLiquidity",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint32[]",
        name: "ids",
        type: "uint32[]",
      },
    ],
    name: "disapproveUIs",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint64",
        name: "positionID",
        type: "uint64",
      },
    ],
    name: "getBasicPositionInfo",
    outputs: [
      {
        internalType: "uint256",
        name: "debtCount",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "collateralCount",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "owner",
        type: "address",
      },
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
    ],
    name: "getPoolPosition",
    outputs: [
      {
        components: [
          {
            internalType: "address",
            name: "owner",
            type: "address",
          },
          {
            internalType: "uint256",
            name: "cumulativeLiquidity",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "totalRewards",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "lastBlockPositionIncreased",
            type: "uint256",
          },
          {
            internalType: "uint128",
            name: "liquidity",
            type: "uint128",
          },
          {
            internalType: "uint64",
            name: "lastTimeRewarded",
            type: "uint64",
          },
          {
            internalType: "uint32",
            name: "ui",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "kickbackDestination",
            type: "address",
          },
          {
            internalType: "uint64",
            name: "kickbackPortion",
            type: "uint64",
          },
        ],
        internalType: "struct IAccounting.PoolPosition",
        name: "pt",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint64",
        name: "positionID",
        type: "uint64",
      },
    ],
    name: "getPosition",
    outputs: [
      {
        components: [
          {
            internalType: "uint256",
            name: "startCumulativeDebt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "collateral",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "debt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "startDebtExchangeRate",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "startTCPRewards",
            type: "uint256",
          },
          {
            internalType: "uint64",
            name: "lastTimeUpdated",
            type: "uint64",
          },
          {
            internalType: "uint64",
            name: "lastBlockPositionIncreased",
            type: "uint64",
          },
          {
            internalType: "int24",
            name: "tick",
            type: "int24",
          },
          {
            internalType: "bool",
            name: "tickSet",
            type: "bool",
          },
          {
            internalType: "uint64",
            name: "tickIndex",
            type: "uint64",
          },
          {
            internalType: "uint32",
            name: "ui",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "kickbackDestination",
            type: "address",
          },
          {
            internalType: "uint64",
            name: "kickbackPortion",
            type: "uint64",
          },
        ],
        internalType: "struct IAccounting.DebtPosition",
        name: "acct",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
    ],
    name: "getRewardStatus",
    outputs: [
      {
        components: [
          {
            internalType: "uint256",
            name: "totalRewards",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "cumulativeLiquidity",
            type: "uint256",
          },
        ],
        internalType: "struct IAccounting.RewardStatus",
        name: "rs",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getSystemDebtInfo",
    outputs: [
      {
        components: [
          {
            internalType: "uint256",
            name: "debt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "totalTCPRewards",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "cumulativeDebt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "debtExchangeRate",
            type: "uint256",
          },
        ],
        internalType: "struct IAccounting.SystemDebtInfo",
        name: "",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "count",
        type: "uint256",
      },
    ],
    name: "increaseDebt",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256",
        name: "count",
        type: "uint256",
      },
    ],
    name: "increaseLentHue",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "liquidity",
        type: "uint256",
      },
    ],
    name: "increasePoolLiquidity",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "lentHue",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
    ],
    name: "poolLiquidity",
    outputs: [
      {
        internalType: "uint256",
        name: "liquidity",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address payable",
        name: "account",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "count",
        type: "uint256",
      },
    ],
    name: "sendCollateral",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "dest",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "count",
        type: "uint256",
      },
    ],
    name: "sendLentHue",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "owner",
        type: "address",
      },
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
      {
        components: [
          {
            internalType: "address",
            name: "owner",
            type: "address",
          },
          {
            internalType: "uint256",
            name: "cumulativeLiquidity",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "totalRewards",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "lastBlockPositionIncreased",
            type: "uint256",
          },
          {
            internalType: "uint128",
            name: "liquidity",
            type: "uint128",
          },
          {
            internalType: "uint64",
            name: "lastTimeRewarded",
            type: "uint64",
          },
          {
            internalType: "uint32",
            name: "ui",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "kickbackDestination",
            type: "address",
          },
          {
            internalType: "uint64",
            name: "kickbackPortion",
            type: "uint64",
          },
        ],
        internalType: "struct IAccounting.PoolPosition",
        name: "pt",
        type: "tuple",
      },
    ],
    name: "setPoolPosition",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint64",
        name: "positionID",
        type: "uint64",
      },
      {
        components: [
          {
            internalType: "uint256",
            name: "startCumulativeDebt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "collateral",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "debt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "startDebtExchangeRate",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "startTCPRewards",
            type: "uint256",
          },
          {
            internalType: "uint64",
            name: "lastTimeUpdated",
            type: "uint64",
          },
          {
            internalType: "uint64",
            name: "lastBlockPositionIncreased",
            type: "uint64",
          },
          {
            internalType: "int24",
            name: "tick",
            type: "int24",
          },
          {
            internalType: "bool",
            name: "tickSet",
            type: "bool",
          },
          {
            internalType: "uint64",
            name: "tickIndex",
            type: "uint64",
          },
          {
            internalType: "uint32",
            name: "ui",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "kickbackDestination",
            type: "address",
          },
          {
            internalType: "uint64",
            name: "kickbackPortion",
            type: "uint64",
          },
        ],
        internalType: "struct IAccounting.DebtPosition",
        name: "dp",
        type: "tuple",
      },
    ],
    name: "setPosition",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "contract CharmWrapper",
        name: "pool",
        type: "address",
      },
      {
        components: [
          {
            internalType: "uint256",
            name: "totalRewards",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "cumulativeLiquidity",
            type: "uint256",
          },
        ],
        internalType: "struct IAccounting.RewardStatus",
        name: "rs",
        type: "tuple",
      },
    ],
    name: "setRewardStatus",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "uint256",
            name: "debt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "totalTCPRewards",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "cumulativeDebt",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "debtExchangeRate",
            type: "uint256",
          },
        ],
        internalType: "struct IAccounting.SystemDebtInfo",
        name: "_systemDebtInfo",
        type: "tuple",
      },
    ],
    name: "setSystemDebtInfo",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
];

export class IAccounting__factory {
  static readonly abi = _abi;
  static createInterface(): IAccountingInterface {
    return new utils.Interface(_abi) as IAccountingInterface;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): IAccounting {
    return new Contract(address, _abi, signerOrProvider) as IAccounting;
  }
}
