/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  EventFragment,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener,
} from "ethers";
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedLogDescription,
  TypedListener,
  TypedContractMethod,
} from "../../../../common";

export declare namespace IUniswapPricingLibrary {
  export type PoolRouteConfigStruct = {
    pool: AddressLike;
    zeroForOne: boolean;
    twapInterval: BigNumberish;
    token0Decimals: BigNumberish;
    token1Decimals: BigNumberish;
  };

  export type PoolRouteConfigStructOutput = [
    pool: string,
    zeroForOne: boolean,
    twapInterval: bigint,
    token0Decimals: bigint,
    token1Decimals: bigint
  ] & {
    pool: string;
    zeroForOne: boolean;
    twapInterval: bigint;
    token0Decimals: bigint;
    token1Decimals: bigint;
  };
}

export declare namespace ILenderCommitmentGroup {
  export type CommitmentGroupConfigStruct = {
    principalTokenAddress: AddressLike;
    collateralTokenAddress: AddressLike;
    marketId: BigNumberish;
    maxLoanDuration: BigNumberish;
    interestRateLowerBound: BigNumberish;
    interestRateUpperBound: BigNumberish;
    liquidityThresholdPercent: BigNumberish;
    collateralRatio: BigNumberish;
  };

  export type CommitmentGroupConfigStructOutput = [
    principalTokenAddress: string,
    collateralTokenAddress: string,
    marketId: bigint,
    maxLoanDuration: bigint,
    interestRateLowerBound: bigint,
    interestRateUpperBound: bigint,
    liquidityThresholdPercent: bigint,
    collateralRatio: bigint
  ] & {
    principalTokenAddress: string;
    collateralTokenAddress: string;
    marketId: bigint;
    maxLoanDuration: bigint;
    interestRateLowerBound: bigint;
    interestRateUpperBound: bigint;
    liquidityThresholdPercent: bigint;
    collateralRatio: bigint;
  };
}

export interface LenderCommitmentGroup_SmartInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "DEFAULT_WITHDRAW_DELAY_TIME_SECONDS"
      | "EXCHANGE_RATE_EXPANSION_FACTOR"
      | "MAX_WITHDRAW_DELAY_TIME"
      | "MIN_TWAP_INTERVAL"
      | "ORACLE_MANAGER"
      | "SMART_COMMITMENT_FORWARDER"
      | "STANDARD_EXPANSION_FACTOR"
      | "TELLER_V2"
      | "UNISWAP_EXPANSION_FACTOR"
      | "UNISWAP_V3_FACTORY"
      | "acceptFundsForAcceptBid"
      | "activeBids"
      | "activeBidsAmountDueRemaining"
      | "addPrincipalToCommitmentGroup"
      | "burnSharesToWithdrawEarnings"
      | "calculateCollateralRequiredToBorrowPrincipal"
      | "calculateCollateralTokensAmountEquivalentToPrincipalTokens"
      | "collateralRatio"
      | "collateralToken"
      | "excessivePrincipalTokensRepaid"
      | "firstDepositMade"
      | "getCollateralTokenAddress"
      | "getCollateralTokenId"
      | "getCollateralTokenType"
      | "getLastUnpausedAt"
      | "getMarketId"
      | "getMaxLoanDuration"
      | "getMinInterestRate"
      | "getMinimumAmountDifferenceToCloseDefaultedLoan"
      | "getPoolTotalEstimatedValue"
      | "getPoolUtilizationRatio"
      | "getPrincipalAmountAvailableToBorrow"
      | "getPrincipalForCollateralForPoolRoutes"
      | "getPrincipalTokenAddress"
      | "getRequiredCollateral"
      | "getTokenDifferenceFromLiquidations"
      | "getTotalPrincipalTokensOutstandingInActiveLoans"
      | "getUniswapPriceRatioForPoolRoutes"
      | "initialize"
      | "interestRateLowerBound"
      | "interestRateUpperBound"
      | "lastUnpausedAt"
      | "liquidateDefaultedLoanWithIncentive"
      | "liquidityThresholdPercent"
      | "maxLoanDuration"
      | "maxPrincipalPerCollateralAmount"
      | "owner"
      | "pauseLendingPool"
      | "paused"
      | "poolOracleRoutes"
      | "poolSharesToken"
      | "prepareSharesForBurn"
      | "principalToken"
      | "renounceOwnership"
      | "repayLoanCallback"
      | "setMaxPrincipalPerCollateralAmount"
      | "setWithdrawDelayTime"
      | "sharesExchangeRate"
      | "sharesExchangeRateInverse"
      | "totalInterestCollected"
      | "totalPrincipalTokensCommitted"
      | "totalPrincipalTokensLended"
      | "totalPrincipalTokensRepaid"
      | "totalPrincipalTokensWithdrawn"
      | "transferOwnership"
      | "unpauseLendingPool"
      | "withdrawDelayTimeSeconds"
      | "withdrawFromEscrowVault"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "BorrowerAcceptedFunds"
      | "DefaultedLoanLiquidated"
      | "EarningsWithdrawn"
      | "Initialized"
      | "LenderAddedPrincipal"
      | "LoanRepaid"
      | "OwnershipTransferred"
      | "Paused"
      | "PoolInitialized"
      | "Unpaused"
      | "WithdrawFromEscrow"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "DEFAULT_WITHDRAW_DELAY_TIME_SECONDS",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "EXCHANGE_RATE_EXPANSION_FACTOR",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "MAX_WITHDRAW_DELAY_TIME",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "MIN_TWAP_INTERVAL",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "ORACLE_MANAGER",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "SMART_COMMITMENT_FORWARDER",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "STANDARD_EXPANSION_FACTOR",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "TELLER_V2", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "UNISWAP_EXPANSION_FACTOR",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "UNISWAP_V3_FACTORY",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "acceptFundsForAcceptBid",
    values: [
      AddressLike,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      AddressLike,
      BigNumberish,
      BigNumberish,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "activeBids",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "activeBidsAmountDueRemaining",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "addPrincipalToCommitmentGroup",
    values: [BigNumberish, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "burnSharesToWithdrawEarnings",
    values: [BigNumberish, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "calculateCollateralRequiredToBorrowPrincipal",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "calculateCollateralTokensAmountEquivalentToPrincipalTokens",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "collateralRatio",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "collateralToken",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "excessivePrincipalTokensRepaid",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "firstDepositMade",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getCollateralTokenAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getCollateralTokenId",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getCollateralTokenType",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getLastUnpausedAt",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getMarketId",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getMaxLoanDuration",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getMinInterestRate",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMinimumAmountDifferenceToCloseDefaultedLoan",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPoolTotalEstimatedValue",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getPoolUtilizationRatio",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPrincipalAmountAvailableToBorrow",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getPrincipalForCollateralForPoolRoutes",
    values: [IUniswapPricingLibrary.PoolRouteConfigStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "getPrincipalTokenAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getRequiredCollateral",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTokenDifferenceFromLiquidations",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getTotalPrincipalTokensOutstandingInActiveLoans",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getUniswapPriceRatioForPoolRoutes",
    values: [IUniswapPricingLibrary.PoolRouteConfigStruct[]]
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values: [
      ILenderCommitmentGroup.CommitmentGroupConfigStruct,
      IUniswapPricingLibrary.PoolRouteConfigStruct[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "interestRateLowerBound",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "interestRateUpperBound",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "lastUnpausedAt",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "liquidateDefaultedLoanWithIncentive",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "liquidityThresholdPercent",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxLoanDuration",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "maxPrincipalPerCollateralAmount",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "pauseLendingPool",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "paused", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "poolOracleRoutes",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "poolSharesToken",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "prepareSharesForBurn",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "principalToken",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "repayLoanCallback",
    values: [BigNumberish, AddressLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setMaxPrincipalPerCollateralAmount",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setWithdrawDelayTime",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "sharesExchangeRate",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "sharesExchangeRateInverse",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalInterestCollected",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalPrincipalTokensCommitted",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalPrincipalTokensLended",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalPrincipalTokensRepaid",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "totalPrincipalTokensWithdrawn",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "unpauseLendingPool",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawDelayTimeSeconds",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawFromEscrowVault",
    values: [BigNumberish]
  ): string;

  decodeFunctionResult(
    functionFragment: "DEFAULT_WITHDRAW_DELAY_TIME_SECONDS",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "EXCHANGE_RATE_EXPANSION_FACTOR",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "MAX_WITHDRAW_DELAY_TIME",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "MIN_TWAP_INTERVAL",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "ORACLE_MANAGER",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "SMART_COMMITMENT_FORWARDER",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "STANDARD_EXPANSION_FACTOR",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "TELLER_V2", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "UNISWAP_EXPANSION_FACTOR",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "UNISWAP_V3_FACTORY",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "acceptFundsForAcceptBid",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "activeBids", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "activeBidsAmountDueRemaining",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addPrincipalToCommitmentGroup",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "burnSharesToWithdrawEarnings",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "calculateCollateralRequiredToBorrowPrincipal",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "calculateCollateralTokensAmountEquivalentToPrincipalTokens",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collateralRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "collateralToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "excessivePrincipalTokensRepaid",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "firstDepositMade",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCollateralTokenAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCollateralTokenId",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCollateralTokenType",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLastUnpausedAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarketId",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMaxLoanDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMinInterestRate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMinimumAmountDifferenceToCloseDefaultedLoan",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPoolTotalEstimatedValue",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPoolUtilizationRatio",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPrincipalAmountAvailableToBorrow",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPrincipalForCollateralForPoolRoutes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPrincipalTokenAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getRequiredCollateral",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTokenDifferenceFromLiquidations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTotalPrincipalTokensOutstandingInActiveLoans",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getUniswapPriceRatioForPoolRoutes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "interestRateLowerBound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "interestRateUpperBound",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "lastUnpausedAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "liquidateDefaultedLoanWithIncentive",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "liquidityThresholdPercent",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxLoanDuration",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "maxPrincipalPerCollateralAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "pauseLendingPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "poolOracleRoutes",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "poolSharesToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "prepareSharesForBurn",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "principalToken",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "repayLoanCallback",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setMaxPrincipalPerCollateralAmount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setWithdrawDelayTime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sharesExchangeRate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "sharesExchangeRateInverse",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalInterestCollected",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalPrincipalTokensCommitted",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalPrincipalTokensLended",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalPrincipalTokensRepaid",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "totalPrincipalTokensWithdrawn",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unpauseLendingPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawDelayTimeSeconds",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawFromEscrowVault",
    data: BytesLike
  ): Result;
}

export namespace BorrowerAcceptedFundsEvent {
  export type InputTuple = [
    borrower: AddressLike,
    bidId: BigNumberish,
    principalAmount: BigNumberish,
    collateralAmount: BigNumberish,
    loanDuration: BigNumberish,
    interestRate: BigNumberish
  ];
  export type OutputTuple = [
    borrower: string,
    bidId: bigint,
    principalAmount: bigint,
    collateralAmount: bigint,
    loanDuration: bigint,
    interestRate: bigint
  ];
  export interface OutputObject {
    borrower: string;
    bidId: bigint;
    principalAmount: bigint;
    collateralAmount: bigint;
    loanDuration: bigint;
    interestRate: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace DefaultedLoanLiquidatedEvent {
  export type InputTuple = [
    bidId: BigNumberish,
    liquidator: AddressLike,
    amountDue: BigNumberish,
    tokenAmountDifference: BigNumberish
  ];
  export type OutputTuple = [
    bidId: bigint,
    liquidator: string,
    amountDue: bigint,
    tokenAmountDifference: bigint
  ];
  export interface OutputObject {
    bidId: bigint;
    liquidator: string;
    amountDue: bigint;
    tokenAmountDifference: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace EarningsWithdrawnEvent {
  export type InputTuple = [
    lender: AddressLike,
    amountPoolSharesTokens: BigNumberish,
    principalTokensWithdrawn: BigNumberish,
    recipient: AddressLike
  ];
  export type OutputTuple = [
    lender: string,
    amountPoolSharesTokens: bigint,
    principalTokensWithdrawn: bigint,
    recipient: string
  ];
  export interface OutputObject {
    lender: string;
    amountPoolSharesTokens: bigint;
    principalTokensWithdrawn: bigint;
    recipient: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace InitializedEvent {
  export type InputTuple = [version: BigNumberish];
  export type OutputTuple = [version: bigint];
  export interface OutputObject {
    version: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LenderAddedPrincipalEvent {
  export type InputTuple = [
    lender: AddressLike,
    amount: BigNumberish,
    sharesAmount: BigNumberish,
    sharesRecipient: AddressLike
  ];
  export type OutputTuple = [
    lender: string,
    amount: bigint,
    sharesAmount: bigint,
    sharesRecipient: string
  ];
  export interface OutputObject {
    lender: string;
    amount: bigint;
    sharesAmount: bigint;
    sharesRecipient: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LoanRepaidEvent {
  export type InputTuple = [
    bidId: BigNumberish,
    repayer: AddressLike,
    principalAmount: BigNumberish,
    interestAmount: BigNumberish,
    totalPrincipalRepaid: BigNumberish,
    totalInterestCollected: BigNumberish
  ];
  export type OutputTuple = [
    bidId: bigint,
    repayer: string,
    principalAmount: bigint,
    interestAmount: bigint,
    totalPrincipalRepaid: bigint,
    totalInterestCollected: bigint
  ];
  export interface OutputObject {
    bidId: bigint;
    repayer: string;
    principalAmount: bigint;
    interestAmount: bigint;
    totalPrincipalRepaid: bigint;
    totalInterestCollected: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace OwnershipTransferredEvent {
  export type InputTuple = [previousOwner: AddressLike, newOwner: AddressLike];
  export type OutputTuple = [previousOwner: string, newOwner: string];
  export interface OutputObject {
    previousOwner: string;
    newOwner: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PausedEvent {
  export type InputTuple = [account: AddressLike];
  export type OutputTuple = [account: string];
  export interface OutputObject {
    account: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PoolInitializedEvent {
  export type InputTuple = [
    principalTokenAddress: AddressLike,
    collateralTokenAddress: AddressLike,
    marketId: BigNumberish,
    maxLoanDuration: BigNumberish,
    interestRateLowerBound: BigNumberish,
    interestRateUpperBound: BigNumberish,
    liquidityThresholdPercent: BigNumberish,
    loanToValuePercent: BigNumberish,
    poolSharesToken: AddressLike
  ];
  export type OutputTuple = [
    principalTokenAddress: string,
    collateralTokenAddress: string,
    marketId: bigint,
    maxLoanDuration: bigint,
    interestRateLowerBound: bigint,
    interestRateUpperBound: bigint,
    liquidityThresholdPercent: bigint,
    loanToValuePercent: bigint,
    poolSharesToken: string
  ];
  export interface OutputObject {
    principalTokenAddress: string;
    collateralTokenAddress: string;
    marketId: bigint;
    maxLoanDuration: bigint;
    interestRateLowerBound: bigint;
    interestRateUpperBound: bigint;
    liquidityThresholdPercent: bigint;
    loanToValuePercent: bigint;
    poolSharesToken: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UnpausedEvent {
  export type InputTuple = [account: AddressLike];
  export type OutputTuple = [account: string];
  export interface OutputObject {
    account: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace WithdrawFromEscrowEvent {
  export type InputTuple = [amount: BigNumberish];
  export type OutputTuple = [amount: bigint];
  export interface OutputObject {
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export interface LenderCommitmentGroup_Smart extends BaseContract {
  connect(runner?: ContractRunner | null): LenderCommitmentGroup_Smart;
  waitForDeployment(): Promise<this>;

  interface: LenderCommitmentGroup_SmartInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(
    event?: TCEvent
  ): Promise<this>;

  DEFAULT_WITHDRAW_DELAY_TIME_SECONDS: TypedContractMethod<
    [],
    [bigint],
    "view"
  >;

  EXCHANGE_RATE_EXPANSION_FACTOR: TypedContractMethod<[], [bigint], "view">;

  MAX_WITHDRAW_DELAY_TIME: TypedContractMethod<[], [bigint], "view">;

  MIN_TWAP_INTERVAL: TypedContractMethod<[], [bigint], "view">;

  ORACLE_MANAGER: TypedContractMethod<[], [string], "view">;

  SMART_COMMITMENT_FORWARDER: TypedContractMethod<[], [string], "view">;

  STANDARD_EXPANSION_FACTOR: TypedContractMethod<[], [bigint], "view">;

  TELLER_V2: TypedContractMethod<[], [string], "view">;

  UNISWAP_EXPANSION_FACTOR: TypedContractMethod<[], [bigint], "view">;

  UNISWAP_V3_FACTORY: TypedContractMethod<[], [string], "view">;

  acceptFundsForAcceptBid: TypedContractMethod<
    [
      _borrower: AddressLike,
      _bidId: BigNumberish,
      _principalAmount: BigNumberish,
      _collateralAmount: BigNumberish,
      _collateralTokenAddress: AddressLike,
      _collateralTokenId: BigNumberish,
      _loanDuration: BigNumberish,
      _interestRate: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  activeBids: TypedContractMethod<[arg0: BigNumberish], [boolean], "view">;

  activeBidsAmountDueRemaining: TypedContractMethod<
    [arg0: BigNumberish],
    [bigint],
    "view"
  >;

  addPrincipalToCommitmentGroup: TypedContractMethod<
    [
      _amount: BigNumberish,
      _sharesRecipient: AddressLike,
      _minSharesAmountOut: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;

  burnSharesToWithdrawEarnings: TypedContractMethod<
    [
      _amountPoolSharesTokens: BigNumberish,
      _recipient: AddressLike,
      _minAmountOut: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;

  calculateCollateralRequiredToBorrowPrincipal: TypedContractMethod<
    [_principalAmount: BigNumberish],
    [bigint],
    "view"
  >;

  calculateCollateralTokensAmountEquivalentToPrincipalTokens: TypedContractMethod<
    [principalAmount: BigNumberish],
    [bigint],
    "view"
  >;

  collateralRatio: TypedContractMethod<[], [bigint], "view">;

  collateralToken: TypedContractMethod<[], [string], "view">;

  excessivePrincipalTokensRepaid: TypedContractMethod<[], [bigint], "view">;

  firstDepositMade: TypedContractMethod<[], [boolean], "view">;

  getCollateralTokenAddress: TypedContractMethod<[], [string], "view">;

  getCollateralTokenId: TypedContractMethod<[], [bigint], "view">;

  getCollateralTokenType: TypedContractMethod<[], [bigint], "view">;

  getLastUnpausedAt: TypedContractMethod<[], [bigint], "view">;

  getMarketId: TypedContractMethod<[], [bigint], "view">;

  getMaxLoanDuration: TypedContractMethod<[], [bigint], "view">;

  getMinInterestRate: TypedContractMethod<
    [amountDelta: BigNumberish],
    [bigint],
    "view"
  >;

  getMinimumAmountDifferenceToCloseDefaultedLoan: TypedContractMethod<
    [_amountOwed: BigNumberish, _loanDefaultedTimestamp: BigNumberish],
    [bigint],
    "view"
  >;

  getPoolTotalEstimatedValue: TypedContractMethod<[], [bigint], "view">;

  getPoolUtilizationRatio: TypedContractMethod<
    [activeLoansAmountDelta: BigNumberish],
    [bigint],
    "view"
  >;

  getPrincipalAmountAvailableToBorrow: TypedContractMethod<
    [],
    [bigint],
    "view"
  >;

  getPrincipalForCollateralForPoolRoutes: TypedContractMethod<
    [poolOracleRoutes: IUniswapPricingLibrary.PoolRouteConfigStruct[]],
    [bigint],
    "view"
  >;

  getPrincipalTokenAddress: TypedContractMethod<[], [string], "view">;

  getRequiredCollateral: TypedContractMethod<
    [
      _principalAmount: BigNumberish,
      _maxPrincipalPerCollateralAmount: BigNumberish
    ],
    [bigint],
    "view"
  >;

  getTokenDifferenceFromLiquidations: TypedContractMethod<[], [bigint], "view">;

  getTotalPrincipalTokensOutstandingInActiveLoans: TypedContractMethod<
    [],
    [bigint],
    "view"
  >;

  getUniswapPriceRatioForPoolRoutes: TypedContractMethod<
    [poolOracleRoutes: IUniswapPricingLibrary.PoolRouteConfigStruct[]],
    [bigint],
    "view"
  >;

  initialize: TypedContractMethod<
    [
      _commitmentGroupConfig: ILenderCommitmentGroup.CommitmentGroupConfigStruct,
      _poolOracleRoutes: IUniswapPricingLibrary.PoolRouteConfigStruct[]
    ],
    [string],
    "nonpayable"
  >;

  interestRateLowerBound: TypedContractMethod<[], [bigint], "view">;

  interestRateUpperBound: TypedContractMethod<[], [bigint], "view">;

  lastUnpausedAt: TypedContractMethod<[], [bigint], "view">;

  liquidateDefaultedLoanWithIncentive: TypedContractMethod<
    [_bidId: BigNumberish, _tokenAmountDifference: BigNumberish],
    [void],
    "nonpayable"
  >;

  liquidityThresholdPercent: TypedContractMethod<[], [bigint], "view">;

  maxLoanDuration: TypedContractMethod<[], [bigint], "view">;

  maxPrincipalPerCollateralAmount: TypedContractMethod<[], [bigint], "view">;

  owner: TypedContractMethod<[], [string], "view">;

  pauseLendingPool: TypedContractMethod<[], [void], "nonpayable">;

  paused: TypedContractMethod<[], [boolean], "view">;

  poolOracleRoutes: TypedContractMethod<
    [arg0: BigNumberish],
    [
      [string, boolean, bigint, bigint, bigint] & {
        pool: string;
        zeroForOne: boolean;
        twapInterval: bigint;
        token0Decimals: bigint;
        token1Decimals: bigint;
      }
    ],
    "view"
  >;

  poolSharesToken: TypedContractMethod<[], [string], "view">;

  prepareSharesForBurn: TypedContractMethod<
    [_amountPoolSharesTokens: BigNumberish],
    [boolean],
    "nonpayable"
  >;

  principalToken: TypedContractMethod<[], [string], "view">;

  renounceOwnership: TypedContractMethod<[], [void], "nonpayable">;

  repayLoanCallback: TypedContractMethod<
    [
      _bidId: BigNumberish,
      repayer: AddressLike,
      principalAmount: BigNumberish,
      interestAmount: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  setMaxPrincipalPerCollateralAmount: TypedContractMethod<
    [_maxPrincipalPerCollateralAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  setWithdrawDelayTime: TypedContractMethod<
    [_seconds: BigNumberish],
    [void],
    "nonpayable"
  >;

  sharesExchangeRate: TypedContractMethod<[], [bigint], "view">;

  sharesExchangeRateInverse: TypedContractMethod<[], [bigint], "view">;

  totalInterestCollected: TypedContractMethod<[], [bigint], "view">;

  totalPrincipalTokensCommitted: TypedContractMethod<[], [bigint], "view">;

  totalPrincipalTokensLended: TypedContractMethod<[], [bigint], "view">;

  totalPrincipalTokensRepaid: TypedContractMethod<[], [bigint], "view">;

  totalPrincipalTokensWithdrawn: TypedContractMethod<[], [bigint], "view">;

  transferOwnership: TypedContractMethod<
    [newOwner: AddressLike],
    [void],
    "nonpayable"
  >;

  unpauseLendingPool: TypedContractMethod<[], [void], "nonpayable">;

  withdrawDelayTimeSeconds: TypedContractMethod<[], [bigint], "view">;

  withdrawFromEscrowVault: TypedContractMethod<
    [_amount: BigNumberish],
    [void],
    "nonpayable"
  >;

  getFunction<T extends ContractMethod = ContractMethod>(
    key: string | FunctionFragment
  ): T;

  getFunction(
    nameOrSignature: "DEFAULT_WITHDRAW_DELAY_TIME_SECONDS"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "EXCHANGE_RATE_EXPANSION_FACTOR"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "MAX_WITHDRAW_DELAY_TIME"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "MIN_TWAP_INTERVAL"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "ORACLE_MANAGER"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "SMART_COMMITMENT_FORWARDER"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "STANDARD_EXPANSION_FACTOR"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "TELLER_V2"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "UNISWAP_EXPANSION_FACTOR"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "UNISWAP_V3_FACTORY"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "acceptFundsForAcceptBid"
  ): TypedContractMethod<
    [
      _borrower: AddressLike,
      _bidId: BigNumberish,
      _principalAmount: BigNumberish,
      _collateralAmount: BigNumberish,
      _collateralTokenAddress: AddressLike,
      _collateralTokenId: BigNumberish,
      _loanDuration: BigNumberish,
      _interestRate: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "activeBids"
  ): TypedContractMethod<[arg0: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "activeBidsAmountDueRemaining"
  ): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "addPrincipalToCommitmentGroup"
  ): TypedContractMethod<
    [
      _amount: BigNumberish,
      _sharesRecipient: AddressLike,
      _minSharesAmountOut: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "burnSharesToWithdrawEarnings"
  ): TypedContractMethod<
    [
      _amountPoolSharesTokens: BigNumberish,
      _recipient: AddressLike,
      _minAmountOut: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "calculateCollateralRequiredToBorrowPrincipal"
  ): TypedContractMethod<[_principalAmount: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "calculateCollateralTokensAmountEquivalentToPrincipalTokens"
  ): TypedContractMethod<[principalAmount: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "collateralRatio"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "collateralToken"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "excessivePrincipalTokensRepaid"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "firstDepositMade"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "getCollateralTokenAddress"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getCollateralTokenId"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getCollateralTokenType"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getLastUnpausedAt"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMarketId"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMaxLoanDuration"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMinInterestRate"
  ): TypedContractMethod<[amountDelta: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getMinimumAmountDifferenceToCloseDefaultedLoan"
  ): TypedContractMethod<
    [_amountOwed: BigNumberish, _loanDefaultedTimestamp: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPoolTotalEstimatedValue"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPoolUtilizationRatio"
  ): TypedContractMethod<
    [activeLoansAmountDelta: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPrincipalAmountAvailableToBorrow"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPrincipalForCollateralForPoolRoutes"
  ): TypedContractMethod<
    [poolOracleRoutes: IUniswapPricingLibrary.PoolRouteConfigStruct[]],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPrincipalTokenAddress"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getRequiredCollateral"
  ): TypedContractMethod<
    [
      _principalAmount: BigNumberish,
      _maxPrincipalPerCollateralAmount: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTokenDifferenceFromLiquidations"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getTotalPrincipalTokensOutstandingInActiveLoans"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getUniswapPriceRatioForPoolRoutes"
  ): TypedContractMethod<
    [poolOracleRoutes: IUniswapPricingLibrary.PoolRouteConfigStruct[]],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<
    [
      _commitmentGroupConfig: ILenderCommitmentGroup.CommitmentGroupConfigStruct,
      _poolOracleRoutes: IUniswapPricingLibrary.PoolRouteConfigStruct[]
    ],
    [string],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "interestRateLowerBound"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "interestRateUpperBound"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "lastUnpausedAt"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "liquidateDefaultedLoanWithIncentive"
  ): TypedContractMethod<
    [_bidId: BigNumberish, _tokenAmountDifference: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "liquidityThresholdPercent"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxLoanDuration"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "maxPrincipalPerCollateralAmount"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "owner"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "pauseLendingPool"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "paused"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "poolOracleRoutes"
  ): TypedContractMethod<
    [arg0: BigNumberish],
    [
      [string, boolean, bigint, bigint, bigint] & {
        pool: string;
        zeroForOne: boolean;
        twapInterval: bigint;
        token0Decimals: bigint;
        token1Decimals: bigint;
      }
    ],
    "view"
  >;
  getFunction(
    nameOrSignature: "poolSharesToken"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "prepareSharesForBurn"
  ): TypedContractMethod<
    [_amountPoolSharesTokens: BigNumberish],
    [boolean],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "principalToken"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "renounceOwnership"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "repayLoanCallback"
  ): TypedContractMethod<
    [
      _bidId: BigNumberish,
      repayer: AddressLike,
      principalAmount: BigNumberish,
      interestAmount: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setMaxPrincipalPerCollateralAmount"
  ): TypedContractMethod<
    [_maxPrincipalPerCollateralAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setWithdrawDelayTime"
  ): TypedContractMethod<[_seconds: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "sharesExchangeRate"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "sharesExchangeRateInverse"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "totalInterestCollected"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "totalPrincipalTokensCommitted"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "totalPrincipalTokensLended"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "totalPrincipalTokensRepaid"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "totalPrincipalTokensWithdrawn"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "transferOwnership"
  ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "unpauseLendingPool"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "withdrawDelayTimeSeconds"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "withdrawFromEscrowVault"
  ): TypedContractMethod<[_amount: BigNumberish], [void], "nonpayable">;

  getEvent(
    key: "BorrowerAcceptedFunds"
  ): TypedContractEvent<
    BorrowerAcceptedFundsEvent.InputTuple,
    BorrowerAcceptedFundsEvent.OutputTuple,
    BorrowerAcceptedFundsEvent.OutputObject
  >;
  getEvent(
    key: "DefaultedLoanLiquidated"
  ): TypedContractEvent<
    DefaultedLoanLiquidatedEvent.InputTuple,
    DefaultedLoanLiquidatedEvent.OutputTuple,
    DefaultedLoanLiquidatedEvent.OutputObject
  >;
  getEvent(
    key: "EarningsWithdrawn"
  ): TypedContractEvent<
    EarningsWithdrawnEvent.InputTuple,
    EarningsWithdrawnEvent.OutputTuple,
    EarningsWithdrawnEvent.OutputObject
  >;
  getEvent(
    key: "Initialized"
  ): TypedContractEvent<
    InitializedEvent.InputTuple,
    InitializedEvent.OutputTuple,
    InitializedEvent.OutputObject
  >;
  getEvent(
    key: "LenderAddedPrincipal"
  ): TypedContractEvent<
    LenderAddedPrincipalEvent.InputTuple,
    LenderAddedPrincipalEvent.OutputTuple,
    LenderAddedPrincipalEvent.OutputObject
  >;
  getEvent(
    key: "LoanRepaid"
  ): TypedContractEvent<
    LoanRepaidEvent.InputTuple,
    LoanRepaidEvent.OutputTuple,
    LoanRepaidEvent.OutputObject
  >;
  getEvent(
    key: "OwnershipTransferred"
  ): TypedContractEvent<
    OwnershipTransferredEvent.InputTuple,
    OwnershipTransferredEvent.OutputTuple,
    OwnershipTransferredEvent.OutputObject
  >;
  getEvent(
    key: "Paused"
  ): TypedContractEvent<
    PausedEvent.InputTuple,
    PausedEvent.OutputTuple,
    PausedEvent.OutputObject
  >;
  getEvent(
    key: "PoolInitialized"
  ): TypedContractEvent<
    PoolInitializedEvent.InputTuple,
    PoolInitializedEvent.OutputTuple,
    PoolInitializedEvent.OutputObject
  >;
  getEvent(
    key: "Unpaused"
  ): TypedContractEvent<
    UnpausedEvent.InputTuple,
    UnpausedEvent.OutputTuple,
    UnpausedEvent.OutputObject
  >;
  getEvent(
    key: "WithdrawFromEscrow"
  ): TypedContractEvent<
    WithdrawFromEscrowEvent.InputTuple,
    WithdrawFromEscrowEvent.OutputTuple,
    WithdrawFromEscrowEvent.OutputObject
  >;

  filters: {
    "BorrowerAcceptedFunds(address,uint256,uint256,uint256,uint32,uint16)": TypedContractEvent<
      BorrowerAcceptedFundsEvent.InputTuple,
      BorrowerAcceptedFundsEvent.OutputTuple,
      BorrowerAcceptedFundsEvent.OutputObject
    >;
    BorrowerAcceptedFunds: TypedContractEvent<
      BorrowerAcceptedFundsEvent.InputTuple,
      BorrowerAcceptedFundsEvent.OutputTuple,
      BorrowerAcceptedFundsEvent.OutputObject
    >;

    "DefaultedLoanLiquidated(uint256,address,uint256,int256)": TypedContractEvent<
      DefaultedLoanLiquidatedEvent.InputTuple,
      DefaultedLoanLiquidatedEvent.OutputTuple,
      DefaultedLoanLiquidatedEvent.OutputObject
    >;
    DefaultedLoanLiquidated: TypedContractEvent<
      DefaultedLoanLiquidatedEvent.InputTuple,
      DefaultedLoanLiquidatedEvent.OutputTuple,
      DefaultedLoanLiquidatedEvent.OutputObject
    >;

    "EarningsWithdrawn(address,uint256,uint256,address)": TypedContractEvent<
      EarningsWithdrawnEvent.InputTuple,
      EarningsWithdrawnEvent.OutputTuple,
      EarningsWithdrawnEvent.OutputObject
    >;
    EarningsWithdrawn: TypedContractEvent<
      EarningsWithdrawnEvent.InputTuple,
      EarningsWithdrawnEvent.OutputTuple,
      EarningsWithdrawnEvent.OutputObject
    >;

    "Initialized(uint8)": TypedContractEvent<
      InitializedEvent.InputTuple,
      InitializedEvent.OutputTuple,
      InitializedEvent.OutputObject
    >;
    Initialized: TypedContractEvent<
      InitializedEvent.InputTuple,
      InitializedEvent.OutputTuple,
      InitializedEvent.OutputObject
    >;

    "LenderAddedPrincipal(address,uint256,uint256,address)": TypedContractEvent<
      LenderAddedPrincipalEvent.InputTuple,
      LenderAddedPrincipalEvent.OutputTuple,
      LenderAddedPrincipalEvent.OutputObject
    >;
    LenderAddedPrincipal: TypedContractEvent<
      LenderAddedPrincipalEvent.InputTuple,
      LenderAddedPrincipalEvent.OutputTuple,
      LenderAddedPrincipalEvent.OutputObject
    >;

    "LoanRepaid(uint256,address,uint256,uint256,uint256,uint256)": TypedContractEvent<
      LoanRepaidEvent.InputTuple,
      LoanRepaidEvent.OutputTuple,
      LoanRepaidEvent.OutputObject
    >;
    LoanRepaid: TypedContractEvent<
      LoanRepaidEvent.InputTuple,
      LoanRepaidEvent.OutputTuple,
      LoanRepaidEvent.OutputObject
    >;

    "OwnershipTransferred(address,address)": TypedContractEvent<
      OwnershipTransferredEvent.InputTuple,
      OwnershipTransferredEvent.OutputTuple,
      OwnershipTransferredEvent.OutputObject
    >;
    OwnershipTransferred: TypedContractEvent<
      OwnershipTransferredEvent.InputTuple,
      OwnershipTransferredEvent.OutputTuple,
      OwnershipTransferredEvent.OutputObject
    >;

    "Paused(address)": TypedContractEvent<
      PausedEvent.InputTuple,
      PausedEvent.OutputTuple,
      PausedEvent.OutputObject
    >;
    Paused: TypedContractEvent<
      PausedEvent.InputTuple,
      PausedEvent.OutputTuple,
      PausedEvent.OutputObject
    >;

    "PoolInitialized(address,address,uint256,uint32,uint16,uint16,uint16,uint16,address)": TypedContractEvent<
      PoolInitializedEvent.InputTuple,
      PoolInitializedEvent.OutputTuple,
      PoolInitializedEvent.OutputObject
    >;
    PoolInitialized: TypedContractEvent<
      PoolInitializedEvent.InputTuple,
      PoolInitializedEvent.OutputTuple,
      PoolInitializedEvent.OutputObject
    >;

    "Unpaused(address)": TypedContractEvent<
      UnpausedEvent.InputTuple,
      UnpausedEvent.OutputTuple,
      UnpausedEvent.OutputObject
    >;
    Unpaused: TypedContractEvent<
      UnpausedEvent.InputTuple,
      UnpausedEvent.OutputTuple,
      UnpausedEvent.OutputObject
    >;

    "WithdrawFromEscrow(uint256)": TypedContractEvent<
      WithdrawFromEscrowEvent.InputTuple,
      WithdrawFromEscrowEvent.OutputTuple,
      WithdrawFromEscrowEvent.OutputObject
    >;
    WithdrawFromEscrow: TypedContractEvent<
      WithdrawFromEscrowEvent.InputTuple,
      WithdrawFromEscrowEvent.OutputTuple,
      WithdrawFromEscrowEvent.OutputObject
    >;
  };
}
