/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type { Addressable } from "ethers";
import { Contract, ContractFactory, ContractTransactionResponse, Interface } from "ethers"
import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"
import type { NonPayableOverrides } from "../common.js"
  import type { EdgeSwarm, EdgeSwarmInterface } from "../EdgeSwarm.js";

  const _abi = [
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "deviceAddress",
        "type": "address"
      }
    ],
    "name": "DeviceRegistered",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "deviceAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "rewardPayout",
        "type": "uint256"
      }
    ],
    "name": "GradientVerified",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "deviceAddress",
        "type": "address"
      }
    ],
    "name": "checkDeviceStats",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tasks",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "earnings",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "trust",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "platformOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "registerDevice",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rewardPerTask",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "zkProof",
        "type": "string"
      }
    ],
    "name": "submitVerifiedGradient",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "swarmNodes",
    "outputs": [
      {
        "internalType": "bool",
        "name": "isRegistered",
        "type": "bool"
      },
      {
        "internalType": "uint256",
        "name": "totalTasksCompleted",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "ubiEarned",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "trustScore",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
] as const;

  const _bytecode = "0x608060405260326001553480156013575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a78806100605f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c80633b66ec4c146100645780634df8ccb11461009657806373c52379146100b45780639ba0fd4b146100e7578063cb12f38614610103578063f651ed5e1461010d575b5f5ffd5b61007e600480360381019061007991906105db565b61012b565b60405161008d9392919061061e565b60405180910390f35b61009e6101cd565b6040516100ab9190610662565b60405180910390f35b6100ce60048036038101906100c991906105db565b6101f1565b6040516100de9493929190610695565b60405180910390f35b61010160048036038101906100fc9190610814565b610229565b005b61010b6103f9565b005b61011561056a565b604051610122919061085b565b60405180910390f35b5f5f5f5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815250509050806020015181604001518260600151935093509350509193909250565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052805f5260405f205f91509050805f015f9054906101000a900460ff16908060010154908060020154908060030154905084565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff166102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ab906108ce565b60405180910390fd5b5f8151116102f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ee90610936565b60405180910390fd5b600160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8282546103479190610981565b9250508190555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f82825461039f9190610981565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f630784fd01ea32c904114e7aa25c914e7185008311e48f4e4c5cf8da9d36ef526001546040516103ee919061085b565b60405180910390a250565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900460ff1615610485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047c90610a24565b60405180910390fd5b60405180608001604052806001151581526020015f81526020015f8152602001606481525060025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301559050503373ffffffffffffffffffffffffffffffffffffffff167f05d7f0c690676ba31675b45bcdb9ff4c34bb10744ec89d329eacd93c79ecc02960405160405180910390a2565b60015481565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105aa82610581565b9050919050565b6105ba816105a0565b81146105c4575f5ffd5b50565b5f813590506105d5816105b1565b92915050565b5f602082840312156105f0576105ef610579565b5b5f6105fd848285016105c7565b91505092915050565b5f819050919050565b61061881610606565b82525050565b5f6060820190506106315f83018661060f565b61063e602083018561060f565b61064b604083018461060f565b949350505050565b61065c816105a0565b82525050565b5f6020820190506106755f830184610653565b92915050565b5f8115159050919050565b61068f8161067b565b82525050565b5f6080820190506106a85f830187610686565b6106b5602083018661060f565b6106c2604083018561060f565b6106cf606083018461060f565b95945050505050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610726826106e0565b810181811067ffffffffffffffff82111715610745576107446106f0565b5b80604052505050565b5f610757610570565b9050610763828261071d565b919050565b5f67ffffffffffffffff821115610782576107816106f0565b5b61078b826106e0565b9050602081019050919050565b828183375f83830152505050565b5f6107b86107b384610768565b61074e565b9050828152602081018484840111156107d4576107d36106dc565b5b6107df848285610798565b509392505050565b5f82601f8301126107fb576107fa6106d8565b5b813561080b8482602086016107a6565b91505092915050565b5f6020828403121561082957610828610579565b5b5f82013567ffffffffffffffff8111156108465761084561057d565b5b610852848285016107e7565b91505092915050565b5f60208201905061086e5f83018461060f565b92915050565b5f82825260208201905092915050565b7f556e72656769737465726564206465766963652e0000000000000000000000005f82015250565b5f6108b8601483610874565b91506108c382610884565b602082019050919050565b5f6020820190508181035f8301526108e5816108ac565b9050919050565b7f496e76616c69642068617264776172652070726f6f662e0000000000000000005f82015250565b5f610920601783610874565b915061092b826108ec565b602082019050919050565b5f6020820190508181035f83015261094d81610914565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61098b82610606565b915061099683610606565b92508282019050808211156109ae576109ad610954565b5b92915050565b7f44657669636520697320616c72656164792070617274206f66207468652053775f8201527f61726d2e00000000000000000000000000000000000000000000000000000000602082015250565b5f610a0e602483610874565b9150610a19826109b4565b604082019050919050565b5f6020820190508181035f830152610a3b81610a02565b905091905056fea2646970667358221220141f3a49966e191a814544353506694db3624cd2c80ff495ff8eaaa2936c9dc164736f6c634300081c0033";

  
      type EdgeSwarmConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;

      const isSuperArgs = (xs: EdgeSwarmConstructorParams): xs is ConstructorParameters<typeof ContractFactory> =>
        xs.length > 1
    

  export class EdgeSwarm__factory extends ContractFactory {
    
      constructor(...args: EdgeSwarmConstructorParams) {
        if (isSuperArgs(args)) {
          super(...args);
        } else {
          super(_abi, _bytecode, args[0]);
        }
        
      }
    
    override getDeployTransaction(overrides?: NonPayableOverrides & { from?: string }): Promise<ContractDeployTransaction> {
      return super.getDeployTransaction(overrides || {});
    };
    override deploy(overrides?: NonPayableOverrides & { from?: string }) {
      return super.deploy(overrides || {}) as Promise<EdgeSwarm & {
        deploymentTransaction(): ContractTransactionResponse;
      }>;
    }
    override connect(runner: ContractRunner | null): EdgeSwarm__factory {
      return super.connect(runner) as EdgeSwarm__factory;
    }
    
    
    static readonly bytecode = _bytecode;
    static readonly abi = _abi;
    static createInterface(): EdgeSwarmInterface {
      return new Interface(_abi) as EdgeSwarmInterface;
    }
    
    override attach(address: string | Addressable): EdgeSwarm {
      return super.attach(address) as EdgeSwarm;
    }
  static connect(address: string, runner?: ContractRunner | null): EdgeSwarm {
      return new Contract(address, _abi, runner) as unknown as EdgeSwarm;
    }
  }

  
  