Types
Types covering the Contract ABI and EIP-712 Typed Data Specifications.
Abi
Type matching the Contract ABI Specification
import { type Abi = readonly (AbiConstructor | AbiError | AbiEvent | AbiFallback | AbiFunction | AbiReceive)[]Contract ABI Specification
Abi } from 'abitype'
AbiConstructor
ABI Constructor type
import { type AbiConstructor = {
type: "constructor";
inputs: readonly AbiParameter[];
payable?: boolean | undefined;
stateMutability: Extract<AbiStateMutability, "payable" | "nonpayable">;
}ABI "constructor" type
AbiConstructor } from 'abitype'
AbiError
ABI Error type
import { AbiError } from 'abitype'
AbiEvent
ABI Event type
import { type AbiEvent = {
type: "event";
anonymous?: boolean | undefined;
inputs: readonly AbiEventParameter[];
name: string;
}ABI "event" type
AbiEvent } from 'abitype'
AbiFallback
ABI Fallback type
import { type AbiFallback = {
type: "fallback";
payable?: boolean | undefined;
stateMutability: Extract<AbiStateMutability, "payable" | "nonpayable">;
}ABI "fallback" type
AbiFallback } from 'abitype'
AbiFunction
ABI Function type
import { type AbiFunction = {
type: "function";
constant?: boolean | undefined;
gas?: number | undefined;
inputs: readonly AbiParameter[];
name: string;
outputs: readonly AbiParameter[];
payable?: boolean | undefined;
stateMutability: AbiStateMutability;
}ABI "function" type
AbiFunction } from 'abitype'
AbiInternalType
Representation used by Solidity compiler (e.g. 'string'
, 'int256'
, 'struct Foo'
)
import { type AbiInternalType = stringAbiInternalType } from 'abitype'
AbiItemType
"type"
name for Abi
items (e.g. 'type': 'function'
for AbiFunction
)
import { type AbiInternalType = stringAbiInternalType } from 'abitype'
AbiParameter
inputs
and outputs
item for ABI functions, errors, and constructors
import { type AbiParameter = {
type: string;
name?: string | undefined;
internalType?: AbiInternalType | undefined;
} | {
type: "tuple" | `tuple[${string}]`;
name?: string | undefined;
internalType?: AbiInternalType | undefined;
components: readonly AbiParameter[];
}AbiParameter } from 'abitype'
AbiEventParameter
inputs
for ABI events
import { type AbiEventParameter = AbiParameter & {
indexed?: boolean | undefined;
}AbiEventParameter } from 'abitype'
AbiParameterKind
Kind of ABI parameter: 'inputs' | 'outputs'
import { type AbiParameterKind = "inputs" | "outputs"Kind of AbiParameter
AbiParameterKind } from 'abitype'
AbiReceive
ABI Receive type
import { type AbiReceive = {
type: "receive";
stateMutability: Extract<AbiStateMutability, "payable">;
}ABI "receive" type
AbiReceive } from 'abitype'
AbiStateMutability
ABI Function behavior
import { type AbiStateMutability = "pure" | "view" | "nonpayable" | "payable"State mutability for AbiFunction
AbiStateMutability } from 'abitype'
AbiType
ABI canonical types
import { type AbiType = "string" | "function" | "address" | "bool" | "bytes" | "bytes1" | "bytes2" | "bytes3" | "bytes4" | "bytes5" | "bytes6" | "bytes7" | "bytes8" | "bytes9" | "bytes10" | "bytes11" | ... 88 more ... | SolidityArrayAbiType } from 'abitype'
Solidity types
Solidity types as template strings
import {
type SolidityAddress = "address"SolidityAddress,
type SolidityArray = `string[${string}]` | `function[${string}]` | `address[${string}]` | `bool[${string}]` | `bytes[${string}]` | `bytes1[${string}]` | `bytes2[${string}]` | `bytes3[${string}]` | `bytes4[${string}]` | `bytes5[${string}]` | `bytes6[${string}]` | `bytes7[${string}]` | `bytes8[${string}]` | `bytes9[${string}]` | `bytes10[${string}]` | `bytes11[${string}]` | `bytes12[${string}]` | ... 86 more ... | `tuple[${string}]`SolidityArray,
type SolidityBool = "bool"SolidityBool,
type SolidityBytes = "bytes" | "bytes1" | "bytes2" | "bytes3" | "bytes4" | "bytes5" | "bytes6" | "bytes7" | "bytes8" | "bytes9" | "bytes10" | "bytes11" | "bytes12" | "bytes13" | "bytes14" | "bytes15" | ... 16 more ... | "bytes32"SolidityBytes,
type SolidityFunction = "function"SolidityFunction,
type SolidityInt = "int" | "int8" | "int16" | "int24" | "int32" | "int40" | "int48" | "int56" | "int64" | "int72" | "int80" | "int88" | "int96" | "int104" | "int112" | "int120" | "int128" | "int136" | ... 47 more ... | "uint256"SolidityInt,
type SolidityString = "string"SolidityString,
type SolidityTuple = "tuple"SolidityTuple,
} from 'abitype'
TypedData
EIP-712 Typed Data Specification
import { type TypedData = {
[x: string]: readonly TypedDataParameter[];
[x: `string[${string}]`]: undefined;
[x: `function[${string}]`]: undefined;
[x: `address[${string}]`]: undefined;
[x: `bool[${string}]`]: undefined;
[x: `bytes[${string}]`]: undefined;
[x: `bytes1[${string}]`]: undefined;
[x: `bytes2[${string}]`]: undefined;
[x: `bytes3[${string}]`]: undefined;
[x: `bytes4[${string}]`]: undefined;
[x: `bytes5[${string}]`]: undefined;
[x: `bytes6[${string}]`]: undefined;
[x: `bytes7[${string}]`]: undefined;
[x: `bytes8[${string}]`]: undefined;
[x: `bytes9[${string}]`]: undefined;
[x: `bytes10[${string}]`]: undefined;
[x: `bytes11[${string}]`]: undefined;
[x: `bytes12[${string}]`]: undefined;
[x: `bytes13[${string}]`]: undefined;
[x: `bytes14[${string}]`]: undefined;
[x: `bytes15[${string}]`]: undefined;
[x: `bytes16[${string}]`]: undefined;
[x: `bytes17[${string}]`]: undefined;
[x: `bytes18[${string}]`]: undefined;
[x: `bytes19[${string}]`]: undefined;
[x: `bytes20[${string}]`]: undefined;
[x: `bytes21[${string}]`]: undefined;
[x: `bytes22[${string}]`]: undefined;
[x: `bytes23[${string}]`]: undefined;
[x: `bytes24[${string}]`]: undefined;
[x: `bytes25[${string}]`]: undefined;
[x: `bytes26[${string}]`]: undefined;
[x: `bytes27[${string}]`]: undefined;
[x: `bytes28[${string}]`]: undefined;
[x: `bytes29[${string}]`]: undefined;
[x: `bytes30[${string}]`]: undefined;
[x: `bytes31[${string}]`]: undefined;
[x: `bytes32[${string}]`]: undefined;
[x: `int[${ ...EIP-712 Typed Data Specification
TypedData } from 'abitype'
TypedDataDomain
EIP-712 Domain
import { type TypedDataDomain = {
chainId?: number | bigint | string | undefined;
name?: string | undefined;
salt?: ResolvedRegister["bytesType"]["outputs"] | undefined;
verifyingContract?: Address | undefined;
version?: string | undefined;
}TypedDataDomain } from 'abitype'
TypedDataParameter
Entry in TypedData
type items
import { type TypedDataParameter = {
name: string;
type: TypedDataType | keyof TypedData | `${keyof TypedData}[${string | ""}]`;
}TypedDataParameter } from 'abitype'
TypedDataType
Subset of AbiType
that excludes tuple
and function
import { type TypedDataType = "string" | "address" | "bool" | "bytes" | "bytes1" | "bytes2" | "bytes3" | "bytes4" | "bytes5" | "bytes6" | "bytes7" | "bytes8" | "bytes9" | "bytes10" | "bytes11" | "bytes12" | ... 186 more ... | `uint256[${string}]`TypedDataType } from 'abitype'