# AUTOGENERATED: Run scripts/generate_overload_tests.py to update.
# Requires mypy extras
# To run: pip install mypy && mypy tests/typecheck

# alias some things so we can minimize test data size in source control
from typing import Any as A
from typing import Tuple as T
from typing import Union as U
from typing_extensions import assert_type as ck
from eth_typing import HexAddress as HA
from faster_eth_abi.codec import ABIDecoder
from faster_eth_abi.registry import ABIRegistry

# more aliases to save a bunch more chars
bo = bool
by = bytes
i = int
s = str

TA = T[A, ...]

THA = T[HA, ...]
Tbo = T[bo, ...]
Tby = T[by, ...]
Ti = T[i, ...]
Ts = T[s, ...]
TUa_bo = T[U[HA, bo], ...]
TUa_by = T[U[HA, by], ...]
TUa_i = T[U[HA, i], ...]
TUa_s = T[U[HA, s], ...]
TUbo_by = T[U[bo, by], ...]
TUbo_i = T[U[bo, i], ...]
TUbo_s = T[U[bo, s], ...]
TUby_i = T[U[by, i], ...]
TUby_s = T[U[by, s], ...]
TUi_s = T[U[i, s], ...]
TUa_bo_by = T[U[bo, by, HA], ...]
TUbo_by_i = T[U[bo, by, i], ...]
TUbo_by_s = T[U[bo, by, s], ...]
TUa_bo_i = T[U[bo, i, HA], ...]
TUa_by_i = T[U[by, i, HA], ...]
TUby_i_s = T[U[by, i, s], ...]

decoder = ABIDecoder(ABIRegistry())

# the callable we are checking
f = decoder.decode

# input data
D = b"\x00" * 32
ck(f(('address',), D), T[HA])  # fixed case 0
ck(f(('address[]',), D), T[A])  # fixed case 1
ck(f(('bool',), D), T[bo])  # fixed case 2
ck(f(('bool[]',), D), T[A])  # fixed case 3
ck(f(('bytes',), D), T[by])  # fixed case 4
ck(f(('bytes1',), D), T[by])  # fixed case 5
ck(f(('bytes10',), D), T[by])  # fixed case 6
ck(f(('bytes11',), D), T[by])  # fixed case 7
ck(f(('bytes12',), D), T[by])  # fixed case 8
ck(f(('bytes13',), D), T[by])  # fixed case 9
ck(f(('bytes14',), D), T[by])  # fixed case 10
ck(f(('bytes15',), D), T[by])  # fixed case 11
ck(f(('bytes16',), D), T[by])  # fixed case 12
ck(f(('bytes17',), D), T[by])  # fixed case 13
ck(f(('bytes18',), D), T[by])  # fixed case 14
ck(f(('bytes19',), D), T[by])  # fixed case 15
ck(f(('bytes2',), D), T[by])  # fixed case 16
ck(f(('bytes20',), D), T[by])  # fixed case 17
ck(f(('bytes21',), D), T[by])  # fixed case 18
ck(f(('bytes22',), D), T[by])  # fixed case 19
ck(f(('bytes23',), D), T[by])  # fixed case 20
ck(f(('bytes24',), D), T[by])  # fixed case 21
ck(f(('bytes25',), D), T[by])  # fixed case 22
ck(f(('bytes26',), D), T[by])  # fixed case 23
ck(f(('bytes27',), D), T[by])  # fixed case 24
ck(f(('bytes28',), D), T[by])  # fixed case 25
ck(f(('bytes29',), D), T[by])  # fixed case 26
ck(f(('bytes3',), D), T[by])  # fixed case 27
ck(f(('bytes30',), D), T[by])  # fixed case 28
ck(f(('bytes31',), D), T[by])  # fixed case 29
ck(f(('bytes32',), D), T[by])  # fixed case 30
ck(f(('bytes4',), D), T[by])  # fixed case 31
ck(f(('bytes5',), D), T[by])  # fixed case 32
ck(f(('bytes6',), D), T[by])  # fixed case 33
ck(f(('bytes7',), D), T[by])  # fixed case 34
ck(f(('bytes8',), D), T[by])  # fixed case 35
ck(f(('bytes9',), D), T[by])  # fixed case 36
ck(f(('int104',), D), T[i])  # fixed case 37
ck(f(('int112',), D), T[i])  # fixed case 38
ck(f(('int120',), D), T[i])  # fixed case 39
ck(f(('int128',), D), T[i])  # fixed case 40
ck(f(('int136',), D), T[i])  # fixed case 41
ck(f(('int144',), D), T[i])  # fixed case 42
ck(f(('int152',), D), T[i])  # fixed case 43
ck(f(('int16',), D), T[i])  # fixed case 44
ck(f(('int160',), D), T[i])  # fixed case 45
ck(f(('int168',), D), T[i])  # fixed case 46
ck(f(('int176',), D), T[i])  # fixed case 47
ck(f(('int184',), D), T[i])  # fixed case 48
ck(f(('int192',), D), T[i])  # fixed case 49
ck(f(('int200',), D), T[i])  # fixed case 50
ck(f(('int208',), D), T[i])  # fixed case 51
ck(f(('int216',), D), T[i])  # fixed case 52
ck(f(('int224',), D), T[i])  # fixed case 53
ck(f(('int232',), D), T[i])  # fixed case 54
ck(f(('int24',), D), T[i])  # fixed case 55
ck(f(('int240',), D), T[i])  # fixed case 56
ck(f(('int248',), D), T[i])  # fixed case 57
ck(f(('int256',), D), T[i])  # fixed case 58
ck(f(('int32',), D), T[i])  # fixed case 59
ck(f(('int40',), D), T[i])  # fixed case 60
ck(f(('int48',), D), T[i])  # fixed case 61
ck(f(('int56',), D), T[i])  # fixed case 62
ck(f(('int64',), D), T[i])  # fixed case 63
ck(f(('int72',), D), T[i])  # fixed case 64
ck(f(('int8',), D), T[i])  # fixed case 65
ck(f(('int80',), D), T[i])  # fixed case 66
ck(f(('int88',), D), T[i])  # fixed case 67
ck(f(('int96',), D), T[i])  # fixed case 68
ck(f(('string',), D), T[s])  # fixed case 69
ck(f(('string[]',), D), T[A])  # fixed case 70
ck(f(('uint104',), D), T[i])  # fixed case 71
ck(f(('uint112',), D), T[i])  # fixed case 72
ck(f(('uint120',), D), T[i])  # fixed case 73
ck(f(('uint128',), D), T[i])  # fixed case 74
ck(f(('uint136',), D), T[i])  # fixed case 75
ck(f(('uint144',), D), T[i])  # fixed case 76
ck(f(('uint152',), D), T[i])  # fixed case 77
ck(f(('uint16',), D), T[i])  # fixed case 78
ck(f(('uint160',), D), T[i])  # fixed case 79
ck(f(('uint168',), D), T[i])  # fixed case 80
ck(f(('uint176',), D), T[i])  # fixed case 81
ck(f(('uint184',), D), T[i])  # fixed case 82
ck(f(('uint192',), D), T[i])  # fixed case 83
ck(f(('uint200',), D), T[i])  # fixed case 84
ck(f(('uint208',), D), T[i])  # fixed case 85
ck(f(('uint216',), D), T[i])  # fixed case 86
ck(f(('uint224',), D), T[i])  # fixed case 87
ck(f(('uint232',), D), T[i])  # fixed case 88
ck(f(('uint24',), D), T[i])  # fixed case 89
ck(f(('uint240',), D), T[i])  # fixed case 90
ck(f(('uint248',), D), T[i])  # fixed case 91
ck(f(('uint256',), D), T[i])  # fixed case 92
ck(f(('uint32',), D), T[i])  # fixed case 93
ck(f(('uint40',), D), T[i])  # fixed case 94
ck(f(('uint48',), D), T[i])  # fixed case 95
ck(f(('uint56',), D), T[i])  # fixed case 96
ck(f(('uint64',), D), T[i])  # fixed case 97
ck(f(('uint72',), D), T[i])  # fixed case 98
ck(f(('uint8',), D), T[i])  # fixed case 99
ck(f(('uint80',), D), T[i])  # fixed case 100
ck(f(('uint88',), D), T[i])  # fixed case 101
ck(f(('uint96',), D), T[i])  # fixed case 102
ck(f(('?',), D), T[A])  # fixed case 103
