Skip to main content
@tevm/voltaire
@tevm/voltaire / primitives/Abi / Function

Function

Classes

FunctionDecodingError

Defined in: src/primitives/Abi/function/errors.js:33 Error thrown when decoding function data fails

Extends

  • AbiDecodingError

Constructors

Constructor
new FunctionDecodingError(message, options?): FunctionDecodingError
Defined in: src/primitives/Abi/function/errors.js:42
Parameters
message
string Error message
options?
Error options
cause?
Error Original error
code?
string Error code
context?
Record<string, unknown> Additional context
docsPath?
string Documentation path
Returns
FunctionDecodingError
Overrides
AbiDecodingError.constructor

Properties

cause?
optional cause: Error
Defined in: src/primitives/errors/AbstractError.ts:56 Root cause of this error (for error chaining)
Inherited from
AbiDecodingError.cause
code
code: string
Defined in: src/primitives/errors/AbstractError.ts:39 Machine-readable error code for programmatic handling
Example
'INVALID_FORMAT', 'INVALID_LENGTH'
Inherited from
AbiDecodingError.code
context?
optional context: Record<string, unknown>
Defined in: src/primitives/errors/AbstractError.ts:45 Additional context metadata for debugging
Example
{ value: '0x123', expected: '20 bytes' }
Inherited from
AbiDecodingError.context
docsPath?
optional docsPath: string
Defined in: src/primitives/errors/AbstractError.ts:51 Path to documentation for this error
Example
'/primitives/address/from-hex#error-handling'
Inherited from
AbiDecodingError.docsPath
name
name: string
Defined in: src/primitives/Abi/function/errors.js:49
Inherited from
AbiDecodingError.name

Methods

getErrorChain()
getErrorChain(): string
Defined in: src/primitives/errors/AbstractError.ts:94 Get full error chain as string for logging
Returns
string
Inherited from
AbiDecodingError.getErrorChain
toJSON()
toJSON(): Record<string, unknown>
Defined in: src/primitives/errors/AbstractError.ts:110 Serialize error to JSON for logging/telemetry
Returns
Record<string, unknown>
Inherited from
AbiDecodingError.toJSON

FunctionEncodingError

Defined in: src/primitives/Abi/function/errors.js:10 Error thrown when encoding function data fails

Extends

  • AbiEncodingError

Constructors

Constructor
new FunctionEncodingError(message, options?): FunctionEncodingError
Defined in: src/primitives/Abi/function/errors.js:19
Parameters
message
string Error message
options?
Error options
cause?
Error Original error
code?
string Error code
context?
Record<string, unknown> Additional context
docsPath?
string Documentation path
Returns
FunctionEncodingError
Overrides
AbiEncodingError.constructor

Properties

cause?
optional cause: Error
Defined in: src/primitives/errors/AbstractError.ts:56 Root cause of this error (for error chaining)
Inherited from
AbiEncodingError.cause
code
code: string
Defined in: src/primitives/errors/AbstractError.ts:39 Machine-readable error code for programmatic handling
Example
'INVALID_FORMAT', 'INVALID_LENGTH'
Inherited from
AbiEncodingError.code
context?
optional context: Record<string, unknown>
Defined in: src/primitives/errors/AbstractError.ts:45 Additional context metadata for debugging
Example
{ value: '0x123', expected: '20 bytes' }
Inherited from
AbiEncodingError.context
docsPath?
optional docsPath: string
Defined in: src/primitives/errors/AbstractError.ts:51 Path to documentation for this error
Example
'/primitives/address/from-hex#error-handling'
Inherited from
AbiEncodingError.docsPath
name
name: string
Defined in: src/primitives/Abi/function/errors.js:26
Inherited from
AbiEncodingError.name

Methods

getErrorChain()
getErrorChain(): string
Defined in: src/primitives/errors/AbstractError.ts:94 Get full error chain as string for logging
Returns
string
Inherited from
AbiEncodingError.getErrorChain
toJSON()
toJSON(): Record<string, unknown>
Defined in: src/primitives/errors/AbstractError.ts:110 Serialize error to JSON for logging/telemetry
Returns
Record<string, unknown>
Inherited from
AbiEncodingError.toJSON

FunctionInvalidSelectorError

Defined in: src/primitives/Abi/function/errors.js:56 Error thrown when function selector doesn’t match

Extends

  • AbiInvalidSelectorError

Constructors

Constructor
new FunctionInvalidSelectorError(message, options): FunctionInvalidSelectorError
Defined in: src/primitives/Abi/function/errors.js:67
Parameters
message
string Error message
options
Error options
cause?
Error Original error
code?
string Error code
context?
Record<string, unknown> Additional context
docsPath?
string Documentation path
expected
string Expected selector value
value
unknown Actual selector value
Returns
FunctionInvalidSelectorError
Overrides
AbiInvalidSelectorError.constructor

Properties

cause?
optional cause: Error
Defined in: src/primitives/errors/AbstractError.ts:56 Root cause of this error (for error chaining)
Inherited from
AbiInvalidSelectorError.cause
code
code: string
Defined in: src/primitives/errors/AbstractError.ts:39 Machine-readable error code for programmatic handling
Example
'INVALID_FORMAT', 'INVALID_LENGTH'
Inherited from
AbiInvalidSelectorError.code
context?
optional context: Record<string, unknown>
Defined in: src/primitives/errors/AbstractError.ts:45 Additional context metadata for debugging
Example
{ value: '0x123', expected: '20 bytes' }
Inherited from
AbiInvalidSelectorError.context
docsPath?
optional docsPath: string
Defined in: src/primitives/errors/AbstractError.ts:51 Path to documentation for this error
Example
'/primitives/address/from-hex#error-handling'
Inherited from
AbiInvalidSelectorError.docsPath
expected
expected: string
Defined in: src/primitives/errors/ValidationError.ts:19
Inherited from
AbiInvalidSelectorError.expected
name
name: string
Defined in: src/primitives/Abi/function/errors.js:76
Inherited from
AbiInvalidSelectorError.name
value
value: unknown
Defined in: src/primitives/errors/ValidationError.ts:18
Inherited from
AbiInvalidSelectorError.value

Methods

getErrorChain()
getErrorChain(): string
Defined in: src/primitives/errors/AbstractError.ts:94 Get full error chain as string for logging
Returns
string
Inherited from
AbiInvalidSelectorError.getErrorChain
toJSON()
toJSON(): Record<string, unknown>
Defined in: src/primitives/errors/AbstractError.ts:110 Serialize error to JSON for logging/telemetry
Returns
Record<string, unknown>
Inherited from
AbiInvalidSelectorError.toJSON

Type Aliases

ExtractNames

ExtractNames<TAbi> = Extract<TAbi[number], { type: "function"; }>["name"]
Defined in: src/primitives/Abi/function/FunctionType.ts:29 Extract function names from an ABI

Type Parameters

TAbi
TAbi extends readonly ItemType[]

FunctionType

FunctionType<TName, TStateMutability, TInputs, TOutputs> = object
Defined in: src/primitives/Abi/function/FunctionType.ts:13 Function ABI item type

Type Parameters

TName
TName extends string = string Function name
TStateMutability
TStateMutability extends StateMutability = StateMutability State mutability (pure | view | nonpayable | payable)
TInputs
TInputs extends readonly Parameter[] = readonly Parameter[] Input parameters
TOutputs
TOutputs extends readonly Parameter[] = readonly Parameter[] Output parameters

Properties

inputs
inputs: TInputs
Defined in: src/primitives/Abi/function/FunctionType.ts:22
name
name: TName
Defined in: src/primitives/Abi/function/FunctionType.ts:20
outputs
outputs: TOutputs
Defined in: src/primitives/Abi/function/FunctionType.ts:23
stateMutability
stateMutability: TStateMutability
Defined in: src/primitives/Abi/function/FunctionType.ts:21
type
type: "function"
Defined in: src/primitives/Abi/function/FunctionType.ts:19

Get

Get<TAbi, TName> = Extract<TAbi[number], { name: TName; type: "function"; }>
Defined in: src/primitives/Abi/function/FunctionType.ts:37 Get a specific function from an ABI by name

Type Parameters

TAbi
TAbi extends readonly ItemType[]
TName
TName extends string

StateMutability

StateMutability = "pure" | "view" | "nonpayable" | "payable"
Defined in: src/primitives/Abi/function/statemutability.ts:1

Variables

decodeParams()

const decodeParams: <TName, TStateMutability, TInputs, TOutputs>(fn, data) => ParametersToPrimitiveTypes<TInputs> = _decodeParams
Defined in: src/primitives/Abi/function/index.ts:30 Decode function call data (verify selector and decode parameters)

Type Parameters

TName
TName extends string
TStateMutability
TStateMutability extends StateMutability
TInputs
TInputs extends readonly Parameter<AbiType, string, string>[]
TOutputs
TOutputs extends readonly Parameter<AbiType, string, string>[]

Parameters

fn
FunctionType<TName, TStateMutability, TInputs, TOutputs> Function ABI item
data
Uint8Array<ArrayBufferLike> Encoded calldata

Returns

ParametersToPrimitiveTypes<TInputs> Decoded arguments

See

https://voltaire.tevm.sh/primitives/abi

Since

0.0.0

Throws

If data is too short

Throws

If selector doesn’t match

Example

import * as Abi from './primitives/Abi/index.js';
const func = {
  type: "function",
  name: "transfer",
  stateMutability: "nonpayable",
  inputs: [
    { type: "address", name: "to" },
    { type: "uint256", name: "amount" }
  ],
  outputs: []
};
const decoded = Abi.Function.decodeParams(func, encoded);
// ["0x742d35cc6634c0532925a3b844bc9e7595f251e3", 100n]

decodeResult()

const decodeResult: <TName, TStateMutability, TInputs, TOutputs>(fn, data) => ParametersToPrimitiveTypes<TOutputs> = _decodeResult
Defined in: src/primitives/Abi/function/index.ts:32 Decode function return values

Type Parameters

TName
TName extends string
TStateMutability
TStateMutability extends StateMutability
TInputs
TInputs extends readonly Parameter<AbiType, string, string>[]
TOutputs
TOutputs extends readonly Parameter<AbiType, string, string>[]

Parameters

fn
FunctionType<TName, TStateMutability, TInputs, TOutputs> Function ABI item
data
Uint8Array<ArrayBufferLike> Encoded return data

Returns

ParametersToPrimitiveTypes<TOutputs> Decoded return values

Example

const func = {
  type: "function",
  name: "balanceOf",
  stateMutability: "view",
  inputs: [{ type: "address", name: "account" }],
  outputs: [{ type: "uint256", name: "" }]
};
const decoded = decodeResult(func, encoded);
// [1000n]

encodeParams()

const encodeParams: <TName, TStateMutability, TInputs, TOutputs>(fn, args) => Uint8Array<ArrayBufferLike> = _encodeParams
Defined in: src/primitives/Abi/function/index.ts:29 Encode function call data (selector + ABI-encoded parameters)

Type Parameters

TName
TName extends string
TStateMutability
TStateMutability extends StateMutability
TInputs
TInputs extends readonly Parameter<AbiType, string, string>[]
TOutputs
TOutputs extends readonly Parameter<AbiType, string, string>[]

Parameters

fn
FunctionType<TName, TStateMutability, TInputs, TOutputs> Function ABI item
args
ParametersToPrimitiveTypes<TInputs> Function arguments

Returns

Uint8Array<ArrayBufferLike> Encoded calldata (selector + params)

See

https://voltaire.tevm.sh/primitives/abi

Since

0.0.0

Throws

Example

import * as Abi from './primitives/Abi/index.js';
const func = {
  type: "function",
  name: "transfer",
  stateMutability: "nonpayable",
  inputs: [
    { type: "address", name: "to" },
    { type: "uint256", name: "amount" }
  ],
  outputs: []
};
const encoded = Abi.Function.encodeParams(func, [
  "0x742d35cc6634c0532925a3b844bc9e7595f251e3",
  100n
]);

encodeResult()

const encodeResult: <TName, TStateMutability, TInputs, TOutputs>(fn, values) => Uint8Array<ArrayBufferLike> = _encodeResult
Defined in: src/primitives/Abi/function/index.ts:31 Encode function return values

Type Parameters

TName
TName extends string
TStateMutability
TStateMutability extends StateMutability
TInputs
TInputs extends readonly Parameter<AbiType, string, string>[]
TOutputs
TOutputs extends readonly Parameter<AbiType, string, string>[]

Parameters

fn
FunctionType<TName, TStateMutability, TInputs, TOutputs> Function ABI item
values
ParametersToPrimitiveTypes<TOutputs> Return values

Returns

Uint8Array<ArrayBufferLike> Encoded return data

Example

const func = {
  type: "function",
  name: "balanceOf",
  stateMutability: "view",
  inputs: [{ type: "address", name: "account" }],
  outputs: [{ type: "uint256", name: "" }]
};
const encoded = encodeResult(func, [1000n]);

getSelector()

const getSelector: (fn) => Uint8Array
Defined in: src/primitives/Abi/function/index.ts:23

Parameters

fn
any

Returns

Uint8Array

getSignature()

const getSignature: <TName, TStateMutability, TInputs, TOutputs>(fn) => string = _getSignature
Defined in: src/primitives/Abi/function/index.ts:28 Get function signature string (name(type1,type2,…))

Type Parameters

TName
TName extends string
TStateMutability
TStateMutability extends StateMutability
TInputs
TInputs extends readonly Parameter<AbiType, string, string>[]
TOutputs
TOutputs extends readonly Parameter<AbiType, string, string>[]

Parameters

fn
FunctionType<TName, TStateMutability, TInputs, TOutputs> Function ABI item

Returns

string Function signature string

Example

const func = {
  type: "function",
  name: "transfer",
  stateMutability: "nonpayable",
  inputs: [
    { type: "address", name: "to" },
    { type: "uint256", name: "amount" }
  ],
  outputs: []
};
const sig = getSignature(func);
// "transfer(address,uint256)"

Functions

Function()

Function<TName, TStateMutability, TInputs, TOutputs>(fn): FunctionType<TName, TStateMutability, TInputs, TOutputs>
Defined in: src/primitives/Abi/function/Function.js:38 Factory function for creating/validating Function ABI items Since Function items are plain objects, this mainly serves as a namespace

Type Parameters

TName
TName extends string
TStateMutability
TStateMutability extends StateMutability
TInputs
TInputs extends readonly ParameterType<AbiType, string, string>[]
TOutputs
TOutputs extends readonly ParameterType<AbiType, string, string>[]

Parameters

fn
FunctionType<TName, TStateMutability, TInputs, TOutputs> Function ABI item

Returns

FunctionType<TName, TStateMutability, TInputs, TOutputs> Validated function item

See

https://voltaire.tevm.sh/primitives/abi

Since

0.0.0

Throws

Example

import * as Abi from './primitives/Abi/index.js';
const func = Abi.Function({
  type: 'function',
  name: 'transfer',
  stateMutability: 'nonpayable',
  inputs: [{ type: 'address' }, { type: 'uint256' }],
  outputs: [{ type: 'bool' }]
});

GetSelector()

GetSelector(deps): (fn) => Uint8Array
Defined in: src/primitives/Abi/function/getSelector.js:31 Factory: Get function selector (first 4 bytes of keccak256 hash of signature)

Parameters

deps
Crypto dependencies
keccak256String
(str) => Uint8Array Keccak256 hash function for strings

Returns

Function that computes function selector
(fn): Uint8Array
Parameters
fn
any
Returns
Uint8Array

See

https://voltaire.tevm.sh/primitives/abi

Since

0.0.0

Example

import { GetSelector } from './primitives/Abi/function/index.js';
import { keccak256String } from './primitives/Hash/index.js';

const getSelector = GetSelector({ keccak256String });
const func = {
  type: "function",
  name: "transfer",
  stateMutability: "nonpayable",
  inputs: [
    { type: "address", name: "to" },
    { type: "uint256", name: "amount" }
  ],
  outputs: []
};
const selector = getSelector(func);
// Uint8Array([0xa9, 0x05, 0x9c, 0xbb]) - transfer(address,uint256)

References

DecodeParams

Renames and re-exports decodeParams

DecodeResult

Renames and re-exports decodeResult

Params

Renames and re-exports encodeParams

Result

Renames and re-exports encodeResult

Signature

Renames and re-exports getSignature