decodeAbiParameters 
Decodes ABI encoded data using the ABI specification, given a set of ABI parameters (inputs/outputs) and the encoded ABI data.
The decodeAbiParameters function is used by the other contract decoding utilities (ie. decodeFunctionData, decodeEventLog, etc).
Install 
ts
import { decodeAbiParameters } from 'viem'import { decodeAbiParameters } from 'viem'Usage 
The decodeAbiParameters function takes in two parameters:
- a set of ABI Parameters (
params), that can be in the shape of theinputsoroutputsattribute of an ABI Item. - the ABI encoded data (
data) that correspond to the givenparams. 
ts
import { decodeAbiParameters } from 'viem'
const values = decodeAbiParameters(
  [
    { name: 'x', type: 'string' },
    { name: 'y', type: 'uint' },
    { name: 'z', type: 'bool' }
  ],
  '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
)
// ['wagmi', 420n, true]import { decodeAbiParameters } from 'viem'
const values = decodeAbiParameters(
  [
    { name: 'x', type: 'string' },
    { name: 'y', type: 'uint' },
    { name: 'z', type: 'bool' }
  ],
  '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
)
// ['wagmi', 420n, true]Human Readable 
You can also pass in Human Readable parameters with the parseAbiParameters utility.
ts
import { decodeAbiParameters, parseAbiParameters } from 'viem'
const values = decodeAbiParameters(
  parseAbiParameters('string x, uint y, bool z'),
  '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000'
)
// ['wagmi', 420n, true]import { decodeAbiParameters, parseAbiParameters } from 'viem'
const values = decodeAbiParameters(
  parseAbiParameters('string x, uint y, bool z'),
  '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000'
)
// ['wagmi', 420n, true]Return Value 
The decoded data. Type is inferred from the ABI.
Parameters 
params 
- Type: 
AbiParameter[] 
The set of ABI parameters to decode against data, in the shape of the inputs or outputs attribute of an ABI event/function.
These parameters must include valid ABI types.
ts
const values = decodeAbiParameters(
  [{ name: 'x', type: 'uint32' }], 
  '0x0000000000000000000000000000000000000000000000000000000000010f2c',
)const values = decodeAbiParameters(
  [{ name: 'x', type: 'uint32' }], 
  '0x0000000000000000000000000000000000000000000000000000000000010f2c',
)data 
- Type: 
Hex 
The ABI encoded data.
ts
const values = decodeAbiParameters(
  [{ name: 'x', type: 'uint32' }],
  '0x0000000000000000000000000000000000000000000000000000000000010f2c', 
)const values = decodeAbiParameters(
  [{ name: 'x', type: 'uint32' }],
  '0x0000000000000000000000000000000000000000000000000000000000010f2c', 
)More Examples 
Simple struct 
ts
import { abi } from './abi'
const values = decodeAbiParameters(
  abi[0].outputs,
  '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
)
// { x: 420n, y: true, z: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC' }import { abi } from './abi'
const values = decodeAbiParameters(
  abi[0].outputs,
  '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
)
// { x: 420n, y: true, z: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC' }ts
export const abi = [
  {
    name: 'staticStruct',
    outputs: [
      {
        components: [
          {
            name: 'x',
            type: 'uint256',
          },
          {
            name: 'y',
            type: 'bool',
          },
          {
            name: 'z',
            type: 'address',
          },
        ],
        name: 'foo',
        type: 'tuple',
      },
    ],
  }
] as constexport const abi = [
  {
    name: 'staticStruct',
    outputs: [
      {
        components: [
          {
            name: 'x',
            type: 'uint256',
          },
          {
            name: 'y',
            type: 'bool',
          },
          {
            name: 'z',
            type: 'address',
          },
        ],
        name: 'foo',
        type: 'tuple',
      },
    ],
  }
] as constsolidity
contract Example {
  struct Foo {
    uint256 x;
    bool y;
    address z;
  }
  function staticStruct(...) returns (Foo calldata foo) { 
    ... 
    return foo;
  }
}contract Example {
  struct Foo {
    uint256 x;
    bool y;
    address z;
  }
  function staticStruct(...) returns (Foo calldata foo) { 
    ... 
    return foo;
  }
}