encodeErrorResult
Encodes a reverted error from a function call. The opposite of decodeErrorResult
.
Install
ts
import { encodeErrorResult } from 'viem'
import { encodeErrorResult } from 'viem'
Usage
ts
import { decodeErrorResult } from 'viem'
const value = encodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
// 0xb758934b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000
import { decodeErrorResult } from 'viem'
const value = encodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
// 0xb758934b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000
ts
export const wagmiAbi = [
...
{
inputs: [
{
name: "reason",
type: "string"
}
],
name: "InvalidTokenError",
type: "error"
},
...
] as const;
export const wagmiAbi = [
...
{
inputs: [
{
name: "reason",
type: "string"
}
],
name: "InvalidTokenError",
type: "error"
},
...
] as const;
ts
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
export const publicClient = createPublicClient({
chain: mainnet,
transport: http()
})
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
export const publicClient = createPublicClient({
chain: mainnet,
transport: http()
})
Without errorName
If your abi
contains only one ABI item, you can omit the errorName
(it becomes optional):
ts
import { decodeErrorResult } from 'viem'
const abiItem = {
inputs: [{ name: 'reason', type: 'string' }],
name: 'InvalidTokenError',
type: 'error'
}
const value = encodeErrorResult({
abi: [abiItem],
errorName: 'InvalidTokenError',
args: ['sold out']
})
// 0xb758934b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000
import { decodeErrorResult } from 'viem'
const abiItem = {
inputs: [{ name: 'reason', type: 'string' }],
name: 'InvalidTokenError',
type: 'error'
}
const value = encodeErrorResult({
abi: [abiItem],
errorName: 'InvalidTokenError',
args: ['sold out']
})
// 0xb758934b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000
Return Value
The encoded error.
Parameters
abi
- Type:
Abi
The contract's ABI.
ts
const value = decodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
const value = decodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
errorName
- Type:
string
The error name on the ABI.
ts
const value = encodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
const value = encodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
args (optional)
- Type: Inferred.
Arguments (if required) to pass to the error.
ts
const value = encodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})
const value = encodeErrorResult({
abi: wagmiAbi,
errorName: 'InvalidTokenError',
args: ['sold out']
})