123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- /**
- * This code was AUTOGENERATED using the kinobi library.
- * Please DO NOT EDIT THIS FILE, instead use visitors
- * to add features, then rerun kinobi to update it.
- *
- * @see https://github.com/metaplex-foundation/kinobi
- */
- import {
- Address,
- IAccountMeta,
- IAccountSignerMeta,
- IInstruction,
- IInstructionWithAccounts,
- ReadonlyAccount,
- TransactionSigner,
- WritableAccount,
- WritableSignerAccount,
- } from '@solana/web3.js';
- import { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';
- import { ResolvedAccount, getAccountMetaFactory } from '../shared';
- export type RecoverNestedAssociatedTokenInstruction<
- TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
- TAccountNestedAssociatedAccountAddress extends
- | string
- | IAccountMeta<string> = string,
- TAccountNestedTokenMintAddress extends string | IAccountMeta<string> = string,
- TAccountDestinationAssociatedAccountAddress extends
- | string
- | IAccountMeta<string> = string,
- TAccountOwnerAssociatedAccountAddress extends
- | string
- | IAccountMeta<string> = string,
- TAccountOwnerTokenMintAddress extends string | IAccountMeta<string> = string,
- TAccountWalletAddress extends string | IAccountMeta<string> = string,
- TAccountTokenProgram extends
- | string
- | IAccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
- TRemainingAccounts extends readonly IAccountMeta<string>[] = [],
- > = IInstruction<TProgram> &
- IInstructionWithAccounts<
- [
- TAccountNestedAssociatedAccountAddress extends string
- ? WritableAccount<TAccountNestedAssociatedAccountAddress>
- : TAccountNestedAssociatedAccountAddress,
- TAccountNestedTokenMintAddress extends string
- ? ReadonlyAccount<TAccountNestedTokenMintAddress>
- : TAccountNestedTokenMintAddress,
- TAccountDestinationAssociatedAccountAddress extends string
- ? WritableAccount<TAccountDestinationAssociatedAccountAddress>
- : TAccountDestinationAssociatedAccountAddress,
- TAccountOwnerAssociatedAccountAddress extends string
- ? ReadonlyAccount<TAccountOwnerAssociatedAccountAddress>
- : TAccountOwnerAssociatedAccountAddress,
- TAccountOwnerTokenMintAddress extends string
- ? ReadonlyAccount<TAccountOwnerTokenMintAddress>
- : TAccountOwnerTokenMintAddress,
- TAccountWalletAddress extends string
- ? WritableSignerAccount<TAccountWalletAddress> &
- IAccountSignerMeta<TAccountWalletAddress>
- : TAccountWalletAddress,
- TAccountTokenProgram extends string
- ? ReadonlyAccount<TAccountTokenProgram>
- : TAccountTokenProgram,
- ...TRemainingAccounts,
- ]
- >;
- export type RecoverNestedAssociatedTokenInput<
- TAccountNestedAssociatedAccountAddress extends string = string,
- TAccountNestedTokenMintAddress extends string = string,
- TAccountDestinationAssociatedAccountAddress extends string = string,
- TAccountOwnerAssociatedAccountAddress extends string = string,
- TAccountOwnerTokenMintAddress extends string = string,
- TAccountWalletAddress extends string = string,
- TAccountTokenProgram extends string = string,
- > = {
- nestedAssociatedAccountAddress: Address<TAccountNestedAssociatedAccountAddress>;
- nestedTokenMintAddress: Address<TAccountNestedTokenMintAddress>;
- destinationAssociatedAccountAddress: Address<TAccountDestinationAssociatedAccountAddress>;
- ownerAssociatedAccountAddress: Address<TAccountOwnerAssociatedAccountAddress>;
- ownerTokenMintAddress: Address<TAccountOwnerTokenMintAddress>;
- walletAddress: TransactionSigner<TAccountWalletAddress>;
- tokenProgram?: Address<TAccountTokenProgram>;
- };
- export function getRecoverNestedAssociatedTokenInstruction<
- TAccountNestedAssociatedAccountAddress extends string,
- TAccountNestedTokenMintAddress extends string,
- TAccountDestinationAssociatedAccountAddress extends string,
- TAccountOwnerAssociatedAccountAddress extends string,
- TAccountOwnerTokenMintAddress extends string,
- TAccountWalletAddress extends string,
- TAccountTokenProgram extends string,
- >(
- input: RecoverNestedAssociatedTokenInput<
- TAccountNestedAssociatedAccountAddress,
- TAccountNestedTokenMintAddress,
- TAccountDestinationAssociatedAccountAddress,
- TAccountOwnerAssociatedAccountAddress,
- TAccountOwnerTokenMintAddress,
- TAccountWalletAddress,
- TAccountTokenProgram
- >
- ): RecoverNestedAssociatedTokenInstruction<
- typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
- TAccountNestedAssociatedAccountAddress,
- TAccountNestedTokenMintAddress,
- TAccountDestinationAssociatedAccountAddress,
- TAccountOwnerAssociatedAccountAddress,
- TAccountOwnerTokenMintAddress,
- TAccountWalletAddress,
- TAccountTokenProgram
- > {
- // Program address.
- const programAddress = ASSOCIATED_TOKEN_PROGRAM_ADDRESS;
- // Original accounts.
- const originalAccounts = {
- nestedAssociatedAccountAddress: {
- value: input.nestedAssociatedAccountAddress ?? null,
- isWritable: true,
- },
- nestedTokenMintAddress: {
- value: input.nestedTokenMintAddress ?? null,
- isWritable: false,
- },
- destinationAssociatedAccountAddress: {
- value: input.destinationAssociatedAccountAddress ?? null,
- isWritable: true,
- },
- ownerAssociatedAccountAddress: {
- value: input.ownerAssociatedAccountAddress ?? null,
- isWritable: false,
- },
- ownerTokenMintAddress: {
- value: input.ownerTokenMintAddress ?? null,
- isWritable: false,
- },
- walletAddress: { value: input.walletAddress ?? null, isWritable: true },
- tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },
- };
- const accounts = originalAccounts as Record<
- keyof typeof originalAccounts,
- ResolvedAccount
- >;
- // Resolve default values.
- if (!accounts.tokenProgram.value) {
- accounts.tokenProgram.value =
- 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;
- }
- const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
- const instruction = {
- accounts: [
- getAccountMeta(accounts.nestedAssociatedAccountAddress),
- getAccountMeta(accounts.nestedTokenMintAddress),
- getAccountMeta(accounts.destinationAssociatedAccountAddress),
- getAccountMeta(accounts.ownerAssociatedAccountAddress),
- getAccountMeta(accounts.ownerTokenMintAddress),
- getAccountMeta(accounts.walletAddress),
- getAccountMeta(accounts.tokenProgram),
- ],
- programAddress,
- } as RecoverNestedAssociatedTokenInstruction<
- typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
- TAccountNestedAssociatedAccountAddress,
- TAccountNestedTokenMintAddress,
- TAccountDestinationAssociatedAccountAddress,
- TAccountOwnerAssociatedAccountAddress,
- TAccountOwnerTokenMintAddress,
- TAccountWalletAddress,
- TAccountTokenProgram
- >;
- return instruction;
- }
- export type ParsedRecoverNestedAssociatedTokenInstruction<
- TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
- TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],
- > = {
- programAddress: Address<TProgram>;
- accounts: {
- nestedAssociatedAccountAddress: TAccountMetas[0];
- nestedTokenMintAddress: TAccountMetas[1];
- destinationAssociatedAccountAddress: TAccountMetas[2];
- ownerAssociatedAccountAddress: TAccountMetas[3];
- ownerTokenMintAddress: TAccountMetas[4];
- walletAddress: TAccountMetas[5];
- tokenProgram: TAccountMetas[6];
- };
- };
- export function parseRecoverNestedAssociatedTokenInstruction<
- TProgram extends string,
- TAccountMetas extends readonly IAccountMeta[],
- >(
- instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas>
- ): ParsedRecoverNestedAssociatedTokenInstruction<TProgram, TAccountMetas> {
- if (instruction.accounts.length < 7) {
- // TODO: Coded error.
- throw new Error('Not enough accounts');
- }
- let accountIndex = 0;
- const getNextAccount = () => {
- const accountMeta = instruction.accounts![accountIndex]!;
- accountIndex += 1;
- return accountMeta;
- };
- return {
- programAddress: instruction.programAddress,
- accounts: {
- nestedAssociatedAccountAddress: getNextAccount(),
- nestedTokenMintAddress: getNextAccount(),
- destinationAssociatedAccountAddress: getNextAccount(),
- ownerAssociatedAccountAddress: getNextAccount(),
- ownerTokenMintAddress: getNextAccount(),
- walletAddress: getNextAccount(),
- tokenProgram: getNextAccount(),
- },
- };
- }
|