> ## Documentation Index
> Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Function

> Auto-generated API documentation

[**@tevm/voltaire**](../../../index.mdx)

***

[@tevm/voltaire](../../../index.mdx) / [primitives/Abi](../index.mdx) / Function

# Function

## Classes

### FunctionDecodingError

Defined in: [src/primitives/Abi/function/errors.js:33](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L33)

Error thrown when decoding function data fails

#### Extends

* `AbiDecodingError`

#### Constructors

##### Constructor

> **new FunctionDecodingError**(`message`, `options?`): [`FunctionDecodingError`](#functiondecodingerror)

Defined in: [src/primitives/Abi/function/errors.js:42](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L42)

###### 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`](#functiondecodingerror)

###### Overrides

`AbiDecodingError.constructor`

#### Properties

##### cause?

> `optional` **cause**: `Error`

Defined in: [src/primitives/errors/AbstractError.ts:56](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L56)

Root cause of this error (for error chaining)

###### Inherited from

`AbiDecodingError.cause`

##### code

> **code**: `string`

Defined in: [src/primitives/errors/AbstractError.ts:39](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L39)

Machine-readable error code for programmatic handling

###### Example

```ts theme={null}
'INVALID_FORMAT', 'INVALID_LENGTH'
```

###### Inherited from

`AbiDecodingError.code`

##### context?

> `optional` **context**: `Record`\<`string`, `unknown`>

Defined in: [src/primitives/errors/AbstractError.ts:45](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L45)

Additional context metadata for debugging

###### Example

```ts theme={null}
{ value: '0x123', expected: '20 bytes' }
```

###### Inherited from

`AbiDecodingError.context`

##### docsPath?

> `optional` **docsPath**: `string`

Defined in: [src/primitives/errors/AbstractError.ts:51](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L51)

Path to documentation for this error

###### Example

```ts theme={null}
'/primitives/address/from-hex#error-handling'
```

###### Inherited from

`AbiDecodingError.docsPath`

##### name

> **name**: `string`

Defined in: [src/primitives/Abi/function/errors.js:49](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L49)

###### Inherited from

`AbiDecodingError.name`

#### Methods

##### getErrorChain()

> **getErrorChain**(): `string`

Defined in: [src/primitives/errors/AbstractError.ts:94](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L94)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L110)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L10)

Error thrown when encoding function data fails

#### Extends

* `AbiEncodingError`

#### Constructors

##### Constructor

> **new FunctionEncodingError**(`message`, `options?`): [`FunctionEncodingError`](#functionencodingerror)

Defined in: [src/primitives/Abi/function/errors.js:19](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L19)

###### 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`](#functionencodingerror)

###### Overrides

`AbiEncodingError.constructor`

#### Properties

##### cause?

> `optional` **cause**: `Error`

Defined in: [src/primitives/errors/AbstractError.ts:56](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L56)

Root cause of this error (for error chaining)

###### Inherited from

`AbiEncodingError.cause`

##### code

> **code**: `string`

Defined in: [src/primitives/errors/AbstractError.ts:39](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L39)

Machine-readable error code for programmatic handling

###### Example

```ts theme={null}
'INVALID_FORMAT', 'INVALID_LENGTH'
```

###### Inherited from

`AbiEncodingError.code`

##### context?

> `optional` **context**: `Record`\<`string`, `unknown`>

Defined in: [src/primitives/errors/AbstractError.ts:45](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L45)

Additional context metadata for debugging

###### Example

```ts theme={null}
{ value: '0x123', expected: '20 bytes' }
```

###### Inherited from

`AbiEncodingError.context`

##### docsPath?

> `optional` **docsPath**: `string`

Defined in: [src/primitives/errors/AbstractError.ts:51](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L51)

Path to documentation for this error

###### Example

```ts theme={null}
'/primitives/address/from-hex#error-handling'
```

###### Inherited from

`AbiEncodingError.docsPath`

##### name

> **name**: `string`

Defined in: [src/primitives/Abi/function/errors.js:26](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L26)

###### Inherited from

`AbiEncodingError.name`

#### Methods

##### getErrorChain()

> **getErrorChain**(): `string`

Defined in: [src/primitives/errors/AbstractError.ts:94](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L94)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L110)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L56)

Error thrown when function selector doesn't match

#### Extends

* `AbiInvalidSelectorError`

#### Constructors

##### Constructor

> **new FunctionInvalidSelectorError**(`message`, `options`): [`FunctionInvalidSelectorError`](#functioninvalidselectorerror)

Defined in: [src/primitives/Abi/function/errors.js:67](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L67)

###### 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`](#functioninvalidselectorerror)

###### Overrides

`AbiInvalidSelectorError.constructor`

#### Properties

##### cause?

> `optional` **cause**: `Error`

Defined in: [src/primitives/errors/AbstractError.ts:56](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L56)

Root cause of this error (for error chaining)

###### Inherited from

`AbiInvalidSelectorError.cause`

##### code

> **code**: `string`

Defined in: [src/primitives/errors/AbstractError.ts:39](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L39)

Machine-readable error code for programmatic handling

###### Example

```ts theme={null}
'INVALID_FORMAT', 'INVALID_LENGTH'
```

###### Inherited from

`AbiInvalidSelectorError.code`

##### context?

> `optional` **context**: `Record`\<`string`, `unknown`>

Defined in: [src/primitives/errors/AbstractError.ts:45](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L45)

Additional context metadata for debugging

###### Example

```ts theme={null}
{ value: '0x123', expected: '20 bytes' }
```

###### Inherited from

`AbiInvalidSelectorError.context`

##### docsPath?

> `optional` **docsPath**: `string`

Defined in: [src/primitives/errors/AbstractError.ts:51](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L51)

Path to documentation for this error

###### Example

```ts theme={null}
'/primitives/address/from-hex#error-handling'
```

###### Inherited from

`AbiInvalidSelectorError.docsPath`

##### expected

> **expected**: `string`

Defined in: [src/primitives/errors/ValidationError.ts:19](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/ValidationError.ts#L19)

###### Inherited from

`AbiInvalidSelectorError.expected`

##### name

> **name**: `string`

Defined in: [src/primitives/Abi/function/errors.js:76](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/errors.js#L76)

###### Inherited from

`AbiInvalidSelectorError.name`

##### value

> **value**: `unknown`

Defined in: [src/primitives/errors/ValidationError.ts:18](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/ValidationError.ts#L18)

###### Inherited from

`AbiInvalidSelectorError.value`

#### Methods

##### getErrorChain()

> **getErrorChain**(): `string`

Defined in: [src/primitives/errors/AbstractError.ts:94](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L94)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/errors/AbstractError.ts#L110)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L29)

Extract function names from an ABI

#### Type Parameters

##### TAbi

`TAbi` *extends* readonly [`ItemType`](Item.mdx#itemtype)\[]

***

### FunctionType

> **FunctionType**\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`> = `object`

Defined in: [src/primitives/Abi/function/FunctionType.ts:13](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L13)

Function ABI item type

#### Type Parameters

##### TName

`TName` *extends* `string` = `string`

Function name

##### TStateMutability

`TStateMutability` *extends* [`StateMutability`](#statemutability-1) = [`StateMutability`](#statemutability-1)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L22)

##### name

> **name**: `TName`

Defined in: [src/primitives/Abi/function/FunctionType.ts:20](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L20)

##### outputs

> **outputs**: `TOutputs`

Defined in: [src/primitives/Abi/function/FunctionType.ts:23](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L23)

##### stateMutability

> **stateMutability**: `TStateMutability`

Defined in: [src/primitives/Abi/function/FunctionType.ts:21](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L21)

##### type

> **type**: `"function"`

Defined in: [src/primitives/Abi/function/FunctionType.ts:19](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L19)

***

### Get

> **Get**\<`TAbi`, `TName`> = `Extract`\<`TAbi`\[`number`], \{ `name`: `TName`; `type`: `"function"`; }>

Defined in: [src/primitives/Abi/function/FunctionType.ts:37](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/FunctionType.ts#L37)

Get a specific function from an ABI by name

#### Type Parameters

##### TAbi

`TAbi` *extends* readonly [`ItemType`](Item.mdx#itemtype)\[]

##### TName

`TName` *extends* `string`

***

### StateMutability

> **StateMutability** = `"pure"` | `"view"` | `"nonpayable"` | `"payable"`

Defined in: [src/primitives/Abi/function/statemutability.ts:1](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/statemutability.ts#L1)

## Variables

### decodeParams()

> `const` **decodeParams**: \<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>(`fn`, `data`) => `ParametersToPrimitiveTypes`\<`TInputs`> = `_decodeParams`

Defined in: [src/primitives/Abi/function/index.ts:30](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/index.ts#L30)

Decode function call data (verify selector and decode parameters)

#### Type Parameters

##### TName

`TName` *extends* `string`

##### TStateMutability

`TStateMutability` *extends* [`StateMutability`](#statemutability-1)

##### TInputs

`TInputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

##### TOutputs

`TOutputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

#### Parameters

##### fn

[`FunctionType`](#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](https://voltaire.tevm.sh/primitives/abi)

#### Since

0.0.0

#### Throws

If data is too short

#### Throws

If selector doesn't match

#### Example

```javascript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/index.ts#L32)

Decode function return values

#### Type Parameters

##### TName

`TName` *extends* `string`

##### TStateMutability

`TStateMutability` *extends* [`StateMutability`](#statemutability-1)

##### TInputs

`TInputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

##### TOutputs

`TOutputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

#### Parameters

##### fn

[`FunctionType`](#functiontype)\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>

Function ABI item

##### data

`Uint8Array`\<`ArrayBufferLike`>

Encoded return data

#### Returns

`ParametersToPrimitiveTypes`\<`TOutputs`>

Decoded return values

#### Example

```typescript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/index.ts#L29)

Encode function call data (selector + ABI-encoded parameters)

#### Type Parameters

##### TName

`TName` *extends* `string`

##### TStateMutability

`TStateMutability` *extends* [`StateMutability`](#statemutability-1)

##### TInputs

`TInputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

##### TOutputs

`TOutputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

#### Parameters

##### fn

[`FunctionType`](#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](https://voltaire.tevm.sh/primitives/abi)

#### Since

0.0.0

#### Throws

#### Example

```javascript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/index.ts#L31)

Encode function return values

#### Type Parameters

##### TName

`TName` *extends* `string`

##### TStateMutability

`TStateMutability` *extends* [`StateMutability`](#statemutability-1)

##### TInputs

`TInputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

##### TOutputs

`TOutputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

#### Parameters

##### fn

[`FunctionType`](#functiontype)\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>

Function ABI item

##### values

`ParametersToPrimitiveTypes`\<`TOutputs`>

Return values

#### Returns

`Uint8Array`\<`ArrayBufferLike`>

Encoded return data

#### Example

```typescript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/index.ts#L23)

#### Parameters

##### fn

`any`

#### Returns

`Uint8Array`

***

### getSignature()

> `const` **getSignature**: \<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>(`fn`) => `string` = `_getSignature`

Defined in: [src/primitives/Abi/function/index.ts:28](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/index.ts#L28)

Get function signature string (name(type1,type2,...))

#### Type Parameters

##### TName

`TName` *extends* `string`

##### TStateMutability

`TStateMutability` *extends* [`StateMutability`](#statemutability-1)

##### TInputs

`TInputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

##### TOutputs

`TOutputs` *extends* readonly `Parameter`\<`AbiType`, `string`, `string`>\[]

#### Parameters

##### fn

[`FunctionType`](#functiontype)\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>

Function ABI item

#### Returns

`string`

Function signature string

#### Example

```typescript theme={null}
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`](#functiontype)\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>

Defined in: [src/primitives/Abi/function/Function.js:38](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/Function.js#L38)

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`](#statemutability-1)

##### TInputs

`TInputs` *extends* readonly `ParameterType`\<`AbiType`, `string`, `string`>\[]

##### TOutputs

`TOutputs` *extends* readonly `ParameterType`\<`AbiType`, `string`, `string`>\[]

#### Parameters

##### fn

[`FunctionType`](#functiontype)\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>

Function ABI item

#### Returns

[`FunctionType`](#functiontype)\<`TName`, `TStateMutability`, `TInputs`, `TOutputs`>

Validated function item

#### See

[https://voltaire.tevm.sh/primitives/abi](https://voltaire.tevm.sh/primitives/abi)

#### Since

0.0.0

#### Throws

#### Example

```javascript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Abi/function/getSelector.js#L31)

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](https://voltaire.tevm.sh/primitives/abi)

#### Since

0.0.0

#### Example

```javascript theme={null}
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](#decodeparams)

***

### DecodeResult

Renames and re-exports [decodeResult](#decoderesult)

***

### Params

Renames and re-exports [encodeParams](#encodeparams)

***

### Result

Renames and re-exports [encodeResult](#encoderesult)

***

### Signature

Renames and re-exports [getSignature](#getsignature)
