diff --git a/CHANGELOG.md b/CHANGELOG.md index 4aa88dda1..deef678fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The minor version will be incremented upon a breaking change and the patch versi - spl: Add metadata wrappers `approve_collection_authority`, `bubblegum_set_collection_size`, `burn_edition_nft`, `burn_nft`, `revoke_collection_authority`, `set_token_standard`, `utilize`, `unverify_sized_collection_item`, `unverify_collection` ([#2430](https://github.com/coral-xyz/anchor/pull/2430)) ### Fixes +- ts: Narrowed `AccountClient` type to it's appropriate account type ([#2440](https://github.com/coral-xyz/anchor/pull/2440)) ### Breaking diff --git a/ts/packages/anchor/src/program/namespace/account.ts b/ts/packages/anchor/src/program/namespace/account.ts index a2936f36c..e5e673174 100644 --- a/ts/packages/anchor/src/program/namespace/account.ts +++ b/ts/packages/anchor/src/program/namespace/account.ts @@ -15,7 +15,7 @@ import Provider, { getProvider } from "../../provider.js"; import { Idl, IdlAccountDef } from "../../idl.js"; import { Coder, BorshCoder } from "../../coder/index.js"; import { Subscription, Address, translateAddress } from "../common.js"; -import { AllAccountsMap, IdlTypes, TypeDef } from "./types.js"; +import { AllAccountsMap, IdlAccounts } from "./types.js"; import * as pubkeyUtil from "../../utils/pubkey.js"; import * as rpcUtil from "../../utils/rpc.js"; @@ -26,7 +26,7 @@ export default class AccountFactory { programId: PublicKey, provider?: Provider ): AccountNamespace { - const accountFns: AccountNamespace = {}; + const accountFns = {} as AccountNamespace; idl.accounts?.forEach((idlAccount) => { const name = camelCase(idlAccount.name); @@ -39,7 +39,7 @@ export default class AccountFactory { ); }); - return accountFns as AccountNamespace; + return accountFns; } } @@ -68,15 +68,14 @@ type NullableIdlAccount = IDL["accounts"] extends undefined * For the full API, see the [[AccountClient]] reference. */ export type AccountNamespace = { - [M in keyof AllAccountsMap]: AccountClient; + [N in keyof AllAccountsMap]: AccountClient; }; export class AccountClient< IDL extends Idl = Idl, - A extends NullableIdlAccount = IDL["accounts"] extends undefined - ? IdlAccountDef - : NonNullable[number], - T = TypeDef> + N extends keyof IdlAccounts = keyof IdlAccounts, + A extends NullableIdlAccount = NullableIdlAccount, + T = IdlAccounts[N] > { /** * Returns the number of bytes in this account.