/* 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.js"
  

  export interface EdgeSwarmInterface extends Interface {
    getFunction(nameOrSignature: "checkDeviceStats" | "platformOwner" | "registerDevice" | "rewardPerTask" | "submitVerifiedGradient" | "swarmNodes"): FunctionFragment;

    getEvent(nameOrSignatureOrTopic: "DeviceRegistered" | "GradientVerified"): EventFragment;

    encodeFunctionData(functionFragment: 'checkDeviceStats', values: [AddressLike]): string;
encodeFunctionData(functionFragment: 'platformOwner', values?: undefined): string;
encodeFunctionData(functionFragment: 'registerDevice', values?: undefined): string;
encodeFunctionData(functionFragment: 'rewardPerTask', values?: undefined): string;
encodeFunctionData(functionFragment: 'submitVerifiedGradient', values: [string]): string;
encodeFunctionData(functionFragment: 'swarmNodes', values: [AddressLike]): string;

    decodeFunctionResult(functionFragment: 'checkDeviceStats', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'platformOwner', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'registerDevice', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'rewardPerTask', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'submitVerifiedGradient', data: BytesLike): Result;
decodeFunctionResult(functionFragment: 'swarmNodes', data: BytesLike): Result;
  }

  
    export namespace DeviceRegisteredEvent {
      export type InputTuple = [deviceAddress: AddressLike];
      export type OutputTuple = [deviceAddress: string];
      export interface OutputObject {deviceAddress: 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 GradientVerifiedEvent {
      export type InputTuple = [deviceAddress: AddressLike, rewardPayout: BigNumberish];
      export type OutputTuple = [deviceAddress: string, rewardPayout: bigint];
      export interface OutputObject {deviceAddress: string, rewardPayout: 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 EdgeSwarm extends BaseContract {
    
    connect(runner?: ContractRunner | null): EdgeSwarm;
    waitForDeployment(): Promise<this>;

    interface: EdgeSwarmInterface;

    
  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>


    
    
    checkDeviceStats: TypedContractMethod<
      [deviceAddress: AddressLike, ],
      [[bigint, bigint, bigint] & {tasks: bigint, earnings: bigint, trust: bigint }],
      'view'
    >
    

    
    platformOwner: TypedContractMethod<
      [],
      [string],
      'view'
    >
    

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

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

    
    submitVerifiedGradient: TypedContractMethod<
      [zkProof: string, ],
      [void],
      'nonpayable'
    >
    

    
    swarmNodes: TypedContractMethod<
      [arg0: AddressLike, ],
      [[boolean, bigint, bigint, bigint] & {isRegistered: boolean, totalTasksCompleted: bigint, ubiEarned: bigint, trustScore: bigint }],
      'view'
    >
    


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

    getFunction(nameOrSignature: 'checkDeviceStats'): TypedContractMethod<
      [deviceAddress: AddressLike, ],
      [[bigint, bigint, bigint] & {tasks: bigint, earnings: bigint, trust: bigint }],
      'view'
    >;
getFunction(nameOrSignature: 'platformOwner'): TypedContractMethod<
      [],
      [string],
      'view'
    >;
getFunction(nameOrSignature: 'registerDevice'): TypedContractMethod<
      [],
      [void],
      'nonpayable'
    >;
getFunction(nameOrSignature: 'rewardPerTask'): TypedContractMethod<
      [],
      [bigint],
      'view'
    >;
getFunction(nameOrSignature: 'submitVerifiedGradient'): TypedContractMethod<
      [zkProof: string, ],
      [void],
      'nonpayable'
    >;
getFunction(nameOrSignature: 'swarmNodes'): TypedContractMethod<
      [arg0: AddressLike, ],
      [[boolean, bigint, bigint, bigint] & {isRegistered: boolean, totalTasksCompleted: bigint, ubiEarned: bigint, trustScore: bigint }],
      'view'
    >;

    getEvent(key: 'DeviceRegistered'): TypedContractEvent<DeviceRegisteredEvent.InputTuple, DeviceRegisteredEvent.OutputTuple, DeviceRegisteredEvent.OutputObject>;
getEvent(key: 'GradientVerified'): TypedContractEvent<GradientVerifiedEvent.InputTuple, GradientVerifiedEvent.OutputTuple, GradientVerifiedEvent.OutputObject>;

    filters: {
      
      'DeviceRegistered(address)': TypedContractEvent<DeviceRegisteredEvent.InputTuple, DeviceRegisteredEvent.OutputTuple, DeviceRegisteredEvent.OutputObject>;
      DeviceRegistered: TypedContractEvent<DeviceRegisteredEvent.InputTuple, DeviceRegisteredEvent.OutputTuple, DeviceRegisteredEvent.OutputObject>;
    

      'GradientVerified(address,uint256)': TypedContractEvent<GradientVerifiedEvent.InputTuple, GradientVerifiedEvent.OutputTuple, GradientVerifiedEvent.OutputObject>;
      GradientVerified: TypedContractEvent<GradientVerifiedEvent.InputTuple, GradientVerifiedEvent.OutputTuple, GradientVerifiedEvent.OutputObject>;
    
    };
  }