/** * This code was AUTOGENERATED using the Codama library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun Codama to update it. * * @see https://github.com/codama-idl/codama */ import { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU16Decoder, getU16Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type Codec, type Decoder, type Encoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, } from '@solana/kit'; import { getAccountMetaFactory, type ResolvedInstructionAccount, } from '@solana/program-client-core'; import { SAGE_PROGRAM_ADDRESS } from '../programs'; import { getClaimStakeDefinitionIdDecoder, getClaimStakeDefinitionIdEncoder, getClaimStakeDefinitionSizedDecoder, getClaimStakeDefinitionSizedEncoder, getClaimStakeDefinitionUnsizedInputsDecoder, getClaimStakeDefinitionUnsizedInputsEncoder, type ClaimStakeDefinitionId, type ClaimStakeDefinitionIdArgs, type ClaimStakeDefinitionSized, type ClaimStakeDefinitionSizedArgs, type ClaimStakeDefinitionUnsizedInputs, type ClaimStakeDefinitionUnsizedInputsArgs, } from '../types'; export const UPDATE_CLAIM_STAKE_DEFINITION_DISCRIMINATOR = new Uint8Array([ 64, 69, 26, 237, 168, 98, 10, 111, ]); export function getUpdateClaimStakeDefinitionDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( UPDATE_CLAIM_STAKE_DEFINITION_DISCRIMINATOR, ); } export type UpdateClaimStakeDefinitionInstruction< TProgram extends string = typeof SAGE_PROGRAM_ADDRESS, TAccountProfileValidationSigner extends string | AccountMeta = string, TAccountProfileValidationProfile extends string | AccountMeta = string, TAccountProfileValidationCertificate extends string | AccountMeta = string, TAccountProfileValidationProgram extends string | AccountMeta = 'C4PRoFNroxxzdgeCoM31LJjYRg7kT6ymogSTAT99iD1u', TAccountGame extends string | AccountMeta = string, TAccountRentCatalog extends string | AccountMeta = string, TAccountRentHead extends string | AccountMeta = string, TAccountRentCurrentPage extends string | AccountMeta = string, TAccountRentNextPage extends string | AccountMeta = string, TAccountSystemProgram extends string | AccountMeta = '11111111111111111111111111111111', TRemainingAccounts extends readonly AccountMeta[] = [], > = Instruction & InstructionWithData & InstructionWithAccounts< [ TAccountProfileValidationSigner extends string ? ReadonlySignerAccount & AccountSignerMeta : TAccountProfileValidationSigner, TAccountProfileValidationProfile extends string ? WritableAccount : TAccountProfileValidationProfile, TAccountProfileValidationCertificate extends string ? ReadonlyAccount : TAccountProfileValidationCertificate, TAccountProfileValidationProgram extends string ? ReadonlyAccount : TAccountProfileValidationProgram, TAccountGame extends string ? WritableAccount : TAccountGame, TAccountRentCatalog extends string ? ReadonlyAccount : TAccountRentCatalog, TAccountRentHead extends string ? WritableAccount : TAccountRentHead, TAccountRentCurrentPage extends string ? WritableAccount : TAccountRentCurrentPage, TAccountRentNextPage extends string ? WritableAccount : TAccountRentNextPage, TAccountSystemProgram extends string ? ReadonlyAccount : TAccountSystemProgram, ...TRemainingAccounts, ] >; export type UpdateClaimStakeDefinitionInstructionData = { discriminator: ReadonlyUint8Array; /** The index of the key in the profile permissions */ keyIndex: number; /** Also a validate arg: it derives the DEF source-head seeds. */ claimStakeDefinitionId: ClaimStakeDefinitionId; /** The claim stake definition to update */ claimStakeDefinitionSized: ClaimStakeDefinitionSized; /** The unsized inputs for the claim stake definition */ claimStakeDefinitionUnsized: ClaimStakeDefinitionUnsizedInputs; }; export type UpdateClaimStakeDefinitionInstructionDataArgs = { /** The index of the key in the profile permissions */ keyIndex: number; /** Also a validate arg: it derives the DEF source-head seeds. */ claimStakeDefinitionId: ClaimStakeDefinitionIdArgs; /** The claim stake definition to update */ claimStakeDefinitionSized: ClaimStakeDefinitionSizedArgs; /** The unsized inputs for the claim stake definition */ claimStakeDefinitionUnsized: ClaimStakeDefinitionUnsizedInputsArgs; }; export function getUpdateClaimStakeDefinitionInstructionDataEncoder(): Encoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['keyIndex', getU16Encoder()], ['claimStakeDefinitionId', getClaimStakeDefinitionIdEncoder()], ['claimStakeDefinitionSized', getClaimStakeDefinitionSizedEncoder()], [ 'claimStakeDefinitionUnsized', getClaimStakeDefinitionUnsizedInputsEncoder(), ], ]), (value) => ({ ...value, discriminator: UPDATE_CLAIM_STAKE_DEFINITION_DISCRIMINATOR, }), ); } export function getUpdateClaimStakeDefinitionInstructionDataDecoder(): Decoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['keyIndex', getU16Decoder()], ['claimStakeDefinitionId', getClaimStakeDefinitionIdDecoder()], ['claimStakeDefinitionSized', getClaimStakeDefinitionSizedDecoder()], [ 'claimStakeDefinitionUnsized', getClaimStakeDefinitionUnsizedInputsDecoder(), ], ]); } export function getUpdateClaimStakeDefinitionInstructionDataCodec(): Codec< UpdateClaimStakeDefinitionInstructionDataArgs, UpdateClaimStakeDefinitionInstructionData > { return combineCodec( getUpdateClaimStakeDefinitionInstructionDataEncoder(), getUpdateClaimStakeDefinitionInstructionDataDecoder(), ); } export type UpdateClaimStakeDefinitionInput< TAccountProfileValidationSigner extends string = string, TAccountProfileValidationProfile extends string = string, TAccountProfileValidationCertificate extends string = string, TAccountProfileValidationProgram extends string = string, TAccountGame extends string = string, TAccountRentCatalog extends string = string, TAccountRentHead extends string = string, TAccountRentCurrentPage extends string = string, TAccountRentNextPage extends string = string, TAccountSystemProgram extends string = string, > = { profileValidationSigner: TransactionSigner; profileValidationProfile: Address; profileValidationCertificate?: Address; profileValidationProgram?: Address; /** The game */ game: Address; /** The game's rent catalog PDA (REQUIRED, may be uninitialized = Disabled). */ rentCatalog: Address; /** This definition's DEF source-head PDA (REQUIRED, may be uninitialized = a legacy source). */ rentHead: Address; /** The page holding the head's latest record (required iff the head exists). */ rentCurrentPage?: Address; /** The following page, created on demand (required iff the head exists). */ rentNextPage?: Address; /** The Solana System program (history page creation). */ systemProgram?: Address; keyIndex: UpdateClaimStakeDefinitionInstructionDataArgs['keyIndex']; claimStakeDefinitionId: UpdateClaimStakeDefinitionInstructionDataArgs['claimStakeDefinitionId']; claimStakeDefinitionSized: UpdateClaimStakeDefinitionInstructionDataArgs['claimStakeDefinitionSized']; claimStakeDefinitionUnsized: UpdateClaimStakeDefinitionInstructionDataArgs['claimStakeDefinitionUnsized']; }; export function getUpdateClaimStakeDefinitionInstruction< TAccountProfileValidationSigner extends string, TAccountProfileValidationProfile extends string, TAccountProfileValidationCertificate extends string, TAccountProfileValidationProgram extends string, TAccountGame extends string, TAccountRentCatalog extends string, TAccountRentHead extends string, TAccountRentCurrentPage extends string, TAccountRentNextPage extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof SAGE_PROGRAM_ADDRESS, >( input: UpdateClaimStakeDefinitionInput< TAccountProfileValidationSigner, TAccountProfileValidationProfile, TAccountProfileValidationCertificate, TAccountProfileValidationProgram, TAccountGame, TAccountRentCatalog, TAccountRentHead, TAccountRentCurrentPage, TAccountRentNextPage, TAccountSystemProgram >, config?: { programAddress?: TProgramAddress }, ): UpdateClaimStakeDefinitionInstruction< TProgramAddress, TAccountProfileValidationSigner, TAccountProfileValidationProfile, TAccountProfileValidationCertificate, TAccountProfileValidationProgram, TAccountGame, TAccountRentCatalog, TAccountRentHead, TAccountRentCurrentPage, TAccountRentNextPage, TAccountSystemProgram > { // Program address. const programAddress = config?.programAddress ?? SAGE_PROGRAM_ADDRESS; // Original accounts. const originalAccounts = { profileValidationSigner: { value: input.profileValidationSigner ?? null, isWritable: false, }, profileValidationProfile: { value: input.profileValidationProfile ?? null, isWritable: true, }, profileValidationCertificate: { value: input.profileValidationCertificate ?? null, isWritable: false, }, profileValidationProgram: { value: input.profileValidationProgram ?? null, isWritable: false, }, game: { value: input.game ?? null, isWritable: true }, rentCatalog: { value: input.rentCatalog ?? null, isWritable: false }, rentHead: { value: input.rentHead ?? null, isWritable: true }, rentCurrentPage: { value: input.rentCurrentPage ?? null, isWritable: true }, rentNextPage: { value: input.rentNextPage ?? null, isWritable: true }, systemProgram: { value: input.systemProgram ?? null, isWritable: false }, }; const accounts = originalAccounts as Record< keyof typeof originalAccounts, ResolvedInstructionAccount >; // Original args. const args = { ...input }; // Resolve default values. if (!accounts.profileValidationProgram.value) { accounts.profileValidationProgram.value = 'C4PRoFNroxxzdgeCoM31LJjYRg7kT6ymogSTAT99iD1u' as Address<'C4PRoFNroxxzdgeCoM31LJjYRg7kT6ymogSTAT99iD1u'>; } if (!accounts.systemProgram.value) { accounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>; } const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); return Object.freeze({ accounts: [ getAccountMeta( 'profileValidationSigner', accounts.profileValidationSigner, ), getAccountMeta( 'profileValidationProfile', accounts.profileValidationProfile, ), getAccountMeta( 'profileValidationCertificate', accounts.profileValidationCertificate, ), getAccountMeta( 'profileValidationProgram', accounts.profileValidationProgram, ), getAccountMeta('game', accounts.game), getAccountMeta('rentCatalog', accounts.rentCatalog), getAccountMeta('rentHead', accounts.rentHead), getAccountMeta('rentCurrentPage', accounts.rentCurrentPage), getAccountMeta('rentNextPage', accounts.rentNextPage), getAccountMeta('systemProgram', accounts.systemProgram), ], data: getUpdateClaimStakeDefinitionInstructionDataEncoder().encode( args as UpdateClaimStakeDefinitionInstructionDataArgs, ), programAddress, } as UpdateClaimStakeDefinitionInstruction< TProgramAddress, TAccountProfileValidationSigner, TAccountProfileValidationProfile, TAccountProfileValidationCertificate, TAccountProfileValidationProgram, TAccountGame, TAccountRentCatalog, TAccountRentHead, TAccountRentCurrentPage, TAccountRentNextPage, TAccountSystemProgram >); } export type ParsedUpdateClaimStakeDefinitionInstruction< TProgram extends string = typeof SAGE_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[], > = { programAddress: Address; accounts: { profileValidationSigner: TAccountMetas[0]; profileValidationProfile: TAccountMetas[1]; profileValidationCertificate?: TAccountMetas[2] | undefined; profileValidationProgram: TAccountMetas[3]; /** The game */ game: TAccountMetas[4]; /** The game's rent catalog PDA (REQUIRED, may be uninitialized = Disabled). */ rentCatalog: TAccountMetas[5]; /** This definition's DEF source-head PDA (REQUIRED, may be uninitialized = a legacy source). */ rentHead: TAccountMetas[6]; /** The page holding the head's latest record (required iff the head exists). */ rentCurrentPage?: TAccountMetas[7] | undefined; /** The following page, created on demand (required iff the head exists). */ rentNextPage?: TAccountMetas[8] | undefined; /** The Solana System program (history page creation). */ systemProgram: TAccountMetas[9]; }; data: UpdateClaimStakeDefinitionInstructionData; }; export function parseUpdateClaimStakeDefinitionInstruction< TProgram extends string, TAccountMetas extends readonly AccountMeta[], >( instruction: Instruction & InstructionWithAccounts & InstructionWithData, ): ParsedUpdateClaimStakeDefinitionInstruction { if (instruction.accounts.length < 10) { throw new SolanaError( SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 10, }, ); } let accountIndex = 0; const getNextAccount = () => { const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!; accountIndex += 1; return accountMeta; }; const getNextOptionalAccount = () => { const accountMeta = getNextAccount(); return accountMeta.address === SAGE_PROGRAM_ADDRESS ? undefined : accountMeta; }; return { programAddress: instruction.programAddress, accounts: { profileValidationSigner: getNextAccount(), profileValidationProfile: getNextAccount(), profileValidationCertificate: getNextOptionalAccount(), profileValidationProgram: getNextAccount(), game: getNextAccount(), rentCatalog: getNextAccount(), rentHead: getNextAccount(), rentCurrentPage: getNextOptionalAccount(), rentNextPage: getNextOptionalAccount(), systemProgram: getNextAccount(), }, data: getUpdateClaimStakeDefinitionInstructionDataDecoder().decode( instruction.data, ), }; }