/** * 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, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type WritableAccount, } from '@solana/kit'; import { getAccountMetaFactory, type ResolvedInstructionAccount, } from '@solana/program-client-core'; import { SAGE_PROGRAM_ADDRESS } from '../programs'; export const SKIP_DEMOCRACY_PTR_ABSENT_DELEGATION_DISCRIMINATOR = new Uint8Array([99, 8, 227, 218, 113, 152, 51, 141]); export function getSkipDemocracyPtrAbsentDelegationDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( SKIP_DEMOCRACY_PTR_ABSENT_DELEGATION_DISCRIMINATOR, ); } export type SkipDemocracyPtrAbsentDelegationInstruction< TProgram extends string = typeof SAGE_PROGRAM_ADDRESS, TAccountScanContextGame extends string | AccountMeta = string, TAccountScanContextIdentity extends string | AccountMeta = string, TAccountScanContextMigration extends string | AccountMeta = string, TAccountScanCensus extends string | AccountMeta = string, TAccountScanFrozenRoute extends string | AccountMeta = string, TAccountScanVoterPower extends string | AccountMeta = string, TAccountScanRouteCensus extends string | AccountMeta = string, TAccountGovernance extends string | AccountMeta = string, TAccountDelegation extends string | AccountMeta = string, TRemainingAccounts extends readonly AccountMeta[] = [], > = Instruction & InstructionWithData & InstructionWithAccounts< [ TAccountScanContextGame extends string ? ReadonlyAccount : TAccountScanContextGame, TAccountScanContextIdentity extends string ? ReadonlyAccount : TAccountScanContextIdentity, TAccountScanContextMigration extends string ? ReadonlyAccount : TAccountScanContextMigration, TAccountScanCensus extends string ? ReadonlyAccount : TAccountScanCensus, TAccountScanFrozenRoute extends string ? ReadonlyAccount : TAccountScanFrozenRoute, TAccountScanVoterPower extends string ? ReadonlyAccount : TAccountScanVoterPower, TAccountScanRouteCensus extends string ? WritableAccount : TAccountScanRouteCensus, TAccountGovernance extends string ? ReadonlyAccount : TAccountGovernance, TAccountDelegation extends string ? ReadonlyAccount : TAccountDelegation, ...TRemainingAccounts, ] >; export type SkipDemocracyPtrAbsentDelegationInstructionData = { discriminator: ReadonlyUint8Array; }; export type SkipDemocracyPtrAbsentDelegationInstructionDataArgs = {}; export function getSkipDemocracyPtrAbsentDelegationInstructionDataEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: SKIP_DEMOCRACY_PTR_ABSENT_DELEGATION_DISCRIMINATOR, }), ); } export function getSkipDemocracyPtrAbsentDelegationInstructionDataDecoder(): FixedSizeDecoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ]); } export function getSkipDemocracyPtrAbsentDelegationInstructionDataCodec(): FixedSizeCodec< SkipDemocracyPtrAbsentDelegationInstructionDataArgs, SkipDemocracyPtrAbsentDelegationInstructionData > { return combineCodec( getSkipDemocracyPtrAbsentDelegationInstructionDataEncoder(), getSkipDemocracyPtrAbsentDelegationInstructionDataDecoder(), ); } export type SkipDemocracyPtrAbsentDelegationInput< TAccountScanContextGame extends string = string, TAccountScanContextIdentity extends string = string, TAccountScanContextMigration extends string = string, TAccountScanCensus extends string = string, TAccountScanFrozenRoute extends string = string, TAccountScanVoterPower extends string = string, TAccountScanRouteCensus extends string = string, TAccountGovernance extends string = string, TAccountDelegation extends string = string, > = { scanContextGame: Address; scanContextIdentity: Address; scanContextMigration: Address; scanCensus: Address; scanFrozenRoute: Address; scanVoterPower: Address; scanRouteCensus: Address; governance: Address; delegation: Address; }; export function getSkipDemocracyPtrAbsentDelegationInstruction< TAccountScanContextGame extends string, TAccountScanContextIdentity extends string, TAccountScanContextMigration extends string, TAccountScanCensus extends string, TAccountScanFrozenRoute extends string, TAccountScanVoterPower extends string, TAccountScanRouteCensus extends string, TAccountGovernance extends string, TAccountDelegation extends string, TProgramAddress extends Address = typeof SAGE_PROGRAM_ADDRESS, >( input: SkipDemocracyPtrAbsentDelegationInput< TAccountScanContextGame, TAccountScanContextIdentity, TAccountScanContextMigration, TAccountScanCensus, TAccountScanFrozenRoute, TAccountScanVoterPower, TAccountScanRouteCensus, TAccountGovernance, TAccountDelegation >, config?: { programAddress?: TProgramAddress }, ): SkipDemocracyPtrAbsentDelegationInstruction< TProgramAddress, TAccountScanContextGame, TAccountScanContextIdentity, TAccountScanContextMigration, TAccountScanCensus, TAccountScanFrozenRoute, TAccountScanVoterPower, TAccountScanRouteCensus, TAccountGovernance, TAccountDelegation > { // Program address. const programAddress = config?.programAddress ?? SAGE_PROGRAM_ADDRESS; // Original accounts. const originalAccounts = { scanContextGame: { value: input.scanContextGame ?? null, isWritable: false, }, scanContextIdentity: { value: input.scanContextIdentity ?? null, isWritable: false, }, scanContextMigration: { value: input.scanContextMigration ?? null, isWritable: false, }, scanCensus: { value: input.scanCensus ?? null, isWritable: false }, scanFrozenRoute: { value: input.scanFrozenRoute ?? null, isWritable: false, }, scanVoterPower: { value: input.scanVoterPower ?? null, isWritable: false }, scanRouteCensus: { value: input.scanRouteCensus ?? null, isWritable: true }, governance: { value: input.governance ?? null, isWritable: false }, delegation: { value: input.delegation ?? null, isWritable: false }, }; const accounts = originalAccounts as Record< keyof typeof originalAccounts, ResolvedInstructionAccount >; const getAccountMeta = getAccountMetaFactory(programAddress, 'programId'); return Object.freeze({ accounts: [ getAccountMeta('scanContextGame', accounts.scanContextGame), getAccountMeta('scanContextIdentity', accounts.scanContextIdentity), getAccountMeta('scanContextMigration', accounts.scanContextMigration), getAccountMeta('scanCensus', accounts.scanCensus), getAccountMeta('scanFrozenRoute', accounts.scanFrozenRoute), getAccountMeta('scanVoterPower', accounts.scanVoterPower), getAccountMeta('scanRouteCensus', accounts.scanRouteCensus), getAccountMeta('governance', accounts.governance), getAccountMeta('delegation', accounts.delegation), ], data: getSkipDemocracyPtrAbsentDelegationInstructionDataEncoder().encode( {}, ), programAddress, } as SkipDemocracyPtrAbsentDelegationInstruction< TProgramAddress, TAccountScanContextGame, TAccountScanContextIdentity, TAccountScanContextMigration, TAccountScanCensus, TAccountScanFrozenRoute, TAccountScanVoterPower, TAccountScanRouteCensus, TAccountGovernance, TAccountDelegation >); } export type ParsedSkipDemocracyPtrAbsentDelegationInstruction< TProgram extends string = typeof SAGE_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[], > = { programAddress: Address; accounts: { scanContextGame: TAccountMetas[0]; scanContextIdentity: TAccountMetas[1]; scanContextMigration: TAccountMetas[2]; scanCensus: TAccountMetas[3]; scanFrozenRoute: TAccountMetas[4]; scanVoterPower: TAccountMetas[5]; scanRouteCensus: TAccountMetas[6]; governance: TAccountMetas[7]; delegation: TAccountMetas[8]; }; data: SkipDemocracyPtrAbsentDelegationInstructionData; }; export function parseSkipDemocracyPtrAbsentDelegationInstruction< TProgram extends string, TAccountMetas extends readonly AccountMeta[], >( instruction: Instruction & InstructionWithAccounts & InstructionWithData, ): ParsedSkipDemocracyPtrAbsentDelegationInstruction { if (instruction.accounts.length < 9) { throw new SolanaError( SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 9, }, ); } let accountIndex = 0; const getNextAccount = () => { const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!; accountIndex += 1; return accountMeta; }; return { programAddress: instruction.programAddress, accounts: { scanContextGame: getNextAccount(), scanContextIdentity: getNextAccount(), scanContextMigration: getNextAccount(), scanCensus: getNextAccount(), scanFrozenRoute: getNextAccount(), scanVoterPower: getNextAccount(), scanRouteCensus: getNextAccount(), governance: getNextAccount(), delegation: getNextAccount(), }, data: getSkipDemocracyPtrAbsentDelegationInstructionDataDecoder().decode( instruction.data, ), }; }