[experimental renderer] `Address` type incompatible with instruction creator
Closed this issue · 1 comments
steveluscher commented
Problem
This code works
return getAdvanceNonceAccountInstructionRaw({
nonceAccount: address('123'),
nonceAuthority: address('456'),
});
But this code generates a type error.
function go<
TNonceAccountAddress extends string,
TNonceAuthorityAddress extends string
>(
nonceAccount: Address<TNonceAccountAddress>,
nonceAuthority: Address<TNonceAuthorityAddress>
) {
return getAdvanceNonceAccountInstructionRaw({
nonceAccount,
nonceAuthority,
});
}
index.ts:12:5 - error TS2322: Type 'Address<TNonceAccountAddress>' is not assignable to type 'TNonceAccountAddress extends string ? Address<TNonceAccountAddress> : TNonceAccountAddress'.
12 nonceAccount,
~~~~~~~~~~~~
node_modules/.pnpm/@solana-program+system@0.1.0_patch_hash=go463mkopznrn5ptsqp4qlrd74_fastestsmallesttextencoderdecoder@1.0.22/node_modules/@solana-program/system/dist/types/src/generated/instructions/advanceNonceAccount.d.ts:44:5
44 nonceAccount: TAccountNonceAccount extends string ? Address<TAccountNonceAccount> : TAccountNonceAccount;
~~~~~~~~~~~~
The expected type comes from property 'nonceAccount' which is declared here on type '{ nonceAccount: TNonceAccountAddress extends string ? Address<TNonceAccountAddress> : TNonceAccountAddress; recentBlockhashesSysvar?: Address<...>; nonceAuthority: TNonceAuthorityAddress extends string ? Address<...> : TNonceAuthorityAddress; }'
index.ts:13:5 - error TS2322: Type 'Address<TNonceAuthorityAddress>' is not assignable to type 'TNonceAuthorityAddress extends string ? Address<TNonceAuthorityAddress> : TNonceAuthorityAddress'.
13 nonceAuthority,
~~~~~~~~~~~~~~
node_modules/.pnpm/@solana-program+system@0.1.0_patch_hash=go463mkopznrn5ptsqp4qlrd74_fastestsmallesttextencoderdecoder@1.0.22/node_modules/@solana-program/system/dist/types/src/generated/instructions/advanceNonceAccount.d.ts:46:5
46 nonceAuthority: TAccountNonceAuthority extends string ? Address<TAccountNonceAuthority> : TAccountNonceAuthority;
~~~~~~~~~~~~~~
The expected type comes from property 'nonceAuthority' which is declared here on type '{ nonceAccount: TNonceAccountAddress extends string ? Address<TNonceAccountAddress> : TNonceAccountAddress; recentBlockhashesSysvar?: Address<...>; nonceAuthority: TNonceAuthorityAddress extends string ? Address<...> : TNonceAuthorityAddress; }'
Found 2 errors in the same file, starting at: index.ts:12
Repro
https://github.com/steveluscher/kinobi-address-type-bug-repro
lorisleiva commented
Fixed by #182 as getXInstructionRaw
no longer exists which means we no longer need these extends string | AccountMeta
type parameters.