// This file was autogenerated by hardhat-viem, do not edit it.
// prettier-ignore
// tslint:disable
// eslint-disable

import type { Address } from "viem";
import type { AbiParameterToPrimitiveType, GetContractReturnType } from "@nomicfoundation/hardhat-viem/types";
import "@nomicfoundation/hardhat-viem/types";

export interface ERC1967Proxy$Type {
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC1967Proxy",
  "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    }
  ],
  "bytecode": "0x60806040526102c68038038061001481610188565b928339810190604081830312610183578051906001600160a01b03821690818303610183576020810151906001600160401b038211610183570183601f820112156101835780519061006d610068836101c3565b610188565b94828652602083830101116101835760005b82811061016e575050602060009185010152813b1561015a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28151156101415760008083602061012995519101845af43d15610139573d91610119610068846101c3565b9283523d6000602085013e6101de565b505b604051608690816102408239f35b6060916101de565b5050341561012b5763b398979f60e01b60005260046000fd5b634c9c8ce360e01b60005260045260246000fd5b8060208092840101518282890101520161007f565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176101ad57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101ad57601f01601f191660200190565b9061020457508051156101f357805190602001fd5b63d6bda27560e01b60005260046000fd5b81511580610236575b610215575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561020d56fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460009081906001600160a01b0316368280378136915af43d6000803e15604b573d6000f35b3d6000fdfea264697066735822122015308d259e04f7047aa96453db210c475b804a9a7b24e93b366014ba61d2fa7164736f6c634300081c0033",
  "deployedBytecode": "0x60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460009081906001600160a01b0316368280378136915af43d6000803e15604b573d6000f35b3d6000fdfea264697066735822122015308d259e04f7047aa96453db210c475b804a9a7b24e93b366014ba61d2fa7164736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}

declare module "@nomicfoundation/hardhat-viem/types" {
  export function deployContract(
    contractName: "ERC1967Proxy",
    constructorArgs: [implementation: AbiParameterToPrimitiveType<{"name":"implementation","type":"address"}>, _data: AbiParameterToPrimitiveType<{"name":"_data","type":"bytes"}>],
    config?: DeployContractConfig
  ): Promise<GetContractReturnType<ERC1967Proxy$Type["abi"]>>;
  export function deployContract(
    contractName: "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy",
    constructorArgs: [implementation: AbiParameterToPrimitiveType<{"name":"implementation","type":"address"}>, _data: AbiParameterToPrimitiveType<{"name":"_data","type":"bytes"}>],
    config?: DeployContractConfig
  ): Promise<GetContractReturnType<ERC1967Proxy$Type["abi"]>>;

  export function sendDeploymentTransaction(
    contractName: "ERC1967Proxy",
    constructorArgs: [implementation: AbiParameterToPrimitiveType<{"name":"implementation","type":"address"}>, _data: AbiParameterToPrimitiveType<{"name":"_data","type":"bytes"}>],
    config?: SendDeploymentTransactionConfig
  ): Promise<{
    contract: GetContractReturnType<ERC1967Proxy$Type["abi"]>;
    deploymentTransaction: GetTransactionReturnType;
  }>;
  export function sendDeploymentTransaction(
    contractName: "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy",
    constructorArgs: [implementation: AbiParameterToPrimitiveType<{"name":"implementation","type":"address"}>, _data: AbiParameterToPrimitiveType<{"name":"_data","type":"bytes"}>],
    config?: SendDeploymentTransactionConfig
  ): Promise<{
    contract: GetContractReturnType<ERC1967Proxy$Type["abi"]>;
    deploymentTransaction: GetTransactionReturnType;
  }>;

  export function getContractAt(
    contractName: "ERC1967Proxy",
    address: Address,
    config?: GetContractAtConfig
  ): Promise<GetContractReturnType<ERC1967Proxy$Type["abi"]>>;
  export function getContractAt(
    contractName: "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy",
    address: Address,
    config?: GetContractAtConfig
  ): Promise<GetContractReturnType<ERC1967Proxy$Type["abi"]>>;
}
