"""Dataclasses for all structs in the Example contract.

DO NOT EDIT.  This file was generated by pypechain.  See documentation at
https://github.com/delvtech/pypechain """

# super() call methods are generic, while our version adds values & types
# pylint: disable=arguments-differ

# contracts have PascalCase names
# pylint: disable=invalid-name
# contracts control how many attributes and arguments we have in generated code
# pylint: disable=too-many-instance-attributes
# pylint: disable=too-many-arguments
# unable to determine which imports will be used in the generated code
# pylint: disable=unused-import
# we don't need else statement if the other conditionals all have return,
# but it's easier to generate
# pylint: disable=no-else-return
from __future__ import annotations

from dataclasses import dataclass

from web3.types import ABIEvent, ABIEventParams


@dataclass
class SimpleStruct:
    """SimpleStruct struct."""

    intVal: int
    strVal: str


@dataclass
class InnerStruct:
    """InnerStruct struct."""

    boolVal: bool


@dataclass
class NestedStruct:
    """NestedStruct struct."""

    intVal: int
    strVal: str
    innerStruct: InnerStruct


Flip = ABIEvent(
    anonymous=False,
    inputs=[
        ABIEventParams(indexed=False, name="flip", type="uint256"),
    ],
    name="Flip",
    type="event",
)

Flop = ABIEvent(
    anonymous=False,
    inputs=[
        ABIEventParams(indexed=False, name="flop", type="uint256"),
    ],
    name="Flop",
    type="event",
)


@dataclass
class ErrorInfo:
    """Custom contract error information."""

    name: str
    selector: str
    signature: str
    inputs: list[ErrorParams]


@dataclass
class ErrorParams:
    """Parameter info for custom contract errors."""

    name: str
    solidity_type: str
    python_type: str


WrongChoiceError = ErrorInfo(
    inputs=[
        ErrorParams(name="answer", python_type="int", solidity_type="uint8"),
        ErrorParams(name="errorMessage", python_type="str", solidity_type="string"),
    ],
    name="WrongChoice",
    selector="0xc13b30d4",
    signature="WrongChoice(uint8,string)",
)
