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

  export interface CounterInterface extends Interface {
    getFunction(nameOrSignature: "inc" | "incBy" | "x"): FunctionFragment;

    getEvent(nameOrSignatureOrTopic: "Increment"): EventFragment;

    encodeFunctionData(functionFragment: 'inc', values?: undefined): string;
encodeFunctionData(functionFragment: 'incBy', values: [BigNumberish]): string;
encodeFunctionData(functionFragment: 'x', values?: undefined): string;

    decodeFunctionResult(functionFragment: 'inc', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'incBy', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'x', data: BytesLike): Result;
  }

  
    export namespace IncrementEvent {
      export type InputTuple = [by: BigNumberish];
      export type OutputTuple = [by: bigint];
      export interface OutputObject {by: 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 Counter extends BaseContract {
    
    connect(runner?: ContractRunner | null): Counter;
    waitForDeployment(): Promise<this>;

    interface: CounterInterface;

    
  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>


    
    
    inc: TypedContractMethod<
      [],
      [void],
      'nonpayable'
    >
    

    
    incBy: TypedContractMethod<
      [by: BigNumberish, ],
      [void],
      'nonpayable'
    >
    

    
    x: TypedContractMethod<
      [],
      [bigint],
      'view'
    >
    


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

    getFunction(nameOrSignature: 'inc'): TypedContractMethod<
      [],
      [void],
      'nonpayable'
    >;
getFunction(nameOrSignature: 'incBy'): TypedContractMethod<
      [by: BigNumberish, ],
      [void],
      'nonpayable'
    >;
getFunction(nameOrSignature: 'x'): TypedContractMethod<
      [],
      [bigint],
      'view'
    >;

    getEvent(key: 'Increment'): TypedContractEvent<IncrementEvent.InputTuple, IncrementEvent.OutputTuple, IncrementEvent.OutputObject>;

    filters: {
      
      'Increment(uint256)': TypedContractEvent<IncrementEvent.InputTuple, IncrementEvent.OutputTuple, IncrementEvent.OutputObject>;
      Increment: TypedContractEvent<IncrementEvent.InputTuple, IncrementEvent.OutputTuple, IncrementEvent.OutputObject>;
    
    };
  }