/* 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 interface ProtocolPausingManagerInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "addPauser"
      | "getLastPausedAt"
      | "getLastUnpausedAt"
      | "initialize"
      | "isPauser"
      | "liquidationsPaused"
      | "owner"
      | "pauseLiquidations"
      | "pauseProtocol"
      | "pauserRoleBearer"
      | "protocolPaused"
      | "removePauser"
      | "renounceOwnership"
      | "transferOwnership"
      | "unpauseLiquidations"
      | "unpauseProtocol"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "Initialized"
      | "OwnershipTransferred"
      | "PausedLiquidations"
      | "PausedProtocol"
      | "PauserAdded"
      | "PauserRemoved"
      | "UnpausedLiquidations"
      | "UnpausedProtocol"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "addPauser",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getLastPausedAt",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getLastUnpausedAt",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "initialize",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "isPauser",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "liquidationsPaused",
    values?: undefined
  ): string;
  encodeFunctionData(functionFragment: "owner", values?: undefined): string;
  encodeFunctionData(
    functionFragment: "pauseLiquidations",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "pauseProtocol",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "pauserRoleBearer",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "protocolPaused",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "removePauser",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "renounceOwnership",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "transferOwnership",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "unpauseLiquidations",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "unpauseProtocol",
    values?: undefined
  ): string;

  decodeFunctionResult(functionFragment: "addPauser", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "getLastPausedAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLastUnpausedAt",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
  decodeFunctionResult(functionFragment: "isPauser", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "liquidationsPaused",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "pauseLiquidations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pauseProtocol",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pauserRoleBearer",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "protocolPaused",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "removePauser",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "renounceOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unpauseLiquidations",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "unpauseProtocol",
    data: BytesLike
  ): Result;
}

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 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 PausedLiquidationsEvent {
  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 PausedProtocolEvent {
  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 PauserAddedEvent {
  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 PauserRemovedEvent {
  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 UnpausedLiquidationsEvent {
  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 UnpausedProtocolEvent {
  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 interface ProtocolPausingManager extends BaseContract {
  connect(runner?: ContractRunner | null): ProtocolPausingManager;
  waitForDeployment(): Promise<this>;

  interface: ProtocolPausingManagerInterface;

  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>;

  addPauser: TypedContractMethod<[_pauser: AddressLike], [void], "nonpayable">;

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

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

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

  isPauser: TypedContractMethod<[_account: AddressLike], [boolean], "view">;

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

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

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

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

  pauserRoleBearer: TypedContractMethod<[arg0: AddressLike], [boolean], "view">;

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

  removePauser: TypedContractMethod<
    [_pauser: AddressLike],
    [void],
    "nonpayable"
  >;

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

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

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

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

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

  getFunction(
    nameOrSignature: "addPauser"
  ): TypedContractMethod<[_pauser: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "getLastPausedAt"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getLastUnpausedAt"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "initialize"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "isPauser"
  ): TypedContractMethod<[_account: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "liquidationsPaused"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "owner"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "pauseLiquidations"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "pauseProtocol"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "pauserRoleBearer"
  ): TypedContractMethod<[arg0: AddressLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "protocolPaused"
  ): TypedContractMethod<[], [boolean], "view">;
  getFunction(
    nameOrSignature: "removePauser"
  ): TypedContractMethod<[_pauser: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "renounceOwnership"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "transferOwnership"
  ): TypedContractMethod<[newOwner: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "unpauseLiquidations"
  ): TypedContractMethod<[], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "unpauseProtocol"
  ): TypedContractMethod<[], [void], "nonpayable">;

  getEvent(
    key: "Initialized"
  ): TypedContractEvent<
    InitializedEvent.InputTuple,
    InitializedEvent.OutputTuple,
    InitializedEvent.OutputObject
  >;
  getEvent(
    key: "OwnershipTransferred"
  ): TypedContractEvent<
    OwnershipTransferredEvent.InputTuple,
    OwnershipTransferredEvent.OutputTuple,
    OwnershipTransferredEvent.OutputObject
  >;
  getEvent(
    key: "PausedLiquidations"
  ): TypedContractEvent<
    PausedLiquidationsEvent.InputTuple,
    PausedLiquidationsEvent.OutputTuple,
    PausedLiquidationsEvent.OutputObject
  >;
  getEvent(
    key: "PausedProtocol"
  ): TypedContractEvent<
    PausedProtocolEvent.InputTuple,
    PausedProtocolEvent.OutputTuple,
    PausedProtocolEvent.OutputObject
  >;
  getEvent(
    key: "PauserAdded"
  ): TypedContractEvent<
    PauserAddedEvent.InputTuple,
    PauserAddedEvent.OutputTuple,
    PauserAddedEvent.OutputObject
  >;
  getEvent(
    key: "PauserRemoved"
  ): TypedContractEvent<
    PauserRemovedEvent.InputTuple,
    PauserRemovedEvent.OutputTuple,
    PauserRemovedEvent.OutputObject
  >;
  getEvent(
    key: "UnpausedLiquidations"
  ): TypedContractEvent<
    UnpausedLiquidationsEvent.InputTuple,
    UnpausedLiquidationsEvent.OutputTuple,
    UnpausedLiquidationsEvent.OutputObject
  >;
  getEvent(
    key: "UnpausedProtocol"
  ): TypedContractEvent<
    UnpausedProtocolEvent.InputTuple,
    UnpausedProtocolEvent.OutputTuple,
    UnpausedProtocolEvent.OutputObject
  >;

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

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

    "PausedLiquidations(address)": TypedContractEvent<
      PausedLiquidationsEvent.InputTuple,
      PausedLiquidationsEvent.OutputTuple,
      PausedLiquidationsEvent.OutputObject
    >;
    PausedLiquidations: TypedContractEvent<
      PausedLiquidationsEvent.InputTuple,
      PausedLiquidationsEvent.OutputTuple,
      PausedLiquidationsEvent.OutputObject
    >;

    "PausedProtocol(address)": TypedContractEvent<
      PausedProtocolEvent.InputTuple,
      PausedProtocolEvent.OutputTuple,
      PausedProtocolEvent.OutputObject
    >;
    PausedProtocol: TypedContractEvent<
      PausedProtocolEvent.InputTuple,
      PausedProtocolEvent.OutputTuple,
      PausedProtocolEvent.OutputObject
    >;

    "PauserAdded(address)": TypedContractEvent<
      PauserAddedEvent.InputTuple,
      PauserAddedEvent.OutputTuple,
      PauserAddedEvent.OutputObject
    >;
    PauserAdded: TypedContractEvent<
      PauserAddedEvent.InputTuple,
      PauserAddedEvent.OutputTuple,
      PauserAddedEvent.OutputObject
    >;

    "PauserRemoved(address)": TypedContractEvent<
      PauserRemovedEvent.InputTuple,
      PauserRemovedEvent.OutputTuple,
      PauserRemovedEvent.OutputObject
    >;
    PauserRemoved: TypedContractEvent<
      PauserRemovedEvent.InputTuple,
      PauserRemovedEvent.OutputTuple,
      PauserRemovedEvent.OutputObject
    >;

    "UnpausedLiquidations(address)": TypedContractEvent<
      UnpausedLiquidationsEvent.InputTuple,
      UnpausedLiquidationsEvent.OutputTuple,
      UnpausedLiquidationsEvent.OutputObject
    >;
    UnpausedLiquidations: TypedContractEvent<
      UnpausedLiquidationsEvent.InputTuple,
      UnpausedLiquidationsEvent.OutputTuple,
      UnpausedLiquidationsEvent.OutputObject
    >;

    "UnpausedProtocol(address)": TypedContractEvent<
      UnpausedProtocolEvent.InputTuple,
      UnpausedProtocolEvent.OutputTuple,
      UnpausedProtocolEvent.OutputObject
    >;
    UnpausedProtocol: TypedContractEvent<
      UnpausedProtocolEvent.InputTuple,
      UnpausedProtocolEvent.OutputTuple,
      UnpausedProtocolEvent.OutputObject
    >;
  };
}
