type InitializeTokenMetadataInstruction<TProgram, TAccountMetadata, TAccountUpdateAuthority, TAccountMint, TAccountMintAuthority, TRemainingAccounts> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata, TAccountUpdateAuthority extends string ? ReadonlyAccount<TAccountUpdateAuthority> : TAccountUpdateAuthority, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountMintAuthority extends string ? ReadonlySignerAccount<TAccountMintAuthority> & AccountSignerMeta<TAccountMintAuthority> : TAccountMintAuthority, ...TRemainingAccounts]>;