Usage Examples
Single Return Value
Copy
Ask AI
import { Function } from 'tevm'
const totalSupplyFn = new Function({
type: "function",
name: "totalSupply",
inputs: [],
outputs: [{ type: "uint256", name: "supply" }]
})
// Call contract and decode
const result = await provider.call({
to: tokenAddress,
data: totalSupplyFn.encodeParams([])
})
const [totalSupply] = totalSupplyFn.decodeResult(result)
console.log(totalSupply) // 1000000n
Multiple Return Values
Copy
Ask AI
import { Function } from 'tevm'
const getReservesFn = new Function({
type: "function",
name: "getReserves",
outputs: [
{ type: "uint112", name: "reserve0" },
{ type: "uint112", name: "reserve1" },
{ type: "uint32", name: "blockTimestampLast" }
]
})
const result = await provider.call({
to: pairAddress,
data: getReservesFn.encodeParams([])
})
const [reserve0, reserve1, timestamp] = getReservesFn.decodeResult(result)
console.log({ reserve0, reserve1, timestamp })
Boolean Return
Copy
Ask AI
import { Function } from 'tevm'
const transferFn = new Function({
type: "function",
name: "transfer",
inputs: [
{ type: "address", name: "to" },
{ type: "uint256", name: "amount" }
],
outputs: [{ type: "bool", name: "success" }]
})
const result = await provider.call({
to: tokenAddress,
data: transferFn.encodeParams([recipient, amount])
})
const [success] = transferFn.decodeResult(result)
console.log(success) // true or false
Dynamic Return Types
Copy
Ask AI
import { Function } from 'tevm'
const getNameFn = new Function({
type: "function",
name: "name",
outputs: [{ type: "string", name: "name" }]
})
const result = await provider.call({
to: tokenAddress,
data: getNameFn.encodeParams([])
})
const [name] = getNameFn.decodeResult(result)
console.log(name) // "MyToken"
Array Returns
Copy
Ask AI
import { Function } from 'tevm'
const getHoldersFn = new Function({
type: "function",
name: "getHolders",
outputs: [{ type: "address[]", name: "holders" }]
})
const result = await provider.call({
to: tokenAddress,
data: getHoldersFn.encodeParams([])
})
const [holders] = getHoldersFn.decodeResult(result)
console.log(holders) // ["0x...", "0x...", ...]
Struct/Tuple Returns
Copy
Ask AI
import { Function } from 'tevm'
const getOrderFn = new Function({
type: "function",
name: "getOrder",
inputs: [{ type: "uint256", name: "orderId" }],
outputs: [
{
type: "tuple",
name: "order",
components: [
{ type: "address", name: "maker" },
{ type: "uint256", name: "amount" },
{ type: "uint256", name: "price" }
]
}
]
})
const result = await provider.call({
to: exchangeAddress,
data: getOrderFn.encodeParams([1n])
})
const [order] = getOrderFn.decodeResult(result)
console.log(order.maker) // "0x..."
console.log(order.amount) // 1000n
console.log(order.price) // 5n
Error Handling
Copy
Ask AI
import { Function } from 'tevm'
import { AbiDecodingError } from 'tevm'
const balanceOfFn = new Function({
type: "function",
name: "balanceOf",
inputs: [{ type: "address", name: "owner" }],
outputs: [{ type: "uint256", name: "balance" }]
})
try {
const result = await provider.call({
to: tokenAddress,
data: balanceOfFn.encodeParams([address])
})
const [balance] = balanceOfFn.decodeResult(result)
console.log(balance)
} catch (error) {
if (error instanceof AbiDecodingError) {
console.error("Failed to decode return data:", error.message)
}
}
See Also
- encodeResult - Encode function return values
- encodeParams - Encode function calldata
- decodeParams - Decode function parameters

