Skip to content

Commit

Permalink
test: multicall types
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm committed Aug 18, 2023
1 parent 6a6bb05 commit 31a7848
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/actions/public/multicall.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -307,3 +307,35 @@ test('overloads', async () => {
[number, string, { foo: Address; bar: Address }]
>()
})

test('MulticallParameters', async () => {
const abi = parseAbi([
'function foo() view returns (int8)',
'function foo(address) view returns (string)',
'function foo(address, address) view returns ((address foo, address bar))',
'function bar() view returns (int8)',
])

type Result = Parameters<
typeof multicall<
[
{
address: '0x'
abi: typeof abi
functionName: 'foo'
},
],
typeof publicClient.chain
>
>[1]['contracts'][0]
expectTypeOf<Result>().toEqualTypeOf<{
address: Address
abi: typeof abi
functionName: 'foo' | 'bar'
args?:
| readonly []
| readonly [Address]
| readonly [Address, Address]
| undefined
}>()
})
2 changes: 2 additions & 0 deletions src/types/contract.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ test('Widen', () => {
expectTypeOf<Widen<(123n | '0x')[]>>().toEqualTypeOf<
readonly (bigint | Address)[]
>()

expectTypeOf<Widen<readonly unknown[]>>().toEqualTypeOf<readonly unknown[]>()
})

test('ExtractAbiFunctionForArgs', () => {
Expand Down
1 change: 1 addition & 0 deletions src/types/contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export type Args<
>

export type Widen<type> =
| ([unknown] extends [type] ? unknown : never)
| (type extends Function ? type : never)
| (type extends ResolvedConfig['BigIntType'] ? bigint : never)
| (type extends boolean ? boolean : never)
Expand Down

0 comments on commit 31a7848

Please sign in to comment.