From b6c0dbad97dd03c764820eaa37b125236e29288e Mon Sep 17 00:00:00 2001 From: amilz <85324096+amilz@users.noreply.github.com> Date: Fri, 9 Oct 2026 12:39:45 -0700 Subject: [PATCH 1/6] Accept HasAddress inputs in the ATA instruction plans --- clients/js/src/mintToATA.ts | 14 ++++++---- clients/js/src/transferToATA.ts | 24 +++++++++------- clients/js/test/mintToATA.test.ts | 33 ++++++++++++++++++++++ clients/js/test/transferToATA.test.ts | 40 +++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 15 deletions(-) diff --git a/clients/js/src/mintToATA.ts b/clients/js/src/mintToATA.ts index 238e62d1..d53d6662 100644 --- a/clients/js/src/mintToATA.ts +++ b/clients/js/src/mintToATA.ts @@ -1,4 +1,8 @@ import { InstructionPlan, sequentialInstructionPlan, Address, TransactionSigner } from '@solana/kit'; +import { + getAddressFromResolvedInstructionAccount, + type InstructionAccountInput, +} from '@solana/kit/program-client-core'; import { findAssociatedTokenPda, @@ -16,11 +20,11 @@ export type MintToATAInstructionPlanInput = { * Note: Use {@link getMintToATAInstructionPlanAsync} instead to derive this automatically. * Note: Use {@link findAssociatedTokenPda} to derive the associated token account address. */ - ata: Address; + ata: InstructionAccountInput; /** Wallet address for the associated token account. */ - owner: Address; + owner: InstructionAccountInput; /** The token mint for the associated token account. */ - mint: Address; + mint: InstructionAccountInput; /** The mint's minting authority or its multisignature account. */ mintAuthority: Address | TransactionSigner; /** The amount of new tokens to mint. */ @@ -81,9 +85,9 @@ export async function getMintToATAInstructionPlanAsync( let ata = input.ata; if (!ata) { [ata] = await findAssociatedTokenPda({ - owner: input.owner, + owner: getAddressFromResolvedInstructionAccount('owner', input.owner), tokenProgram, - mint: input.mint, + mint: getAddressFromResolvedInstructionAccount('mint', input.mint), }); } return getMintToATAInstructionPlan( diff --git a/clients/js/src/transferToATA.ts b/clients/js/src/transferToATA.ts index 449461b2..b0157e1b 100644 --- a/clients/js/src/transferToATA.ts +++ b/clients/js/src/transferToATA.ts @@ -1,4 +1,8 @@ import { InstructionPlan, sequentialInstructionPlan, Address, TransactionSigner } from '@solana/kit'; +import { + getAddressFromResolvedInstructionAccount, + type InstructionAccountInput, +} from '@solana/kit/program-client-core'; import { findAssociatedTokenPda, @@ -12,9 +16,9 @@ export type TransferToATAInstructionPlanInput = { /** Funding account (must be a system account). */ payer: TransactionSigner; /** The token mint to transfer. */ - mint: Address; + mint: InstructionAccountInput; /** The source account for the transfer. */ - source: Address; + source: InstructionAccountInput; /** The source account's owner/delegate or its multisignature account. */ authority: Address | TransactionSigner; /** Associated token account address to transfer to. @@ -22,9 +26,9 @@ export type TransferToATAInstructionPlanInput = { * Note: Use {@link getTransferToATAInstructionPlanAsync} instead to derive this automatically. * Note: Use {@link findAssociatedTokenPda} to derive the associated token account address. */ - destination: Address; + destination: InstructionAccountInput; /** Wallet address for the destination. */ - recipient: Address; + recipient: InstructionAccountInput; /** The amount of tokens to transfer. */ amount: number | bigint; /** Expected number of base 10 digits to the right of the decimal place. */ @@ -84,23 +88,23 @@ export async function getTransferToATAInstructionPlanAsync( ): Promise { const tokenProgram = config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS; + const mint = getAddressFromResolvedInstructionAccount('mint', input.mint); + let destination = input.destination; if (!destination) { [destination] = await findAssociatedTokenPda({ - owner: input.recipient, + owner: getAddressFromResolvedInstructionAccount('recipient', input.recipient), tokenProgram, - mint: input.mint, + mint, }); } let source = input.source; if (!source) { - const authorityAddress: Address = - typeof input.authority === 'string' ? input.authority : input.authority.address; const [sourceAta] = await findAssociatedTokenPda({ - owner: authorityAddress, + owner: getAddressFromResolvedInstructionAccount('authority', input.authority), tokenProgram, - mint: input.mint, + mint, }); source = sourceAta; } diff --git a/clients/js/test/mintToATA.test.ts b/clients/js/test/mintToATA.test.ts index 89e20ce5..049e1888 100644 --- a/clients/js/test/mintToATA.test.ts +++ b/clients/js/test/mintToATA.test.ts @@ -129,3 +129,36 @@ it('also mints to an existing associated token account', async () => { }, }); }); + +it('accepts address wrappers for the mint and owner', async () => { + // Given a mint account, its mint authority and a token owner. + const client = await createTestClient(); + const [mintAuthority, owner, mint] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + const decimals = 2; + await client.token.instructions + .createMint({ newMint: mint, decimals, mintAuthority: mintAuthority.address }) + .sendTransaction(); + + // When we mint to the owner using HasAddress wrappers. + await client.token.instructions + .mintToATA({ + mint: { address: mint.address }, + owner: { address: owner.address }, + mintAuthority, + amount: 1_000n, + decimals, + }) + .sendTransaction(); + + // Then we expect the derived ATA to hold the minted tokens. + const [ata] = await findAssociatedTokenPda({ + mint: mint.address, + owner: owner.address, + tokenProgram: TOKEN_PROGRAM_ADDRESS, + }); + expect(await fetchToken(client.rpc, ata)).toMatchObject({ data: { amount: 1000n } }); +}); diff --git a/clients/js/test/transferToATA.test.ts b/clients/js/test/transferToATA.test.ts index 812b2c36..48e42482 100644 --- a/clients/js/test/transferToATA.test.ts +++ b/clients/js/test/transferToATA.test.ts @@ -169,3 +169,43 @@ it('derives both source and destination ATAs and transfers tokens', async () => expect(tokenDataA).toMatchObject({ amount: 50n }); expect(tokenDataB).toMatchObject({ amount: 50n }); }); + +it('accepts address wrappers for the mint and recipient', async () => { + // Given a mint account and ownerA's ATA with 100 tokens. + const client = await createTestClient(); + const [mintAuthority, ownerA, ownerB, mint] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + const decimals = 2; + await client.token.instructions + .createMint({ newMint: mint, decimals, mintAuthority: mintAuthority.address }) + .sendTransaction(); + const tokenA = await createTokenPdaWithAmount(client, mintAuthority, mint.address, ownerA.address, 100n, decimals); + + // When owner A transfers 50 tokens to owner B using HasAddress wrappers. + await client.token.instructions + .transferToATA({ + mint: { address: mint.address }, + authority: ownerA, + recipient: { address: ownerB.address }, + amount: 50n, + decimals, + }) + .sendTransaction(); + + // Then we expect both ATAs to have the correct balances. + const [tokenB] = await findAssociatedTokenPda({ + owner: ownerB.address, + mint: mint.address, + tokenProgram: TOKEN_PROGRAM_ADDRESS, + }); + const [{ data: tokenDataA }, { data: tokenDataB }] = await Promise.all([ + fetchToken(client.rpc, tokenA), + fetchToken(client.rpc, tokenB), + ]); + expect(tokenDataA).toMatchObject({ amount: 50n }); + expect(tokenDataB).toMatchObject({ amount: 50n }); +}); From 4174ddce831bb223c4d8c423a4f4bf9214b2cba8 Mon Sep 17 00:00:00 2001 From: amilz <85324096+amilz@users.noreply.github.com> Date: Wed, 14 Oct 2026 13:54:35 -0700 Subject: [PATCH 2/6] Accept HasAddress authorities and program overrides in the instruction plans Widen `authority` (transferToATA) and `mintAuthority` (mintToATA) from `Address | TransactionSigner` to `InstructionAccountInput | InstructionSignerInput`, matching the generated instructions, so a HasAddress such as a multisig can be passed alongside `multiSigners`. Program overrides (`systemProgram`, `tokenProgram`, `associatedTokenProgram`) in createMint, mintToATA and transferToATA now accept `Address | HasAddress` and are unwrapped only when provided, keeping the existing defaults. --- clients/js/src/createMint.ts | 16 ++++++--- clients/js/src/mintToATA.ts | 26 +++++++++----- clients/js/src/transferToATA.ts | 26 +++++++++----- clients/js/test/createMint.test.ts | 24 ++++++++++++- clients/js/test/mintToATA.test.ts | 44 ++++++++++++++++++++++- clients/js/test/transferToATA.test.ts | 52 ++++++++++++++++++++++++++- 6 files changed, 162 insertions(+), 26 deletions(-) diff --git a/clients/js/src/createMint.ts b/clients/js/src/createMint.ts index 3c4a9268..c17e6332 100644 --- a/clients/js/src/createMint.ts +++ b/clients/js/src/createMint.ts @@ -2,11 +2,13 @@ import { getCreateAccountInstruction } from '@solana-program/system'; import { Address, ClientWithGetMinimumBalance, + HasAddress, InstructionPlan, OptionOrNullable, sequentialInstructionPlan, TransactionSigner, } from '@solana/kit'; +import { getAddressFromResolvedInstructionAccount } from '@solana/kit/program-client-core'; import { getInitializeMint2Instruction, getMintSize, TOKEN_PROGRAM_ADDRESS } from './generated'; @@ -29,8 +31,8 @@ export type CreateMintInstructionPlanInput = { }; export type CreateMintInstructionPlanConfig = { - systemProgram?: Address; - tokenProgram?: Address; + systemProgram?: Address | HasAddress; + tokenProgram?: Address | HasAddress; }; export async function getCreateMintInstructionPlan( @@ -40,6 +42,10 @@ export async function getCreateMintInstructionPlan( ): Promise { const space = getMintSize(); const lamports = input.mintAccountLamports ?? (await client.getMinimumBalance(space)); + const systemProgram = + config?.systemProgram && getAddressFromResolvedInstructionAccount('systemProgram', config.systemProgram); + const tokenProgram = + config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram); return sequentialInstructionPlan([ getCreateAccountInstruction( { @@ -47,10 +53,10 @@ export async function getCreateMintInstructionPlan( newAccount: input.newMint, lamports, space, - programAddress: config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS, + programAddress: tokenProgram ?? TOKEN_PROGRAM_ADDRESS, }, { - programAddress: config?.systemProgram, + programAddress: systemProgram, }, ), getInitializeMint2Instruction( @@ -61,7 +67,7 @@ export async function getCreateMintInstructionPlan( freezeAuthority: input.freezeAuthority, }, { - programAddress: config?.tokenProgram, + programAddress: tokenProgram, }, ), ]); diff --git a/clients/js/src/mintToATA.ts b/clients/js/src/mintToATA.ts index d53d6662..ed078f12 100644 --- a/clients/js/src/mintToATA.ts +++ b/clients/js/src/mintToATA.ts @@ -1,7 +1,8 @@ -import { InstructionPlan, sequentialInstructionPlan, Address, TransactionSigner } from '@solana/kit'; +import { InstructionPlan, sequentialInstructionPlan, Address, HasAddress, TransactionSigner } from '@solana/kit'; import { getAddressFromResolvedInstructionAccount, type InstructionAccountInput, + type InstructionSignerInput, } from '@solana/kit/program-client-core'; import { @@ -26,7 +27,7 @@ export type MintToATAInstructionPlanInput = { /** The token mint for the associated token account. */ mint: InstructionAccountInput; /** The mint's minting authority or its multisignature account. */ - mintAuthority: Address | TransactionSigner; + mintAuthority: InstructionAccountInput | InstructionSignerInput; /** The amount of new tokens to mint. */ amount: number | bigint; /** Expected number of base 10 digits to the right of the decimal place. */ @@ -35,15 +36,20 @@ export type MintToATAInstructionPlanInput = { }; export type MintToATAInstructionPlanConfig = { - systemProgram?: Address; - tokenProgram?: Address; - associatedTokenProgram?: Address; + systemProgram?: Address | HasAddress; + tokenProgram?: Address | HasAddress; + associatedTokenProgram?: Address | HasAddress; }; export function getMintToATAInstructionPlan( input: MintToATAInstructionPlanInput, config?: MintToATAInstructionPlanConfig, ): InstructionPlan { + const tokenProgram = + config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram); + const associatedTokenProgram = + config?.associatedTokenProgram && + getAddressFromResolvedInstructionAccount('associatedTokenProgram', config.associatedTokenProgram); return sequentialInstructionPlan([ getCreateAssociatedTokenIdempotentInstruction( { @@ -52,10 +58,10 @@ export function getMintToATAInstructionPlan( owner: input.owner, mint: input.mint, systemProgram: config?.systemProgram, - tokenProgram: config?.tokenProgram, + tokenProgram, }, { - programAddress: config?.associatedTokenProgram, + programAddress: associatedTokenProgram, }, ), // mint to this token account @@ -69,7 +75,7 @@ export function getMintToATAInstructionPlan( multiSigners: input.multiSigners, }, { - programAddress: config?.tokenProgram, + programAddress: tokenProgram, }, ), ]); @@ -81,7 +87,9 @@ export async function getMintToATAInstructionPlanAsync( input: MintToATAInstructionPlanAsyncInput, config?: MintToATAInstructionPlanConfig, ): Promise { - const tokenProgram = config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS; + const tokenProgram = + (config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram)) ?? + TOKEN_PROGRAM_ADDRESS; let ata = input.ata; if (!ata) { [ata] = await findAssociatedTokenPda({ diff --git a/clients/js/src/transferToATA.ts b/clients/js/src/transferToATA.ts index b0157e1b..aff10a73 100644 --- a/clients/js/src/transferToATA.ts +++ b/clients/js/src/transferToATA.ts @@ -1,7 +1,8 @@ -import { InstructionPlan, sequentialInstructionPlan, Address, TransactionSigner } from '@solana/kit'; +import { InstructionPlan, sequentialInstructionPlan, Address, HasAddress, TransactionSigner } from '@solana/kit'; import { getAddressFromResolvedInstructionAccount, type InstructionAccountInput, + type InstructionSignerInput, } from '@solana/kit/program-client-core'; import { @@ -20,7 +21,7 @@ export type TransferToATAInstructionPlanInput = { /** The source account for the transfer. */ source: InstructionAccountInput; /** The source account's owner/delegate or its multisignature account. */ - authority: Address | TransactionSigner; + authority: InstructionAccountInput | InstructionSignerInput; /** Associated token account address to transfer to. * Will be created if it does not already exist. * Note: Use {@link getTransferToATAInstructionPlanAsync} instead to derive this automatically. @@ -37,15 +38,20 @@ export type TransferToATAInstructionPlanInput = { }; export type TransferToATAInstructionPlanConfig = { - systemProgram?: Address; - tokenProgram?: Address; - associatedTokenProgram?: Address; + systemProgram?: Address | HasAddress; + tokenProgram?: Address | HasAddress; + associatedTokenProgram?: Address | HasAddress; }; export function getTransferToATAInstructionPlan( input: TransferToATAInstructionPlanInput, config?: TransferToATAInstructionPlanConfig, ): InstructionPlan { + const tokenProgram = + config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram); + const associatedTokenProgram = + config?.associatedTokenProgram && + getAddressFromResolvedInstructionAccount('associatedTokenProgram', config.associatedTokenProgram); return sequentialInstructionPlan([ getCreateAssociatedTokenIdempotentInstruction( { @@ -54,10 +60,10 @@ export function getTransferToATAInstructionPlan( owner: input.recipient, mint: input.mint, systemProgram: config?.systemProgram, - tokenProgram: config?.tokenProgram, + tokenProgram, }, { - programAddress: config?.associatedTokenProgram, + programAddress: associatedTokenProgram, }, ), getTransferCheckedInstruction( @@ -71,7 +77,7 @@ export function getTransferToATAInstructionPlan( multiSigners: input.multiSigners, }, { - programAddress: config?.tokenProgram, + programAddress: tokenProgram, }, ), ]); @@ -86,7 +92,9 @@ export async function getTransferToATAInstructionPlanAsync( input: TransferToATAInstructionPlanAsyncInput, config?: TransferToATAInstructionPlanConfig, ): Promise { - const tokenProgram = config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS; + const tokenProgram = + (config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram)) ?? + TOKEN_PROGRAM_ADDRESS; const mint = getAddressFromResolvedInstructionAccount('mint', input.mint); diff --git a/clients/js/test/createMint.test.ts b/clients/js/test/createMint.test.ts index 3db15b43..f8b66565 100644 --- a/clients/js/test/createMint.test.ts +++ b/clients/js/test/createMint.test.ts @@ -1,7 +1,8 @@ +import { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system'; import { Account, generateKeyPairSigner, none, some } from '@solana/kit'; import { expect, it } from 'vitest'; -import { fetchMint, Mint } from '../src'; +import { fetchMint, Mint, TOKEN_PROGRAM_ADDRESS } from '../src'; import { createTestClient } from './_setup'; it('creates and initializes a new mint account', async () => { @@ -57,3 +58,24 @@ it('creates a new mint account with a freeze authority', async () => { }, }); }); + +it('accepts address wrappers for the program overrides', async () => { + // Given an authority and a mint account. + const client = await createTestClient(); + const [authority, mint] = await Promise.all([generateKeyPairSigner(), generateKeyPairSigner()]); + + // When we create the mint passing the programs as HasAddress wrappers. + await client.token.instructions + .createMint( + { newMint: mint, decimals: 2, mintAuthority: authority.address }, + { + systemProgram: { address: SYSTEM_PROGRAM_ADDRESS }, + tokenProgram: { address: TOKEN_PROGRAM_ADDRESS }, + }, + ) + .sendTransaction(); + + // Then we expect the mint account to be owned by the token program. + const mintAccount = await fetchMint(client.rpc, mint.address); + expect(mintAccount).toMatchObject({ programAddress: TOKEN_PROGRAM_ADDRESS, data: { isInitialized: true } }); +}); diff --git a/clients/js/test/mintToATA.test.ts b/clients/js/test/mintToATA.test.ts index 049e1888..cc732dfb 100644 --- a/clients/js/test/mintToATA.test.ts +++ b/clients/js/test/mintToATA.test.ts @@ -1,7 +1,15 @@ +import { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system'; import { Account, generateKeyPairSigner, none } from '@solana/kit'; import { expect, it } from 'vitest'; -import { AccountState, TOKEN_PROGRAM_ADDRESS, Token, fetchToken, findAssociatedTokenPda } from '../src'; +import { + ASSOCIATED_TOKEN_PROGRAM_ADDRESS, + AccountState, + TOKEN_PROGRAM_ADDRESS, + Token, + fetchToken, + findAssociatedTokenPda, +} from '../src'; import { createTestClient } from './_setup'; it('mints to an associated token account at an explicit address', async () => { @@ -162,3 +170,37 @@ it('accepts address wrappers for the mint and owner', async () => { }); expect(await fetchToken(client.rpc, ata)).toMatchObject({ data: { amount: 1000n } }); }); + +it('accepts address wrappers for the program overrides', async () => { + // Given a mint account, its mint authority and a token owner. + const client = await createTestClient(); + const [mintAuthority, owner, mint] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + const decimals = 2; + await client.token.instructions + .createMint({ newMint: mint, decimals, mintAuthority: mintAuthority.address }) + .sendTransaction(); + + // When we mint to the owner passing the programs as HasAddress wrappers. + await client.token.instructions + .mintToATA( + { mint: mint.address, owner: owner.address, mintAuthority, amount: 1_000n, decimals }, + { + systemProgram: { address: SYSTEM_PROGRAM_ADDRESS }, + tokenProgram: { address: TOKEN_PROGRAM_ADDRESS }, + associatedTokenProgram: { address: ASSOCIATED_TOKEN_PROGRAM_ADDRESS }, + }, + ) + .sendTransaction(); + + // Then we expect the derived ATA to hold the minted tokens. + const [ata] = await findAssociatedTokenPda({ + mint: mint.address, + owner: owner.address, + tokenProgram: TOKEN_PROGRAM_ADDRESS, + }); + expect(await fetchToken(client.rpc, ata)).toMatchObject({ data: { amount: 1000n } }); +}); diff --git a/clients/js/test/transferToATA.test.ts b/clients/js/test/transferToATA.test.ts index 48e42482..a39bd991 100644 --- a/clients/js/test/transferToATA.test.ts +++ b/clients/js/test/transferToATA.test.ts @@ -1,7 +1,16 @@ +import { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system'; import { generateKeyPairSigner } from '@solana/kit'; import { expect, it } from 'vitest'; -import { Mint, TOKEN_PROGRAM_ADDRESS, Token, fetchMint, fetchToken, findAssociatedTokenPda } from '../src'; +import { + ASSOCIATED_TOKEN_PROGRAM_ADDRESS, + Mint, + TOKEN_PROGRAM_ADDRESS, + Token, + fetchMint, + fetchToken, + findAssociatedTokenPda, +} from '../src'; import { createTestClient, createTokenPdaWithAmount, createTokenWithAmount } from './_setup'; it('transfers tokens from an explicit source to an explicit destination ATA', async () => { @@ -209,3 +218,44 @@ it('accepts address wrappers for the mint and recipient', async () => { expect(tokenDataA).toMatchObject({ amount: 50n }); expect(tokenDataB).toMatchObject({ amount: 50n }); }); + +it('accepts address wrappers for the program overrides', async () => { + // Given a mint account and ownerA's ATA with 100 tokens. + const client = await createTestClient(); + const [mintAuthority, ownerA, ownerB, mint] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + const decimals = 2; + await client.token.instructions + .createMint({ newMint: mint, decimals, mintAuthority: mintAuthority.address }) + .sendTransaction(); + const tokenA = await createTokenPdaWithAmount(client, mintAuthority, mint.address, ownerA.address, 100n, decimals); + + // When owner A transfers 50 tokens to owner B passing the programs as HasAddress wrappers. + await client.token.instructions + .transferToATA( + { mint: mint.address, authority: ownerA, recipient: ownerB.address, amount: 50n, decimals }, + { + systemProgram: { address: SYSTEM_PROGRAM_ADDRESS }, + tokenProgram: { address: TOKEN_PROGRAM_ADDRESS }, + associatedTokenProgram: { address: ASSOCIATED_TOKEN_PROGRAM_ADDRESS }, + }, + ) + .sendTransaction(); + + // Then we expect both ATAs to have the correct balances. + const [tokenB] = await findAssociatedTokenPda({ + owner: ownerB.address, + mint: mint.address, + tokenProgram: TOKEN_PROGRAM_ADDRESS, + }); + const [{ data: tokenDataA }, { data: tokenDataB }] = await Promise.all([ + fetchToken(client.rpc, tokenA), + fetchToken(client.rpc, tokenB), + ]); + expect(tokenDataA).toMatchObject({ amount: 50n }); + expect(tokenDataB).toMatchObject({ amount: 50n }); +}); From b45c538e45814643c028bf50766be4244ede0a53 Mon Sep 17 00:00:00 2001 From: amilz <85324096+amilz@users.noreply.github.com> Date: Wed, 14 Oct 2026 14:10:40 -0700 Subject: [PATCH 3/6] Bump Codama JS renderer to 2.6.0 and regenerate client The renderer now accepts `Address | HasAddress` for public key inputs (instruction data args, PDA seeds, account data args). Generated clients require @solana/kit ^8.5.0, so bump it accordingly. --- clients/js/package.json | 4 +- clients/js/pnpm-lock.yaml | 782 +++++++++--------- clients/js/src/generated/accounts/mint.ts | 5 +- clients/js/src/generated/accounts/multisig.ts | 12 +- clients/js/src/generated/accounts/token.ts | 9 +- .../instructions/initializeAccount2.ts | 3 +- .../instructions/initializeAccount3.ts | 3 +- .../generated/instructions/initializeMint.ts | 5 +- .../generated/instructions/initializeMint2.ts | 5 +- .../generated/instructions/setAuthority.ts | 3 +- .../js/src/generated/pdas/associatedToken.ts | 14 +- package.json | 2 +- pnpm-lock.yaml | 10 +- 13 files changed, 440 insertions(+), 417 deletions(-) diff --git a/clients/js/package.json b/clients/js/package.json index 93815ec6..faa54bf0 100644 --- a/clients/js/package.json +++ b/clients/js/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@solana-config/oxc": "^0.1.1", - "@solana/kit": "^8.3.0", + "@solana/kit": "^8.5.0", "@solana/kit-plugin-litesvm": "^0.18.0", "@solana/kit-plugin-signer": "^0.18.0", "@types/node": "^24", @@ -62,7 +62,7 @@ "vitest": "^4.0.15" }, "peerDependencies": { - "@solana/kit": "^8.3.0" + "@solana/kit": "^8.5.0" }, "devEngines": { "runtime": { diff --git a/clients/js/pnpm-lock.yaml b/clients/js/pnpm-lock.yaml index 5605ee7b..493f714b 100644 --- a/clients/js/pnpm-lock.yaml +++ b/clients/js/pnpm-lock.yaml @@ -10,20 +10,20 @@ importers: dependencies: '@solana-program/system': specifier: ^0.15.0 - version: 0.15.0(@solana/kit@8.3.0(typescript@5.9.3)) + version: 0.15.0(@solana/kit@8.5.0(typescript@5.9.3)) devDependencies: '@solana-config/oxc': specifier: ^0.1.1 version: 0.1.1(oxfmt@0.55.0)(oxlint@1.83.0(oxlint-tsgolint@0.23.0)) '@solana/kit': - specifier: ^8.3.0 - version: 8.3.0(typescript@5.9.3) + specifier: ^8.5.0 + version: 8.5.0(typescript@5.9.3) '@solana/kit-plugin-litesvm': specifier: ^0.18.0 - version: 0.18.0(@solana/kit@8.3.0(typescript@5.9.3))(typescript@5.9.3) + version: 0.18.0(@solana/kit@8.5.0(typescript@5.9.3))(typescript@5.9.3) '@solana/kit-plugin-signer': specifier: ^0.18.0 - version: 0.18.0(@solana/kit@8.3.0(typescript@5.9.3)) + version: 0.18.0(@solana/kit@8.5.0(typescript@5.9.3)) '@types/node': specifier: ^24 version: 24.13.6 @@ -742,8 +742,8 @@ packages: peerDependencies: '@solana/kit': ^8.0.0 - '@solana/accounts@8.3.0': - resolution: {integrity: sha512-HNVCs4yyE5kTRHVD3ApuKuByuO85GHE6Ns7I/yMB9vXhFgZjGzFhOGi/YCjlWpIk3RqTyX7wGniHyEb49R3ELQ==} + '@solana/accounts@8.5.0': + resolution: {integrity: sha512-vwwXYCobg1oG4kFeUEsGiNORjPujI2ff3yKLp6lCa7QBIlKaD7kZ2QRI3PZFYcNrMJ6HYNwNeZXR7ixg02pWdA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -751,8 +751,8 @@ packages: typescript: optional: true - '@solana/addresses@8.3.0': - resolution: {integrity: sha512-HSAPbu5TpHYZqUo9SBALvDeOyfU1Cdtk9PCmxv+YjclNuDVbh+yMnesZ614zjhKJ8clvyidWSgmISjlFCJv6qA==} + '@solana/addresses@8.5.0': + resolution: {integrity: sha512-LwTrDbDSJBng9y0vwiKqb/kSS9daspTGrSYoZPafeMWpAlpmutdD1KXPDHVTa4Xz00hcAfOJXYxRXX5VAoiOag==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -760,8 +760,8 @@ packages: typescript: optional: true - '@solana/assertions@8.3.0': - resolution: {integrity: sha512-6NI79X6VANpq1b1BAnQevCs63dW4l3XKSbikVd5k8mlIsURlCTFdtrbXfQInqsUWZJWElf7ZLQu7RkbBOj6wuw==} + '@solana/assertions@8.5.0': + resolution: {integrity: sha512-EZDY5rJIV8Mv9xYJ7P+jvE5pihG7pmKZ6pTqbunba/4uZSQN4Klw0FX54LDDklfDvhzmAdXN0nYAnjovTGAPEg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -769,8 +769,8 @@ packages: typescript: optional: true - '@solana/codecs-core@8.3.0': - resolution: {integrity: sha512-rpt01CPeF4FhTTJHyr0Tr4n8U1shYPhe7q2mcmTYyKPATYAkyb5CLHnYKnN6LO71EZSFq3Y2Wm27rwWcBvAJzg==} + '@solana/codecs-core@8.5.0': + resolution: {integrity: sha512-ou38qNrf9XOzCWsu/I4sTzRmnrKqhblwMVvpXwXPKAAUZwkSAKQXonwgZFY68I5HK6nkfq1NLWfZFmTEIZYLiw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -778,8 +778,8 @@ packages: typescript: optional: true - '@solana/codecs-data-structures@8.3.0': - resolution: {integrity: sha512-ojwHBnDia6VtkoCzppJGXJ1JZkQ4teYToTRu0e4N5dEkZlFU5EmpeX+1xsw7gu4bR9cNXXMWbWw4uFgVM8Nd6Q==} + '@solana/codecs-data-structures@8.5.0': + resolution: {integrity: sha512-CnnNriyltkgxZAKgAJoVRsRnrtdW4KCX37BUoIsquCM+AgSvhSbxaZNz0iaHjGOX7o1Z4s6+j7nAUgad0N/w5A==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -787,8 +787,8 @@ packages: typescript: optional: true - '@solana/codecs-numbers@8.3.0': - resolution: {integrity: sha512-12u+Y9ERE+gqraV1g0BP/5QxbamukFub05kyj3d3s6V/26ZEby6ReHJ8yuKtPl9fIUnfoQ2M4+th/7u5+5v14w==} + '@solana/codecs-numbers@8.5.0': + resolution: {integrity: sha512-6Vtf52rHzjf98ykejn9bNGMaQ2k1f4UMIa+BGMbBy4mIRQ5ggdI5oCAb3sZPfJcel2JQHwDlsLHCYdpqC+n6Mg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -796,8 +796,8 @@ packages: typescript: optional: true - '@solana/codecs-strings@8.3.0': - resolution: {integrity: sha512-S7rZrc1B90AS0QVRlo6+6cX2t+0TGtsadsPWdfA7tXcaDKQfQn4C/6OJxJ7/n8ugw8LMgGC+Xcs81ii4nIp6aQ==} + '@solana/codecs-strings@8.5.0': + resolution: {integrity: sha512-9lCSCUVkbPLb1o9PLDsaOatdVgrUqqWMrAqJvZPyyuvrC5++wPuKRIGq+5iU3lICY+AwWxrzVyiwdu4xaZVCiw==} engines: {node: '>=20.18.0'} peerDependencies: fastestsmallesttextencoderdecoder: ^1.0.22 @@ -808,8 +808,8 @@ packages: typescript: optional: true - '@solana/codecs@8.3.0': - resolution: {integrity: sha512-BtiHdl7pDw6tadQAn3Vi1s0wgp0BGQ3ndTQRBtxuwmyCzlGfyuvMBq+ynkuGWwknvOpU2eTNEO84U/b7wqLB7w==} + '@solana/codecs@8.5.0': + resolution: {integrity: sha512-wALOoEuL7HAaahZnrhxCwYz10p23hku/LPNfXjlvwgjVYJL08PH3uyWDFO8e9zhcNLOaR13IREE9z8zPUhJjDQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -817,8 +817,8 @@ packages: typescript: optional: true - '@solana/errors@8.3.0': - resolution: {integrity: sha512-XsoQ5ThBOwfMz1KS7I2zZoduLxUYFe+NHuRAm/gt+uk44nnXqwzNJHo/9GEMqJqxafViqvfRZ35GF1fDkwW32Q==} + '@solana/errors@8.5.0': + resolution: {integrity: sha512-y/XTiwAZsm2kHoEDJ3ac3NUq/0E4uCbOnBe2m5mmBXF3TGmF562tDKgN5pQ+thiRABvi7b2LqwTBCg4kAdtgRg==} engines: {node: '>=20.18.0'} hasBin: true peerDependencies: @@ -827,8 +827,8 @@ packages: typescript: optional: true - '@solana/fast-stable-stringify@8.3.0': - resolution: {integrity: sha512-QVVSFQPLJaFeUFekWHe04TUr5rL2QbgPCEK0HcmlOLgCWTvduwj1D9e73jjYzL5HU1QRyUfzkw+GnSw95nvjLg==} + '@solana/fast-stable-stringify@8.5.0': + resolution: {integrity: sha512-CTIoOwJ0NScrB8KTzr/V4PJrNHrBAz1zvamM0opgDPQZGzLrBhca1e4eQcGmF6o7Dv3Ve0HdvDJx0B2uG6YxVA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -836,8 +836,8 @@ packages: typescript: optional: true - '@solana/fixed-points@8.3.0': - resolution: {integrity: sha512-cah+OuTSXqSMRlTQdj3sQmf7RK1m2RG50RzSgLFWeAAl+WCsoR4pyGPFxhQMw9JdaniqOUkKKB3ppxTMgfoHEg==} + '@solana/fixed-points@8.5.0': + resolution: {integrity: sha512-hkB7dUAD/oxXeNOvdMXVqfKZAvOJ1o50gBwzh8yLP1ihdSxVgssb36Vg7806C5HzmIxmTKZclJJokG0cRUXVSw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -845,8 +845,8 @@ packages: typescript: optional: true - '@solana/functional@8.3.0': - resolution: {integrity: sha512-HBtC8tA8q73JQYHFaNROGiBLcwPcbQHldN7f1NqCgYY9x/iIt/zvWPeoxiRkncYCE9MwDLyWMq3LnetjqOifOA==} + '@solana/functional@8.5.0': + resolution: {integrity: sha512-+8pgF1rVW78FfT0d+ceADFLKpSh/8/o9Ldx5tEkI6paiv0QeClL1rlU5nFs5tjoFkf+92x8PpiLEEGkm0CifOQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -854,8 +854,8 @@ packages: typescript: optional: true - '@solana/instruction-plans@8.3.0': - resolution: {integrity: sha512-ltuS+fTWsNQokFxK8StQzn/ZDkrR/P4Pao5EpQxYHPQQ+Z83g61kWFEnR+bB9WBDUZwu2CJptNXItKSgGOWwmg==} + '@solana/instruction-plans@8.5.0': + resolution: {integrity: sha512-cES8TzRGuJ5cdVn3hr6GskwwG68rLd8R0FqmzB9NeU/nzPnW/50nRrg36DYX1Nh+OwuU/ehg6zkNNu1Vo72lKQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -863,8 +863,8 @@ packages: typescript: optional: true - '@solana/instructions@8.3.0': - resolution: {integrity: sha512-piAAqqC5NEvN2Mf2FP6PWogl8qCVg/2cEt+LKyq89P0sNbaeMPK11wGcZR6e3LEBMBSnjAw4DbDerDWg6GC0eg==} + '@solana/instructions@8.5.0': + resolution: {integrity: sha512-LSMOQRicz8OalMM2DT60PtAaPjvkHPhIvmPEI8KpyWOuNRwABJBRAfn5ypcdSa69VVj4IdOY10tDWZzjN4dviA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -872,8 +872,8 @@ packages: typescript: optional: true - '@solana/keys@8.3.0': - resolution: {integrity: sha512-Fs8rtmxliPlDu/6iJniU4FfvUfD63OSxIAbMv2CyNvK9fg7dmQ9fUEBuK3WpwAlpKwhEHCzaFSWNUaB2SmeviQ==} + '@solana/keys@8.5.0': + resolution: {integrity: sha512-mq6amguPYLklpAOC9A+boXQhpcHGjcn4QN40J0l1TvUkfWyFJ4HBbNb35fyWldqqDUV5ujOpaPZmmVvWJBK2Kw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -896,8 +896,8 @@ packages: peerDependencies: '@solana/kit': ^8.0.0 - '@solana/kit@8.3.0': - resolution: {integrity: sha512-2T2QaO+0/CeZnPMsjv/bGhBSEiBCMY6V/Qi0xhFF/+8yCH8tkzM/kgE7fX5JlrR3gZpl9Bu+C62KTqnvk/bcjw==} + '@solana/kit@8.5.0': + resolution: {integrity: sha512-bMnXXADeyZFe3XyqzPhlQAIsmPYRiojaRO4JQxwGOmMwiQ5f13ZQodmsOqnt8W/n40P7r/+/pDqWuqG0TUv+yA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -905,8 +905,8 @@ packages: typescript: optional: true - '@solana/nominal-types@8.3.0': - resolution: {integrity: sha512-x2aCcMwe6C2tQNq4pAhx4bEd2zhrm3i7DjkdAJAPVCtPKd6ecO6iaV+53/RvE2ImZ0E9aVB41lPV8ZM0dMhRiw==} + '@solana/nominal-types@8.5.0': + resolution: {integrity: sha512-OfTZ+w/C59Zkp51RJ3dzn2GXUojf9p/PMmSrOpxrj+hci3bdh4e6XDGY+mvP8HGPH+m0nfKWTBCygEslfoX6bg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -914,8 +914,8 @@ packages: typescript: optional: true - '@solana/offchain-messages@8.3.0': - resolution: {integrity: sha512-zpwwQRTX+aBF97fgZW+T+grZWqKbCMa6moDnYHsCkQg67nCeb9OrPtZxMbCT5bP+kDgMTq2URQwS1NcZOwut+Q==} + '@solana/offchain-messages@8.5.0': + resolution: {integrity: sha512-C7qBBD1Gfbdv99uoQnuc8XZYwttTQJOYEG2v6z7q3mAL03PN7zdItAlBa+M2tpeRKjTJObRYnUUJDfiIyyGD/Q==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -923,8 +923,8 @@ packages: typescript: optional: true - '@solana/options@8.3.0': - resolution: {integrity: sha512-+mi+EvxdjlOxt3dv7wTfzGxVFw0j8flZ8gGSXCx969JrML9EZd3+wgsKuMNb3whbvGa/N5exPZXfzsG+wNlK8A==} + '@solana/options@8.5.0': + resolution: {integrity: sha512-Ron9FrWDkwxlmuI6D+NmrZZRngC1MUncglgyN77ThAoxDE1gGMOB88mQvEILeeqONeTA1rDg1uBvbewQcILp+w==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -932,8 +932,8 @@ packages: typescript: optional: true - '@solana/plugin-core@8.3.0': - resolution: {integrity: sha512-cU5S9QR7C1Xsn9DDRSLN7Vq8+kWy6Fw6g2lwa+9yZqdSqABhmdH5HBJG/Zl8HULz2Ady0y8qHcu8fEZsehuU0g==} + '@solana/plugin-core@8.5.0': + resolution: {integrity: sha512-1zmh+UC47yxsZHleDpH4AEVkm9yXIATkWm8v33DJuXaqX3TQXMXuxP39cXAyObIQEpCG8DK8lyAeFTUrIFcDmA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -941,8 +941,8 @@ packages: typescript: optional: true - '@solana/plugin-interfaces@8.3.0': - resolution: {integrity: sha512-EawuCQiW5A13qdArRODYbAsAvi9fRkORk1hq14kbRAR0A/7XwQLniAWrgKY4WZ1UXuECB/LxKc8uQwfH5u1JOw==} + '@solana/plugin-interfaces@8.5.0': + resolution: {integrity: sha512-+s/+cCuzk23/a1ViTIugvXFYHN0txxmvqfuL4qx81NlmGawqEYws6xD+L02wNzJ5rbJeAaBhw2pUFStMfG4vYg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -950,8 +950,8 @@ packages: typescript: optional: true - '@solana/program-client-core@8.3.0': - resolution: {integrity: sha512-GUFVAFaEgVvznI6mrfa69I0SVnO5mD5RpYKdSEHvGnIMzupgjZhTcmhSxMIU06hFA2ZLF+NbKsOKMQFVicOCjw==} + '@solana/program-client-core@8.5.0': + resolution: {integrity: sha512-HJcnbuvQRcWOV3nTUjzgmQRIs0Of1973UU8uOvSEEW7rxycQwNxJ7fVgxQ5sYOCbT+7rlqqTkDeczvB7I4OwoA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -959,8 +959,8 @@ packages: typescript: optional: true - '@solana/programs@8.3.0': - resolution: {integrity: sha512-XosDh9GNaDUCvzpFE2e3M7iQ6tounwrhR16+KInjYNcvQDLgA5yeCbNfByai7OSz9iqEi5nlXjQFIQCckLANVw==} + '@solana/programs@8.5.0': + resolution: {integrity: sha512-8PC2E/d5rwCRw1tFwQlpG65YDN56bYmPiBl99QqCP2RzhNdFJ/52xgFumL2G0uLfD3xsuFaWuOIGNxkyfXYm/Q==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -968,8 +968,8 @@ packages: typescript: optional: true - '@solana/promises@8.3.0': - resolution: {integrity: sha512-RekTh1UzvyD1EtF4hjenJDrnpGakJwTCE7cq6auQKtBxQUIJrKwDxmpyiJTJ00wvQYdMfMuyJEPQNuxgm6mxrg==} + '@solana/promises@8.5.0': + resolution: {integrity: sha512-qWJbU6RGuZVrtvsGZ+2F46jccaIZDX4czYRRhS3m38cCdE+wKMbqGvWND50xP7D9egOxYKHMqJAJbLQH4gspvQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -977,8 +977,8 @@ packages: typescript: optional: true - '@solana/rpc-api@8.3.0': - resolution: {integrity: sha512-8wvVbQLbp8Mjd0Vcg2IZqkNreSGkgOPe4IhCrO2GqJQyTNAI8Ir6o/Qt3zIj02IQS9LDL9rZPvynL+1PFPSlOA==} + '@solana/rpc-api@8.5.0': + resolution: {integrity: sha512-qlRZ2yC8WEWNg3VX8UEqlZOitKZaeE6KWbn3A/ybtJAYz+mvr3RMDhnQ89RDqIuxPuAFZNV21BRJv3yB9xR44Q==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -986,8 +986,8 @@ packages: typescript: optional: true - '@solana/rpc-parsed-types@8.3.0': - resolution: {integrity: sha512-cK0Yu7I8HADKYQdlyIuCFd2sq1sCrIm7q0H9nqeS7b5ILLYoH9T3AnCZ437N7Z4jZBekL2DGdpdE2M84F0fphQ==} + '@solana/rpc-parsed-types@8.5.0': + resolution: {integrity: sha512-ktygZ019trgAyjr8y1GN1x4x6wJYw2Ola6UogAfJT5LoNs6kV3k84yCNAlGv34xRPqCVxlWo4nsIWJf8yWQQ2w==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -995,8 +995,8 @@ packages: typescript: optional: true - '@solana/rpc-spec-types@8.3.0': - resolution: {integrity: sha512-D757241XGKwmBRlQ1xSGknBqRaXq8ZO0BDl5UupG0UyHsfdk6iKDrJFccaNx1m2LKExzlu8iWZTEdnrueDDL7A==} + '@solana/rpc-spec-types@8.5.0': + resolution: {integrity: sha512-YUTMKWWlHCGBmA1wxhIilbxJlad5vEsvc8dDO9VWr7GVkQUlipEU79iGaKk4xQ6Oo1mZWxpGz5mAJUqGraTK4A==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1004,8 +1004,8 @@ packages: typescript: optional: true - '@solana/rpc-spec@8.3.0': - resolution: {integrity: sha512-HWMQsAUsW8LOkojFopkkkTSIFAFeYDA6B4NiXtXZ8q5qKRKDB+qCVTC1un8RorKrnayLM7gF73Oi5gPD2ANL/w==} + '@solana/rpc-spec@8.5.0': + resolution: {integrity: sha512-0oET5yc880zFGqBMJE2UB7sxW8sIs4hmsP4bmkR2y4ipm1aScC5U+Rd8GaIrupBOVOFj+RXIorC7kQycN/9nhw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1013,8 +1013,8 @@ packages: typescript: optional: true - '@solana/rpc-subscriptions-api@8.3.0': - resolution: {integrity: sha512-NHjPuylayZHuBNXPkMT0sMHGUKAenck+P9Iep1ZzfH0py9SJcKOU8LHecSdGl7GjHk0SCs+iCBew+89JYrcTaA==} + '@solana/rpc-subscriptions-api@8.5.0': + resolution: {integrity: sha512-PJaAyqZkpG8vuzdxmdWMwp1JS5pyZ6PuL8OMhx6nCt3phkseqIs1NmAf8pQc/RZjIV3hJMMVCwSDG1DE8DY64w==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1022,8 +1022,8 @@ packages: typescript: optional: true - '@solana/rpc-subscriptions-channel-websocket@8.3.0': - resolution: {integrity: sha512-4Ix52idqRT3q0Ty5sr9lUj/S8Flf+/8q7NMuAxYNH827C71AO6vVpkpAY1YpU53MKnKy0Tox0mLLScocftgEJQ==} + '@solana/rpc-subscriptions-channel-websocket@8.5.0': + resolution: {integrity: sha512-sRYYwBFg31z77zfKpJBcAO9MaUWa+bO1PlBcDiToa4luXGuR3dC8TSpi1Yip4T4NCONNzK3yhyeI6sHhGHc8Qw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1031,8 +1031,8 @@ packages: typescript: optional: true - '@solana/rpc-subscriptions-spec@8.3.0': - resolution: {integrity: sha512-iv6f4N7Pva3KGljkT4kEBsMDjWVHShtysuPOko8doLBSKuelOj+b+79iYpezeu6hpbZ0YxBvlmJkOtUyeIhRJA==} + '@solana/rpc-subscriptions-spec@8.5.0': + resolution: {integrity: sha512-YdCPLHOcQWz8JhMaT/E+YC56nFDJ6D+XOTr6qRWHGe/1PIYGQDVvaFzI7+tF0b6tuv49GoMbpGdkiTX2v6KeUw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1040,8 +1040,8 @@ packages: typescript: optional: true - '@solana/rpc-subscriptions@8.3.0': - resolution: {integrity: sha512-/oI9aXKOTFnIoZ+wmvZeNfSu5h8Vl90a4W6U/K8OZE2AKjK1dbKI4bR1k7P/3SORY9Z0AN2S9UsohQ6Z6n9jKA==} + '@solana/rpc-subscriptions@8.5.0': + resolution: {integrity: sha512-8hdWSDKKtMK3kRrR8TExwFo/bWHxVTu4zJ/JkePTQgNtm95kX25/hy+9JHKRtSsNUfXXYM60sQVE18cGgMU7dA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1049,8 +1049,8 @@ packages: typescript: optional: true - '@solana/rpc-transformers@8.3.0': - resolution: {integrity: sha512-eDn1PwS+MbMAJN4ZSWzMYGt0jEwvyaZJwDeQdOdWYEkqKJKlLsO1AAxLmz3LW3R/iKyWa4KwjrJ5Ia9oAugS6g==} + '@solana/rpc-transformers@8.5.0': + resolution: {integrity: sha512-JYq+EyfzJ1ksZubU9VHynQY1Z3k1tosdxG6KE4Cua/rFuXPosSn7o5h9FLLbSB5cTVcnj0lGNrBaVYW4AVK4iA==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1058,8 +1058,8 @@ packages: typescript: optional: true - '@solana/rpc-transport-http@8.3.0': - resolution: {integrity: sha512-XD3Bo5KZekQhrReoF6UzFW66NUYqa4Rg1wBjFEIsC/sABhLJ+062O1GPS3HY9AcxZBW48rAmfNe1Qqkerxajzw==} + '@solana/rpc-transport-http@8.5.0': + resolution: {integrity: sha512-xfIFZa+oxXLgA6BXaE2bXjiy2yZM1qO1URzzF0lmTekJM/okS8EZAQwEicWpYkvfdHJZ2x/oagD3AOSBBCWrsw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1067,8 +1067,8 @@ packages: typescript: optional: true - '@solana/rpc-types@8.3.0': - resolution: {integrity: sha512-T8DlDU5hu/pspKNWriwkJHXqzb7B6EQVVC6sgciZp78VB9R413+K6QhC7jZc96mNcoaATKRRg2tDDyiezKZVIg==} + '@solana/rpc-types@8.5.0': + resolution: {integrity: sha512-L050pZqQ8gaFABF26NAYoatyZZeJo52AKvQQ3i58LRtUc6wcrpCF+4x4U/EDER2YVAc6Qx1xWvGnAomGhI6vzw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1076,8 +1076,8 @@ packages: typescript: optional: true - '@solana/rpc@8.3.0': - resolution: {integrity: sha512-giS/v09dby/VD77uDfNrhr5fLi5K5NIOp3jIFfKpdAnfPHgKLv050xdmL9ZltrWucrGuePinzUTLWkdkf4s/cw==} + '@solana/rpc@8.5.0': + resolution: {integrity: sha512-7CQFNOMhXrY/LT0qdsi3h0chy4A/Ao93pyBLqFQqxzlub0st8dC5wl+MDXhkxaBos/DZOu1V4EleWv6qbLMlow==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1085,8 +1085,8 @@ packages: typescript: optional: true - '@solana/signers@8.3.0': - resolution: {integrity: sha512-uNiJZV6npLBQ0jYsK5fmtemZ0igQ4HW9QR9t5qSxbxRa52yZjzX7zkSpFhQJsxvBCAUR2ppVmhanDeupPXf4Mw==} + '@solana/signers@8.5.0': + resolution: {integrity: sha512-F9VvFsG9Av+Sbs4mQpuVlszb6msujxnqKQqa4TsRT24GOqKOFr4Xvs7HqgVJV/BPIDnz7u0omUhUILesHJDfkQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1094,8 +1094,8 @@ packages: typescript: optional: true - '@solana/subscribable@8.3.0': - resolution: {integrity: sha512-tLoGNOt19oUTxIoOaBxQRNxKJET/IXBx1NZkGD1lh4X8iNc6V0lY3MMIWjNvRivFIpzeWtWYxX/tAb27xpmcXg==} + '@solana/subscribable@8.5.0': + resolution: {integrity: sha512-v1/hL/l4kubwYVuaMNmtQcmTgDuKG6e9Hjv9fCxkYCdDIUERgmm9DX/So1386+6rkQBVRC7wTSH86Jq+RIqNGQ==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1103,8 +1103,8 @@ packages: typescript: optional: true - '@solana/sysvars@8.3.0': - resolution: {integrity: sha512-SXnKqpV4pj3vLvcyBn8+jeVouu4Bbk0PTmHMknsig6edWcpmvAXkufcRdxgVy5t58pdSf1+GlJGEEhP5NR/0xA==} + '@solana/sysvars@8.5.0': + resolution: {integrity: sha512-vidKFEOAujEVizDUHFCmmIpHsS3Zu/fXJKcDUtbUn+bwD9Z1fRiper8rZW3Qdtgu1GmrH3O8MoyL2Nrp7k6QNw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1112,8 +1112,8 @@ packages: typescript: optional: true - '@solana/transaction-confirmation@8.3.0': - resolution: {integrity: sha512-xx4sO4+0nP84SvxPPmHFKkUyBEQDFC2Vn8eqV8qEG3yo0ruHlZ45g0IeYhz9WS20WPgkXvGB5bVU8Y3yv/4vPw==} + '@solana/transaction-confirmation@8.5.0': + resolution: {integrity: sha512-dUVHhyaJ9tt535ZJfgPAdKo6zycCAn1mqKKP/FYvCz/4FiAKnyvqj8rxd66yvvuJVhkpjbcPDDagm/P8JEYUug==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1121,8 +1121,8 @@ packages: typescript: optional: true - '@solana/transaction-introspection@8.3.0': - resolution: {integrity: sha512-uuPNYLhgueMG1ZxWH+SqPHiyz7KM0vFUDPCVRQUVTTWFryWDeu6GExfy+mFMPRR25cp+hWYmYhddub8BU2sPXQ==} + '@solana/transaction-introspection@8.5.0': + resolution: {integrity: sha512-VPYVLcpieu5YwwC1wmh3zZ/KHWmqJWPS7iMPVpf90L79/1Dvkg+YYQHnVeN4VQdb7VFnfpTqUnSQpfERDk0Sag==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1130,8 +1130,8 @@ packages: typescript: optional: true - '@solana/transaction-messages@8.3.0': - resolution: {integrity: sha512-AkgHRPOnwonB7n81rTwnZ9WFlagnhzDzXKGhETdffzC+A1GifXC2s/ou0/qNozuqlgPVDaBR02S/A3Vt1tYr/g==} + '@solana/transaction-messages@8.5.0': + resolution: {integrity: sha512-8SHxirU5K0kFmOwwD6XTGI5LWP/bLvLBDbemT4xDOaL+6xkLzlTMtzlgKb/Td5UtqyYOoew0FBVLJzJx/QApOw==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1139,8 +1139,8 @@ packages: typescript: optional: true - '@solana/transactions@8.3.0': - resolution: {integrity: sha512-zNCHu2W3t6r4W3rsCA5vZ93bGqcZPNgfgYjTamRC6xTZPP2qn5JR+bSR9/WBMpi8GwLzWYuDk6YtNp3+pYGKuQ==} + '@solana/transactions@8.5.0': + resolution: {integrity: sha512-IGRWI38rq5b94gy93wn/gVSQBuwNPSUv3GnWkd6R6Tc7jLbfRlYbYHJNHH5o28Fmlr+nlEn4bgu3BiqMWxuLmg==} engines: {node: '>=20.18.0'} peerDependencies: typescript: '>=5.4.0' @@ -1753,8 +1753,8 @@ packages: undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici-types@8.10.2: - resolution: {integrity: sha512-7/+aSjzkUoLc92hV22bTW4aGanXf800zbwguhcICs0OAoCF9wDOE4wkopQ+SqfhXZm8mCK8gHpdTs7pZUWzK3w==} + undici-types@8.12.1: + resolution: {integrity: sha512-nCiEcIx87oMw9u3Yzj2DuRBzv6p0e7akhy4HUPtpBiVWmAY3o6Phznst8QhmY1oLMttLgJ2tlAvsKuzCgBSoAw==} vite@8.3.0: resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==} @@ -2246,155 +2246,155 @@ snapshots: oxfmt: 0.55.0 oxlint: 1.83.0(oxlint-tsgolint@0.23.0) - '@solana-program/system@0.14.1(@solana/kit@8.3.0(typescript@5.9.3))': + '@solana-program/system@0.14.1(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: - '@solana/kit': 8.3.0(typescript@5.9.3) + '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana-program/system@0.15.0(@solana/kit@8.3.0(typescript@5.9.3))': + '@solana-program/system@0.15.0(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: - '@solana/kit': 8.3.0(typescript@5.9.3) + '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana-program/token@0.16.1(@solana/kit@8.3.0(typescript@5.9.3))': + '@solana-program/token@0.16.1(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: - '@solana-program/system': 0.14.1(@solana/kit@8.3.0(typescript@5.9.3)) - '@solana/kit': 8.3.0(typescript@5.9.3) + '@solana-program/system': 0.14.1(@solana/kit@8.5.0(typescript@5.9.3)) + '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana/accounts@8.3.0(typescript@5.9.3)': + '@solana/accounts@8.5.0(typescript@5.9.3)': dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/addresses@8.3.0(typescript@5.9.3)': + '@solana/addresses@8.5.0(typescript@5.9.3)': dependencies: - '@solana/assertions': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) + '@solana/assertions': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/assertions@8.3.0(typescript@5.9.3)': + '@solana/assertions@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/codecs-core@8.3.0(typescript@5.9.3)': + '@solana/codecs-core@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/codecs-data-structures@8.3.0(typescript@5.9.3)': + '@solana/codecs-data-structures@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/codecs-numbers@8.3.0(typescript@5.9.3)': + '@solana/codecs-numbers@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/codecs-strings@8.3.0(typescript@5.9.3)': + '@solana/codecs-strings@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/codecs@8.3.0(typescript@5.9.3)': + '@solana/codecs@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/fixed-points': 8.3.0(typescript@5.9.3) - '@solana/options': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-data-structures': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/fixed-points': 8.5.0(typescript@5.9.3) + '@solana/options': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/errors@8.3.0(typescript@5.9.3)': + '@solana/errors@8.5.0(typescript@5.9.3)': dependencies: chalk: 5.6.2 commander: 15.0.0 optionalDependencies: typescript: 5.9.3 - '@solana/fast-stable-stringify@8.3.0(typescript@5.9.3)': + '@solana/fast-stable-stringify@8.5.0(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/fixed-points@8.3.0(typescript@5.9.3)': + '@solana/fixed-points@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/functional@8.3.0(typescript@5.9.3)': + '@solana/functional@8.5.0(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/instruction-plans@8.3.0(typescript@5.9.3)': + '@solana/instruction-plans@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/instructions@8.3.0(typescript@5.9.3)': + '@solana/instructions@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/keys@8.3.0(typescript@5.9.3)': + '@solana/keys@8.5.0(typescript@5.9.3)': dependencies: - '@solana/assertions': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) + '@solana/assertions': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/kit-plugin-instruction-plan@0.18.0(@solana/kit@8.3.0(typescript@5.9.3))': + '@solana/kit-plugin-instruction-plan@0.18.0(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: - '@solana/kit': 8.3.0(typescript@5.9.3) + '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana/kit-plugin-litesvm@0.18.0(@solana/kit@8.3.0(typescript@5.9.3))(typescript@5.9.3)': + '@solana/kit-plugin-litesvm@0.18.0(@solana/kit@8.5.0(typescript@5.9.3))(typescript@5.9.3)': dependencies: - '@solana/kit': 8.3.0(typescript@5.9.3) - '@solana/kit-plugin-instruction-plan': 0.18.0(@solana/kit@8.3.0(typescript@5.9.3)) + '@solana/kit': 8.5.0(typescript@5.9.3) + '@solana/kit-plugin-instruction-plan': 0.18.0(@solana/kit@8.5.0(typescript@5.9.3)) litesvm: 1.4.1(typescript@5.9.3) transitivePeerDependencies: - bufferutil @@ -2402,39 +2402,39 @@ snapshots: - typescript - utf-8-validate - '@solana/kit-plugin-signer@0.18.0(@solana/kit@8.3.0(typescript@5.9.3))': - dependencies: - '@solana/kit': 8.3.0(typescript@5.9.3) - - '@solana/kit@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 8.3.0(typescript@5.9.3) - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/instruction-plans': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/offchain-messages': 8.3.0(typescript@5.9.3) - '@solana/plugin-core': 8.3.0(typescript@5.9.3) - '@solana/plugin-interfaces': 8.3.0(typescript@5.9.3) - '@solana/program-client-core': 8.3.0(typescript@5.9.3) - '@solana/programs': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) - '@solana/rpc': 8.3.0(typescript@5.9.3) - '@solana/rpc-api': 8.3.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/signers': 8.3.0(typescript@5.9.3) - '@solana/subscribable': 8.3.0(typescript@5.9.3) - '@solana/sysvars': 8.3.0(typescript@5.9.3) - '@solana/transaction-confirmation': 8.3.0(typescript@5.9.3) - '@solana/transaction-introspection': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/kit-plugin-signer@0.18.0(@solana/kit@8.5.0(typescript@5.9.3))': + dependencies: + '@solana/kit': 8.5.0(typescript@5.9.3) + + '@solana/kit@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 8.5.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/instruction-plans': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/offchain-messages': 8.5.0(typescript@5.9.3) + '@solana/plugin-core': 8.5.0(typescript@5.9.3) + '@solana/plugin-interfaces': 8.5.0(typescript@5.9.3) + '@solana/program-client-core': 8.5.0(typescript@5.9.3) + '@solana/programs': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) + '@solana/rpc': 8.5.0(typescript@5.9.3) + '@solana/rpc-api': 8.5.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/signers': 8.5.0(typescript@5.9.3) + '@solana/subscribable': 8.5.0(typescript@5.9.3) + '@solana/sysvars': 8.5.0(typescript@5.9.3) + '@solana/transaction-confirmation': 8.5.0(typescript@5.9.3) + '@solana/transaction-introspection': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -2442,142 +2442,142 @@ snapshots: - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/nominal-types@8.3.0(typescript@5.9.3)': + '@solana/nominal-types@8.5.0(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/offchain-messages@8.3.0(typescript@5.9.3)': + '@solana/offchain-messages@8.5.0(typescript@5.9.3)': dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-data-structures': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@8.3.0(typescript@5.9.3)': + '@solana/options@8.5.0(typescript@5.9.3)': dependencies: - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-data-structures': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/plugin-core@8.3.0(typescript@5.9.3)': + '@solana/plugin-core@8.5.0(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/plugin-interfaces@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 8.3.0(typescript@5.9.3) - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/instruction-plans': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/signers': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/plugin-interfaces@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 8.5.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/instruction-plans': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/signers': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/program-client-core@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/accounts': 8.3.0(typescript@5.9.3) - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/instruction-plans': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/plugin-interfaces': 8.3.0(typescript@5.9.3) - '@solana/rpc-api': 8.3.0(typescript@5.9.3) - '@solana/signers': 8.3.0(typescript@5.9.3) + '@solana/program-client-core@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/accounts': 8.5.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/instruction-plans': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/plugin-interfaces': 8.5.0(typescript@5.9.3) + '@solana/rpc-api': 8.5.0(typescript@5.9.3) + '@solana/signers': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/programs@8.3.0(typescript@5.9.3)': + '@solana/programs@8.5.0(typescript@5.9.3)': dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/promises@8.3.0(typescript@5.9.3)': + '@solana/promises@8.5.0(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/rpc-api@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/rpc-parsed-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/rpc-api@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/rpc-parsed-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-transformers': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-parsed-types@8.3.0(typescript@5.9.3)': + '@solana/rpc-parsed-types@8.5.0(typescript@5.9.3)': optionalDependencies: typescript: 5.9.3 - '@solana/rpc-spec-types@8.3.0(typescript@5.9.3)': + '@solana/rpc-spec-types@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/rpc-spec@8.3.0(typescript@5.9.3)': + '@solana/rpc-spec@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - '@solana/subscribable': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + '@solana/subscribable': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/rpc-subscriptions-api@8.3.0(typescript@5.9.3)': + '@solana/rpc-subscriptions-api@8.5.0(typescript@5.9.3)': dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-transformers': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-subscriptions-channel-websocket@8.3.0(typescript@5.9.3)': + '@solana/rpc-subscriptions-channel-websocket@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 8.3.0(typescript@5.9.3) - '@solana/subscribable': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 8.5.0(typescript@5.9.3) + '@solana/subscribable': 8.5.0(typescript@5.9.3) ws: 8.21.3 optionalDependencies: typescript: 5.9.3 @@ -2585,28 +2585,28 @@ snapshots: - bufferutil - utf-8-validate - '@solana/rpc-subscriptions-spec@8.3.0(typescript@5.9.3)': + '@solana/rpc-subscriptions-spec@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - '@solana/subscribable': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + '@solana/subscribable': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/rpc-subscriptions@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/subscribable': 8.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-transformers': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/subscribable': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -2614,105 +2614,105 @@ snapshots: - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/rpc-transformers@8.3.0(typescript@5.9.3)': + '@solana/rpc-transformers@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-transport-http@8.3.0(typescript@5.9.3)': + '@solana/rpc-transport-http@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - undici-types: 8.10.2 + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + undici-types: 8.12.1 optionalDependencies: typescript: 5.9.3 - '@solana/rpc-types@8.3.0(typescript@5.9.3)': + '@solana/rpc-types@8.5.0(typescript@5.9.3)': dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/fixed-points': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/fixed-points': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/fast-stable-stringify': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/rpc-api': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec': 8.3.0(typescript@5.9.3) - '@solana/rpc-spec-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-transformers': 8.3.0(typescript@5.9.3) - '@solana/rpc-transport-http': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) + '@solana/rpc@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/rpc-api': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec': 8.5.0(typescript@5.9.3) + '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-transformers': 8.5.0(typescript@5.9.3) + '@solana/rpc-transport-http': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/signers@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) - '@solana/offchain-messages': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/signers@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) + '@solana/offchain-messages': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/subscribable@8.3.0(typescript@5.9.3)': + '@solana/subscribable@8.5.0(typescript@5.9.3)': dependencies: - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - '@solana/sysvars@8.3.0(typescript@5.9.3)': + '@solana/sysvars@8.5.0(typescript@5.9.3)': dependencies: - '@solana/accounts': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) + '@solana/accounts': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-data-structures': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transaction-confirmation@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/promises': 8.3.0(typescript@5.9.3) - '@solana/rpc': 8.3.0(typescript@5.9.3) - '@solana/rpc-subscriptions': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/transaction-confirmation@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/promises': 8.5.0(typescript@5.9.3) + '@solana/rpc': 8.5.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -2720,51 +2720,51 @@ snapshots: - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/transaction-introspection@8.3.0(typescript@5.9.3)': + '@solana/transaction-introspection@8.5.0(typescript@5.9.3)': dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) - '@solana/transactions': 8.3.0(typescript@5.9.3) + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) + '@solana/transactions': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transaction-messages@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) + '@solana/transaction-messages@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-data-structures': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transactions@8.3.0(typescript@5.9.3)': - dependencies: - '@solana/addresses': 8.3.0(typescript@5.9.3) - '@solana/codecs-core': 8.3.0(typescript@5.9.3) - '@solana/codecs-data-structures': 8.3.0(typescript@5.9.3) - '@solana/codecs-numbers': 8.3.0(typescript@5.9.3) - '@solana/codecs-strings': 8.3.0(typescript@5.9.3) - '@solana/errors': 8.3.0(typescript@5.9.3) - '@solana/functional': 8.3.0(typescript@5.9.3) - '@solana/instructions': 8.3.0(typescript@5.9.3) - '@solana/keys': 8.3.0(typescript@5.9.3) - '@solana/nominal-types': 8.3.0(typescript@5.9.3) - '@solana/rpc-types': 8.3.0(typescript@5.9.3) - '@solana/transaction-messages': 8.3.0(typescript@5.9.3) + '@solana/transactions@8.5.0(typescript@5.9.3)': + dependencies: + '@solana/addresses': 8.5.0(typescript@5.9.3) + '@solana/codecs-core': 8.5.0(typescript@5.9.3) + '@solana/codecs-data-structures': 8.5.0(typescript@5.9.3) + '@solana/codecs-numbers': 8.5.0(typescript@5.9.3) + '@solana/codecs-strings': 8.5.0(typescript@5.9.3) + '@solana/errors': 8.5.0(typescript@5.9.3) + '@solana/functional': 8.5.0(typescript@5.9.3) + '@solana/instructions': 8.5.0(typescript@5.9.3) + '@solana/keys': 8.5.0(typescript@5.9.3) + '@solana/nominal-types': 8.5.0(typescript@5.9.3) + '@solana/rpc-types': 8.5.0(typescript@5.9.3) + '@solana/transaction-messages': 8.5.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -3050,9 +3050,9 @@ snapshots: litesvm@1.4.1(typescript@5.9.3): dependencies: - '@solana-program/system': 0.14.1(@solana/kit@8.3.0(typescript@5.9.3)) - '@solana-program/token': 0.16.1(@solana/kit@8.3.0(typescript@5.9.3)) - '@solana/kit': 8.3.0(typescript@5.9.3) + '@solana-program/system': 0.14.1(@solana/kit@8.5.0(typescript@5.9.3)) + '@solana-program/token': 0.16.1(@solana/kit@8.5.0(typescript@5.9.3)) + '@solana/kit': 8.5.0(typescript@5.9.3) optionalDependencies: litesvm-darwin-arm64: 1.4.1 litesvm-darwin-x64: 1.4.1 @@ -3381,7 +3381,7 @@ snapshots: undici-types@7.18.2: {} - undici-types@8.10.2: {} + undici-types@8.12.1: {} vite@8.3.0(@types/node@24.13.6)(esbuild@0.27.7): dependencies: diff --git a/clients/js/src/generated/accounts/mint.ts b/clients/js/src/generated/accounts/mint.ts index 90786983..74eb8be5 100644 --- a/clients/js/src/generated/accounts/mint.ts +++ b/clients/js/src/generated/accounts/mint.ts @@ -35,6 +35,7 @@ import { type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, + type HasAddress, type MaybeAccount, type MaybeEncodedAccount, type Option, @@ -64,7 +65,7 @@ export type MintArgs = { * be provided during mint creation. If no mint authority is present * then the mint has a fixed supply and no further tokens may be minted. */ - mintAuthority: OptionOrNullable
; + mintAuthority: OptionOrNullable
; /** Total supply of tokens. */ supply: number | bigint; /** Number of base 10 digits to the right of the decimal place. */ @@ -72,7 +73,7 @@ export type MintArgs = { /** Is `true` if this structure has been initialized. */ isInitialized: boolean; /** Optional authority to freeze token accounts. */ - freezeAuthority: OptionOrNullable
; + freezeAuthority: OptionOrNullable
; }; /** Gets the encoder for {@link MintArgs} account data. */ diff --git a/clients/js/src/generated/accounts/multisig.ts b/clients/js/src/generated/accounts/multisig.ts index 6640a2fb..a84dd763 100644 --- a/clients/js/src/generated/accounts/multisig.ts +++ b/clients/js/src/generated/accounts/multisig.ts @@ -31,6 +31,7 @@ import { type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, + type HasAddress, type MaybeAccount, type MaybeEncodedAccount, } from '@solana/kit'; @@ -46,7 +47,16 @@ export type Multisig = { signers: Array
; }; -export type MultisigArgs = Multisig; +export type MultisigArgs = { + /** Number of signers required. */ + m: number; + /** Number of valid signers. */ + n: number; + /** Is `true` if this structure has been initialized. */ + isInitialized: boolean; + /** Signer public keys. */ + signers: Array
; +}; /** Gets the encoder for {@link MultisigArgs} account data. */ export function getMultisigEncoder(): FixedSizeEncoder { diff --git a/clients/js/src/generated/accounts/token.ts b/clients/js/src/generated/accounts/token.ts index f5ae027c..85955004 100644 --- a/clients/js/src/generated/accounts/token.ts +++ b/clients/js/src/generated/accounts/token.ts @@ -31,6 +31,7 @@ import { type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, + type HasAddress, type MaybeAccount, type MaybeEncodedAccount, type Option, @@ -67,16 +68,16 @@ export type Token = { export type TokenArgs = { /** The mint associated with this account. */ - mint: Address; + mint: Address | HasAddress; /** The owner of this account. */ - owner: Address; + owner: Address | HasAddress; /** The amount of tokens this account holds. */ amount: number | bigint; /** * If `delegate` is `Some` then `delegated_amount` represents * the amount authorized by the delegate. */ - delegate: OptionOrNullable
; + delegate: OptionOrNullable
; /** The account's state. */ state: AccountStateArgs; /** @@ -89,7 +90,7 @@ export type TokenArgs = { /** The amount delegated. */ delegatedAmount: number | bigint; /** Optional authority to close the account. */ - closeAuthority: OptionOrNullable
; + closeAuthority: OptionOrNullable
; }; /** Gets the encoder for {@link TokenArgs} account data. */ diff --git a/clients/js/src/generated/instructions/initializeAccount2.ts b/clients/js/src/generated/instructions/initializeAccount2.ts index 2d01eab1..4919ef1b 100644 --- a/clients/js/src/generated/instructions/initializeAccount2.ts +++ b/clients/js/src/generated/instructions/initializeAccount2.ts @@ -22,6 +22,7 @@ import { type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, + type HasAddress, type Instruction, type InstructionWithAccounts, type InstructionWithData, @@ -69,7 +70,7 @@ export type InitializeAccount2InstructionData = { export type InitializeAccount2InstructionDataArgs = { /** The new account's owner/multisignature. */ - owner: Address; + owner: Address | HasAddress; }; export function getInitializeAccount2InstructionDataEncoder(): FixedSizeEncoder { diff --git a/clients/js/src/generated/instructions/initializeAccount3.ts b/clients/js/src/generated/instructions/initializeAccount3.ts index ce70ff13..bc5a2f2a 100644 --- a/clients/js/src/generated/instructions/initializeAccount3.ts +++ b/clients/js/src/generated/instructions/initializeAccount3.ts @@ -22,6 +22,7 @@ import { type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, + type HasAddress, type Instruction, type InstructionWithAccounts, type InstructionWithData, @@ -67,7 +68,7 @@ export type InitializeAccount3InstructionData = { export type InitializeAccount3InstructionDataArgs = { /** The new account's owner/multisignature. */ - owner: Address; + owner: Address | HasAddress; }; export function getInitializeAccount3InstructionDataEncoder(): FixedSizeEncoder { diff --git a/clients/js/src/generated/instructions/initializeMint.ts b/clients/js/src/generated/instructions/initializeMint.ts index eeb3ae65..50dc2f62 100644 --- a/clients/js/src/generated/instructions/initializeMint.ts +++ b/clients/js/src/generated/instructions/initializeMint.ts @@ -25,6 +25,7 @@ import { type Codec, type Decoder, type Encoder, + type HasAddress, type Instruction, type InstructionWithAccounts, type InstructionWithData, @@ -78,9 +79,9 @@ export type InitializeMintInstructionDataArgs = { /** Number of decimals in token account amounts. */ decimals: number; /** Minting authority. */ - mintAuthority: Address; + mintAuthority: Address | HasAddress; /** Optional authority that can freeze token accounts. */ - freezeAuthority?: OptionOrNullable
; + freezeAuthority?: OptionOrNullable
; }; export function getInitializeMintInstructionDataEncoder(): Encoder { diff --git a/clients/js/src/generated/instructions/initializeMint2.ts b/clients/js/src/generated/instructions/initializeMint2.ts index cf48a665..265885d3 100644 --- a/clients/js/src/generated/instructions/initializeMint2.ts +++ b/clients/js/src/generated/instructions/initializeMint2.ts @@ -25,6 +25,7 @@ import { type Codec, type Decoder, type Encoder, + type HasAddress, type Instruction, type InstructionWithAccounts, type InstructionWithData, @@ -72,9 +73,9 @@ export type InitializeMint2InstructionDataArgs = { /** Number of base 10 digits to the right of the decimal place. */ decimals: number; /** The authority/multisignature to mint tokens. */ - mintAuthority: Address; + mintAuthority: Address | HasAddress; /** The optional freeze authority/multisignature of the mint. */ - freezeAuthority?: OptionOrNullable
; + freezeAuthority?: OptionOrNullable
; }; export function getInitializeMint2InstructionDataEncoder(): Encoder { diff --git a/clients/js/src/generated/instructions/setAuthority.ts b/clients/js/src/generated/instructions/setAuthority.ts index a2fd7ad5..410fce4d 100644 --- a/clients/js/src/generated/instructions/setAuthority.ts +++ b/clients/js/src/generated/instructions/setAuthority.ts @@ -25,6 +25,7 @@ import { type Codec, type Decoder, type Encoder, + type HasAddress, type Instruction, type InstructionWithAccounts, type InstructionWithData, @@ -80,7 +81,7 @@ export type SetAuthorityInstructionDataArgs = { /** The type of authority to update. */ authorityType: AuthorityTypeArgs; /** The new authority */ - newAuthority: OptionOrNullable
; + newAuthority: OptionOrNullable
; }; export function getSetAuthorityInstructionDataEncoder(): Encoder { diff --git a/clients/js/src/generated/pdas/associatedToken.ts b/clients/js/src/generated/pdas/associatedToken.ts index 51cd5c8b..5b9735dc 100644 --- a/clients/js/src/generated/pdas/associatedToken.ts +++ b/clients/js/src/generated/pdas/associatedToken.ts @@ -6,15 +6,21 @@ * @see https://github.com/codama-idl/codama */ -import { getAddressEncoder, getProgramDerivedAddress, type Address, type ProgramDerivedAddress } from '@solana/kit'; +import { + getAddressEncoder, + getProgramDerivedAddress, + type Address, + type HasAddress, + type ProgramDerivedAddress, +} from '@solana/kit'; export type AssociatedTokenSeeds = { /** The wallet address of the associated token account. */ - owner: Address; + owner: Address | HasAddress; /** The address of the token program to use. */ - tokenProgram: Address; + tokenProgram: Address | HasAddress; /** The mint address of the associated token account. */ - mint: Address; + mint: Address | HasAddress; }; export async function findAssociatedTokenPda( diff --git a/package.json b/package.json index 20310423..cd192359 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@codama/renderers-js": "^2.5.0", + "@codama/renderers-js": "^2.6.0", "codama": "^1.10.0" }, "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2dfffa25..88ba39ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@codama/renderers-js': - specifier: ^2.5.0 - version: 2.5.0 + specifier: ^2.6.0 + version: 2.6.0 codama: specifier: ^1.10.0 version: 1.11.0 @@ -37,8 +37,8 @@ packages: '@codama/renderers-core@1.4.1': resolution: {integrity: sha512-L/mNuzP29emEz9O2+tghToNvtTnfjpenJ984LrnRi4p8uonf3vOROUzDE+9w5httoowQt0YHCxFvQ8DP5lK0DQ==} - '@codama/renderers-js@2.5.0': - resolution: {integrity: sha512-Jh7qkU4jim2YX7JZujSzlMsmi8PIfGW4ZVLF69uq6EmGZJ48oxRR9zVGc1BxYWH3PHxRQsJCLlEzRKqb93XGcA==} + '@codama/renderers-js@2.6.0': + resolution: {integrity: sha512-GHYRyFuy87mn2VGm40mxnG/cSsei6ua6/PlQdddismp0HHrUoxpNncx6nlmbPBxPGiZbXHbj8RZoV5qer4P40A==} engines: {node: '>=20.18.0'} '@codama/validators@1.11.0': @@ -241,7 +241,7 @@ snapshots: '@codama/nodes': 1.11.0 '@codama/visitors-core': 1.11.0 - '@codama/renderers-js@2.5.0': + '@codama/renderers-js@2.6.0': dependencies: '@codama/errors': 1.11.0 '@codama/nodes': 1.11.0 From 5f27a63e1244a90e57eb0ab479309880e76ba8cf Mon Sep 17 00:00:00 2001 From: amilz <85324096+amilz@users.noreply.github.com> Date: Wed, 14 Oct 2026 14:10:40 -0700 Subject: [PATCH 4/6] Accept HasAddress mint and freeze authorities in createMint Widen `mintAuthority` to `Address | HasAddress` and `freezeAuthority` to `OptionOrNullable
`, matching the regenerated `getInitializeMint2Instruction`. The async ATA plans now pass `tokenProgram` straight to `findAssociatedTokenPda`, whose seeds accept `HasAddress`. --- clients/js/src/createMint.ts | 4 ++-- clients/js/src/mintToATA.ts | 4 +--- clients/js/src/transferToATA.ts | 4 +--- clients/js/test/createMint.test.ts | 29 +++++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/clients/js/src/createMint.ts b/clients/js/src/createMint.ts index c17e6332..df714a85 100644 --- a/clients/js/src/createMint.ts +++ b/clients/js/src/createMint.ts @@ -20,9 +20,9 @@ export type CreateMintInstructionPlanInput = { /** Number of base 10 digits to the right of the decimal place. */ decimals: number; /** The authority/multisignature to mint tokens. */ - mintAuthority: Address; + mintAuthority: Address | HasAddress; /** The optional freeze authority/multisignature of the mint. */ - freezeAuthority?: OptionOrNullable
; + freezeAuthority?: OptionOrNullable
; /** * Optional override for the amount of Lamports to fund the mint account with. * @default enough to make the account rent-exempt (currently 1,461,600 Lamports) diff --git a/clients/js/src/mintToATA.ts b/clients/js/src/mintToATA.ts index ed078f12..b4adea41 100644 --- a/clients/js/src/mintToATA.ts +++ b/clients/js/src/mintToATA.ts @@ -87,9 +87,7 @@ export async function getMintToATAInstructionPlanAsync( input: MintToATAInstructionPlanAsyncInput, config?: MintToATAInstructionPlanConfig, ): Promise { - const tokenProgram = - (config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram)) ?? - TOKEN_PROGRAM_ADDRESS; + const tokenProgram = config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS; let ata = input.ata; if (!ata) { [ata] = await findAssociatedTokenPda({ diff --git a/clients/js/src/transferToATA.ts b/clients/js/src/transferToATA.ts index aff10a73..2b3a167b 100644 --- a/clients/js/src/transferToATA.ts +++ b/clients/js/src/transferToATA.ts @@ -92,9 +92,7 @@ export async function getTransferToATAInstructionPlanAsync( input: TransferToATAInstructionPlanAsyncInput, config?: TransferToATAInstructionPlanConfig, ): Promise { - const tokenProgram = - (config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram)) ?? - TOKEN_PROGRAM_ADDRESS; + const tokenProgram = config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS; const mint = getAddressFromResolvedInstructionAccount('mint', input.mint); diff --git a/clients/js/test/createMint.test.ts b/clients/js/test/createMint.test.ts index f8b66565..74a70dea 100644 --- a/clients/js/test/createMint.test.ts +++ b/clients/js/test/createMint.test.ts @@ -79,3 +79,32 @@ it('accepts address wrappers for the program overrides', async () => { const mintAccount = await fetchMint(client.rpc, mint.address); expect(mintAccount).toMatchObject({ programAddress: TOKEN_PROGRAM_ADDRESS, data: { isInitialized: true } }); }); + +it('accepts address wrappers for the mint and freeze authorities', async () => { + // Given a mint authority, a freeze authority and a mint account. + const client = await createTestClient(); + const [mintAuthority, freezeAuthority, mint] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + + // When we create the mint passing the authorities as HasAddress wrappers. + await client.token.instructions + .createMint({ + newMint: mint, + decimals: 2, + mintAuthority: { address: mintAuthority.address }, + freezeAuthority: some({ address: freezeAuthority.address }), + }) + .sendTransaction(); + + // Then we expect the mint account to store the unwrapped authority addresses. + const mintAccount = await fetchMint(client.rpc, mint.address); + expect(mintAccount).toMatchObject({ + data: { + mintAuthority: some(mintAuthority.address), + freezeAuthority: some(freezeAuthority.address), + }, + }); +}); From 042536f7919b0873e7f0c0c0a3df5a61a9d36af4 Mon Sep 17 00:00:00 2001 From: amilz <85324096+amilz@users.noreply.github.com> Date: Thu, 15 Oct 2026 07:16:20 -0700 Subject: [PATCH 5/6] Bump Codama JS renderer to 2.7.0 and forward plugin program address The renderer now accepts HasAddress program address overrides, so the ATA instruction plans pass their program configs through without unwrapping. The token plugin accepts an optional programAddress that defaults the program for generated, batch and plan-based instructions. --- clients/js/src/batch.ts | 5 +- clients/js/src/generated/accounts/mint.ts | 20 +- clients/js/src/generated/accounts/multisig.ts | 20 +- clients/js/src/generated/accounts/token.ts | 20 +- .../src/generated/errors/associatedToken.ts | 6 +- clients/js/src/generated/errors/token.ts | 6 +- .../instructions/amountToUiAmount.ts | 5 +- .../js/src/generated/instructions/approve.ts | 5 +- .../generated/instructions/approveChecked.ts | 5 +- .../js/src/generated/instructions/batch.ts | 5 +- clients/js/src/generated/instructions/burn.ts | 5 +- .../src/generated/instructions/burnChecked.ts | 5 +- .../generated/instructions/closeAccount.ts | 5 +- .../instructions/createAssociatedToken.ts | 10 +- .../createAssociatedTokenIdempotent.ts | 10 +- .../generated/instructions/freezeAccount.ts | 5 +- .../instructions/getAccountDataSize.ts | 5 +- .../instructions/initializeAccount.ts | 5 +- .../instructions/initializeAccount2.ts | 5 +- .../instructions/initializeAccount3.ts | 5 +- .../instructions/initializeImmutableOwner.ts | 5 +- .../generated/instructions/initializeMint.ts | 5 +- .../generated/instructions/initializeMint2.ts | 5 +- .../instructions/initializeMultisig.ts | 5 +- .../instructions/initializeMultisig2.ts | 5 +- .../js/src/generated/instructions/mintTo.ts | 5 +- .../generated/instructions/mintToChecked.ts | 5 +- .../recoverNestedAssociatedToken.ts | 10 +- .../js/src/generated/instructions/revoke.ts | 5 +- .../generated/instructions/setAuthority.ts | 5 +- .../src/generated/instructions/syncNative.ts | 5 +- .../src/generated/instructions/thawAccount.ts | 5 +- .../js/src/generated/instructions/transfer.ts | 5 +- .../generated/instructions/transferChecked.ts | 5 +- .../instructions/uiAmountToAmount.ts | 5 +- .../generated/instructions/unwrapLamports.ts | 5 +- .../instructions/withdrawExcessLamports.ts | 5 +- .../js/src/generated/pdas/associatedToken.ts | 6 +- .../src/generated/programs/associatedToken.ts | 37 ++- clients/js/src/generated/programs/token.ts | 301 +++++++++++++++--- clients/js/src/mintToATA.ts | 11 +- clients/js/src/plugin.ts | 36 ++- clients/js/src/transferToATA.ts | 11 +- clients/js/test/plugin.test.ts | 77 +++++ package.json | 2 +- pnpm-lock.yaml | 10 +- 46 files changed, 555 insertions(+), 183 deletions(-) create mode 100644 clients/js/test/plugin.test.ts diff --git a/clients/js/src/batch.ts b/clients/js/src/batch.ts index 6254fb4a..36b55839 100644 --- a/clients/js/src/batch.ts +++ b/clients/js/src/batch.ts @@ -24,9 +24,10 @@ export type BatchInstruction< export function getBatchInstruction( instructions: BatchableInstruction[], - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): BatchInstruction[]> { - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; const hasNestedBatchInstruction = instructions.some( instruction => instruction.programAddress === programAddress && instruction.data?.[0] === BATCH_DISCRIMINATOR, ); diff --git a/clients/js/src/generated/accounts/mint.ts b/clients/js/src/generated/accounts/mint.ts index 74eb8be5..c3f34add 100644 --- a/clients/js/src/generated/accounts/mint.ts +++ b/clients/js/src/generated/accounts/mint.ts @@ -117,7 +117,7 @@ export function decodeMint( export async function fetchMint( rpc: Parameters[0], - address: Address, + address: Address | HasAddress, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeMint(rpc, address, config); @@ -127,16 +127,20 @@ export async function fetchMint( export async function fetchMaybeMint( rpc: Parameters[0], - address: Address, + address: Address | HasAddress, config?: FetchAccountConfig, ): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); + const maybeAccount = await fetchEncodedAccount( + rpc, + typeof address === 'string' ? address : address.address, + config, + ); return decodeMint(maybeAccount); } export async function fetchAllMint( rpc: Parameters[0], - addresses: Array
, + addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeMint(rpc, addresses, config); @@ -146,10 +150,14 @@ export async function fetchAllMint( export async function fetchAllMaybeMint( rpc: Parameters[0], - addresses: Array
, + addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); + const maybeAccounts = await fetchEncodedAccounts( + rpc, + addresses.map(a => (typeof a === 'string' ? a : a.address)), + config, + ); return maybeAccounts.map(maybeAccount => decodeMint(maybeAccount)); } diff --git a/clients/js/src/generated/accounts/multisig.ts b/clients/js/src/generated/accounts/multisig.ts index a84dd763..1b9ffff5 100644 --- a/clients/js/src/generated/accounts/multisig.ts +++ b/clients/js/src/generated/accounts/multisig.ts @@ -97,7 +97,7 @@ export function decodeMultisig( export async function fetchMultisig( rpc: Parameters[0], - address: Address, + address: Address | HasAddress, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeMultisig(rpc, address, config); @@ -107,16 +107,20 @@ export async function fetchMultisig( export async function fetchMaybeMultisig( rpc: Parameters[0], - address: Address, + address: Address | HasAddress, config?: FetchAccountConfig, ): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); + const maybeAccount = await fetchEncodedAccount( + rpc, + typeof address === 'string' ? address : address.address, + config, + ); return decodeMultisig(maybeAccount); } export async function fetchAllMultisig( rpc: Parameters[0], - addresses: Array
, + addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config); @@ -126,10 +130,14 @@ export async function fetchAllMultisig( export async function fetchAllMaybeMultisig( rpc: Parameters[0], - addresses: Array
, + addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); + const maybeAccounts = await fetchEncodedAccounts( + rpc, + addresses.map(a => (typeof a === 'string' ? a : a.address)), + config, + ); return maybeAccounts.map(maybeAccount => decodeMultisig(maybeAccount)); } diff --git a/clients/js/src/generated/accounts/token.ts b/clients/js/src/generated/accounts/token.ts index 85955004..aeee87fb 100644 --- a/clients/js/src/generated/accounts/token.ts +++ b/clients/js/src/generated/accounts/token.ts @@ -140,7 +140,7 @@ export function decodeToken( export async function fetchToken( rpc: Parameters[0], - address: Address, + address: Address | HasAddress, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeToken(rpc, address, config); @@ -150,16 +150,20 @@ export async function fetchToken( export async function fetchMaybeToken( rpc: Parameters[0], - address: Address, + address: Address | HasAddress, config?: FetchAccountConfig, ): Promise> { - const maybeAccount = await fetchEncodedAccount(rpc, address, config); + const maybeAccount = await fetchEncodedAccount( + rpc, + typeof address === 'string' ? address : address.address, + config, + ); return decodeToken(maybeAccount); } export async function fetchAllToken( rpc: Parameters[0], - addresses: Array
, + addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeToken(rpc, addresses, config); @@ -169,10 +173,14 @@ export async function fetchAllToken( export async function fetchAllMaybeToken( rpc: Parameters[0], - addresses: Array
, + addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { - const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); + const maybeAccounts = await fetchEncodedAccounts( + rpc, + addresses.map(a => (typeof a === 'string' ? a : a.address)), + config, + ); return maybeAccounts.map(maybeAccount => decodeToken(maybeAccount)); } diff --git a/clients/js/src/generated/errors/associatedToken.ts b/clients/js/src/generated/errors/associatedToken.ts index 6afde0ea..b2b35cf9 100644 --- a/clients/js/src/generated/errors/associatedToken.ts +++ b/clients/js/src/generated/errors/associatedToken.ts @@ -9,6 +9,7 @@ import { isProgramError, type Address, + type HasAddress, type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, type SolanaError, } from '@solana/kit'; @@ -38,7 +39,10 @@ export function isAssociatedTokenError }, code?: TProgramErrorCode, + config: { programAddress?: Address | HasAddress } = {}, ): error is SolanaError & Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> { - return isProgramError(error, transactionMessage, ASSOCIATED_TOKEN_PROGRAM_ADDRESS, code); + const programAddressInput = config.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; + return isProgramError(error, transactionMessage, programAddress, code); } diff --git a/clients/js/src/generated/errors/token.ts b/clients/js/src/generated/errors/token.ts index ce21f30c..37cef10d 100644 --- a/clients/js/src/generated/errors/token.ts +++ b/clients/js/src/generated/errors/token.ts @@ -9,6 +9,7 @@ import { isProgramError, type Address, + type HasAddress, type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, type SolanaError, } from '@solana/kit'; @@ -115,7 +116,10 @@ export function isTokenError( error: unknown, transactionMessage: { instructions: Record }, code?: TProgramErrorCode, + config: { programAddress?: Address | HasAddress } = {}, ): error is SolanaError & Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> { - return isProgramError(error, transactionMessage, TOKEN_PROGRAM_ADDRESS, code); + const programAddressInput = config.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; + return isProgramError(error, transactionMessage, programAddress, code); } diff --git a/clients/js/src/generated/instructions/amountToUiAmount.ts b/clients/js/src/generated/instructions/amountToUiAmount.ts index 0a19cdc4..54f0bb2a 100644 --- a/clients/js/src/generated/instructions/amountToUiAmount.ts +++ b/clients/js/src/generated/instructions/amountToUiAmount.ts @@ -99,13 +99,14 @@ export function getAmountToUiAmountInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: AmountToUiAmountInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): AmountToUiAmountInstruction< TProgramAddress, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/approve.ts b/clients/js/src/generated/instructions/approve.ts index 4d040adc..b9baeb03 100644 --- a/clients/js/src/generated/instructions/approve.ts +++ b/clients/js/src/generated/instructions/approve.ts @@ -120,7 +120,7 @@ export function getApproveInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: ApproveInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): ApproveInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -133,7 +133,8 @@ export function getApproveInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/approveChecked.ts b/clients/js/src/generated/instructions/approveChecked.ts index 7437181b..e60745f4 100644 --- a/clients/js/src/generated/instructions/approveChecked.ts +++ b/clients/js/src/generated/instructions/approveChecked.ts @@ -136,7 +136,7 @@ export function getApproveCheckedInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: ApproveCheckedInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): ApproveCheckedInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -150,7 +150,8 @@ export function getApproveCheckedInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/batch.ts b/clients/js/src/generated/instructions/batch.ts index c4e354ee..f2b16e7a 100644 --- a/clients/js/src/generated/instructions/batch.ts +++ b/clients/js/src/generated/instructions/batch.ts @@ -98,10 +98,11 @@ export type BatchInput = { export function getBatchInstruction( input: BatchInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): BatchInstruction { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Original args. const args = { ...input }; diff --git a/clients/js/src/generated/instructions/burn.ts b/clients/js/src/generated/instructions/burn.ts index dd0aa151..bff17cd1 100644 --- a/clients/js/src/generated/instructions/burn.ts +++ b/clients/js/src/generated/instructions/burn.ts @@ -117,7 +117,7 @@ export function getBurnInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: BurnInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): BurnInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -130,7 +130,8 @@ export function getBurnInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/burnChecked.ts b/clients/js/src/generated/instructions/burnChecked.ts index 3490bd15..1fea04ab 100644 --- a/clients/js/src/generated/instructions/burnChecked.ts +++ b/clients/js/src/generated/instructions/burnChecked.ts @@ -130,7 +130,7 @@ export function getBurnCheckedInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: BurnCheckedInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): BurnCheckedInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -143,7 +143,8 @@ export function getBurnCheckedInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/closeAccount.ts b/clients/js/src/generated/instructions/closeAccount.ts index d337ed3d..a302c66e 100644 --- a/clients/js/src/generated/instructions/closeAccount.ts +++ b/clients/js/src/generated/instructions/closeAccount.ts @@ -107,7 +107,7 @@ export function getCloseAccountInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: CloseAccountInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): CloseAccountInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -120,7 +120,8 @@ export function getCloseAccountInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/createAssociatedToken.ts b/clients/js/src/generated/instructions/createAssociatedToken.ts index c8a25b11..2a63b677 100644 --- a/clients/js/src/generated/instructions/createAssociatedToken.ts +++ b/clients/js/src/generated/instructions/createAssociatedToken.ts @@ -136,7 +136,7 @@ export async function getCreateAssociatedTokenInstructionAsync< TAccountSystemProgram, TAccountTokenProgram >, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): Promise< CreateAssociatedTokenInstruction< TProgramAddress, @@ -149,7 +149,8 @@ export async function getCreateAssociatedTokenInstructionAsync< > > { // Program address. - const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); @@ -246,7 +247,7 @@ export function getCreateAssociatedTokenInstruction< TAccountSystemProgram, TAccountTokenProgram >, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): CreateAssociatedTokenInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -257,7 +258,8 @@ export function getCreateAssociatedTokenInstruction< ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/createAssociatedTokenIdempotent.ts b/clients/js/src/generated/instructions/createAssociatedTokenIdempotent.ts index 73c98c2a..87cd2328 100644 --- a/clients/js/src/generated/instructions/createAssociatedTokenIdempotent.ts +++ b/clients/js/src/generated/instructions/createAssociatedTokenIdempotent.ts @@ -136,7 +136,7 @@ export async function getCreateAssociatedTokenIdempotentInstructionAsync< TAccountSystemProgram, TAccountTokenProgram >, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): Promise< CreateAssociatedTokenIdempotentInstruction< TProgramAddress, @@ -149,7 +149,8 @@ export async function getCreateAssociatedTokenIdempotentInstructionAsync< > > { // Program address. - const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); @@ -246,7 +247,7 @@ export function getCreateAssociatedTokenIdempotentInstruction< TAccountSystemProgram, TAccountTokenProgram >, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): CreateAssociatedTokenIdempotentInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -257,7 +258,8 @@ export function getCreateAssociatedTokenIdempotentInstruction< ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/freezeAccount.ts b/clients/js/src/generated/instructions/freezeAccount.ts index a3adf250..e480e4b3 100644 --- a/clients/js/src/generated/instructions/freezeAccount.ts +++ b/clients/js/src/generated/instructions/freezeAccount.ts @@ -107,7 +107,7 @@ export function getFreezeAccountInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: FreezeAccountInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): FreezeAccountInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -120,7 +120,8 @@ export function getFreezeAccountInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/getAccountDataSize.ts b/clients/js/src/generated/instructions/getAccountDataSize.ts index fe630f69..35d00114 100644 --- a/clients/js/src/generated/instructions/getAccountDataSize.ts +++ b/clients/js/src/generated/instructions/getAccountDataSize.ts @@ -83,13 +83,14 @@ export function getGetAccountDataSizeInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: GetAccountDataSizeInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): GetAccountDataSizeInstruction< TProgramAddress, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeAccount.ts b/clients/js/src/generated/instructions/initializeAccount.ts index 7bff3eee..43abf1a0 100644 --- a/clients/js/src/generated/instructions/initializeAccount.ts +++ b/clients/js/src/generated/instructions/initializeAccount.ts @@ -107,7 +107,7 @@ export function getInitializeAccountInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeAccountInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeAccountInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -116,7 +116,8 @@ export function getInitializeAccountInstruction< ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeAccount2.ts b/clients/js/src/generated/instructions/initializeAccount2.ts index 4919ef1b..f8583697 100644 --- a/clients/js/src/generated/instructions/initializeAccount2.ts +++ b/clients/js/src/generated/instructions/initializeAccount2.ts @@ -118,7 +118,7 @@ export function getInitializeAccount2Instruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeAccount2Input, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeAccount2Instruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -126,7 +126,8 @@ export function getInitializeAccount2Instruction< ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeAccount3.ts b/clients/js/src/generated/instructions/initializeAccount3.ts index bc5a2f2a..9f41d8b9 100644 --- a/clients/js/src/generated/instructions/initializeAccount3.ts +++ b/clients/js/src/generated/instructions/initializeAccount3.ts @@ -112,14 +112,15 @@ export function getInitializeAccount3Instruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeAccount3Input, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeAccount3Instruction< TProgramAddress, ResolvedInstructionAccountMeta>, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeImmutableOwner.ts b/clients/js/src/generated/instructions/initializeImmutableOwner.ts index ca2be81b..b56216f7 100644 --- a/clients/js/src/generated/instructions/initializeImmutableOwner.ts +++ b/clients/js/src/generated/instructions/initializeImmutableOwner.ts @@ -86,13 +86,14 @@ export function getInitializeImmutableOwnerInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeImmutableOwnerInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeImmutableOwnerInstruction< TProgramAddress, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeMint.ts b/clients/js/src/generated/instructions/initializeMint.ts index 50dc2f62..35108ac7 100644 --- a/clients/js/src/generated/instructions/initializeMint.ts +++ b/clients/js/src/generated/instructions/initializeMint.ts @@ -135,14 +135,15 @@ export function getInitializeMintInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeMintInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeMintInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeMint2.ts b/clients/js/src/generated/instructions/initializeMint2.ts index 265885d3..3f3ffa2b 100644 --- a/clients/js/src/generated/instructions/initializeMint2.ts +++ b/clients/js/src/generated/instructions/initializeMint2.ts @@ -123,13 +123,14 @@ export function getInitializeMint2Instruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeMint2Input, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeMint2Instruction< TProgramAddress, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeMultisig.ts b/clients/js/src/generated/instructions/initializeMultisig.ts index 61014bea..4ea977fe 100644 --- a/clients/js/src/generated/instructions/initializeMultisig.ts +++ b/clients/js/src/generated/instructions/initializeMultisig.ts @@ -111,14 +111,15 @@ export function getInitializeMultisigInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeMultisigInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeMultisigInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/initializeMultisig2.ts b/clients/js/src/generated/instructions/initializeMultisig2.ts index 7d9d996d..3fb45b06 100644 --- a/clients/js/src/generated/instructions/initializeMultisig2.ts +++ b/clients/js/src/generated/instructions/initializeMultisig2.ts @@ -99,13 +99,14 @@ export function getInitializeMultisig2Instruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: InitializeMultisig2Input, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): InitializeMultisig2Instruction< TProgramAddress, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/mintTo.ts b/clients/js/src/generated/instructions/mintTo.ts index c29b7794..15b35d2b 100644 --- a/clients/js/src/generated/instructions/mintTo.ts +++ b/clients/js/src/generated/instructions/mintTo.ts @@ -120,7 +120,7 @@ export function getMintToInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: MintToInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): MintToInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -133,7 +133,8 @@ export function getMintToInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/mintToChecked.ts b/clients/js/src/generated/instructions/mintToChecked.ts index e8d5dd60..c167209d 100644 --- a/clients/js/src/generated/instructions/mintToChecked.ts +++ b/clients/js/src/generated/instructions/mintToChecked.ts @@ -130,7 +130,7 @@ export function getMintToCheckedInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: MintToCheckedInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): MintToCheckedInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -143,7 +143,8 @@ export function getMintToCheckedInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/recoverNestedAssociatedToken.ts b/clients/js/src/generated/instructions/recoverNestedAssociatedToken.ts index a83ab298..ce58eb29 100644 --- a/clients/js/src/generated/instructions/recoverNestedAssociatedToken.ts +++ b/clients/js/src/generated/instructions/recoverNestedAssociatedToken.ts @@ -153,7 +153,7 @@ export async function getRecoverNestedAssociatedTokenInstructionAsync< TAccountWalletAddress, TAccountTokenProgram >, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): Promise< RecoverNestedAssociatedTokenInstruction< TProgramAddress, @@ -182,7 +182,8 @@ export async function getRecoverNestedAssociatedTokenInstructionAsync< > > { // Program address. - const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); @@ -342,7 +343,7 @@ export function getRecoverNestedAssociatedTokenInstruction< TAccountWalletAddress, TAccountTokenProgram >, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): RecoverNestedAssociatedTokenInstruction< TProgramAddress, ResolvedInstructionAccountMeta< @@ -369,7 +370,8 @@ export function getRecoverNestedAssociatedTokenInstruction< ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/revoke.ts b/clients/js/src/generated/instructions/revoke.ts index 4cedb983..06a3974f 100644 --- a/clients/js/src/generated/instructions/revoke.ts +++ b/clients/js/src/generated/instructions/revoke.ts @@ -98,7 +98,7 @@ export function getRevokeInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: RevokeInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): RevokeInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -110,7 +110,8 @@ export function getRevokeInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/setAuthority.ts b/clients/js/src/generated/instructions/setAuthority.ts index 410fce4d..45aa94d5 100644 --- a/clients/js/src/generated/instructions/setAuthority.ts +++ b/clients/js/src/generated/instructions/setAuthority.ts @@ -130,7 +130,7 @@ export function getSetAuthorityInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: SetAuthorityInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): SetAuthorityInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -142,7 +142,8 @@ export function getSetAuthorityInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/syncNative.ts b/clients/js/src/generated/instructions/syncNative.ts index f209405b..c084a88a 100644 --- a/clients/js/src/generated/instructions/syncNative.ts +++ b/clients/js/src/generated/instructions/syncNative.ts @@ -97,14 +97,15 @@ export function getSyncNativeInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: SyncNativeInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): SyncNativeInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted'); diff --git a/clients/js/src/generated/instructions/thawAccount.ts b/clients/js/src/generated/instructions/thawAccount.ts index 3749bc32..a423a5e4 100644 --- a/clients/js/src/generated/instructions/thawAccount.ts +++ b/clients/js/src/generated/instructions/thawAccount.ts @@ -107,7 +107,7 @@ export function getThawAccountInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: ThawAccountInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): ThawAccountInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -120,7 +120,8 @@ export function getThawAccountInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/transfer.ts b/clients/js/src/generated/instructions/transfer.ts index 8bc095fe..457116fc 100644 --- a/clients/js/src/generated/instructions/transfer.ts +++ b/clients/js/src/generated/instructions/transfer.ts @@ -123,7 +123,7 @@ export function getTransferInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: TransferInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): TransferInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -136,7 +136,8 @@ export function getTransferInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/transferChecked.ts b/clients/js/src/generated/instructions/transferChecked.ts index f8ada03c..1c1e0b77 100644 --- a/clients/js/src/generated/instructions/transferChecked.ts +++ b/clients/js/src/generated/instructions/transferChecked.ts @@ -136,7 +136,7 @@ export function getTransferCheckedInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: TransferCheckedInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): TransferCheckedInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -150,7 +150,8 @@ export function getTransferCheckedInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/uiAmountToAmount.ts b/clients/js/src/generated/instructions/uiAmountToAmount.ts index 71c5734f..19967c6e 100644 --- a/clients/js/src/generated/instructions/uiAmountToAmount.ts +++ b/clients/js/src/generated/instructions/uiAmountToAmount.ts @@ -99,13 +99,14 @@ export function getUiAmountToAmountInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: UiAmountToAmountInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): UiAmountToAmountInstruction< TProgramAddress, ResolvedInstructionAccountMeta> > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/unwrapLamports.ts b/clients/js/src/generated/instructions/unwrapLamports.ts index 17b603dc..77c08d3c 100644 --- a/clients/js/src/generated/instructions/unwrapLamports.ts +++ b/clients/js/src/generated/instructions/unwrapLamports.ts @@ -134,7 +134,7 @@ export function getUnwrapLamportsInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: UnwrapLamportsInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): UnwrapLamportsInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -147,7 +147,8 @@ export function getUnwrapLamportsInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/instructions/withdrawExcessLamports.ts b/clients/js/src/generated/instructions/withdrawExcessLamports.ts index 4346ffbb..dc47e533 100644 --- a/clients/js/src/generated/instructions/withdrawExcessLamports.ts +++ b/clients/js/src/generated/instructions/withdrawExcessLamports.ts @@ -110,7 +110,7 @@ export function getWithdrawExcessLamportsInstruction< TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS, >( input: WithdrawExcessLamportsInput, - config?: { programAddress?: TProgramAddress }, + config?: { programAddress?: TProgramAddress | { readonly address: TProgramAddress } }, ): WithdrawExcessLamportsInstruction< TProgramAddress, ResolvedInstructionAccountMeta>, @@ -123,7 +123,8 @@ export function getWithdrawExcessLamportsInstruction< > > { // Program address. - const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddressInput = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; // Account meta helper. const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); diff --git a/clients/js/src/generated/pdas/associatedToken.ts b/clients/js/src/generated/pdas/associatedToken.ts index 5b9735dc..df51943c 100644 --- a/clients/js/src/generated/pdas/associatedToken.ts +++ b/clients/js/src/generated/pdas/associatedToken.ts @@ -25,11 +25,13 @@ export type AssociatedTokenSeeds = { export async function findAssociatedTokenPda( seeds: AssociatedTokenSeeds, - config: { programAddress?: Address | undefined } = {}, + config: { programAddress?: Address | HasAddress | undefined } = {}, ): Promise { const { - programAddress = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, + programAddress: + programAddressInput = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, } = config; + const programAddress = typeof programAddressInput === 'string' ? programAddressInput : programAddressInput.address; return await getProgramDerivedAddress({ programAddress, seeds: [ diff --git a/clients/js/src/generated/programs/associatedToken.ts b/clients/js/src/generated/programs/associatedToken.ts index f9df2dd6..60391000 100644 --- a/clients/js/src/generated/programs/associatedToken.ts +++ b/clients/js/src/generated/programs/associatedToken.ts @@ -19,6 +19,7 @@ import { type ClientWithTransactionPlanning, type ClientWithTransactionSending, type ExtendedClient, + type HasAddress, type Instruction, type InstructionWithData, type ReadonlyUint8Array, @@ -123,12 +124,15 @@ export type AssociatedTokenPlugin = { export type AssociatedTokenPluginInstructions = { createAssociatedToken: ( input: MakeOptional, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; createAssociatedTokenIdempotent: ( input: MakeOptional, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; recoverNestedAssociatedToken: ( input: RecoverNestedAssociatedTokenAsyncInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; }; @@ -138,30 +142,43 @@ export type AssociatedTokenPluginRequirements = ClientWithPayer & ClientWithTransactionPlanning & ClientWithTransactionSending; -export function associatedTokenProgram() { +export function associatedTokenProgram(config: { programAddress?: Address | HasAddress } = {}) { return ( client: T, ): ExtendedClient => { return extendClient(client, { associatedToken: { instructions: { - createAssociatedToken: input => + createAssociatedToken: (input, instructionConfig) => addSelfPlanAndSendFunctions( client, - getCreateAssociatedTokenInstructionAsync({ ...input, payer: input.payer ?? client.payer }), + getCreateAssociatedTokenInstructionAsync( + { ...input, payer: input.payer ?? client.payer }, + { programAddress: instructionConfig?.programAddress ?? config.programAddress }, + ), ), - createAssociatedTokenIdempotent: input => + createAssociatedTokenIdempotent: (input, instructionConfig) => addSelfPlanAndSendFunctions( client, - getCreateAssociatedTokenIdempotentInstructionAsync({ - ...input, - payer: input.payer ?? client.payer, + getCreateAssociatedTokenIdempotentInstructionAsync( + { ...input, payer: input.payer ?? client.payer }, + { programAddress: instructionConfig?.programAddress ?? config.programAddress }, + ), + ), + recoverNestedAssociatedToken: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getRecoverNestedAssociatedTokenInstructionAsync(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, }), ), - recoverNestedAssociatedToken: input => - addSelfPlanAndSendFunctions(client, getRecoverNestedAssociatedTokenInstructionAsync(input)), }, - pdas: { associatedToken: findAssociatedTokenPda }, + pdas: { + associatedToken: (seeds, pdaConfig) => + findAssociatedTokenPda(seeds, { + programAddress: pdaConfig?.programAddress ?? config.programAddress, + }), + }, identifyInstruction: identifyAssociatedTokenInstruction, parseInstruction: parseAssociatedTokenInstruction, }, diff --git a/clients/js/src/generated/programs/token.ts b/clients/js/src/generated/programs/token.ts index 0b6056d1..08aae2c4 100644 --- a/clients/js/src/generated/programs/token.ts +++ b/clients/js/src/generated/programs/token.ts @@ -22,6 +22,7 @@ import { type ExtendedClient, type GetAccountInfoApi, type GetMultipleAccountsApi, + type HasAddress, type Instruction, type InstructionWithData, type ReadonlyUint8Array, @@ -518,77 +519,123 @@ export type TokenPluginAccounts = { export type TokenPluginInstructions = { initializeMint: ( input: InitializeMintInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; initializeAccount: ( input: InitializeAccountInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; initializeMultisig: ( input: InitializeMultisigInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; - transfer: (input: TransferInput) => ReturnType & SelfPlanAndSendFunctions; - approve: (input: ApproveInput) => ReturnType & SelfPlanAndSendFunctions; - revoke: (input: RevokeInput) => ReturnType & SelfPlanAndSendFunctions; + transfer: ( + input: TransferInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; + approve: ( + input: ApproveInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; + revoke: ( + input: RevokeInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; setAuthority: ( input: SetAuthorityInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; - mintTo: (input: MintToInput) => ReturnType & SelfPlanAndSendFunctions; - burn: (input: BurnInput) => ReturnType & SelfPlanAndSendFunctions; + mintTo: ( + input: MintToInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; + burn: ( + input: BurnInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; closeAccount: ( input: CloseAccountInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; freezeAccount: ( input: FreezeAccountInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; - thawAccount: (input: ThawAccountInput) => ReturnType & SelfPlanAndSendFunctions; + thawAccount: ( + input: ThawAccountInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; transferChecked: ( input: TransferCheckedInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; approveChecked: ( input: ApproveCheckedInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; mintToChecked: ( input: MintToCheckedInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; - burnChecked: (input: BurnCheckedInput) => ReturnType & SelfPlanAndSendFunctions; + burnChecked: ( + input: BurnCheckedInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; initializeAccount2: ( input: InitializeAccount2Input, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; - syncNative: (input: SyncNativeInput) => ReturnType & SelfPlanAndSendFunctions; + syncNative: ( + input: SyncNativeInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; initializeAccount3: ( input: InitializeAccount3Input, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; initializeMultisig2: ( input: InitializeMultisig2Input, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; initializeMint2: ( input: InitializeMint2Input, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; getAccountDataSize: ( input: GetAccountDataSizeInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; initializeImmutableOwner: ( input: InitializeImmutableOwnerInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; amountToUiAmount: ( input: AmountToUiAmountInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; uiAmountToAmount: ( input: UiAmountToAmountInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; withdrawExcessLamports: ( input: WithdrawExcessLamportsInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; unwrapLamports: ( input: UnwrapLamportsInput, + config?: { programAddress?: Address | HasAddress }, ) => ReturnType & SelfPlanAndSendFunctions; - batch: (input: BatchInput) => ReturnType & SelfPlanAndSendFunctions; + batch: ( + input: BatchInput, + config?: { programAddress?: Address | HasAddress }, + ) => ReturnType & SelfPlanAndSendFunctions; }; export type TokenPluginRequirements = ClientWithRpc & ClientWithTransactionPlanning & ClientWithTransactionSending; -export function tokenProgram() { +export function tokenProgram(config: { programAddress?: Address | HasAddress } = {}) { return (client: T): ExtendedClient => { return extendClient(client, { token: { @@ -598,44 +645,202 @@ export function tokenProgram() { multisig: addSelfFetchFunctions(client, getMultisigCodec()), }, instructions: { - initializeMint: input => addSelfPlanAndSendFunctions(client, getInitializeMintInstruction(input)), - initializeAccount: input => - addSelfPlanAndSendFunctions(client, getInitializeAccountInstruction(input)), - initializeMultisig: input => - addSelfPlanAndSendFunctions(client, getInitializeMultisigInstruction(input)), - transfer: input => addSelfPlanAndSendFunctions(client, getTransferInstruction(input)), - approve: input => addSelfPlanAndSendFunctions(client, getApproveInstruction(input)), - revoke: input => addSelfPlanAndSendFunctions(client, getRevokeInstruction(input)), - setAuthority: input => addSelfPlanAndSendFunctions(client, getSetAuthorityInstruction(input)), - mintTo: input => addSelfPlanAndSendFunctions(client, getMintToInstruction(input)), - burn: input => addSelfPlanAndSendFunctions(client, getBurnInstruction(input)), - closeAccount: input => addSelfPlanAndSendFunctions(client, getCloseAccountInstruction(input)), - freezeAccount: input => addSelfPlanAndSendFunctions(client, getFreezeAccountInstruction(input)), - thawAccount: input => addSelfPlanAndSendFunctions(client, getThawAccountInstruction(input)), - transferChecked: input => addSelfPlanAndSendFunctions(client, getTransferCheckedInstruction(input)), - approveChecked: input => addSelfPlanAndSendFunctions(client, getApproveCheckedInstruction(input)), - mintToChecked: input => addSelfPlanAndSendFunctions(client, getMintToCheckedInstruction(input)), - burnChecked: input => addSelfPlanAndSendFunctions(client, getBurnCheckedInstruction(input)), - initializeAccount2: input => - addSelfPlanAndSendFunctions(client, getInitializeAccount2Instruction(input)), - syncNative: input => addSelfPlanAndSendFunctions(client, getSyncNativeInstruction(input)), - initializeAccount3: input => - addSelfPlanAndSendFunctions(client, getInitializeAccount3Instruction(input)), - initializeMultisig2: input => - addSelfPlanAndSendFunctions(client, getInitializeMultisig2Instruction(input)), - initializeMint2: input => addSelfPlanAndSendFunctions(client, getInitializeMint2Instruction(input)), - getAccountDataSize: input => - addSelfPlanAndSendFunctions(client, getGetAccountDataSizeInstruction(input)), - initializeImmutableOwner: input => - addSelfPlanAndSendFunctions(client, getInitializeImmutableOwnerInstruction(input)), - amountToUiAmount: input => - addSelfPlanAndSendFunctions(client, getAmountToUiAmountInstruction(input)), - uiAmountToAmount: input => - addSelfPlanAndSendFunctions(client, getUiAmountToAmountInstruction(input)), - withdrawExcessLamports: input => - addSelfPlanAndSendFunctions(client, getWithdrawExcessLamportsInstruction(input)), - unwrapLamports: input => addSelfPlanAndSendFunctions(client, getUnwrapLamportsInstruction(input)), - batch: input => addSelfPlanAndSendFunctions(client, getBatchInstruction(input)), + initializeMint: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeMintInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeAccount: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeAccountInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeMultisig: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeMultisigInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + transfer: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getTransferInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + approve: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getApproveInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + revoke: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getRevokeInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + setAuthority: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getSetAuthorityInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + mintTo: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getMintToInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + burn: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getBurnInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + closeAccount: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getCloseAccountInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + freezeAccount: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getFreezeAccountInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + thawAccount: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getThawAccountInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + transferChecked: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getTransferCheckedInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + approveChecked: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getApproveCheckedInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + mintToChecked: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getMintToCheckedInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + burnChecked: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getBurnCheckedInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeAccount2: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeAccount2Instruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + syncNative: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getSyncNativeInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeAccount3: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeAccount3Instruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeMultisig2: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeMultisig2Instruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeMint2: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeMint2Instruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + getAccountDataSize: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getGetAccountDataSizeInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + initializeImmutableOwner: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getInitializeImmutableOwnerInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + amountToUiAmount: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getAmountToUiAmountInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + uiAmountToAmount: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getUiAmountToAmountInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + withdrawExcessLamports: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getWithdrawExcessLamportsInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + unwrapLamports: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getUnwrapLamportsInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + batch: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getBatchInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), }, identifyAccount: identifyTokenAccount, identifyInstruction: identifyTokenInstruction, diff --git a/clients/js/src/mintToATA.ts b/clients/js/src/mintToATA.ts index b4adea41..edc5ff88 100644 --- a/clients/js/src/mintToATA.ts +++ b/clients/js/src/mintToATA.ts @@ -45,11 +45,6 @@ export function getMintToATAInstructionPlan( input: MintToATAInstructionPlanInput, config?: MintToATAInstructionPlanConfig, ): InstructionPlan { - const tokenProgram = - config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram); - const associatedTokenProgram = - config?.associatedTokenProgram && - getAddressFromResolvedInstructionAccount('associatedTokenProgram', config.associatedTokenProgram); return sequentialInstructionPlan([ getCreateAssociatedTokenIdempotentInstruction( { @@ -58,10 +53,10 @@ export function getMintToATAInstructionPlan( owner: input.owner, mint: input.mint, systemProgram: config?.systemProgram, - tokenProgram, + tokenProgram: config?.tokenProgram, }, { - programAddress: associatedTokenProgram, + programAddress: config?.associatedTokenProgram, }, ), // mint to this token account @@ -75,7 +70,7 @@ export function getMintToATAInstructionPlan( multiSigners: input.multiSigners, }, { - programAddress: tokenProgram, + programAddress: config?.tokenProgram, }, ), ]); diff --git a/clients/js/src/plugin.ts b/clients/js/src/plugin.ts index 839518ab..0eeb5b98 100644 --- a/clients/js/src/plugin.ts +++ b/clients/js/src/plugin.ts @@ -1,4 +1,4 @@ -import { ClientWithGetMinimumBalance, ClientWithPayer, extendClient, pipe } from '@solana/kit'; +import { Address, ClientWithGetMinimumBalance, ClientWithPayer, extendClient, HasAddress, pipe } from '@solana/kit'; import { addSelfPlanAndSendFunctions, SelfPlanAndSendFunctions } from '@solana/kit/program-client-core'; import { getBatchInstruction } from './batch'; @@ -52,39 +52,53 @@ export type TokenPluginInstructions = Omit ReturnType & SelfPlanAndSendFunctions; }; -export function tokenProgram() { +export function tokenProgram(config: { programAddress?: Address | HasAddress } = {}) { return (client: T) => { - return pipe(client, generatedTokenProgram(), c => + return pipe(client, generatedTokenProgram(config), c => extendClient(c, { token: { ...c.token, instructions: { ...c.token.instructions, - batch: (input, config) => - addSelfPlanAndSendFunctions(client, getBatchInstruction(input, config)), - createMint: (input, config) => + batch: (input, instructionConfig) => + addSelfPlanAndSendFunctions( + client, + getBatchInstruction(input, { + programAddress: instructionConfig?.programAddress ?? config.programAddress, + }), + ), + createMint: (input, instructionConfig) => addSelfPlanAndSendFunctions( client, getCreateMintInstructionPlan( client, { ...input, payer: input.payer ?? client.payer }, - config, + { + ...instructionConfig, + tokenProgram: instructionConfig?.tokenProgram ?? config.programAddress, + }, ), ), - mintToATA: (input, config) => + mintToATA: (input, instructionConfig) => addSelfPlanAndSendFunctions( client, getMintToATAInstructionPlanAsync( { ...input, payer: input.payer ?? client.payer }, - config, + { + ...instructionConfig, + tokenProgram: instructionConfig?.tokenProgram ?? config.programAddress, + }, ), ), - transferToATA: (input, config) => + transferToATA: (input, instructionConfig) => addSelfPlanAndSendFunctions( client, getTransferToATAInstructionPlanAsync( { ...input, payer: input.payer ?? client.payer }, - config, + { + ...instructionConfig, + tokenProgram: instructionConfig?.tokenProgram ?? config.programAddress, + }, ), ), }, diff --git a/clients/js/src/transferToATA.ts b/clients/js/src/transferToATA.ts index 2b3a167b..252bdabe 100644 --- a/clients/js/src/transferToATA.ts +++ b/clients/js/src/transferToATA.ts @@ -47,11 +47,6 @@ export function getTransferToATAInstructionPlan( input: TransferToATAInstructionPlanInput, config?: TransferToATAInstructionPlanConfig, ): InstructionPlan { - const tokenProgram = - config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram); - const associatedTokenProgram = - config?.associatedTokenProgram && - getAddressFromResolvedInstructionAccount('associatedTokenProgram', config.associatedTokenProgram); return sequentialInstructionPlan([ getCreateAssociatedTokenIdempotentInstruction( { @@ -60,10 +55,10 @@ export function getTransferToATAInstructionPlan( owner: input.recipient, mint: input.mint, systemProgram: config?.systemProgram, - tokenProgram, + tokenProgram: config?.tokenProgram, }, { - programAddress: associatedTokenProgram, + programAddress: config?.associatedTokenProgram, }, ), getTransferCheckedInstruction( @@ -77,7 +72,7 @@ export function getTransferToATAInstructionPlan( multiSigners: input.multiSigners, }, { - programAddress: tokenProgram, + programAddress: config?.tokenProgram, }, ), ]); diff --git a/clients/js/test/plugin.test.ts b/clients/js/test/plugin.test.ts new file mode 100644 index 00000000..8ce2a861 --- /dev/null +++ b/clients/js/test/plugin.test.ts @@ -0,0 +1,77 @@ +import { + Address, + address, + createClient, + generateKeyPairSigner, + lamports, + SequentialInstructionPlan, +} from '@solana/kit'; +import { litesvm } from '@solana/kit-plugin-litesvm'; +import { airdropSigner, generatedSigner } from '@solana/kit-plugin-signer'; +import { expect, it } from 'vitest'; + +import { tokenProgram } from '../src'; + +const CUSTOM_PROGRAM_ADDRESS = address('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'); + +const createCustomProgramClient = () => + createClient() + .use(generatedSigner()) + .use(litesvm()) + .use(airdropSigner(lamports(1_000_000_000n))) + .use(tokenProgram({ programAddress: { address: CUSTOM_PROGRAM_ADDRESS } })); + +const getProgramAddresses = (plan: SequentialInstructionPlan): Address[] => + plan.plans.flatMap(child => (child.kind === 'single' ? [child.instruction.programAddress] : [])); + +it('targets the plugin program address in generated and custom instructions', async () => { + // Given a client whose token plugin targets a custom program address. + const client = await createCustomProgramClient(); + const [source, destination, mint, owner] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + + // When we build generated, batch and plan-based instructions. + const transfer = client.token.instructions.transfer({ + source: source.address, + destination: destination.address, + authority: owner, + amount: 1n, + }); + const batch = client.token.instructions.batch([transfer]); + const mintToATA = (await client.token.instructions.mintToATA({ + mint: mint.address, + owner: owner.address, + mintAuthority: owner, + amount: 1n, + decimals: 0, + })) as SequentialInstructionPlan; + + // Then they all target the custom program address. + expect(transfer.programAddress).toBe(CUSTOM_PROGRAM_ADDRESS); + expect(batch.programAddress).toBe(CUSTOM_PROGRAM_ADDRESS); + expect(getProgramAddresses(mintToATA)[1]).toBe(CUSTOM_PROGRAM_ADDRESS); +}); + +it('lets per-instruction program addresses take precedence over the plugin one', async () => { + // Given a client whose token plugin targets a custom program address. + const client = await createCustomProgramClient(); + const [source, destination, owner] = await Promise.all([ + generateKeyPairSigner(), + generateKeyPairSigner(), + generateKeyPairSigner(), + ]); + const override = (await generateKeyPairSigner()).address; + + // When we override the program address for a single instruction. + const transfer = client.token.instructions.transfer( + { source: source.address, destination: destination.address, authority: owner, amount: 1n }, + { programAddress: override }, + ); + + // Then that instruction targets the override. + expect(transfer.programAddress).toBe(override); +}); diff --git a/package.json b/package.json index cd192359..4735056a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "devDependencies": { - "@codama/renderers-js": "^2.6.0", + "@codama/renderers-js": "^2.7.0", "codama": "^1.10.0" }, "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88ba39ee..1656af9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@codama/renderers-js': - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.7.0 + version: 2.7.0 codama: specifier: ^1.10.0 version: 1.11.0 @@ -37,8 +37,8 @@ packages: '@codama/renderers-core@1.4.1': resolution: {integrity: sha512-L/mNuzP29emEz9O2+tghToNvtTnfjpenJ984LrnRi4p8uonf3vOROUzDE+9w5httoowQt0YHCxFvQ8DP5lK0DQ==} - '@codama/renderers-js@2.6.0': - resolution: {integrity: sha512-GHYRyFuy87mn2VGm40mxnG/cSsei6ua6/PlQdddismp0HHrUoxpNncx6nlmbPBxPGiZbXHbj8RZoV5qer4P40A==} + '@codama/renderers-js@2.7.0': + resolution: {integrity: sha512-CjGubePd5rupdWzc+8ybnJ7zhNmAsJ5SkTipBkEQI+xG0QP8r7xGJpx/skzgbA7wiuRNsAe6DemKctzLF1C79w==} engines: {node: '>=20.18.0'} '@codama/validators@1.11.0': @@ -241,7 +241,7 @@ snapshots: '@codama/nodes': 1.11.0 '@codama/visitors-core': 1.11.0 - '@codama/renderers-js@2.6.0': + '@codama/renderers-js@2.7.0': dependencies: '@codama/errors': 1.11.0 '@codama/nodes': 1.11.0 From 5ed23e1b7f7e679225150ac0c9d5f43bba3c7caa Mon Sep 17 00:00:00 2001 From: Loris Leiva Date: Fri, 16 Oct 2026 12:17:51 +0100 Subject: [PATCH 6/6] Bump system to 0.16 and drop redundant createMint unwraps Bumps `@solana-program/system` to 0.16 and the Kit plugins to 0.19 in the JS client. System 0.16's `getCreateAccountInstruction` accepts `HasAddress` program addresses, so `getCreateMintInstructionPlan` no longer needs to unwrap the `systemProgram` and `tokenProgram` overrides before passing them through. --- clients/js/package.json | 6 +- clients/js/pnpm-lock.yaml | 836 +++++++++++++++++------------------ clients/js/src/createMint.ts | 11 +- 3 files changed, 424 insertions(+), 429 deletions(-) diff --git a/clients/js/package.json b/clients/js/package.json index faa54bf0..b9bf3778 100644 --- a/clients/js/package.json +++ b/clients/js/package.json @@ -44,13 +44,13 @@ "prepublishOnly": "pnpm build" }, "dependencies": { - "@solana-program/system": "^0.15.0" + "@solana-program/system": "^0.16.0" }, "devDependencies": { "@solana-config/oxc": "^0.1.1", "@solana/kit": "^8.5.0", - "@solana/kit-plugin-litesvm": "^0.18.0", - "@solana/kit-plugin-signer": "^0.18.0", + "@solana/kit-plugin-litesvm": "^0.19.0", + "@solana/kit-plugin-signer": "^0.19.0", "@types/node": "^24", "oxfmt": "^0.55.0", "oxlint": "^1.70.0", diff --git a/clients/js/pnpm-lock.yaml b/clients/js/pnpm-lock.yaml index 493f714b..c603dead 100644 --- a/clients/js/pnpm-lock.yaml +++ b/clients/js/pnpm-lock.yaml @@ -9,30 +9,30 @@ importers: .: dependencies: '@solana-program/system': - specifier: ^0.15.0 - version: 0.15.0(@solana/kit@8.5.0(typescript@5.9.3)) + specifier: ^0.16.0 + version: 0.16.0(@solana/kit@8.5.0(typescript@5.9.3)) devDependencies: '@solana-config/oxc': specifier: ^0.1.1 - version: 0.1.1(oxfmt@0.55.0)(oxlint@1.83.0(oxlint-tsgolint@0.23.0)) + version: 0.1.1(oxfmt@0.55.0)(oxlint@1.88.0(oxlint-tsgolint@0.23.0)) '@solana/kit': specifier: ^8.5.0 version: 8.5.0(typescript@5.9.3) '@solana/kit-plugin-litesvm': - specifier: ^0.18.0 - version: 0.18.0(@solana/kit@8.5.0(typescript@5.9.3))(typescript@5.9.3) + specifier: ^0.19.0 + version: 0.19.0(@solana/kit@8.5.0(typescript@5.9.3))(typescript@5.9.3) '@solana/kit-plugin-signer': - specifier: ^0.18.0 - version: 0.18.0(@solana/kit@8.5.0(typescript@5.9.3)) + specifier: ^0.19.0 + version: 0.19.0(@solana/kit@8.5.0(typescript@5.9.3)) '@types/node': specifier: ^24 - version: 24.13.6 + version: 24.19.2 oxfmt: specifier: ^0.55.0 version: 0.55.0 oxlint: specifier: ^1.70.0 - version: 1.83.0(oxlint-tsgolint@0.23.0) + version: 1.88.0(oxlint-tsgolint@0.23.0) oxlint-tsgolint: specifier: ^0.23.0 version: 0.23.0 @@ -41,7 +41,7 @@ importers: version: 5.0.10 tsup: specifier: ^8.1.2 - version: 8.5.1(postcss@8.5.28)(typescript@5.9.3) + version: 8.5.1(postcss@8.5.30)(typescript@5.9.3) typedoc: specifier: ^0.25.12 version: 0.25.13(typescript@5.9.3) @@ -50,7 +50,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.0.15 - version: 4.1.11(@types/node@24.13.6)(vite@8.3.0(@types/node@24.13.6)(esbuild@0.27.7)) + version: 4.1.12(@types/node@24.19.2)(vite@8.3.4(@types/node@24.19.2)(esbuild@0.27.7)) packages: @@ -233,8 +233,8 @@ packages: cpu: [x64] os: [linux] - '@oxc-project/types@0.150.0': - resolution: {integrity: sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==} + '@oxc-project/types@0.154.0': + resolution: {integrity: sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==} '@oxfmt/binding-android-arm-eabi@0.55.0': resolution: {integrity: sha512-+rFDOqQe5LOWgxrAJaZgLRudr6GQm0wGI6gtu7vVkrdLGjNMUSGbAlaCr8j7F2H2Er97vYQCU8WDb30onqMM1g==} @@ -380,116 +380,116 @@ packages: cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.83.0': - resolution: {integrity: sha512-0yGY24EwsLk5YDe6F+VkmZyRHSwJDALa3nIrPpq7FXmp2lV2d0TzvBCGeZk+wgiULRGr5blhyr4QMp5KCXJUqA==} + '@oxlint/binding-android-arm-eabi@1.88.0': + resolution: {integrity: sha512-k6Fgkf86ubfeH4GvqYsRolfuVAp0pfYVZvifSlXNHPdMaWUOfxUrmLEeDD7hF6U2oJuhsVxhSWq86/xCJ+9MmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.83.0': - resolution: {integrity: sha512-hHfJ0vc17A4iUjH5p9BsTUPYbYRNxGpvD2lbu1aBRk54bzNIx9o5TtYF39QPZcV95DagZd+4DEAw2RH3G2ZsMg==} + '@oxlint/binding-android-arm64@1.88.0': + resolution: {integrity: sha512-AsIyhl9o1ejwtac7NMbhKpMdSml6NWR0ljKjZERxC8OHYDAW8o/Om9n1QHVLi4VCEUo42Zte2/Op9kyoGpJZMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.83.0': - resolution: {integrity: sha512-hsOjYjszLb/3zym/TkzUMPAoQlTJcuzSyEPOAyA+skXJIX9M0o+4JfOtqopX/Vf4hSLrJ98j0nvFo23gzk8auQ==} + '@oxlint/binding-darwin-arm64@1.88.0': + resolution: {integrity: sha512-qgBjB7eEKcCB4RqjXGuoSZq74g0wD09fWFJ+HWcCJcKaga8TeUHtb+BY0SsxdleSLBgx4RZ7qmgo0EzqEq7JoQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.83.0': - resolution: {integrity: sha512-mjh5oH2EA+wl5yRJYT9K9G61O2zFlpuv+yf2JwZOi0+dq2FnTUtm1h8i+5Ik0fXPWIu/k84I1psZR9aQsLAnyA==} + '@oxlint/binding-darwin-x64@1.88.0': + resolution: {integrity: sha512-sCz3X5Mw/xdzEzn4fsCt1Iq8NKJnGNfhR+b9B5k+4DysYAHsmIhYoocnBPiQ9kvY3+pUun2A0Z8Vtun/Nv6YoQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.83.0': - resolution: {integrity: sha512-fNHr64/YaO8YssuoDVC8+F4Uk5enR86q5uxfHkQrjAPs1dbAILOrD2uaud+J7MO8Fx774g44ERLD0IGIvZE48w==} + '@oxlint/binding-freebsd-x64@1.88.0': + resolution: {integrity: sha512-xTOdYOIqCufgIj0knvxu86FBfovP6QBiD7ngNva01gb8xPQCD5gXkE5APGczH35zStim1O3zqvFbLQmY85xXRg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.83.0': - resolution: {integrity: sha512-Qpwy3zzAwMj+8/lyYItHmkSMwbkprFNWTK7jPYDOxSyxEhaSLOWYUTCMkjF334J8/WD0nznCCsoBbIH6hpsuIw==} + '@oxlint/binding-linux-arm-gnueabihf@1.88.0': + resolution: {integrity: sha512-BLadtw88NdYJBrAtC1dYzrPfSP2d5zgx6iuZycdD0YmZBJ2Nqbit9Z4PSaIb6gxK25dweArGMPbOmq/0ugwUPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.83.0': - resolution: {integrity: sha512-s+BirYLFq7JL2k9sP0XI3ZXJ9dYvJ8sX3jLCLoag7tt+zrSHpZxP0jqznfL+Gdgwu7ay0dYgGYJXrQvq3iWloA==} + '@oxlint/binding-linux-arm-musleabihf@1.88.0': + resolution: {integrity: sha512-wILSczl/DaZsCcf7j7tvNbssp8hxEHIJxrv4j7+JjI3TAL1U/JTWbeUtoJJC/vo8+2hkTmHLYoKJjmiNbijdXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.83.0': - resolution: {integrity: sha512-7lihXt3vKr+GIyapNbHrnFHm/biiW30le6Zv/DExbAFPF6YwCQXVFlONPFehxs0CpGO4CBfYPM9rdDT+XMoIlg==} + '@oxlint/binding-linux-arm64-gnu@1.88.0': + resolution: {integrity: sha512-jutT2Hy8JCuZuMwIFHo2HtyxfOfBJHyQxlBHBK1SL9W2f8n/WhjAP0FnDMz9d/mjhv9+QA0mx5AdQ9fDjsrFFg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxlint/binding-linux-arm64-musl@1.83.0': - resolution: {integrity: sha512-q63JalLYVkZiZvls1z3PPUnpmQluOMXp0khqQMznCeAPLGydfNY8JhvuA4WlK57JfrvikU8wB5lPVveqpIXvew==} + '@oxlint/binding-linux-arm64-musl@1.88.0': + resolution: {integrity: sha512-8N8iGV9hh4Lkeuq7QsEkjoXNRRflqR1G2qyoGYXcA0k5qllrdqmfylKEXyHIVERxqNDyMO4StqDQ0uLxXcBQAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@oxlint/binding-linux-ppc64-gnu@1.83.0': - resolution: {integrity: sha512-krQmDF+dRbxvdqVPV88ZuOoPPu8X5BuqDA8Hd+qcS4YMRQCb+nexA57DazgGsc/rGdKBe3QmV0mnv0bdpW/p5g==} + '@oxlint/binding-linux-ppc64-gnu@1.88.0': + resolution: {integrity: sha512-5ydcQt3znNQ/rGEWYRvpS2cK9+T18P2VYgnyJ+eloEAwi9YUmsXy5VGrRqNWIK6qzWwHGnEE3ojVqqQNo+f0hA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@oxlint/binding-linux-riscv64-gnu@1.83.0': - resolution: {integrity: sha512-MmOl8Y6txEAXZU1RG8Rr264jQ6D7VPmqFsU/45x/FeWsGe32hklTqGrLE6UxHzp5Rjt0wP+20tY8YXKgSFB3mw==} + '@oxlint/binding-linux-riscv64-gnu@1.88.0': + resolution: {integrity: sha512-iGx0uvFT54b/5DPJdEBCxYIrVB3v0uTy+JhRh3CyEp8/22BXDkG8rffkFwREdLsdj9mOrPbJYVOZw8ipcBuzjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxlint/binding-linux-riscv64-musl@1.83.0': - resolution: {integrity: sha512-u1rMymh0W3JZkq370kzQsYPULGWqhE09pZRqnZvUSoYaI9pVO5yVX+iYIslmWuEgwuzH9YAaOsScJiobWCHoOw==} + '@oxlint/binding-linux-riscv64-musl@1.88.0': + resolution: {integrity: sha512-Wt47mKMWelVjRjuR7BCFxXkB0m79K1sTEbqMHRWciKUgo5iv7sWsF4RXSOyFYHD9zerNrkRZblnN273rhwOA1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - '@oxlint/binding-linux-s390x-gnu@1.83.0': - resolution: {integrity: sha512-y0zK3HNwGysu7rqtE+BQG/d0bx5gh/KwlOtghN8oWeK1KcWzeaLqtZrbm8owqdma1lFyrce/hTO5ismuNu+INQ==} + '@oxlint/binding-linux-s390x-gnu@1.88.0': + resolution: {integrity: sha512-g3L12KCS4+1gtUt3RbJ4F+Yxx4LNmmZLEPfhd8rAHEJjJk2lAgNfnjGoP/phJyhG5WS6VbNYbJtadJelNfvTMA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@oxlint/binding-linux-x64-gnu@1.83.0': - resolution: {integrity: sha512-rS5gM0NgD7ngmuJmbIehsidtrOwKkLFwCQbKEeb9KuyQrrWNq5Zkn0uV6AYdXOMJ0grrWEiLwBuvMxt8w5vsNw==} + '@oxlint/binding-linux-x64-gnu@1.88.0': + resolution: {integrity: sha512-og/XHVDOD9ZJgRiZkT9DgzQd4sr+JZW7e4l17Q/jVMZiIbeEd4uIu9iAoUbTF1gIvVZoRc4QDOxyVUvQGp4WHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxlint/binding-linux-x64-musl@1.83.0': - resolution: {integrity: sha512-W2IH4EtpcPaWcvNGCA95YoDg4vxqE/ZiPCi3arrxEEpsK7+JQN9WYwrlYFx9pcdP6KPXqRqkv3zdQPHcx7b6YQ==} + '@oxlint/binding-linux-x64-musl@1.88.0': + resolution: {integrity: sha512-EmhBsp+xuKb6YbZNEMLBo80Xw71AZOIm18do8ni/GLX/Lw1XzNhVYpbxO1KasYtoAvrGtCOdCPULRlIE0bPbTQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@oxlint/binding-openharmony-arm64@1.83.0': - resolution: {integrity: sha512-6LyKkUyoajssTPLlZmDbZIbu4IZ5B4bGuRUnBgCGpEvHP3FQMaYITncHA/unPUo7q+Z+pIu2HhdkQ+8d1SG7iA==} + '@oxlint/binding-openharmony-arm64@1.88.0': + resolution: {integrity: sha512-DBUcx/KwYdg1DAz+G01P/GFv512J04EsZadbHptx2FTpWT/MWRg21ZToNHt9pnsfQRBQ3et/g+vqzbvrdAVbuA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.83.0': - resolution: {integrity: sha512-Uz/fObEtF0jmNJQJ8CGRBKfefYstS0/wjD3s6IGzP8nUwsJykHQJBiN3npHwKiGRGn/vvBEgNr4B3cCzmmatvg==} + '@oxlint/binding-win32-arm64-msvc@1.88.0': + resolution: {integrity: sha512-xeVd0n4XG5HvynxfYvXi6uB+JvZbVZataowPS8cYpMbYg9mwE4sSyElFQd4LVJFifq8bRLDSR18XgEildmcXAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.83.0': - resolution: {integrity: sha512-u7XcvPW6Bk58tY5iWs2ESb0vJjoE/kuSpHxopbwp/p3ZtWVQXZ6wor5w3ssVTHOqd/v8b+QdhSFWQ4grEUNWpA==} + '@oxlint/binding-win32-ia32-msvc@1.88.0': + resolution: {integrity: sha512-MA6iOw//amleaz2mVMsZrA7NHlEexjTrhIxSMFCXQi6IUuQO+3Od00GZhr2iCYw6RFzMW36jkKK/WHBXMsoQAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.83.0': - resolution: {integrity: sha512-LZRubd7ph13QmAg4fFecTYVZkiYbROR2Htaxh/ufWRkDhPOm2wrwaEYR89e0YpPFD3dqBrPoxS7myBw5hmYA7Q==} + '@oxlint/binding-win32-x64-msvc@1.88.0': + resolution: {integrity: sha512-3Sz6rVWe8Dy+ufsXurFN1GX2dX43F/lQMSLelK9gFjiba7nHvLlqlhR5cHlWVnCpSqUY1hN9pyCX9XToe6ve6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -498,92 +498,92 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rolldown/binding-android-arm-eabi@1.2.9': - resolution: {integrity: sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==} + '@rolldown/binding-android-arm-eabi@1.2.14': + resolution: {integrity: sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.9': - resolution: {integrity: sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==} + '@rolldown/binding-android-arm64@1.2.14': + resolution: {integrity: sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.9': - resolution: {integrity: sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==} + '@rolldown/binding-darwin-arm64@1.2.14': + resolution: {integrity: sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.9': - resolution: {integrity: sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==} + '@rolldown/binding-darwin-x64@1.2.14': + resolution: {integrity: sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.9': - resolution: {integrity: sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==} + '@rolldown/binding-freebsd-x64@1.2.14': + resolution: {integrity: sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.9': - resolution: {integrity: sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + resolution: {integrity: sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.9': - resolution: {integrity: sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==} + '@rolldown/binding-linux-arm64-gnu@1.2.14': + resolution: {integrity: sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.2.9': - resolution: {integrity: sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==} + '@rolldown/binding-linux-arm64-musl@1.2.14': + resolution: {integrity: sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.2.9': - resolution: {integrity: sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.14': + resolution: {integrity: sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.2.9': - resolution: {integrity: sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.14': + resolution: {integrity: sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.2.9': - resolution: {integrity: sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==} + '@rolldown/binding-linux-x64-gnu@1.2.14': + resolution: {integrity: sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.2.9': - resolution: {integrity: sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==} + '@rolldown/binding-linux-x64-musl@1.2.14': + resolution: {integrity: sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.2.9': - resolution: {integrity: sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==} + '@rolldown/binding-openharmony-arm64@1.2.14': + resolution: {integrity: sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.9': - resolution: {integrity: sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==} + '@rolldown/binding-win32-arm64-msvc@1.2.14': + resolution: {integrity: sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.9': - resolution: {integrity: sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==} + '@rolldown/binding-win32-x64-msvc@1.2.14': + resolution: {integrity: sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -591,128 +591,128 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@rollup/rollup-android-arm-eabi@4.63.4': - resolution: {integrity: sha512-I+BSHzTAhKN2n7ZwGZsegGcZjDpLqFOMAtJz/u6uFGe0pUFbq56dEHjqJV/ZUdRJtNXNxA+hREUatZBvMR3Oiw==} + '@rollup/rollup-android-arm-eabi@4.64.7': + resolution: {integrity: sha512-GFF2tHk0NqYVObrK0+/ps/LEXsV/v2q6Lyiy7mZr+Ej24fpQScvqK2ziz9NHeEQYnKWKym38Ml7dZbPtC9tuAw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.63.4': - resolution: {integrity: sha512-pu3BdjS2LtEzRu2elmGzS3fIeWSZy4BMDIaLNwjorO76+k2d0LMluijhsDx3KQyQBQ/lLUZCQA9/s6csvUfuhw==} + '@rollup/rollup-android-arm64@4.64.7': + resolution: {integrity: sha512-BOymcXJFYYXqluDidj6sLelNjXruC3u1BqVxLn2OPCXH9xaPSOTH+MS4uychsGI1NU7tJoiv9KvqijDHFe+hhQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.63.4': - resolution: {integrity: sha512-xfSrj9MHnWK9GaSqT9U0ImHtH/N8WZlHLx4cZHiuLcqs640hvZ3hLPd5UR2AZS57FaE8HrRUSpltbZdWRxHiDA==} + '@rollup/rollup-darwin-arm64@4.64.7': + resolution: {integrity: sha512-jgVpGweIbls2H5jfBB70tnX52abMd5pJr3xmtoDILx6JdmGl+Un+tMb9R+MbHPVB46tTBpY8emtn7M71SnQhEQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.63.4': - resolution: {integrity: sha512-bqU99PLJb/dqb3S0GIMdeuyAEETSUgZBoqXYd3Sd+WCsV+MmPhnN6JrotWyir31+QgH7EvvE5/mwGJlEoci8Fw==} + '@rollup/rollup-darwin-x64@4.64.7': + resolution: {integrity: sha512-AVMpt94mrXH7WjyWKmd9nT4RC5yM0AN3Lt6A89xVIsuLDi3dDX6dxMytLbW36FlppY9JsoqUoS3LUUpUrYxiMQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.63.4': - resolution: {integrity: sha512-JinsFZ5G40oXQb+sUuiA5x689vhr6dDYK0H0NL+rwKdL6CqnmYN8PE4ZwfRSoIjrCxqTQG/SLfTtSvHeGxoVlw==} + '@rollup/rollup-freebsd-arm64@4.64.7': + resolution: {integrity: sha512-Nje29c/MyajxRNFGU05oyeTDS6SWdMg/wWMSlZSBTBju5BKz2NVc0kFiFSQGzRELNiB+CBk/ZvAVsWsENgjGag==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.63.4': - resolution: {integrity: sha512-GAdA4UxpiNm27cLHr2GqXBpAD0x9FqwYBY7/YSP0Ss0/PNi4k8gbviqpIpYbVSRBaS2ZcegXEzgTQMbRNCwxCw==} + '@rollup/rollup-freebsd-x64@4.64.7': + resolution: {integrity: sha512-xxgN5/kMzCNz/NYJ4t49B0/WS6InNlWv6xvgwUQqNnWM9WJMMwMUGWrAxdNEgYWdHL0sMnuh8I87StGrIMTA+w==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.63.4': - resolution: {integrity: sha512-qDd6NoA1znaLjp4jR5U/KWCdLAKDJNB8W9ChbbDaKbo0xA+Atln5HK6LFCZ4oJQpemtRZA288DCirFRjrspptw==} + '@rollup/rollup-linux-arm-gnueabihf@4.64.7': + resolution: {integrity: sha512-5U/9gVn/X657I8+NHoHO9Wnfyd0lEXwqbslobRoB9TC8SwYzOitcIr6TLE7531Q/NWs3L4mb+YOGzlf3vHIeYw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.63.4': - resolution: {integrity: sha512-WtB5Tz5KTNINb8ZA+8sQ7bmjuS1JrRT7YverYIhUGdWWDlpzVWmIwuZE+jidkEXUn1l0zrEkaIMa8dHF3NGcsA==} + '@rollup/rollup-linux-arm-musleabihf@4.64.7': + resolution: {integrity: sha512-hcDS0a/Y8ggM3dcOfzH7UpSaogCViWTtNDSl0EXpWIj8g8/r86ITqptjil2hayTXS0Umzb+Yt3mjgpQVFVf2+A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.63.4': - resolution: {integrity: sha512-VcQ3L1tjnkKzWjryAVaFhHEWcqOfICX9uxVVoDzm2t0DpgKRHd2zOpVrJc0xsWeBZcBFyYROCIBdyR/fS174pg==} + '@rollup/rollup-linux-arm64-gnu@4.64.7': + resolution: {integrity: sha512-awbAr4N7Qd/yjZAQBEEPzgcPveYG2Gi5L6gq1/Bp+3SMRjn5F68Wv1zKsntzvvoioBR6yKvhLtWqu11am1TsxA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.63.4': - resolution: {integrity: sha512-6+ZQX6P5s0cMDN2Ypb8Lbm2+/sZYmZjdaYny992ujUU9UKi/4CWoJWsl1pNvjWJHNHGK51m+jKGLlh1ylb2ifQ==} + '@rollup/rollup-linux-arm64-musl@4.64.7': + resolution: {integrity: sha512-Ut7xQJfeLhzu2yN3rHzVvL9ccyPJvN4aCdP1V7hJ5lGxX/eCzgB9SiMk/Md3J+rWWZgvoYsDW4BUFggJr32pBA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.63.4': - resolution: {integrity: sha512-D72ZnvkFkBXOfzMMQLcwfPLyGkKb7HZ9/mf97B7v6/P5Lbv4oFOtSY/uHbS8lH6uKUOxoKiuokdb50XZSzzbJw==} + '@rollup/rollup-linux-loong64-gnu@4.64.7': + resolution: {integrity: sha512-trqoni/vHkuM5oo5iQhoKPh6fjjD7E80pMgCXWgGxU8vSRPUlwvG8GeYvEEcB6eJAxNa99WH9iVHPHelgtKiHA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.63.4': - resolution: {integrity: sha512-piU6BxeqA3O9KSu3kRCIQQtNqFFaTu21SEV4FwaRZowpnj3bLaWPZHw+xFqCs0XlJ+aOH3PTRWGoglH+mKA/OA==} + '@rollup/rollup-linux-loong64-musl@4.64.7': + resolution: {integrity: sha512-gvlUy0XFIwtUWiQmhc+4GT2Knm3KosinpUVhr7CtTFA78gFDnE5NWwMPzHrJsYpKkh2LlY7yvBIboN1FAV6Xeg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.63.4': - resolution: {integrity: sha512-/5PGpHwqt2EEEOUs1XwzubE/ucr0dWDQ+to3zqi4Ds7EWpwtQ79wXc4JBoxqj/OwpawTsKWzJxHfSuBOq3DrWA==} + '@rollup/rollup-linux-ppc64-gnu@4.64.7': + resolution: {integrity: sha512-8yS/kSXTJ/47Z62JW+C2AJ3vd/8zZw016vFjtNpZwmZlwJumLua4s1i78dkYuSSqQ+0aIMxJcBp/4uIwp2ehjA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.63.4': - resolution: {integrity: sha512-cX3beZDLWt7G2oJF+nhChiT+qtaihs+S2xi7ziGmVB+2pwPng6D0Ed0HmElQOgv2UsUmSJJLGwpBao/3TDx3VA==} + '@rollup/rollup-linux-ppc64-musl@4.64.7': + resolution: {integrity: sha512-mxVSKvvty0hOP1AFo/l4Kpv3i3HK0zx4rYUrirZDToYlWhS3xzmIkq3vUJ7rtrM2cPyXveDyDT6M1FfXZ9hTRA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.63.4': - resolution: {integrity: sha512-1uz2mGWHyptR7DgHHrlbdRAjXK7v7elGZ9lMja910/RP+ZYbX6xAmCiU9UZSX4hqmgtHMv6lr5l3kq1HIOpcag==} + '@rollup/rollup-linux-riscv64-gnu@4.64.7': + resolution: {integrity: sha512-lEse1zra1CagM+uHH2bl28GInDsZZ45NJzHei2OMaXQFzZWKBO1hFo07rS0xB6ayV4WU360UrSmPDSyCMpYsUQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.63.4': - resolution: {integrity: sha512-nLS8topojxyz7SRpKR2IODRpQ0XPZ+xaOXvT3+hqK/Uy8Lo5HFgkkIBiIrCu5tL5YqzTvgovGw55PwpahTAGig==} + '@rollup/rollup-linux-riscv64-musl@4.64.7': + resolution: {integrity: sha512-d/cqCoiG9WMZ5VuJZ5Qdlv9g97QyoGwnmvHccvGhKSacTy7xFrAS+jMcJSBdMNOw1oacSkl6p7K6O/DRYTKL3g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.63.4': - resolution: {integrity: sha512-gs7DRKotr3l3q+jGPQBjH0ng1FjlEDm5ueQrkw5JtQvtLyEIcLASqAEaor56BhkKRzk+IcQzrcanBdb/bBQn8g==} + '@rollup/rollup-linux-s390x-gnu@4.64.7': + resolution: {integrity: sha512-kVEA//CeDOZZP1XCH2JBgqXb9+ALlwuA/4civaazMVdgzaSQC9WM38w65zG/LLk0lA7F9Od19CSBZW7J9mCbNg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.63.4': - resolution: {integrity: sha512-791ET7W17NnScOZM7h4dX5hYspxE28htPFsb1awY/NRR8+PRNkS53e475rDdxXXDrP+kwnCcNWg9CX5ztn/Aqw==} + '@rollup/rollup-linux-x64-gnu@4.64.7': + resolution: {integrity: sha512-14oLfDsOSr0TSntT/34jRg/V8B2XW/Jomh9zX9CjIM9gwwNlI1OCymS/GVn0DV32h67eRf7U0GGem0rvfXgNwQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.63.4': - resolution: {integrity: sha512-iwZQRcmj7g88g3tzefIrQY7qvmuA/cfYwhrDtTBhsmukO4U2huVO5W+86XacUMRvdSFVAc6kZUZy21JaRwiB9w==} + '@rollup/rollup-linux-x64-musl@4.64.7': + resolution: {integrity: sha512-dFVtPfjZqAnUPpPY4Bfg+87yo1IBW9HiY8iCFtg49Pn46MfZTebSHZh8PL6SOsgyt9LQP8Nj/sE6jm3aWpySmQ==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.63.4': - resolution: {integrity: sha512-dVHFp9gRWrdTpnqQuGfCwd7hOQDatK1VCP2iWhLY/cGrOQs/ucFzJ6A5SRqbXX12ZDI8EUuejSM5kwg+ja7Png==} + '@rollup/rollup-openbsd-x64@4.64.7': + resolution: {integrity: sha512-Dm9CZ2SM3u2NgvBj4awW/gGqkOwzH8f6MSYIJE6+bKcKLI+T0+LhpD6vtetTfrIIx+rLXDf5RJqBP6v7V5O+wg==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.63.4': - resolution: {integrity: sha512-t3NlauOW6gxZVVFcBEnO62Cb4wbyDFL416gTg1uFI/2tgqYQlf69FbSE115Ajre9I+c26Lk4mcmdFUsS/DGifQ==} + '@rollup/rollup-openharmony-arm64@4.64.7': + resolution: {integrity: sha512-oaxsvS2mL6+78741CT2HCORBvy1USg3Wqpt5qvZwy3aMXRMl4zxyDo8maeFRWJkF3dp0Wbi71fKH5Gr9YI3vYA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.63.4': - resolution: {integrity: sha512-xWuIaSye5FWZF8+UYtVEcHtRJDN5kN9Kfgxx3Kq8XIov9KSKbc1fiqQCm90SKrgQbUXZelbnUhnlUJmfSE7P9A==} + '@rollup/rollup-win32-arm64-msvc@4.64.7': + resolution: {integrity: sha512-UKZz1Y4mxUqkWh60uH7B1aZn6UcAimPk4ipRktpb3wfZq7JrzZYyAXTwiafkb3T+kd5P3Sf+vzcRdsDks4WtjQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.63.4': - resolution: {integrity: sha512-9ALJJUOg/ZflMJepVo2PlgsGxSaxN7SQ4Z8GoZfVlarWr6r3rkHUNsd/zAio7p4YMtChSMXPionxej4Hkf6CXQ==} + '@rollup/rollup-win32-ia32-msvc@4.64.7': + resolution: {integrity: sha512-WWkSuC1J+mZJnsDh0mRaCAFSWfQdl6y3fDjZeWElI6zHo8CcOSG5lY3yurKJjEq+FrX0WD60sFrVVpbHqzMmrw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.63.4': - resolution: {integrity: sha512-blj9z5qx/Pv4WU0W1NMFDB97e0JH5ed+aZGywW8WCvp/NhWX/4PFAq5uu6Q0AebNn+Vo6KzUYDT++JzTT5ojlQ==} + '@rollup/rollup-win32-x64-gnu@4.64.7': + resolution: {integrity: sha512-u9bp2yXCI3/BUjUxY6uWknAY32pfvvDCPysyUTySotx0dj3ydlFHrRQYfn/b/kZgnfjyEwySMtI7Ga054uiysQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.63.4': - resolution: {integrity: sha512-Erx822VRBwLa124shbj+wNXe//BOgMEctDV0m1aqTQdNO1S69DgNUCFKC1RCeZfixs1J31l6igk1ziyXErbigQ==} + '@rollup/rollup-win32-x64-msvc@4.64.7': + resolution: {integrity: sha512-EhX6N3XPMEnVU5cRfNgzPOKcSucsbu3nNNWuoAaEuKIqmddBKHN5b9d4rPe65T1I+FaOT176JKiZNsUBp3rqbA==} cpu: [x64] os: [win32] @@ -732,10 +732,10 @@ packages: peerDependencies: '@solana/kit': ^8.0.0 - '@solana-program/system@0.15.0': - resolution: {integrity: sha512-xE08wZCyNRhOaO/XNRd9A3kSLfUrTe/BnmAHhql8uqc2eriNy2ZmnvaGRrs0m+kOSihvUbANzHljmJsTzGL5kg==} + '@solana-program/system@0.16.0': + resolution: {integrity: sha512-/RG6q2E2vG/XpdOt8Jj/kbQktPlL5JyJuNGAeN9wDcxKDKQtrGTJpDrJgQUxiEy23fsPNXQbLN8XeCtYoMof3Q==} peerDependencies: - '@solana/kit': ^8.3.0 + '@solana/kit': ^8.5.0 '@solana-program/token@0.16.1': resolution: {integrity: sha512-X9dsvbh+VDq4SuCfvxn95P1DCvtBYHJOBiVmgBJMfW8l/lp8uSwEhy9IurpcdltnGi5kNIkCm4sk4YOXKAMiCw==} @@ -881,20 +881,20 @@ packages: typescript: optional: true - '@solana/kit-plugin-instruction-plan@0.18.0': - resolution: {integrity: sha512-GVhSf/QFtowshm4zhwqOrFI5oMpeOgRDCv5WMmYER0xZqE8+aSDxHsbEyI3dS/s4YilA296EHpQpzTAdlpj/bw==} + '@solana/kit-plugin-instruction-plan@0.19.0': + resolution: {integrity: sha512-62gh9R3jTMuU3UOPNuerQF9QRGM3TTRlVjD4Ukt78Vt3pdKpjx7g311DEDoP3SkKLw1q9UNc0KSKSbIsShFLwg==} peerDependencies: - '@solana/kit': ^8.0.0 + '@solana/kit': ^8.2.0 - '@solana/kit-plugin-litesvm@0.18.0': - resolution: {integrity: sha512-KAUdUzUSDkQKfkNKykZRB7Nd5JvvAUBw6jYo0hrVXqKeGGVQ4ZbiX5sAhUR7EKjXAWfN08VLGZ7vdjGeEKkWYg==} + '@solana/kit-plugin-litesvm@0.19.0': + resolution: {integrity: sha512-w147mktbtkVETLlV12sq3Uf1zKUk7/p70XtARERatygUwX8HO4Us1GvdN/vnJWPDq+Uj7Ws+0mitt2zLWmvawg==} peerDependencies: - '@solana/kit': ^8.0.0 + '@solana/kit': ^8.2.0 - '@solana/kit-plugin-signer@0.18.0': - resolution: {integrity: sha512-/CkyDE0HArqH503UUdsiiknBYpM0gAbe/QhlQ37hCRwP+WcnQkqQNdqhx999vMZaKii68ffSD8+xsvOZcSvC+w==} + '@solana/kit-plugin-signer@0.19.0': + resolution: {integrity: sha512-yEwVODA9LfAYUDLDKHDPyHFsnTJFtmxDbZbVZJXXt0bJrejkuHoOopw5lH4yP+eTZEh1fo5XYNAHO6XopO33NQ==} peerDependencies: - '@solana/kit': ^8.0.0 + '@solana/kit': ^8.2.0 '@solana/kit@8.5.0': resolution: {integrity: sha512-bMnXXADeyZFe3XyqzPhlQAIsmPYRiojaRO4JQxwGOmMwiQ5f13ZQodmsOqnt8W/n40P7r/+/pDqWuqG0TUv+yA==} @@ -1160,14 +1160,14 @@ packages: '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - '@types/node@24.13.6': - resolution: {integrity: sha512-SGrw/h3KPFshy3OE6ZL53LMBG5vGQQ8/gIpiqz/kRZhPJ7HgwCEs8LBuNtWLa8dvGZVpSF7+Bf+c11HUrCb/yg==} + '@types/node@24.19.2': + resolution: {integrity: sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==} - '@vitest/expect@4.1.11': - resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + '@vitest/expect@4.1.12': + resolution: {integrity: sha512-vFlTt+YEu9WBpNjdGayNmlMVzrWPi1+sv853/7t2FU7hpO5gAFBKHzQmkCq5Xjpr+evegF2994LQT3hF3mRlqQ==} - '@vitest/mocker@4.1.11': - resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + '@vitest/mocker@4.1.12': + resolution: {integrity: sha512-fKShNpKZzupWZuY0z7egydvL0sqW4INEZBEExMBMAa6izlENEVHwoXgdaTCaBZ5fwlr4xf2o1wXC83n9RpO+NA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1177,23 +1177,23 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.11': - resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} + '@vitest/pretty-format@4.1.12': + resolution: {integrity: sha512-XW9O8+Mxx4VpCtkYdMJLZQQwsVryP9wk7cPKDxtXFfwSak6yRh5+2fep/Y0XF/ElBvJHq8bcYdi6aeuai0opZA==} - '@vitest/runner@4.1.11': - resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} + '@vitest/runner@4.1.12': + resolution: {integrity: sha512-NKlVKCr5QnCe8jijdMnmkpHHU+WTqiLFR6G0pHji9uRjXK9xJl1k1nTw6F3pOOj2PDcsDt2GKQMI7wIsaT491w==} - '@vitest/snapshot@4.1.11': - resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} + '@vitest/snapshot@4.1.12': + resolution: {integrity: sha512-ko1y1Qgb/slzQ9mr+b89Cuqud8WG1TKtsPD8r7ZUBdvVOGt85Af2HwCqHujrhwJq95hs/9RM7fcAPg57o1vlzw==} - '@vitest/spy@4.1.11': - resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} + '@vitest/spy@4.1.12': + resolution: {integrity: sha512-RGq9x4JNGNTZHEJxvN0oSiJjeSCExm0n2gZKKJZHY9cX5AVA6M7VJILBT3ZJ/tJ/0J9uWT7fETV9/btoi//vSg==} - '@vitest/utils@4.1.11': - resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} + '@vitest/utils@4.1.12': + resolution: {integrity: sha512-Q3awXrwOfEV+qc3WmO5ONyE0yO7Q1gQ9/oyHxGLZ/pl7N3NO/ZztqQwKLuwMkV+CA1JYSIeO3gkHnRDIo4AVaA==} - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} hasBin: true @@ -1201,8 +1201,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.3.0: - resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==} + ansi-regex@6.4.0: + resolution: {integrity: sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==} engines: {node: '>=12'} ansi-sequence-parser@1.1.3: @@ -1239,8 +1239,8 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + chai@6.3.0: + resolution: {integrity: sha512-XWAtwJ6OHO+tj0EKCs0Y2UamnyOxseZWltU4x2U2wh8g4AigdjwvtUjvLP2tqkA/avxHEtzxNaqGq/YGNwckKg==} engines: {node: '>=18'} chalk@5.6.2: @@ -1437,44 +1437,44 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - litesvm-darwin-arm64@1.4.1: - resolution: {integrity: sha512-6dofWLOxtknSL0W6N9W3f/kdnitsJ3xR0oE1W37CLcfd5kX4qCMVbaejZWJkLo4G2JzAk+hFZi965Z2OPyJACg==} + litesvm-darwin-arm64@1.6.0: + resolution: {integrity: sha512-Fd5CS1NVXGXCHB1MhK1lPhrrwmLpCcK1YhVcy9fFJFzVoNFGBqlYwV7ORSaw8CNcga6z5XKLcVuWFBZAOmxf4Q==} engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - litesvm-darwin-x64@1.4.1: - resolution: {integrity: sha512-Rjyg6SfnSKAO5/vMpnZpIHTcBWEUzjFj/GshXwzdyiWorrpC0poQjK3OJ9RJneJW2YDd+oUsGZCfwAplTXPGfg==} + litesvm-darwin-x64@1.6.0: + resolution: {integrity: sha512-945ujpieH10O5skQrno5Ws+wb9YKYDHJlA7mYOXScA+8sNwxO0g9bT78MtcoIxgKM4JbxKpwbf4Xf4x99A4Zcg==} engines: {node: '>= 20'} cpu: [x64] os: [darwin] - litesvm-linux-arm64-gnu@1.4.1: - resolution: {integrity: sha512-hyL/tcuFisAwNEwVzDGjtDRuLYDc+8PoX9QZU/M46vsLrdU2WCBU3g4WdV5z0z1nPl16TzcHVboqydyBy3ImFQ==} + litesvm-linux-arm64-gnu@1.6.0: + resolution: {integrity: sha512-3QtIubQlGW303e0fSAhiWunbwJxqOswKmEipJV3UQtKeQvQjswqZGCAxlh1AdkdqjjLbSNWa0Ys3FFbUXkSJAQ==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - litesvm-linux-arm64-musl@1.4.1: - resolution: {integrity: sha512-Folc4nWAXwkWvwK5iqf3C74eNAPRERg8Yn2QGVW+6pMgCXtaQt77PuIB9m32mLo+W+LZxiU+t3et0ZiFEm4YgQ==} + litesvm-linux-arm64-musl@1.6.0: + resolution: {integrity: sha512-7rHwhjh8JG36bo5xpGQhKRslsWVo0bYhG6/p6MqSJP3qVh+e3n3gRonmWr/cGG9N56oBLMipYpTLISEpKIv0mA==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - litesvm-linux-x64-gnu@1.4.1: - resolution: {integrity: sha512-sAKax22lAMS0DpWQcT6ICt8vs6phEjRJXT84LhhftnlNkcU03b0RJziFDr34LUTrkY5SMi/uqZEy0T86Xokg+w==} + litesvm-linux-x64-gnu@1.6.0: + resolution: {integrity: sha512-FaJCP9IPfWbKtiHjhAW5R3Bg1yDgIbEPj6qhJiKATLF7m7/t3zE86+kO+AM9bHVYdSXqUeWecSfjGRbytILZFQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - litesvm-linux-x64-musl@1.4.1: - resolution: {integrity: sha512-kKsOVhF7o8/sMiP6mgZCoIYr7zWEzwOBQdC0WrWp29JvOJpKOOgz3jioFdgWv/LnSYfkbJ+wZNWI8tMhAkmNOw==} + litesvm-linux-x64-musl@1.6.0: + resolution: {integrity: sha512-oyx5Ic/ogDN4LYNv+Ow8MfCiIbkddP7fy6+DKfHwvBb5hvFe7ZAbScXh7aMSrKP6yNSdqtTz2+Z9K5zramoiKw==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - litesvm@1.4.1: - resolution: {integrity: sha512-SGMdN6c44m5Deo27nZX7GIn42e/OlfQ4jIv0JIVxR3F5vU8ZbbjsLRGUj3b/r5jCITyN22u14JnuP+mhDyNLlg==} + litesvm@1.6.0: + resolution: {integrity: sha512-DAe9CETZXKWebg6uTlt4gdLpOsvdwuyQC0WpHYPfkLnIDFmiM4qiW8ynF0FcUrHBFxZJb3/n7HtusZvxl8fsaw==} engines: {node: '>= 20'} load-tsconfig@0.2.5: @@ -1512,8 +1512,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.19: - resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==} + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -1542,12 +1542,12 @@ packages: resolution: {integrity: sha512-3mBv3CoPbh8dFbzfDGIWa2ytZjn2v+3EX4aKRXjIhsoGFzG8GCjfRirz3rwZf1wYbZzsNLTSgpw8VjQuWdp/jA==} hasBin: true - oxlint@1.83.0: - resolution: {integrity: sha512-cyDzSzaw3uzP0TeCeq3lLRPPoaUxkbB4ZOXj+kn+5r+BX9V+4bNVGk9lxer+WrgcpebH4JxLlJ3KQjveVztOLQ==} + oxlint@1.88.0: + resolution: {integrity: sha512-uIcFgw8BmqvFRGzH5+r7d2zJMEexwNSrEmM6WQNnGh3VkO0XYTEFoyxyNE6tjKMUib9Cue4XJA2DoWruO5D6aw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=7.0.2001' + oxlint-tsgolint: '>=7.0.2003' vite-plus: '*' peerDependenciesMeta: oxlint-tsgolint: @@ -1601,8 +1601,8 @@ packages: yaml: optional: true - postcss@8.5.28: - resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} + postcss@8.5.30: + resolution: {integrity: sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==} engines: {node: ^10 || ^12 || >=14} readdirp@4.1.2: @@ -1617,13 +1617,13 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.2.9: - resolution: {integrity: sha512-hx/Pv0N1haXRb11qkfnK5MXB/iqr7i0yjWQqmO9uHqZpBgQSqzc8UsSnEpalsh+j1I8qQ2CkXAkJC8Br3dKSlg==} + rolldown@1.2.14: + resolution: {integrity: sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.63.4: - resolution: {integrity: sha512-4U0liVayNIoLp3GFl1FcI8561WepLnZ1rqfraGh7S9B3Ur5F9S283y8Futii7RUU2C/97tOBmBy7nYvhoiOpbQ==} + rollup@4.64.7: + resolution: {integrity: sha512-aCiJONoZp0lNGJ6sYqspLkh6UXaWEey/7Ko2TZyXQ4kgzAhDUxAgbt/oulXKmD+zFHXw1k+RF6ZZWOrjp7DZnQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1645,8 +1645,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} source-map@0.7.6: @@ -1656,8 +1656,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@4.2.0: - resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + std-env@4.3.0: + resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -1705,8 +1705,8 @@ packages: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} - tinyrainbow@3.1.1: - resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + tinyrainbow@3.2.0: + resolution: {integrity: sha512-LgO3D9yZJjApUiuUfl9iFAwrtaX4+lok3wJIqttGoKCHlWUqHqbQpnxCf82L8FjgKsh4iGo78hqJwgL8F6To2A==} engines: {node: '>=14.0.0'} tree-kill@1.2.2: @@ -1750,14 +1750,14 @@ packages: ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} - undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} - undici-types@8.12.1: - resolution: {integrity: sha512-nCiEcIx87oMw9u3Yzj2DuRBzv6p0e7akhy4HUPtpBiVWmAY3o6Phznst8QhmY1oLMttLgJ2tlAvsKuzCgBSoAw==} + undici-types@8.12.2: + resolution: {integrity: sha512-VoMeD2O0KdHhcn+oPqOrpivN+7aDOklVSwOLD7JNjbzV1CboAFek9IFOXnreoufTUtAsCsOK0iETiERPNR/fDA==} - vite@8.3.0: - resolution: {integrity: sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==} + vite@8.3.4: + resolution: {integrity: sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1799,20 +1799,20 @@ packages: yaml: optional: true - vitest@4.1.11: - resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} + vitest@4.1.12: + resolution: {integrity: sha512-5eWdz2yb3ajxWF3C8C4TjkXl7FGm3n2E/VlazALrQHzK7nYMSGFnCZto0bbPNl77AwkOZVLk0YnBAejUu0NiWA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.11 - '@vitest/browser-preview': 4.1.11 - '@vitest/browser-webdriverio': 4.1.11 - '@vitest/coverage-istanbul': 4.1.11 - '@vitest/coverage-v8': 4.1.11 - '@vitest/ui': 4.1.11 + '@vitest/browser-playwright': 4.1.12 + '@vitest/browser-preview': 4.1.12 + '@vitest/browser-webdriverio': ^4.1.11 + '@vitest/coverage-istanbul': 4.1.12 + '@vitest/coverage-v8': 4.1.12 + '@vitest/ui': 4.1.12 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1864,8 +1864,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - ws@8.21.3: - resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + ws@8.22.0: + resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -1982,7 +1982,7 @@ snapshots: '@napi-rs/lzma-linux-x64-gnu@1.5.1': optional: true - '@oxc-project/types@0.150.0': {} + '@oxc-project/types@0.154.0': {} '@oxfmt/binding-android-arm-eabi@0.55.0': optional: true @@ -2059,198 +2059,198 @@ snapshots: '@oxlint-tsgolint/win32-x64@0.23.0': optional: true - '@oxlint/binding-android-arm-eabi@1.83.0': + '@oxlint/binding-android-arm-eabi@1.88.0': optional: true - '@oxlint/binding-android-arm64@1.83.0': + '@oxlint/binding-android-arm64@1.88.0': optional: true - '@oxlint/binding-darwin-arm64@1.83.0': + '@oxlint/binding-darwin-arm64@1.88.0': optional: true - '@oxlint/binding-darwin-x64@1.83.0': + '@oxlint/binding-darwin-x64@1.88.0': optional: true - '@oxlint/binding-freebsd-x64@1.83.0': + '@oxlint/binding-freebsd-x64@1.88.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.83.0': + '@oxlint/binding-linux-arm-gnueabihf@1.88.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.83.0': + '@oxlint/binding-linux-arm-musleabihf@1.88.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.83.0': + '@oxlint/binding-linux-arm64-gnu@1.88.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.83.0': + '@oxlint/binding-linux-arm64-musl@1.88.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.83.0': + '@oxlint/binding-linux-ppc64-gnu@1.88.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.83.0': + '@oxlint/binding-linux-riscv64-gnu@1.88.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.83.0': + '@oxlint/binding-linux-riscv64-musl@1.88.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.83.0': + '@oxlint/binding-linux-s390x-gnu@1.88.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.83.0': + '@oxlint/binding-linux-x64-gnu@1.88.0': optional: true - '@oxlint/binding-linux-x64-musl@1.83.0': + '@oxlint/binding-linux-x64-musl@1.88.0': optional: true - '@oxlint/binding-openharmony-arm64@1.83.0': + '@oxlint/binding-openharmony-arm64@1.88.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.83.0': + '@oxlint/binding-win32-arm64-msvc@1.88.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.83.0': + '@oxlint/binding-win32-ia32-msvc@1.88.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.83.0': + '@oxlint/binding-win32-x64-msvc@1.88.0': optional: true '@pkgjs/parseargs@0.11.0': optional: true - '@rolldown/binding-android-arm-eabi@1.2.9': + '@rolldown/binding-android-arm-eabi@1.2.14': optional: true - '@rolldown/binding-android-arm64@1.2.9': + '@rolldown/binding-android-arm64@1.2.14': optional: true - '@rolldown/binding-darwin-arm64@1.2.9': + '@rolldown/binding-darwin-arm64@1.2.14': optional: true - '@rolldown/binding-darwin-x64@1.2.9': + '@rolldown/binding-darwin-x64@1.2.14': optional: true - '@rolldown/binding-freebsd-x64@1.2.9': + '@rolldown/binding-freebsd-x64@1.2.14': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.9': + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.9': + '@rolldown/binding-linux-arm64-gnu@1.2.14': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.9': + '@rolldown/binding-linux-arm64-musl@1.2.14': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.9': + '@rolldown/binding-linux-ppc64-gnu@1.2.14': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.9': + '@rolldown/binding-linux-s390x-gnu@1.2.14': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.9': + '@rolldown/binding-linux-x64-gnu@1.2.14': optional: true - '@rolldown/binding-linux-x64-musl@1.2.9': + '@rolldown/binding-linux-x64-musl@1.2.14': optional: true - '@rolldown/binding-openharmony-arm64@1.2.9': + '@rolldown/binding-openharmony-arm64@1.2.14': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.9': + '@rolldown/binding-win32-arm64-msvc@1.2.14': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.9': + '@rolldown/binding-win32-x64-msvc@1.2.14': optional: true '@rolldown/pluginutils@1.0.1': {} - '@rollup/rollup-android-arm-eabi@4.63.4': + '@rollup/rollup-android-arm-eabi@4.64.7': optional: true - '@rollup/rollup-android-arm64@4.63.4': + '@rollup/rollup-android-arm64@4.64.7': optional: true - '@rollup/rollup-darwin-arm64@4.63.4': + '@rollup/rollup-darwin-arm64@4.64.7': optional: true - '@rollup/rollup-darwin-x64@4.63.4': + '@rollup/rollup-darwin-x64@4.64.7': optional: true - '@rollup/rollup-freebsd-arm64@4.63.4': + '@rollup/rollup-freebsd-arm64@4.64.7': optional: true - '@rollup/rollup-freebsd-x64@4.63.4': + '@rollup/rollup-freebsd-x64@4.64.7': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.63.4': + '@rollup/rollup-linux-arm-gnueabihf@4.64.7': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.63.4': + '@rollup/rollup-linux-arm-musleabihf@4.64.7': optional: true - '@rollup/rollup-linux-arm64-gnu@4.63.4': + '@rollup/rollup-linux-arm64-gnu@4.64.7': optional: true - '@rollup/rollup-linux-arm64-musl@4.63.4': + '@rollup/rollup-linux-arm64-musl@4.64.7': optional: true - '@rollup/rollup-linux-loong64-gnu@4.63.4': + '@rollup/rollup-linux-loong64-gnu@4.64.7': optional: true - '@rollup/rollup-linux-loong64-musl@4.63.4': + '@rollup/rollup-linux-loong64-musl@4.64.7': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.63.4': + '@rollup/rollup-linux-ppc64-gnu@4.64.7': optional: true - '@rollup/rollup-linux-ppc64-musl@4.63.4': + '@rollup/rollup-linux-ppc64-musl@4.64.7': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.63.4': + '@rollup/rollup-linux-riscv64-gnu@4.64.7': optional: true - '@rollup/rollup-linux-riscv64-musl@4.63.4': + '@rollup/rollup-linux-riscv64-musl@4.64.7': optional: true - '@rollup/rollup-linux-s390x-gnu@4.63.4': + '@rollup/rollup-linux-s390x-gnu@4.64.7': optional: true - '@rollup/rollup-linux-x64-gnu@4.63.4': + '@rollup/rollup-linux-x64-gnu@4.64.7': optional: true - '@rollup/rollup-linux-x64-musl@4.63.4': + '@rollup/rollup-linux-x64-musl@4.64.7': optional: true - '@rollup/rollup-openbsd-x64@4.63.4': + '@rollup/rollup-openbsd-x64@4.64.7': optional: true - '@rollup/rollup-openharmony-arm64@4.63.4': + '@rollup/rollup-openharmony-arm64@4.64.7': optional: true - '@rollup/rollup-win32-arm64-msvc@4.63.4': + '@rollup/rollup-win32-arm64-msvc@4.64.7': optional: true - '@rollup/rollup-win32-ia32-msvc@4.63.4': + '@rollup/rollup-win32-ia32-msvc@4.64.7': optional: true - '@rollup/rollup-win32-x64-gnu@4.63.4': + '@rollup/rollup-win32-x64-gnu@4.64.7': optional: true - '@rollup/rollup-win32-x64-msvc@4.63.4': + '@rollup/rollup-win32-x64-msvc@4.64.7': optional: true - '@solana-config/oxc@0.1.1(oxfmt@0.55.0)(oxlint@1.83.0(oxlint-tsgolint@0.23.0))': + '@solana-config/oxc@0.1.1(oxfmt@0.55.0)(oxlint@1.88.0(oxlint-tsgolint@0.23.0))': optionalDependencies: oxfmt: 0.55.0 - oxlint: 1.83.0(oxlint-tsgolint@0.23.0) + oxlint: 1.88.0(oxlint-tsgolint@0.23.0) '@solana-program/system@0.14.1(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana-program/system@0.15.0(@solana/kit@8.5.0(typescript@5.9.3))': + '@solana-program/system@0.16.0(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: '@solana/kit': 8.5.0(typescript@5.9.3) @@ -2387,22 +2387,22 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/kit-plugin-instruction-plan@0.18.0(@solana/kit@8.5.0(typescript@5.9.3))': + '@solana/kit-plugin-instruction-plan@0.19.0(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana/kit-plugin-litesvm@0.18.0(@solana/kit@8.5.0(typescript@5.9.3))(typescript@5.9.3)': + '@solana/kit-plugin-litesvm@0.19.0(@solana/kit@8.5.0(typescript@5.9.3))(typescript@5.9.3)': dependencies: '@solana/kit': 8.5.0(typescript@5.9.3) - '@solana/kit-plugin-instruction-plan': 0.18.0(@solana/kit@8.5.0(typescript@5.9.3)) - litesvm: 1.4.1(typescript@5.9.3) + '@solana/kit-plugin-instruction-plan': 0.19.0(@solana/kit@8.5.0(typescript@5.9.3)) + litesvm: 1.6.0(typescript@5.9.3) transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder - typescript - utf-8-validate - '@solana/kit-plugin-signer@0.18.0(@solana/kit@8.5.0(typescript@5.9.3))': + '@solana/kit-plugin-signer@0.19.0(@solana/kit@8.5.0(typescript@5.9.3))': dependencies: '@solana/kit': 8.5.0(typescript@5.9.3) @@ -2578,7 +2578,7 @@ snapshots: '@solana/functional': 8.5.0(typescript@5.9.3) '@solana/rpc-subscriptions-spec': 8.5.0(typescript@5.9.3) '@solana/subscribable': 8.5.0(typescript@5.9.3) - ws: 8.21.3 + ws: 8.22.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -2631,7 +2631,7 @@ snapshots: '@solana/errors': 8.5.0(typescript@5.9.3) '@solana/rpc-spec': 8.5.0(typescript@5.9.3) '@solana/rpc-spec-types': 8.5.0(typescript@5.9.3) - undici-types: 8.12.1 + undici-types: 8.12.2 optionalDependencies: typescript: 5.9.3 @@ -2781,56 +2781,56 @@ snapshots: '@types/estree@1.0.9': {} - '@types/node@24.13.6': + '@types/node@24.19.2': dependencies: - undici-types: 7.18.2 + undici-types: 7.24.6 - '@vitest/expect@4.1.11': + '@vitest/expect@4.1.12': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - chai: 6.2.2 - tinyrainbow: 3.1.1 + '@vitest/spy': 4.1.12 + '@vitest/utils': 4.1.12 + chai: 6.3.0 + tinyrainbow: 3.2.0 - '@vitest/mocker@4.1.11(vite@8.3.0(@types/node@24.13.6)(esbuild@0.27.7))': + '@vitest/mocker@4.1.12(vite@8.3.4(@types/node@24.19.2)(esbuild@0.27.7))': dependencies: - '@vitest/spy': 4.1.11 + '@vitest/spy': 4.1.12 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.3.0(@types/node@24.13.6)(esbuild@0.27.7) + vite: 8.3.4(@types/node@24.19.2)(esbuild@0.27.7) - '@vitest/pretty-format@4.1.11': + '@vitest/pretty-format@4.1.12': dependencies: - tinyrainbow: 3.1.1 + tinyrainbow: 3.2.0 - '@vitest/runner@4.1.11': + '@vitest/runner@4.1.12': dependencies: - '@vitest/utils': 4.1.11 + '@vitest/utils': 4.1.12 pathe: 2.0.3 - '@vitest/snapshot@4.1.11': + '@vitest/snapshot@4.1.12': dependencies: - '@vitest/pretty-format': 4.1.11 - '@vitest/utils': 4.1.11 + '@vitest/pretty-format': 4.1.12 + '@vitest/utils': 4.1.12 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.11': {} + '@vitest/spy@4.1.12': {} - '@vitest/utils@4.1.11': + '@vitest/utils@4.1.12': dependencies: - '@vitest/pretty-format': 4.1.11 + '@vitest/pretty-format': 4.1.12 convert-source-map: 2.0.0 - tinyrainbow: 3.1.1 + tinyrainbow: 3.2.0 - acorn@8.18.0: {} + acorn@8.19.0: {} ansi-regex@5.0.1: {} - ansi-regex@6.3.0: {} + ansi-regex@6.4.0: {} ansi-sequence-parser@1.1.3: {} @@ -2857,7 +2857,7 @@ snapshots: cac@6.7.14: {} - chai@6.2.2: {} + chai@6.3.0: {} chalk@5.6.2: {} @@ -2944,7 +2944,7 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.2 - rollup: 4.63.4 + rollup: 4.64.7 foreground-child@3.3.1: dependencies: @@ -3030,36 +3030,36 @@ snapshots: lines-and-columns@1.2.4: {} - litesvm-darwin-arm64@1.4.1: + litesvm-darwin-arm64@1.6.0: optional: true - litesvm-darwin-x64@1.4.1: + litesvm-darwin-x64@1.6.0: optional: true - litesvm-linux-arm64-gnu@1.4.1: + litesvm-linux-arm64-gnu@1.6.0: optional: true - litesvm-linux-arm64-musl@1.4.1: + litesvm-linux-arm64-musl@1.6.0: optional: true - litesvm-linux-x64-gnu@1.4.1: + litesvm-linux-x64-gnu@1.6.0: optional: true - litesvm-linux-x64-musl@1.4.1: + litesvm-linux-x64-musl@1.6.0: optional: true - litesvm@1.4.1(typescript@5.9.3): + litesvm@1.6.0(typescript@5.9.3): dependencies: '@solana-program/system': 0.14.1(@solana/kit@8.5.0(typescript@5.9.3)) '@solana-program/token': 0.16.1(@solana/kit@8.5.0(typescript@5.9.3)) '@solana/kit': 8.5.0(typescript@5.9.3) optionalDependencies: - litesvm-darwin-arm64: 1.4.1 - litesvm-darwin-x64: 1.4.1 - litesvm-linux-arm64-gnu: 1.4.1 - litesvm-linux-arm64-musl: 1.4.1 - litesvm-linux-x64-gnu: 1.4.1 - litesvm-linux-x64-musl: 1.4.1 + litesvm-darwin-arm64: 1.6.0 + litesvm-darwin-x64: 1.6.0 + litesvm-linux-arm64-gnu: 1.6.0 + litesvm-linux-arm64-musl: 1.6.0 + litesvm-linux-x64-gnu: 1.6.0 + litesvm-linux-x64-musl: 1.6.0 transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder @@ -3086,7 +3086,7 @@ snapshots: mlly@1.8.2: dependencies: - acorn: 8.18.0 + acorn: 8.19.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.4 @@ -3099,7 +3099,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.19: {} + nanoid@3.3.20: {} object-assign@4.1.1: {} @@ -3138,27 +3138,27 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 0.23.0 '@oxlint-tsgolint/win32-x64': 0.23.0 - oxlint@1.83.0(oxlint-tsgolint@0.23.0): + oxlint@1.88.0(oxlint-tsgolint@0.23.0): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.83.0 - '@oxlint/binding-android-arm64': 1.83.0 - '@oxlint/binding-darwin-arm64': 1.83.0 - '@oxlint/binding-darwin-x64': 1.83.0 - '@oxlint/binding-freebsd-x64': 1.83.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.83.0 - '@oxlint/binding-linux-arm-musleabihf': 1.83.0 - '@oxlint/binding-linux-arm64-gnu': 1.83.0 - '@oxlint/binding-linux-arm64-musl': 1.83.0 - '@oxlint/binding-linux-ppc64-gnu': 1.83.0 - '@oxlint/binding-linux-riscv64-gnu': 1.83.0 - '@oxlint/binding-linux-riscv64-musl': 1.83.0 - '@oxlint/binding-linux-s390x-gnu': 1.83.0 - '@oxlint/binding-linux-x64-gnu': 1.83.0 - '@oxlint/binding-linux-x64-musl': 1.83.0 - '@oxlint/binding-openharmony-arm64': 1.83.0 - '@oxlint/binding-win32-arm64-msvc': 1.83.0 - '@oxlint/binding-win32-ia32-msvc': 1.83.0 - '@oxlint/binding-win32-x64-msvc': 1.83.0 + '@oxlint/binding-android-arm-eabi': 1.88.0 + '@oxlint/binding-android-arm64': 1.88.0 + '@oxlint/binding-darwin-arm64': 1.88.0 + '@oxlint/binding-darwin-x64': 1.88.0 + '@oxlint/binding-freebsd-x64': 1.88.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.88.0 + '@oxlint/binding-linux-arm-musleabihf': 1.88.0 + '@oxlint/binding-linux-arm64-gnu': 1.88.0 + '@oxlint/binding-linux-arm64-musl': 1.88.0 + '@oxlint/binding-linux-ppc64-gnu': 1.88.0 + '@oxlint/binding-linux-riscv64-gnu': 1.88.0 + '@oxlint/binding-linux-riscv64-musl': 1.88.0 + '@oxlint/binding-linux-s390x-gnu': 1.88.0 + '@oxlint/binding-linux-x64-gnu': 1.88.0 + '@oxlint/binding-linux-x64-musl': 1.88.0 + '@oxlint/binding-openharmony-arm64': 1.88.0 + '@oxlint/binding-win32-arm64-msvc': 1.88.0 + '@oxlint/binding-win32-ia32-msvc': 1.88.0 + '@oxlint/binding-win32-x64-msvc': 1.88.0 oxlint-tsgolint: 0.23.0 package-json-from-dist@1.0.1: {} @@ -3184,17 +3184,17 @@ snapshots: mlly: 1.8.2 pathe: 2.0.3 - postcss-load-config@6.0.1(postcss@8.5.28): + postcss-load-config@6.0.1(postcss@8.5.30): dependencies: lilconfig: 3.1.3 optionalDependencies: - postcss: 8.5.28 + postcss: 8.5.30 - postcss@8.5.28: + postcss@8.5.30: dependencies: - nanoid: 3.3.19 + nanoid: 3.3.20 picocolors: 1.1.1 - source-map-js: 1.2.1 + source-map-js: 1.2.2 readdirp@4.1.2: {} @@ -3204,57 +3204,57 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.2.9: + rolldown@1.2.14: dependencies: - '@oxc-project/types': 0.150.0 + '@oxc-project/types': 0.154.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.9 - '@rolldown/binding-android-arm64': 1.2.9 - '@rolldown/binding-darwin-arm64': 1.2.9 - '@rolldown/binding-darwin-x64': 1.2.9 - '@rolldown/binding-freebsd-x64': 1.2.9 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.9 - '@rolldown/binding-linux-arm64-gnu': 1.2.9 - '@rolldown/binding-linux-arm64-musl': 1.2.9 - '@rolldown/binding-linux-ppc64-gnu': 1.2.9 - '@rolldown/binding-linux-s390x-gnu': 1.2.9 - '@rolldown/binding-linux-x64-gnu': 1.2.9 - '@rolldown/binding-linux-x64-musl': 1.2.9 - '@rolldown/binding-openharmony-arm64': 1.2.9 - '@rolldown/binding-win32-arm64-msvc': 1.2.9 - '@rolldown/binding-win32-x64-msvc': 1.2.9 - - rollup@4.63.4: + '@rolldown/binding-android-arm-eabi': 1.2.14 + '@rolldown/binding-android-arm64': 1.2.14 + '@rolldown/binding-darwin-arm64': 1.2.14 + '@rolldown/binding-darwin-x64': 1.2.14 + '@rolldown/binding-freebsd-x64': 1.2.14 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.14 + '@rolldown/binding-linux-arm64-gnu': 1.2.14 + '@rolldown/binding-linux-arm64-musl': 1.2.14 + '@rolldown/binding-linux-ppc64-gnu': 1.2.14 + '@rolldown/binding-linux-s390x-gnu': 1.2.14 + '@rolldown/binding-linux-x64-gnu': 1.2.14 + '@rolldown/binding-linux-x64-musl': 1.2.14 + '@rolldown/binding-openharmony-arm64': 1.2.14 + '@rolldown/binding-win32-arm64-msvc': 1.2.14 + '@rolldown/binding-win32-x64-msvc': 1.2.14 + + rollup@4.64.7: dependencies: '@types/estree': 1.0.9 optionalDependencies: '@napi-rs/lzma-linux-x64-gnu': 1.5.1 - '@rollup/rollup-android-arm-eabi': 4.63.4 - '@rollup/rollup-android-arm64': 4.63.4 - '@rollup/rollup-darwin-arm64': 4.63.4 - '@rollup/rollup-darwin-x64': 4.63.4 - '@rollup/rollup-freebsd-arm64': 4.63.4 - '@rollup/rollup-freebsd-x64': 4.63.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.63.4 - '@rollup/rollup-linux-arm-musleabihf': 4.63.4 - '@rollup/rollup-linux-arm64-gnu': 4.63.4 - '@rollup/rollup-linux-arm64-musl': 4.63.4 - '@rollup/rollup-linux-loong64-gnu': 4.63.4 - '@rollup/rollup-linux-loong64-musl': 4.63.4 - '@rollup/rollup-linux-ppc64-gnu': 4.63.4 - '@rollup/rollup-linux-ppc64-musl': 4.63.4 - '@rollup/rollup-linux-riscv64-gnu': 4.63.4 - '@rollup/rollup-linux-riscv64-musl': 4.63.4 - '@rollup/rollup-linux-s390x-gnu': 4.63.4 - '@rollup/rollup-linux-x64-gnu': 4.63.4 - '@rollup/rollup-linux-x64-musl': 4.63.4 - '@rollup/rollup-openbsd-x64': 4.63.4 - '@rollup/rollup-openharmony-arm64': 4.63.4 - '@rollup/rollup-win32-arm64-msvc': 4.63.4 - '@rollup/rollup-win32-ia32-msvc': 4.63.4 - '@rollup/rollup-win32-x64-gnu': 4.63.4 - '@rollup/rollup-win32-x64-msvc': 4.63.4 + '@rollup/rollup-android-arm-eabi': 4.64.7 + '@rollup/rollup-android-arm64': 4.64.7 + '@rollup/rollup-darwin-arm64': 4.64.7 + '@rollup/rollup-darwin-x64': 4.64.7 + '@rollup/rollup-freebsd-arm64': 4.64.7 + '@rollup/rollup-freebsd-x64': 4.64.7 + '@rollup/rollup-linux-arm-gnueabihf': 4.64.7 + '@rollup/rollup-linux-arm-musleabihf': 4.64.7 + '@rollup/rollup-linux-arm64-gnu': 4.64.7 + '@rollup/rollup-linux-arm64-musl': 4.64.7 + '@rollup/rollup-linux-loong64-gnu': 4.64.7 + '@rollup/rollup-linux-loong64-musl': 4.64.7 + '@rollup/rollup-linux-ppc64-gnu': 4.64.7 + '@rollup/rollup-linux-ppc64-musl': 4.64.7 + '@rollup/rollup-linux-riscv64-gnu': 4.64.7 + '@rollup/rollup-linux-riscv64-musl': 4.64.7 + '@rollup/rollup-linux-s390x-gnu': 4.64.7 + '@rollup/rollup-linux-x64-gnu': 4.64.7 + '@rollup/rollup-linux-x64-musl': 4.64.7 + '@rollup/rollup-openbsd-x64': 4.64.7 + '@rollup/rollup-openharmony-arm64': 4.64.7 + '@rollup/rollup-win32-arm64-msvc': 4.64.7 + '@rollup/rollup-win32-ia32-msvc': 4.64.7 + '@rollup/rollup-win32-x64-gnu': 4.64.7 + '@rollup/rollup-win32-x64-msvc': 4.64.7 fsevents: 2.3.3 shebang-command@2.0.0: @@ -3274,13 +3274,13 @@ snapshots: signal-exit@4.1.0: {} - source-map-js@1.2.1: {} + source-map-js@1.2.2: {} source-map@0.7.6: {} stackback@0.0.2: {} - std-env@4.2.0: {} + std-env@4.3.0: {} string-width@4.2.3: dependencies: @@ -3300,7 +3300,7 @@ snapshots: strip-ansi@7.2.0: dependencies: - ansi-regex: 6.3.0 + ansi-regex: 6.4.0 sucrase@3.35.1: dependencies: @@ -3333,13 +3333,13 @@ snapshots: tinypool@2.1.0: {} - tinyrainbow@3.1.1: {} + tinyrainbow@3.2.0: {} tree-kill@1.2.2: {} ts-interface-checker@0.1.13: {} - tsup@8.5.1(postcss@8.5.28)(typescript@5.9.3): + tsup@8.5.1(postcss@8.5.30)(typescript@5.9.3): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -3350,16 +3350,16 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.28) + postcss-load-config: 6.0.1(postcss@8.5.30) resolve-from: 5.0.0 - rollup: 4.63.4 + rollup: 4.64.7 source-map: 0.7.6 sucrase: 3.35.1 tinyexec: 0.3.2 tinyglobby: 0.2.17 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.28 + postcss: 8.5.30 typescript: 5.9.3 transitivePeerDependencies: - jiti @@ -3379,46 +3379,46 @@ snapshots: ufo@1.6.4: {} - undici-types@7.18.2: {} + undici-types@7.24.6: {} - undici-types@8.12.1: {} + undici-types@8.12.2: {} - vite@8.3.0(@types/node@24.13.6)(esbuild@0.27.7): + vite@8.3.4(@types/node@24.19.2)(esbuild@0.27.7): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 - postcss: 8.5.28 - rolldown: 1.2.9 + postcss: 8.5.30 + rolldown: 1.2.14 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 24.13.6 + '@types/node': 24.19.2 esbuild: 0.27.7 fsevents: 2.3.3 - vitest@4.1.11(@types/node@24.13.6)(vite@8.3.0(@types/node@24.13.6)(esbuild@0.27.7)): + vitest@4.1.12(@types/node@24.19.2)(vite@8.3.4(@types/node@24.19.2)(esbuild@0.27.7)): dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.3.0(@types/node@24.13.6)(esbuild@0.27.7)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 + '@vitest/expect': 4.1.12 + '@vitest/mocker': 4.1.12(vite@8.3.4(@types/node@24.19.2)(esbuild@0.27.7)) + '@vitest/pretty-format': 4.1.12 + '@vitest/runner': 4.1.12 + '@vitest/snapshot': 4.1.12 + '@vitest/spy': 4.1.12 + '@vitest/utils': 4.1.12 es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 obug: 2.2.1 pathe: 2.0.3 picomatch: 4.0.7 - std-env: 4.2.0 + std-env: 4.3.0 tinybench: 2.9.0 tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vite: 8.3.0(@types/node@24.13.6)(esbuild@0.27.7) + tinyrainbow: 3.2.0 + vite: 8.3.4(@types/node@24.19.2)(esbuild@0.27.7) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.6 + '@types/node': 24.19.2 transitivePeerDependencies: - msw @@ -3447,4 +3447,4 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.2.0 - ws@8.21.3: {} + ws@8.22.0: {} diff --git a/clients/js/src/createMint.ts b/clients/js/src/createMint.ts index df714a85..8848bd95 100644 --- a/clients/js/src/createMint.ts +++ b/clients/js/src/createMint.ts @@ -8,7 +8,6 @@ import { sequentialInstructionPlan, TransactionSigner, } from '@solana/kit'; -import { getAddressFromResolvedInstructionAccount } from '@solana/kit/program-client-core'; import { getInitializeMint2Instruction, getMintSize, TOKEN_PROGRAM_ADDRESS } from './generated'; @@ -42,10 +41,6 @@ export async function getCreateMintInstructionPlan( ): Promise { const space = getMintSize(); const lamports = input.mintAccountLamports ?? (await client.getMinimumBalance(space)); - const systemProgram = - config?.systemProgram && getAddressFromResolvedInstructionAccount('systemProgram', config.systemProgram); - const tokenProgram = - config?.tokenProgram && getAddressFromResolvedInstructionAccount('tokenProgram', config.tokenProgram); return sequentialInstructionPlan([ getCreateAccountInstruction( { @@ -53,10 +48,10 @@ export async function getCreateMintInstructionPlan( newAccount: input.newMint, lamports, space, - programAddress: tokenProgram ?? TOKEN_PROGRAM_ADDRESS, + programAddress: config?.tokenProgram ?? TOKEN_PROGRAM_ADDRESS, }, { - programAddress: systemProgram, + programAddress: config?.systemProgram, }, ), getInitializeMint2Instruction( @@ -67,7 +62,7 @@ export async function getCreateMintInstructionPlan( freezeAuthority: input.freezeAuthority, }, { - programAddress: tokenProgram, + programAddress: config?.tokenProgram, }, ), ]);