{"version":3,"sources":["../../src/generated/errors/lighthouse.ts","../../src/generated/programs/lighthouse.ts","../../src/generated/instructions/assertAccountData.ts","../../src/hooked.ts","../../src/generated/shared/index.ts","../../src/generated/types/accountDeltaAssertion.ts","../../src/generated/types/accountInfoAssertion.ts","../../src/generated/types/accountInfoDeltaAssertion.ts","../../src/generated/types/accountInfoField.ts","../../src/generated/types/assertionResult.ts","../../src/generated/types/bubblegumTreeConfigAssertion.ts","../../src/generated/types/clockField.ts","../../src/generated/types/dataValue.ts","../../src/generated/types/dataValueAssertion.ts","../../src/generated/types/dataValueDeltaAssertion.ts","../../src/generated/types/equatableOperator.ts","../../src/generated/types/integerOperator.ts","../../src/generated/types/knownProgram.ts","../../src/generated/types/logLevel.ts","../../src/generated/types/merkleTreeAssertion.ts","../../src/generated/types/metaAssertion.ts","../../src/generated/types/mintAccountAssertion.ts","../../src/generated/types/stakeAccountAssertion.ts","../../src/generated/types/stakeAssertion.ts","../../src/generated/types/stakeStateType.ts","../../src/generated/types/sysvarClockAssertion.ts","../../src/generated/types/tokenAccountAssertion.ts","../../src/generated/types/upgradableBufferAssertion.ts","../../src/generated/types/upgradeableLoaderStateAssertion.ts","../../src/generated/types/upgradeableLoaderStateType.ts","../../src/generated/types/upgradeableProgramAssertion.ts","../../src/generated/types/upgradeableProgramDataAssertion.ts","../../src/generated/types/writeType.ts","../../src/generated/instructions/assertAccountDataMulti.ts","../../src/generated/instructions/assertAccountDelta.ts","../../src/generated/instructions/assertAccountInfo.ts","../../src/generated/instructions/assertAccountInfoMulti.ts","../../src/generated/instructions/assertBubblegumTreeConfigAccount.ts","../../src/generated/instructions/assertMerkleTreeAccount.ts","../../src/generated/instructions/assertMintAccount.ts","../../src/generated/instructions/assertMintAccountMulti.ts","../../src/generated/instructions/assertStakeAccount.ts","../../src/generated/instructions/assertStakeAccountMulti.ts","../../src/generated/instructions/assertSysvarClock.ts","../../src/generated/instructions/assertTokenAccount.ts","../../src/generated/instructions/assertTokenAccountMulti.ts","../../src/generated/instructions/assertUpgradeableLoaderAccount.ts","../../src/generated/instructions/assertUpgradeableLoaderAccountMulti.ts","../../src/generated/instructions/memoryClose.ts","../../src/generated/instructions/memoryWrite.ts","../../src/generated/pdas/memory.ts"],"names":["LighthouseInstruction","combineCodec","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","transformEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","AccountInfoField","getAddressDecoder","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getI128Decoder","getI128Encoder","getU64Decoder","getU64Encoder","getEnumDecoder","getEnumEncoder","ClockField","getI16Decoder","getI16Encoder","getI32Decoder","getI32Encoder","getI64Decoder","getI64Encoder","getI8Decoder","getI8Encoder","getTupleDecoder","getTupleEncoder","getU128Decoder","getU128Encoder","getU16Decoder","getU16Encoder","getU32Decoder","getU32Encoder","EquatableOperator","IntegerOperator","KnownProgram","LogLevel","fixDecoderSize","fixEncoderSize","getOptionDecoder","getOptionEncoder","StakeStateType","UpgradeableLoaderStateType"],"mappings":"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","sourcesContent":["/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidInstructionData: Invalid instruction */\nexport const LIGHTHOUSE_ERROR__INVALID_INSTRUCTION_DATA = 0x1770; // 6000\n/** AssertionFailed: AssertionFailed */\nexport const LIGHTHOUSE_ERROR__ASSERTION_FAILED = 0x1771; // 6001\n/** NotEnoughAccounts: NotEnoughAccounts */\nexport const LIGHTHOUSE_ERROR__NOT_ENOUGH_ACCOUNTS = 0x1772; // 6002\n/** BumpNotFound: BumpNotFound */\nexport const LIGHTHOUSE_ERROR__BUMP_NOT_FOUND = 0x1773; // 6003\n/** AccountBorrowFailed: AccountBorrowFailed */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_BORROW_FAILED = 0x1774; // 6004\n/** RangeOutOfBounds: RangeOutOfBounds */\nexport const LIGHTHOUSE_ERROR__RANGE_OUT_OF_BOUNDS = 0x1775; // 6005\n/** IndexOutOfBounds: IndexOutOfBounds */\nexport const LIGHTHOUSE_ERROR__INDEX_OUT_OF_BOUNDS = 0x1776; // 6006\n/** FailedToDeserialize: FailedToDeserialize */\nexport const LIGHTHOUSE_ERROR__FAILED_TO_DESERIALIZE = 0x1777; // 6007\n/** FailedToSerialize: FailedToSerialize */\nexport const LIGHTHOUSE_ERROR__FAILED_TO_SERIALIZE = 0x1778; // 6008\n/** AccountOwnerMismatch: AccountOwnerMismatch */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_OWNER_MISMATCH = 0x1779; // 6009\n/** AccountKeyMismatch: AccountKeyMismatch */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_KEY_MISMATCH = 0x177a; // 6010\n/** AccountNotInitialized: AccountNotInitialized */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_NOT_INITIALIZED = 0x177b; // 6011\n/** AccountOwnerValidationFailed: AccountOwnerValidationFailed */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_OWNER_VALIDATION_FAILED = 0x177c; // 6012\n/** AccountFundedValidationFailed: AccountFundedValidationFailed */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_FUNDED_VALIDATION_FAILED = 0x177d; // 6013\n/** AccountDiscriminatorValidationFailed: AccountDiscriminatorValidationFailed */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_DISCRIMINATOR_VALIDATION_FAILED = 0x177e; // 6014\n/** AccountValidationFailed: AccountValidaitonFailed */\nexport const LIGHTHOUSE_ERROR__ACCOUNT_VALIDATION_FAILED = 0x177f; // 6015\n/** CrossProgramInvokeViolation: CrossProgramInvokeViolation */\nexport const LIGHTHOUSE_ERROR__CROSS_PROGRAM_INVOKE_VIOLATION = 0x1780; // 6016\n\nexport type LighthouseError =\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_BORROW_FAILED\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_DISCRIMINATOR_VALIDATION_FAILED\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_FUNDED_VALIDATION_FAILED\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_KEY_MISMATCH\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_NOT_INITIALIZED\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_OWNER_MISMATCH\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_OWNER_VALIDATION_FAILED\n  | typeof LIGHTHOUSE_ERROR__ACCOUNT_VALIDATION_FAILED\n  | typeof LIGHTHOUSE_ERROR__ASSERTION_FAILED\n  | typeof LIGHTHOUSE_ERROR__BUMP_NOT_FOUND\n  | typeof LIGHTHOUSE_ERROR__CROSS_PROGRAM_INVOKE_VIOLATION\n  | typeof LIGHTHOUSE_ERROR__FAILED_TO_DESERIALIZE\n  | typeof LIGHTHOUSE_ERROR__FAILED_TO_SERIALIZE\n  | typeof LIGHTHOUSE_ERROR__INDEX_OUT_OF_BOUNDS\n  | typeof LIGHTHOUSE_ERROR__INVALID_INSTRUCTION_DATA\n  | typeof LIGHTHOUSE_ERROR__NOT_ENOUGH_ACCOUNTS\n  | typeof LIGHTHOUSE_ERROR__RANGE_OUT_OF_BOUNDS;\n\nlet lighthouseErrorMessages: Record<LighthouseError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  lighthouseErrorMessages = {\n    [LIGHTHOUSE_ERROR__ACCOUNT_BORROW_FAILED]: `AccountBorrowFailed`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_DISCRIMINATOR_VALIDATION_FAILED]: `AccountDiscriminatorValidationFailed`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_FUNDED_VALIDATION_FAILED]: `AccountFundedValidationFailed`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_KEY_MISMATCH]: `AccountKeyMismatch`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_NOT_INITIALIZED]: `AccountNotInitialized`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_OWNER_MISMATCH]: `AccountOwnerMismatch`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_OWNER_VALIDATION_FAILED]: `AccountOwnerValidationFailed`,\n    [LIGHTHOUSE_ERROR__ACCOUNT_VALIDATION_FAILED]: `AccountValidaitonFailed`,\n    [LIGHTHOUSE_ERROR__ASSERTION_FAILED]: `AssertionFailed`,\n    [LIGHTHOUSE_ERROR__BUMP_NOT_FOUND]: `BumpNotFound`,\n    [LIGHTHOUSE_ERROR__CROSS_PROGRAM_INVOKE_VIOLATION]: `CrossProgramInvokeViolation`,\n    [LIGHTHOUSE_ERROR__FAILED_TO_DESERIALIZE]: `FailedToDeserialize`,\n    [LIGHTHOUSE_ERROR__FAILED_TO_SERIALIZE]: `FailedToSerialize`,\n    [LIGHTHOUSE_ERROR__INDEX_OUT_OF_BOUNDS]: `IndexOutOfBounds`,\n    [LIGHTHOUSE_ERROR__INVALID_INSTRUCTION_DATA]: `Invalid instruction`,\n    [LIGHTHOUSE_ERROR__NOT_ENOUGH_ACCOUNTS]: `NotEnoughAccounts`,\n    [LIGHTHOUSE_ERROR__RANGE_OUT_OF_BOUNDS]: `RangeOutOfBounds`,\n  };\n}\n\nexport function getLighthouseErrorMessage(code: LighthouseError): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (lighthouseErrorMessages as Record<LighthouseError, string>)[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isLighthouseError<TProgramErrorCode extends LighthouseError>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    LIGHTHOUSE_PROGRAM_ADDRESS,\n    code\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  containsBytes,\n  getU8Encoder,\n  type Address,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  type ParsedAssertAccountDataInstruction,\n  type ParsedAssertAccountDataMultiInstruction,\n  type ParsedAssertAccountDeltaInstruction,\n  type ParsedAssertAccountInfoInstruction,\n  type ParsedAssertAccountInfoMultiInstruction,\n  type ParsedAssertBubblegumTreeConfigAccountInstruction,\n  type ParsedAssertMerkleTreeAccountInstruction,\n  type ParsedAssertMintAccountInstruction,\n  type ParsedAssertMintAccountMultiInstruction,\n  type ParsedAssertStakeAccountInstruction,\n  type ParsedAssertStakeAccountMultiInstruction,\n  type ParsedAssertSysvarClockInstruction,\n  type ParsedAssertTokenAccountInstruction,\n  type ParsedAssertTokenAccountMultiInstruction,\n  type ParsedAssertUpgradeableLoaderAccountInstruction,\n  type ParsedAssertUpgradeableLoaderAccountMultiInstruction,\n  type ParsedMemoryCloseInstruction,\n  type ParsedMemoryWriteInstruction,\n} from '../instructions';\n\nexport const LIGHTHOUSE_PROGRAM_ADDRESS =\n  'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95' as Address<'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95'>;\n\nexport enum LighthouseInstruction {\n  MemoryWrite,\n  MemoryClose,\n  AssertAccountData,\n  AssertAccountDataMulti,\n  AssertAccountDelta,\n  AssertAccountInfo,\n  AssertAccountInfoMulti,\n  AssertMintAccount,\n  AssertMintAccountMulti,\n  AssertTokenAccount,\n  AssertTokenAccountMulti,\n  AssertStakeAccount,\n  AssertStakeAccountMulti,\n  AssertUpgradeableLoaderAccount,\n  AssertUpgradeableLoaderAccountMulti,\n  AssertSysvarClock,\n  AssertMerkleTreeAccount,\n  AssertBubblegumTreeConfigAccount,\n}\n\nexport function identifyLighthouseInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): LighthouseInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n    return LighthouseInstruction.MemoryWrite;\n  }\n  if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n    return LighthouseInstruction.MemoryClose;\n  }\n  if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n    return LighthouseInstruction.AssertAccountData;\n  }\n  if (containsBytes(data, getU8Encoder().encode(3), 0)) {\n    return LighthouseInstruction.AssertAccountDataMulti;\n  }\n  if (containsBytes(data, getU8Encoder().encode(4), 0)) {\n    return LighthouseInstruction.AssertAccountDelta;\n  }\n  if (containsBytes(data, getU8Encoder().encode(5), 0)) {\n    return LighthouseInstruction.AssertAccountInfo;\n  }\n  if (containsBytes(data, getU8Encoder().encode(6), 0)) {\n    return LighthouseInstruction.AssertAccountInfoMulti;\n  }\n  if (containsBytes(data, getU8Encoder().encode(7), 0)) {\n    return LighthouseInstruction.AssertMintAccount;\n  }\n  if (containsBytes(data, getU8Encoder().encode(8), 0)) {\n    return LighthouseInstruction.AssertMintAccountMulti;\n  }\n  if (containsBytes(data, getU8Encoder().encode(9), 0)) {\n    return LighthouseInstruction.AssertTokenAccount;\n  }\n  if (containsBytes(data, getU8Encoder().encode(10), 0)) {\n    return LighthouseInstruction.AssertTokenAccountMulti;\n  }\n  if (containsBytes(data, getU8Encoder().encode(11), 0)) {\n    return LighthouseInstruction.AssertStakeAccount;\n  }\n  if (containsBytes(data, getU8Encoder().encode(12), 0)) {\n    return LighthouseInstruction.AssertStakeAccountMulti;\n  }\n  if (containsBytes(data, getU8Encoder().encode(13), 0)) {\n    return LighthouseInstruction.AssertUpgradeableLoaderAccount;\n  }\n  if (containsBytes(data, getU8Encoder().encode(14), 0)) {\n    return LighthouseInstruction.AssertUpgradeableLoaderAccountMulti;\n  }\n  if (containsBytes(data, getU8Encoder().encode(15), 0)) {\n    return LighthouseInstruction.AssertSysvarClock;\n  }\n  if (containsBytes(data, getU8Encoder().encode(16), 0)) {\n    return LighthouseInstruction.AssertMerkleTreeAccount;\n  }\n  if (containsBytes(data, getU8Encoder().encode(17), 0)) {\n    return LighthouseInstruction.AssertBubblegumTreeConfigAccount;\n  }\n  throw new Error(\n    'The provided instruction could not be identified as a lighthouse instruction.'\n  );\n}\n\nexport type ParsedLighthouseInstruction<\n  TProgram extends string = 'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95',\n> =\n  | ({\n      instructionType: LighthouseInstruction.MemoryWrite;\n    } & ParsedMemoryWriteInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.MemoryClose;\n    } & ParsedMemoryCloseInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertAccountData;\n    } & ParsedAssertAccountDataInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertAccountDataMulti;\n    } & ParsedAssertAccountDataMultiInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertAccountDelta;\n    } & ParsedAssertAccountDeltaInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertAccountInfo;\n    } & ParsedAssertAccountInfoInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertAccountInfoMulti;\n    } & ParsedAssertAccountInfoMultiInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertMintAccount;\n    } & ParsedAssertMintAccountInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertMintAccountMulti;\n    } & ParsedAssertMintAccountMultiInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertTokenAccount;\n    } & ParsedAssertTokenAccountInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertTokenAccountMulti;\n    } & ParsedAssertTokenAccountMultiInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertStakeAccount;\n    } & ParsedAssertStakeAccountInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertStakeAccountMulti;\n    } & ParsedAssertStakeAccountMultiInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertUpgradeableLoaderAccount;\n    } & ParsedAssertUpgradeableLoaderAccountInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertUpgradeableLoaderAccountMulti;\n    } & ParsedAssertUpgradeableLoaderAccountMultiInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertSysvarClock;\n    } & ParsedAssertSysvarClockInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertMerkleTreeAccount;\n    } & ParsedAssertMerkleTreeAccountInstruction<TProgram>)\n  | ({\n      instructionType: LighthouseInstruction.AssertBubblegumTreeConfigAccount;\n    } & ParsedAssertBubblegumTreeConfigAccountInstruction<TProgram>);\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getCompactU64Decoder,\n  getCompactU64Encoder,\n  type CompactU64,\n  type CompactU64Args,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getDataValueAssertionDecoder,\n  getDataValueAssertionEncoder,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type DataValueAssertion,\n  type DataValueAssertionArgs,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_ACCOUNT_DATA_DISCRIMINATOR = 2;\n\nexport function getAssertAccountDataDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_ACCOUNT_DATA_DISCRIMINATOR);\n}\n\nexport type AssertAccountDataInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertAccountDataInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  offset: CompactU64;\n  assertion: DataValueAssertion;\n};\n\nexport type AssertAccountDataInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  offset: CompactU64Args;\n  assertion: DataValueAssertionArgs;\n};\n\nexport function getAssertAccountDataInstructionDataEncoder(): Encoder<AssertAccountDataInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['offset', getCompactU64Encoder()],\n      ['assertion', getDataValueAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_ACCOUNT_DATA_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertAccountDataInstructionDataDecoder(): Decoder<AssertAccountDataInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['offset', getCompactU64Decoder()],\n    ['assertion', getDataValueAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertAccountDataInstructionDataCodec(): Codec<\n  AssertAccountDataInstructionDataArgs,\n  AssertAccountDataInstructionData\n> {\n  return combineCodec(\n    getAssertAccountDataInstructionDataEncoder(),\n    getAssertAccountDataInstructionDataDecoder()\n  );\n}\n\nexport type AssertAccountDataInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertAccountDataInstructionDataArgs['logLevel'];\n  offset: AssertAccountDataInstructionDataArgs['offset'];\n  assertion: AssertAccountDataInstructionDataArgs['assertion'];\n};\n\nexport function getAssertAccountDataInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertAccountDataInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertAccountDataInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertAccountDataInstructionDataEncoder().encode(\n      args as AssertAccountDataInstructionDataArgs\n    ),\n  } as AssertAccountDataInstruction<TProgramAddress, TAccountTargetAccount>;\n\n  return instruction;\n}\n\nexport type ParsedAssertAccountDataInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertAccountDataInstructionData;\n};\n\nexport function parseAssertAccountDataInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertAccountDataInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertAccountDataInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","import {\n  Decoder,\n  Encoder,\n  Offset,\n  ReadonlyUint8Array,\n  VariableSizeDecoder,\n  VariableSizeEncoder,\n  createDecoder,\n  createEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n} from '@solana/kit';\nimport { LEB128, UnsignedLEB128 } from '@minhducsun2002/leb128';\nimport {\n  AccountInfoAssertion,\n  AccountInfoAssertionArgs,\n  DataValueAssertion,\n  DataValueAssertionArgs,\n  MintAccountAssertion,\n  MintAccountAssertionArgs,\n  StakeAccountAssertion,\n  StakeAccountAssertionArgs,\n  TokenAccountAssertion,\n  TokenAccountAssertionArgs,\n  UpgradeableLoaderStateAssertion,\n  UpgradeableLoaderStateAssertionArgs,\n  getAccountInfoAssertionDecoder,\n  getAccountInfoAssertionEncoder,\n  getDataValueAssertionDecoder,\n  getDataValueAssertionEncoder,\n  getMintAccountAssertionDecoder,\n  getMintAccountAssertionEncoder,\n  getStakeAccountAssertionDecoder,\n  getStakeAccountAssertionEncoder,\n  getTokenAccountAssertionDecoder,\n  getTokenAccountAssertionEncoder,\n  getUpgradeableLoaderStateAssertionDecoder,\n  getUpgradeableLoaderStateAssertionEncoder,\n} from './generated';\n\nexport type CompactU64 = number;\nexport type CompactU64Args = number;\n\nexport function getCompactU64Encoder(): VariableSizeEncoder<bigint | number> {\n  return createEncoder({\n    getSizeFromValue: (value: bigint | number): number => {\n      if (typeof value === 'bigint' && value > Number.MAX_SAFE_INTEGER) {\n        throw new Error('CompactU64 value is too large');\n      }\n\n      return LEB128.encode(Number(value)).length;\n    },\n    write: (\n      value: bigint | number,\n      bytes: Uint8Array,\n      offset: Offset\n    ): Offset => {\n      if (typeof value === 'bigint' && value > Number.MAX_SAFE_INTEGER) {\n        throw new Error('CompactU64 value is too large');\n      }\n\n      const encodedNumber = UnsignedLEB128.encode(Number(value));\n      bytes.set(encodedNumber, offset);\n\n      return offset + encodedNumber.length;\n    },\n  });\n}\n\nexport const getCompactU64Decoder = (): VariableSizeDecoder<number> =>\n  createDecoder({\n    read: (\n      bytes: ReadonlyUint8Array | Uint8Array,\n      offset\n    ): [number, Offset] => {\n      const value = UnsignedLEB128.decode(bytes as Uint8Array, offset);\n\n      return [value, offset + UnsignedLEB128.encode(value).length];\n    },\n  });\n\nexport type AccountInfoAssertions = Array<AccountInfoAssertion>;\nexport type AccountInfoAssertionsArgs = Array<AccountInfoAssertionArgs>;\n\nexport function getAccountInfoAssertionsEncoder() {\n  return getArrayEncoder(getAccountInfoAssertionEncoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getAccountInfoAssertionsDecoder() {\n  return getArrayDecoder(getAccountInfoAssertionDecoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n\nexport type MintAccountAssertions = Array<MintAccountAssertion>;\nexport type MintAccountAssertionsArgs = Array<MintAccountAssertionArgs>;\n\nexport function getMintAccountAssertionsEncoder() {\n  return getArrayEncoder(getMintAccountAssertionEncoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getMintAccountAssertionsDecoder() {\n  return getArrayDecoder(getMintAccountAssertionDecoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n\nexport type StakeAccountAssertions = Array<StakeAccountAssertion>;\nexport type StakeAccountAssertionsArgs = Array<StakeAccountAssertionArgs>;\n\nexport function getStakeAccountAssertionsEncoder() {\n  return getArrayEncoder(getStakeAccountAssertionEncoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getStakeAccountAssertionsDecoder() {\n  return getArrayDecoder(getStakeAccountAssertionDecoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n\nexport type TokenAccountAssertions = Array<TokenAccountAssertion>;\nexport type TokenAccountAssertionsArgs = Array<TokenAccountAssertionArgs>;\n\nexport function getTokenAccountAssertionsEncoder() {\n  return getArrayEncoder(getTokenAccountAssertionEncoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getTokenAccountAssertionsDecoder() {\n  return getArrayDecoder(getTokenAccountAssertionDecoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n\nexport type UpgradeableLoaderStateAssertions =\n  Array<UpgradeableLoaderStateAssertion>;\nexport type UpgradeableLoaderStateAssertionsArgs =\n  Array<UpgradeableLoaderStateAssertionArgs>;\n\nexport function getUpgradeableLoaderStateAssertionsEncoder() {\n  return getArrayEncoder(getUpgradeableLoaderStateAssertionEncoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getUpgradeableLoaderStateAssertionsDecoder() {\n  return getArrayDecoder(getUpgradeableLoaderStateAssertionDecoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n\nexport type AccountDataAssertion = {\n  offset: CompactU64;\n  assertion: DataValueAssertion;\n};\n\nexport type AccountDataAssertionArgs = {\n  offset: CompactU64Args;\n  assertion: DataValueAssertionArgs;\n};\n\nexport function getAccountDataAssertionEncoder(): Encoder<AccountDataAssertionArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['offset', getCompactU64Encoder()],\n      ['assertion', getDataValueAssertionEncoder()],\n    ]),\n    (value) => value\n  );\n}\n\nexport function getAccountDataAssertionDecoder(): Decoder<AccountDataAssertion> {\n  return getStructDecoder([\n    ['offset', getCompactU64Decoder()],\n    ['assertion', getDataValueAssertionDecoder()],\n  ]);\n}\n\nexport type AccountDataAssertions = Array<AccountDataAssertion>;\nexport type AccountDataAssertionsArgs = Array<AccountDataAssertionArgs>;\n\nexport function getAccountDataAssertionsEncoder() {\n  return getArrayEncoder(getAccountDataAssertionEncoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getAccountDataAssertionsDecoder() {\n  return getArrayDecoder(getAccountDataAssertionDecoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n\nexport type CompactBytes = number[];\nexport type CompactBytesArgs = number[];\n\nexport function getCompactBytesEncoder() {\n  return getArrayEncoder(getU8Encoder(), {\n    size: getCompactU64Encoder(),\n  });\n}\n\nexport function getCompactBytesDecoder() {\n  return getArrayDecoder(getU8Decoder(), {\n    size: getCompactU64Decoder(),\n  });\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  isProgramDerivedAddress,\n  isTransactionSigner as kitIsTransactionSigner,\n  type Address,\n  type IAccountMeta,\n  type IAccountSignerMeta,\n  type ProgramDerivedAddress,\n  type TransactionSigner,\n  upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n  if (value == null) {\n    throw new Error('Expected a value but received null or undefined.');\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): Address<T> {\n  if (!value) {\n    throw new Error('Expected a Address.');\n  }\n  if (typeof value === 'object' && 'address' in value) {\n    return value.address;\n  }\n  if (Array.isArray(value)) {\n    return value[0];\n  }\n  return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): ProgramDerivedAddress<T> {\n  if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n    throw new Error('Expected a ProgramDerivedAddress.');\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): TransactionSigner<T> {\n  if (!value || !isTransactionSigner(value)) {\n    throw new Error('Expected a TransactionSigner.');\n  }\n  return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n  T extends string = string,\n  U extends\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null =\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null,\n> = {\n  isWritable: boolean;\n  value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type IInstructionWithByteDelta = {\n  byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n  programAddress: Address,\n  optionalAccountStrategy: 'omitted' | 'programId'\n) {\n  return (\n    account: ResolvedAccount\n  ): IAccountMeta | IAccountSignerMeta | undefined => {\n    if (!account.value) {\n      if (optionalAccountStrategy === 'omitted') return;\n      return Object.freeze({\n        address: programAddress,\n        role: AccountRole.READONLY,\n      });\n    }\n\n    const writableRole = account.isWritable\n      ? AccountRole.WRITABLE\n      : AccountRole.READONLY;\n    return Object.freeze({\n      address: expectAddress(account.value),\n      role: isTransactionSigner(account.value)\n        ? upgradeRoleToSigner(writableRole)\n        : writableRole,\n      ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n    });\n  };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n  value:\n    | Address<TAddress>\n    | ProgramDerivedAddress<TAddress>\n    | TransactionSigner<TAddress>\n): value is TransactionSigner<TAddress> {\n  return (\n    !!value &&\n    typeof value === 'object' &&\n    'address' in value &&\n    kitIsTransactionSigner(value)\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getAccountInfoDeltaAssertionDecoder,\n  getAccountInfoDeltaAssertionEncoder,\n  getDataValueDeltaAssertionDecoder,\n  getDataValueDeltaAssertionEncoder,\n  type AccountInfoDeltaAssertion,\n  type AccountInfoDeltaAssertionArgs,\n  type DataValueDeltaAssertion,\n  type DataValueDeltaAssertionArgs,\n} from '.';\nimport {\n  getCompactU64Decoder,\n  getCompactU64Encoder,\n  type CompactU64,\n  type CompactU64Args,\n} from '../../hooked';\n\nexport type AccountDeltaAssertion =\n  | {\n      __kind: 'AccountInfo';\n      aOffset: CompactU64;\n      assertion: AccountInfoDeltaAssertion;\n    }\n  | {\n      __kind: 'Data';\n      aOffset: CompactU64;\n      bOffset: CompactU64;\n      assertion: DataValueDeltaAssertion;\n    };\n\nexport type AccountDeltaAssertionArgs =\n  | {\n      __kind: 'AccountInfo';\n      aOffset: CompactU64Args;\n      assertion: AccountInfoDeltaAssertionArgs;\n    }\n  | {\n      __kind: 'Data';\n      aOffset: CompactU64Args;\n      bOffset: CompactU64Args;\n      assertion: DataValueDeltaAssertionArgs;\n    };\n\nexport function getAccountDeltaAssertionEncoder(): Encoder<AccountDeltaAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'AccountInfo',\n      getStructEncoder([\n        ['aOffset', getCompactU64Encoder()],\n        ['assertion', getAccountInfoDeltaAssertionEncoder()],\n      ]),\n    ],\n    [\n      'Data',\n      getStructEncoder([\n        ['aOffset', getCompactU64Encoder()],\n        ['bOffset', getCompactU64Encoder()],\n        ['assertion', getDataValueDeltaAssertionEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAccountDeltaAssertionDecoder(): Decoder<AccountDeltaAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'AccountInfo',\n      getStructDecoder([\n        ['aOffset', getCompactU64Decoder()],\n        ['assertion', getAccountInfoDeltaAssertionDecoder()],\n      ]),\n    ],\n    [\n      'Data',\n      getStructDecoder([\n        ['aOffset', getCompactU64Decoder()],\n        ['bOffset', getCompactU64Decoder()],\n        ['assertion', getDataValueDeltaAssertionDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAccountDeltaAssertionCodec(): Codec<\n  AccountDeltaAssertionArgs,\n  AccountDeltaAssertion\n> {\n  return combineCodec(\n    getAccountDeltaAssertionEncoder(),\n    getAccountDeltaAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function accountDeltaAssertion(\n  kind: 'AccountInfo',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountDeltaAssertionArgs,\n    '__kind',\n    'AccountInfo'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountDeltaAssertionArgs,\n  '__kind',\n  'AccountInfo'\n>;\nexport function accountDeltaAssertion(\n  kind: 'Data',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountDeltaAssertionArgs,\n    '__kind',\n    'Data'\n  >\n): GetDiscriminatedUnionVariant<AccountDeltaAssertionArgs, '__kind', 'Data'>;\nexport function accountDeltaAssertion<\n  K extends AccountDeltaAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isAccountDeltaAssertion<\n  K extends AccountDeltaAssertion['__kind'],\n>(\n  kind: K,\n  value: AccountDeltaAssertion\n): value is AccountDeltaAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  getKnownProgramDecoder,\n  getKnownProgramEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n  type KnownProgram,\n  type KnownProgramArgs,\n} from '.';\nimport {\n  getCompactU64Decoder,\n  getCompactU64Encoder,\n  type CompactU64,\n  type CompactU64Args,\n} from '../../hooked';\n\nexport type AccountInfoAssertion =\n  | { __kind: 'Lamports'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'DataLength'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Owner'; value: Address; operator: EquatableOperator }\n  | { __kind: 'KnownOwner'; value: KnownProgram; operator: EquatableOperator }\n  | { __kind: 'RentEpoch'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'IsSigner'; value: boolean; operator: EquatableOperator }\n  | { __kind: 'IsWritable'; value: boolean; operator: EquatableOperator }\n  | { __kind: 'Executable'; value: boolean; operator: EquatableOperator }\n  | {\n      __kind: 'VerifyDatahash';\n      expectedHash: ReadonlyUint8Array;\n      start: CompactU64;\n      length: CompactU64;\n    };\n\nexport type AccountInfoAssertionArgs =\n  | {\n      __kind: 'Lamports';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'DataLength';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | { __kind: 'Owner'; value: Address; operator: EquatableOperatorArgs }\n  | {\n      __kind: 'KnownOwner';\n      value: KnownProgramArgs;\n      operator: EquatableOperatorArgs;\n    }\n  | {\n      __kind: 'RentEpoch';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | { __kind: 'IsSigner'; value: boolean; operator: EquatableOperatorArgs }\n  | { __kind: 'IsWritable'; value: boolean; operator: EquatableOperatorArgs }\n  | { __kind: 'Executable'; value: boolean; operator: EquatableOperatorArgs }\n  | {\n      __kind: 'VerifyDatahash';\n      expectedHash: ReadonlyUint8Array;\n      start: CompactU64Args;\n      length: CompactU64Args;\n    };\n\nexport function getAccountInfoAssertionEncoder(): Encoder<AccountInfoAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Lamports',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'DataLength',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Owner',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'KnownOwner',\n      getStructEncoder([\n        ['value', getKnownProgramEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'RentEpoch',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'IsSigner',\n      getStructEncoder([\n        ['value', getBooleanEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'IsWritable',\n      getStructEncoder([\n        ['value', getBooleanEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Executable',\n      getStructEncoder([\n        ['value', getBooleanEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'VerifyDatahash',\n      getStructEncoder([\n        ['expectedHash', fixEncoderSize(getBytesEncoder(), 32)],\n        ['start', getCompactU64Encoder()],\n        ['length', getCompactU64Encoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAccountInfoAssertionDecoder(): Decoder<AccountInfoAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Lamports',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'DataLength',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Owner',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'KnownOwner',\n      getStructDecoder([\n        ['value', getKnownProgramDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'RentEpoch',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'IsSigner',\n      getStructDecoder([\n        ['value', getBooleanDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'IsWritable',\n      getStructDecoder([\n        ['value', getBooleanDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Executable',\n      getStructDecoder([\n        ['value', getBooleanDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'VerifyDatahash',\n      getStructDecoder([\n        ['expectedHash', fixDecoderSize(getBytesDecoder(), 32)],\n        ['start', getCompactU64Decoder()],\n        ['length', getCompactU64Decoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAccountInfoAssertionCodec(): Codec<\n  AccountInfoAssertionArgs,\n  AccountInfoAssertion\n> {\n  return combineCodec(\n    getAccountInfoAssertionEncoder(),\n    getAccountInfoAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function accountInfoAssertion(\n  kind: 'Lamports',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'Lamports'\n  >\n): GetDiscriminatedUnionVariant<AccountInfoAssertionArgs, '__kind', 'Lamports'>;\nexport function accountInfoAssertion(\n  kind: 'DataLength',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'DataLength'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoAssertionArgs,\n  '__kind',\n  'DataLength'\n>;\nexport function accountInfoAssertion(\n  kind: 'Owner',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'Owner'\n  >\n): GetDiscriminatedUnionVariant<AccountInfoAssertionArgs, '__kind', 'Owner'>;\nexport function accountInfoAssertion(\n  kind: 'KnownOwner',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'KnownOwner'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoAssertionArgs,\n  '__kind',\n  'KnownOwner'\n>;\nexport function accountInfoAssertion(\n  kind: 'RentEpoch',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'RentEpoch'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoAssertionArgs,\n  '__kind',\n  'RentEpoch'\n>;\nexport function accountInfoAssertion(\n  kind: 'IsSigner',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'IsSigner'\n  >\n): GetDiscriminatedUnionVariant<AccountInfoAssertionArgs, '__kind', 'IsSigner'>;\nexport function accountInfoAssertion(\n  kind: 'IsWritable',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'IsWritable'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoAssertionArgs,\n  '__kind',\n  'IsWritable'\n>;\nexport function accountInfoAssertion(\n  kind: 'Executable',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'Executable'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoAssertionArgs,\n  '__kind',\n  'Executable'\n>;\nexport function accountInfoAssertion(\n  kind: 'VerifyDatahash',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoAssertionArgs,\n    '__kind',\n    'VerifyDatahash'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoAssertionArgs,\n  '__kind',\n  'VerifyDatahash'\n>;\nexport function accountInfoAssertion<\n  K extends AccountInfoAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isAccountInfoAssertion<\n  K extends AccountInfoAssertion['__kind'],\n>(\n  kind: K,\n  value: AccountInfoAssertion\n): value is AccountInfoAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type AccountInfoDeltaAssertion =\n  | { __kind: 'Lamports'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'DataLength'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Owner'; operator: EquatableOperator }\n  | { __kind: 'RentEpoch'; value: bigint; operator: IntegerOperator };\n\nexport type AccountInfoDeltaAssertionArgs =\n  | {\n      __kind: 'Lamports';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'DataLength';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | { __kind: 'Owner'; operator: EquatableOperatorArgs }\n  | {\n      __kind: 'RentEpoch';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    };\n\nexport function getAccountInfoDeltaAssertionEncoder(): Encoder<AccountInfoDeltaAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Lamports',\n      getStructEncoder([\n        ['value', getI128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'DataLength',\n      getStructEncoder([\n        ['value', getI128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    ['Owner', getStructEncoder([['operator', getEquatableOperatorEncoder()]])],\n    [\n      'RentEpoch',\n      getStructEncoder([\n        ['value', getI128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAccountInfoDeltaAssertionDecoder(): Decoder<AccountInfoDeltaAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Lamports',\n      getStructDecoder([\n        ['value', getI128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'DataLength',\n      getStructDecoder([\n        ['value', getI128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    ['Owner', getStructDecoder([['operator', getEquatableOperatorDecoder()]])],\n    [\n      'RentEpoch',\n      getStructDecoder([\n        ['value', getI128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAccountInfoDeltaAssertionCodec(): Codec<\n  AccountInfoDeltaAssertionArgs,\n  AccountInfoDeltaAssertion\n> {\n  return combineCodec(\n    getAccountInfoDeltaAssertionEncoder(),\n    getAccountInfoDeltaAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function accountInfoDeltaAssertion(\n  kind: 'Lamports',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoDeltaAssertionArgs,\n    '__kind',\n    'Lamports'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoDeltaAssertionArgs,\n  '__kind',\n  'Lamports'\n>;\nexport function accountInfoDeltaAssertion(\n  kind: 'DataLength',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoDeltaAssertionArgs,\n    '__kind',\n    'DataLength'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoDeltaAssertionArgs,\n  '__kind',\n  'DataLength'\n>;\nexport function accountInfoDeltaAssertion(\n  kind: 'Owner',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoDeltaAssertionArgs,\n    '__kind',\n    'Owner'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoDeltaAssertionArgs,\n  '__kind',\n  'Owner'\n>;\nexport function accountInfoDeltaAssertion(\n  kind: 'RentEpoch',\n  data: GetDiscriminatedUnionVariantContent<\n    AccountInfoDeltaAssertionArgs,\n    '__kind',\n    'RentEpoch'\n  >\n): GetDiscriminatedUnionVariant<\n  AccountInfoDeltaAssertionArgs,\n  '__kind',\n  'RentEpoch'\n>;\nexport function accountInfoDeltaAssertion<\n  K extends AccountInfoDeltaAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isAccountInfoDeltaAssertion<\n  K extends AccountInfoDeltaAssertion['__kind'],\n>(\n  kind: K,\n  value: AccountInfoDeltaAssertion\n): value is AccountInfoDeltaAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum AccountInfoField {\n  Key,\n  Lamports,\n  DataLength,\n  Owner,\n  RentEpoch,\n  Executable,\n}\n\nexport type AccountInfoFieldArgs = AccountInfoField;\n\nexport function getAccountInfoFieldEncoder(): Encoder<AccountInfoFieldArgs> {\n  return getEnumEncoder(AccountInfoField);\n}\n\nexport function getAccountInfoFieldDecoder(): Decoder<AccountInfoField> {\n  return getEnumDecoder(AccountInfoField);\n}\n\nexport function getAccountInfoFieldCodec(): Codec<\n  AccountInfoFieldArgs,\n  AccountInfoField\n> {\n  return combineCodec(\n    getAccountInfoFieldEncoder(),\n    getAccountInfoFieldDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getI16Decoder,\n  getI16Encoder,\n  getI32Decoder,\n  getI32Encoder,\n  getI64Decoder,\n  getI64Encoder,\n  getI8Decoder,\n  getI8Encoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type AssertionResult =\n  | {\n      __kind: 'U8';\n      fields: readonly [Option<number>, Option<number>, number, boolean];\n    }\n  | {\n      __kind: 'U16';\n      fields: readonly [Option<number>, Option<number>, number, boolean];\n    }\n  | {\n      __kind: 'U32';\n      fields: readonly [Option<number>, Option<number>, number, boolean];\n    }\n  | {\n      __kind: 'U64';\n      fields: readonly [Option<bigint>, Option<bigint>, number, boolean];\n    }\n  | {\n      __kind: 'U128';\n      fields: readonly [Option<bigint>, Option<bigint>, number, boolean];\n    }\n  | {\n      __kind: 'I8';\n      fields: readonly [Option<number>, Option<number>, number, boolean];\n    }\n  | {\n      __kind: 'I16';\n      fields: readonly [Option<number>, Option<number>, number, boolean];\n    }\n  | {\n      __kind: 'I32';\n      fields: readonly [Option<number>, Option<number>, number, boolean];\n    }\n  | {\n      __kind: 'I64';\n      fields: readonly [Option<bigint>, Option<bigint>, number, boolean];\n    }\n  | {\n      __kind: 'I128';\n      fields: readonly [Option<bigint>, Option<bigint>, number, boolean];\n    }\n  | {\n      __kind: 'Pubkey';\n      fields: readonly [Option<Address>, Option<Address>, number, boolean];\n    }\n  | {\n      __kind: 'Bytes';\n      fields: readonly [\n        ReadonlyUint8Array,\n        ReadonlyUint8Array,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'Bool';\n      fields: readonly [Option<boolean>, Option<boolean>, number, boolean];\n    };\n\nexport type AssertionResultArgs =\n  | {\n      __kind: 'U8';\n      fields: readonly [\n        OptionOrNullable<number>,\n        OptionOrNullable<number>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'U16';\n      fields: readonly [\n        OptionOrNullable<number>,\n        OptionOrNullable<number>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'U32';\n      fields: readonly [\n        OptionOrNullable<number>,\n        OptionOrNullable<number>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'U64';\n      fields: readonly [\n        OptionOrNullable<number | bigint>,\n        OptionOrNullable<number | bigint>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'U128';\n      fields: readonly [\n        OptionOrNullable<number | bigint>,\n        OptionOrNullable<number | bigint>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'I8';\n      fields: readonly [\n        OptionOrNullable<number>,\n        OptionOrNullable<number>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'I16';\n      fields: readonly [\n        OptionOrNullable<number>,\n        OptionOrNullable<number>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'I32';\n      fields: readonly [\n        OptionOrNullable<number>,\n        OptionOrNullable<number>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'I64';\n      fields: readonly [\n        OptionOrNullable<number | bigint>,\n        OptionOrNullable<number | bigint>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'I128';\n      fields: readonly [\n        OptionOrNullable<number | bigint>,\n        OptionOrNullable<number | bigint>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'Pubkey';\n      fields: readonly [\n        OptionOrNullable<Address>,\n        OptionOrNullable<Address>,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'Bytes';\n      fields: readonly [\n        ReadonlyUint8Array,\n        ReadonlyUint8Array,\n        number,\n        boolean,\n      ];\n    }\n  | {\n      __kind: 'Bool';\n      fields: readonly [\n        OptionOrNullable<boolean>,\n        OptionOrNullable<boolean>,\n        number,\n        boolean,\n      ];\n    };\n\nexport function getAssertionResultEncoder(): Encoder<AssertionResultArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'U8',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getU8Encoder()),\n            getOptionEncoder(getU8Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U16',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getU16Encoder()),\n            getOptionEncoder(getU16Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U32',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getU32Encoder()),\n            getOptionEncoder(getU32Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U64',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getU64Encoder()),\n            getOptionEncoder(getU64Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U128',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getU128Encoder()),\n            getOptionEncoder(getU128Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I8',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getI8Encoder()),\n            getOptionEncoder(getI8Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I16',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getI16Encoder()),\n            getOptionEncoder(getI16Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I32',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getI32Encoder()),\n            getOptionEncoder(getI32Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I64',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getI64Encoder()),\n            getOptionEncoder(getI64Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I128',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getI128Encoder()),\n            getOptionEncoder(getI128Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'Pubkey',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getAddressEncoder()),\n            getOptionEncoder(getAddressEncoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'Bytes',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n            addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'Bool',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([\n            getOptionEncoder(getBooleanEncoder()),\n            getOptionEncoder(getBooleanEncoder()),\n            getU8Encoder(),\n            getBooleanEncoder(),\n          ]),\n        ],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAssertionResultDecoder(): Decoder<AssertionResult> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'U8',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getU8Decoder()),\n            getOptionDecoder(getU8Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U16',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getU16Decoder()),\n            getOptionDecoder(getU16Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U32',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getU32Decoder()),\n            getOptionDecoder(getU32Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U64',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getU64Decoder()),\n            getOptionDecoder(getU64Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'U128',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getU128Decoder()),\n            getOptionDecoder(getU128Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I8',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getI8Decoder()),\n            getOptionDecoder(getI8Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I16',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getI16Decoder()),\n            getOptionDecoder(getI16Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I32',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getI32Decoder()),\n            getOptionDecoder(getI32Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I64',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getI64Decoder()),\n            getOptionDecoder(getI64Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'I128',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getI128Decoder()),\n            getOptionDecoder(getI128Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'Pubkey',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getAddressDecoder()),\n            getOptionDecoder(getAddressDecoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'Bytes',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n            addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n    [\n      'Bool',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([\n            getOptionDecoder(getBooleanDecoder()),\n            getOptionDecoder(getBooleanDecoder()),\n            getU8Decoder(),\n            getBooleanDecoder(),\n          ]),\n        ],\n      ]),\n    ],\n  ]);\n}\n\nexport function getAssertionResultCodec(): Codec<\n  AssertionResultArgs,\n  AssertionResult\n> {\n  return combineCodec(getAssertionResultEncoder(), getAssertionResultDecoder());\n}\n\n// Data Enum Helpers.\nexport function assertionResult(\n  kind: 'U8',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'U8'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'U8'>;\nexport function assertionResult(\n  kind: 'U16',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'U16'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'U16'>;\nexport function assertionResult(\n  kind: 'U32',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'U32'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'U32'>;\nexport function assertionResult(\n  kind: 'U64',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'U64'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'U64'>;\nexport function assertionResult(\n  kind: 'U128',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'U128'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'U128'>;\nexport function assertionResult(\n  kind: 'I8',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'I8'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'I8'>;\nexport function assertionResult(\n  kind: 'I16',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'I16'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'I16'>;\nexport function assertionResult(\n  kind: 'I32',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'I32'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'I32'>;\nexport function assertionResult(\n  kind: 'I64',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'I64'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'I64'>;\nexport function assertionResult(\n  kind: 'I128',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'I128'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'I128'>;\nexport function assertionResult(\n  kind: 'Pubkey',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'Pubkey'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'Pubkey'>;\nexport function assertionResult(\n  kind: 'Bytes',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'Bytes'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'Bytes'>;\nexport function assertionResult(\n  kind: 'Bool',\n  data: GetDiscriminatedUnionVariantContent<\n    AssertionResultArgs,\n    '__kind',\n    'Bool'\n  >['fields']\n): GetDiscriminatedUnionVariant<AssertionResultArgs, '__kind', 'Bool'>;\nexport function assertionResult<K extends AssertionResultArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isAssertionResult<K extends AssertionResult['__kind']>(\n  kind: K,\n  value: AssertionResult\n): value is AssertionResult & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type BubblegumTreeConfigAssertion =\n  | { __kind: 'TreeCreator'; value: Address; operator: EquatableOperator }\n  | { __kind: 'TreeDelegate'; value: Address; operator: EquatableOperator }\n  | { __kind: 'TotalMintCapacity'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'NumMinted'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'IsPublic'; value: boolean; operator: EquatableOperator }\n  | { __kind: 'IsDecompressible'; value: number; operator: EquatableOperator };\n\nexport type BubblegumTreeConfigAssertionArgs =\n  | { __kind: 'TreeCreator'; value: Address; operator: EquatableOperatorArgs }\n  | { __kind: 'TreeDelegate'; value: Address; operator: EquatableOperatorArgs }\n  | {\n      __kind: 'TotalMintCapacity';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'NumMinted';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | { __kind: 'IsPublic'; value: boolean; operator: EquatableOperatorArgs }\n  | {\n      __kind: 'IsDecompressible';\n      value: number;\n      operator: EquatableOperatorArgs;\n    };\n\nexport function getBubblegumTreeConfigAssertionEncoder(): Encoder<BubblegumTreeConfigAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'TreeCreator',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'TreeDelegate',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'TotalMintCapacity',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'NumMinted',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'IsPublic',\n      getStructEncoder([\n        ['value', getBooleanEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'IsDecompressible',\n      getStructEncoder([\n        ['value', getU8Encoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getBubblegumTreeConfigAssertionDecoder(): Decoder<BubblegumTreeConfigAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'TreeCreator',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'TreeDelegate',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'TotalMintCapacity',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'NumMinted',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'IsPublic',\n      getStructDecoder([\n        ['value', getBooleanDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'IsDecompressible',\n      getStructDecoder([\n        ['value', getU8Decoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getBubblegumTreeConfigAssertionCodec(): Codec<\n  BubblegumTreeConfigAssertionArgs,\n  BubblegumTreeConfigAssertion\n> {\n  return combineCodec(\n    getBubblegumTreeConfigAssertionEncoder(),\n    getBubblegumTreeConfigAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function bubblegumTreeConfigAssertion(\n  kind: 'TreeCreator',\n  data: GetDiscriminatedUnionVariantContent<\n    BubblegumTreeConfigAssertionArgs,\n    '__kind',\n    'TreeCreator'\n  >\n): GetDiscriminatedUnionVariant<\n  BubblegumTreeConfigAssertionArgs,\n  '__kind',\n  'TreeCreator'\n>;\nexport function bubblegumTreeConfigAssertion(\n  kind: 'TreeDelegate',\n  data: GetDiscriminatedUnionVariantContent<\n    BubblegumTreeConfigAssertionArgs,\n    '__kind',\n    'TreeDelegate'\n  >\n): GetDiscriminatedUnionVariant<\n  BubblegumTreeConfigAssertionArgs,\n  '__kind',\n  'TreeDelegate'\n>;\nexport function bubblegumTreeConfigAssertion(\n  kind: 'TotalMintCapacity',\n  data: GetDiscriminatedUnionVariantContent<\n    BubblegumTreeConfigAssertionArgs,\n    '__kind',\n    'TotalMintCapacity'\n  >\n): GetDiscriminatedUnionVariant<\n  BubblegumTreeConfigAssertionArgs,\n  '__kind',\n  'TotalMintCapacity'\n>;\nexport function bubblegumTreeConfigAssertion(\n  kind: 'NumMinted',\n  data: GetDiscriminatedUnionVariantContent<\n    BubblegumTreeConfigAssertionArgs,\n    '__kind',\n    'NumMinted'\n  >\n): GetDiscriminatedUnionVariant<\n  BubblegumTreeConfigAssertionArgs,\n  '__kind',\n  'NumMinted'\n>;\nexport function bubblegumTreeConfigAssertion(\n  kind: 'IsPublic',\n  data: GetDiscriminatedUnionVariantContent<\n    BubblegumTreeConfigAssertionArgs,\n    '__kind',\n    'IsPublic'\n  >\n): GetDiscriminatedUnionVariant<\n  BubblegumTreeConfigAssertionArgs,\n  '__kind',\n  'IsPublic'\n>;\nexport function bubblegumTreeConfigAssertion(\n  kind: 'IsDecompressible',\n  data: GetDiscriminatedUnionVariantContent<\n    BubblegumTreeConfigAssertionArgs,\n    '__kind',\n    'IsDecompressible'\n  >\n): GetDiscriminatedUnionVariant<\n  BubblegumTreeConfigAssertionArgs,\n  '__kind',\n  'IsDecompressible'\n>;\nexport function bubblegumTreeConfigAssertion<\n  K extends BubblegumTreeConfigAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isBubblegumTreeConfigAssertion<\n  K extends BubblegumTreeConfigAssertion['__kind'],\n>(\n  kind: K,\n  value: BubblegumTreeConfigAssertion\n): value is BubblegumTreeConfigAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum ClockField {\n  Slot,\n  EpochStartTimestamp,\n  Epoch,\n  LeaderScheduleEpoch,\n  UnixTimestamp,\n}\n\nexport type ClockFieldArgs = ClockField;\n\nexport function getClockFieldEncoder(): Encoder<ClockFieldArgs> {\n  return getEnumEncoder(ClockField);\n}\n\nexport function getClockFieldDecoder(): Decoder<ClockField> {\n  return getEnumDecoder(ClockField);\n}\n\nexport function getClockFieldCodec(): Codec<ClockFieldArgs, ClockField> {\n  return combineCodec(getClockFieldEncoder(), getClockFieldDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getI16Decoder,\n  getI16Encoder,\n  getI32Decoder,\n  getI32Encoder,\n  getI64Decoder,\n  getI64Encoder,\n  getI8Decoder,\n  getI8Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getCompactBytesDecoder,\n  getCompactBytesEncoder,\n  type CompactBytes,\n  type CompactBytesArgs,\n} from '../../hooked';\n\nexport type DataValue =\n  | { __kind: 'Bool'; fields: readonly [boolean] }\n  | { __kind: 'U8'; fields: readonly [number] }\n  | { __kind: 'I8'; fields: readonly [number] }\n  | { __kind: 'U16'; fields: readonly [number] }\n  | { __kind: 'I16'; fields: readonly [number] }\n  | { __kind: 'U32'; fields: readonly [number] }\n  | { __kind: 'I32'; fields: readonly [number] }\n  | { __kind: 'U64'; fields: readonly [bigint] }\n  | { __kind: 'I64'; fields: readonly [bigint] }\n  | { __kind: 'U128'; fields: readonly [bigint] }\n  | { __kind: 'I128'; fields: readonly [bigint] }\n  | { __kind: 'Bytes'; fields: readonly [CompactBytes] }\n  | { __kind: 'Pubkey'; fields: readonly [Address] };\n\nexport type DataValueArgs =\n  | { __kind: 'Bool'; fields: readonly [boolean] }\n  | { __kind: 'U8'; fields: readonly [number] }\n  | { __kind: 'I8'; fields: readonly [number] }\n  | { __kind: 'U16'; fields: readonly [number] }\n  | { __kind: 'I16'; fields: readonly [number] }\n  | { __kind: 'U32'; fields: readonly [number] }\n  | { __kind: 'I32'; fields: readonly [number] }\n  | { __kind: 'U64'; fields: readonly [number | bigint] }\n  | { __kind: 'I64'; fields: readonly [number | bigint] }\n  | { __kind: 'U128'; fields: readonly [number | bigint] }\n  | { __kind: 'I128'; fields: readonly [number | bigint] }\n  | { __kind: 'Bytes'; fields: readonly [CompactBytesArgs] }\n  | { __kind: 'Pubkey'; fields: readonly [Address] };\n\nexport function getDataValueEncoder(): Encoder<DataValueArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Bool',\n      getStructEncoder([['fields', getTupleEncoder([getBooleanEncoder()])]]),\n    ],\n    ['U8', getStructEncoder([['fields', getTupleEncoder([getU8Encoder()])]])],\n    ['I8', getStructEncoder([['fields', getTupleEncoder([getI8Encoder()])]])],\n    ['U16', getStructEncoder([['fields', getTupleEncoder([getU16Encoder()])]])],\n    ['I16', getStructEncoder([['fields', getTupleEncoder([getI16Encoder()])]])],\n    ['U32', getStructEncoder([['fields', getTupleEncoder([getU32Encoder()])]])],\n    ['I32', getStructEncoder([['fields', getTupleEncoder([getI32Encoder()])]])],\n    ['U64', getStructEncoder([['fields', getTupleEncoder([getU64Encoder()])]])],\n    ['I64', getStructEncoder([['fields', getTupleEncoder([getI64Encoder()])]])],\n    [\n      'U128',\n      getStructEncoder([['fields', getTupleEncoder([getU128Encoder()])]]),\n    ],\n    [\n      'I128',\n      getStructEncoder([['fields', getTupleEncoder([getI128Encoder()])]]),\n    ],\n    [\n      'Bytes',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getCompactBytesEncoder()])],\n      ]),\n    ],\n    [\n      'Pubkey',\n      getStructEncoder([['fields', getTupleEncoder([getAddressEncoder()])]]),\n    ],\n  ]);\n}\n\nexport function getDataValueDecoder(): Decoder<DataValue> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Bool',\n      getStructDecoder([['fields', getTupleDecoder([getBooleanDecoder()])]]),\n    ],\n    ['U8', getStructDecoder([['fields', getTupleDecoder([getU8Decoder()])]])],\n    ['I8', getStructDecoder([['fields', getTupleDecoder([getI8Decoder()])]])],\n    ['U16', getStructDecoder([['fields', getTupleDecoder([getU16Decoder()])]])],\n    ['I16', getStructDecoder([['fields', getTupleDecoder([getI16Decoder()])]])],\n    ['U32', getStructDecoder([['fields', getTupleDecoder([getU32Decoder()])]])],\n    ['I32', getStructDecoder([['fields', getTupleDecoder([getI32Decoder()])]])],\n    ['U64', getStructDecoder([['fields', getTupleDecoder([getU64Decoder()])]])],\n    ['I64', getStructDecoder([['fields', getTupleDecoder([getI64Decoder()])]])],\n    [\n      'U128',\n      getStructDecoder([['fields', getTupleDecoder([getU128Decoder()])]]),\n    ],\n    [\n      'I128',\n      getStructDecoder([['fields', getTupleDecoder([getI128Decoder()])]]),\n    ],\n    [\n      'Bytes',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getCompactBytesDecoder()])],\n      ]),\n    ],\n    [\n      'Pubkey',\n      getStructDecoder([['fields', getTupleDecoder([getAddressDecoder()])]]),\n    ],\n  ]);\n}\n\nexport function getDataValueCodec(): Codec<DataValueArgs, DataValue> {\n  return combineCodec(getDataValueEncoder(), getDataValueDecoder());\n}\n\n// Data Enum Helpers.\nexport function dataValue(\n  kind: 'Bool',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'Bool'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'Bool'>;\nexport function dataValue(\n  kind: 'U8',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'U8'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'U8'>;\nexport function dataValue(\n  kind: 'I8',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'I8'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'I8'>;\nexport function dataValue(\n  kind: 'U16',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'U16'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'U16'>;\nexport function dataValue(\n  kind: 'I16',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'I16'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'I16'>;\nexport function dataValue(\n  kind: 'U32',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'U32'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'U32'>;\nexport function dataValue(\n  kind: 'I32',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'I32'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'I32'>;\nexport function dataValue(\n  kind: 'U64',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'U64'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'U64'>;\nexport function dataValue(\n  kind: 'I64',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'I64'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'I64'>;\nexport function dataValue(\n  kind: 'U128',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'U128'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'U128'>;\nexport function dataValue(\n  kind: 'I128',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'I128'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'I128'>;\nexport function dataValue(\n  kind: 'Bytes',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'Bytes'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'Bytes'>;\nexport function dataValue(\n  kind: 'Pubkey',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueArgs,\n    '__kind',\n    'Pubkey'\n  >['fields']\n): GetDiscriminatedUnionVariant<DataValueArgs, '__kind', 'Pubkey'>;\nexport function dataValue<K extends DataValueArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isDataValue<K extends DataValue['__kind']>(\n  kind: K,\n  value: DataValue\n): value is DataValue & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getI16Decoder,\n  getI16Encoder,\n  getI32Decoder,\n  getI32Encoder,\n  getI64Decoder,\n  getI64Encoder,\n  getI8Decoder,\n  getI8Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\nimport {\n  getCompactBytesDecoder,\n  getCompactBytesEncoder,\n  type CompactBytes,\n  type CompactBytesArgs,\n} from '../../hooked';\n\nexport type DataValueAssertion =\n  | { __kind: 'Bool'; value: boolean; operator: EquatableOperator }\n  | { __kind: 'U8'; value: number; operator: IntegerOperator }\n  | { __kind: 'I8'; value: number; operator: IntegerOperator }\n  | { __kind: 'U16'; value: number; operator: IntegerOperator }\n  | { __kind: 'I16'; value: number; operator: IntegerOperator }\n  | { __kind: 'U32'; value: number; operator: IntegerOperator }\n  | { __kind: 'I32'; value: number; operator: IntegerOperator }\n  | { __kind: 'U64'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'I64'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'U128'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'I128'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Bytes'; value: CompactBytes; operator: EquatableOperator }\n  | { __kind: 'Pubkey'; value: Address; operator: EquatableOperator };\n\nexport type DataValueAssertionArgs =\n  | { __kind: 'Bool'; value: boolean; operator: EquatableOperatorArgs }\n  | { __kind: 'U8'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'I8'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'U16'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'I16'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'U32'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'I32'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'U64'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'I64'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'U128'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'I128'; value: number | bigint; operator: IntegerOperatorArgs }\n  | {\n      __kind: 'Bytes';\n      value: CompactBytesArgs;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'Pubkey'; value: Address; operator: EquatableOperatorArgs };\n\nexport function getDataValueAssertionEncoder(): Encoder<DataValueAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Bool',\n      getStructEncoder([\n        ['value', getBooleanEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U8',\n      getStructEncoder([\n        ['value', getU8Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I8',\n      getStructEncoder([\n        ['value', getI8Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U16',\n      getStructEncoder([\n        ['value', getU16Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I16',\n      getStructEncoder([\n        ['value', getI16Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U32',\n      getStructEncoder([\n        ['value', getU32Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I32',\n      getStructEncoder([\n        ['value', getI32Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U64',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I64',\n      getStructEncoder([\n        ['value', getI64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U128',\n      getStructEncoder([\n        ['value', getU128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I128',\n      getStructEncoder([\n        ['value', getI128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Bytes',\n      getStructEncoder([\n        ['value', getCompactBytesEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Pubkey',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDataValueAssertionDecoder(): Decoder<DataValueAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Bool',\n      getStructDecoder([\n        ['value', getBooleanDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U8',\n      getStructDecoder([\n        ['value', getU8Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I8',\n      getStructDecoder([\n        ['value', getI8Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U16',\n      getStructDecoder([\n        ['value', getU16Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I16',\n      getStructDecoder([\n        ['value', getI16Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U32',\n      getStructDecoder([\n        ['value', getU32Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I32',\n      getStructDecoder([\n        ['value', getI32Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U64',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I64',\n      getStructDecoder([\n        ['value', getI64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U128',\n      getStructDecoder([\n        ['value', getU128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I128',\n      getStructDecoder([\n        ['value', getI128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Bytes',\n      getStructDecoder([\n        ['value', getCompactBytesDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Pubkey',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDataValueAssertionCodec(): Codec<\n  DataValueAssertionArgs,\n  DataValueAssertion\n> {\n  return combineCodec(\n    getDataValueAssertionEncoder(),\n    getDataValueAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function dataValueAssertion(\n  kind: 'Bool',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'Bool'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'Bool'>;\nexport function dataValueAssertion(\n  kind: 'U8',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'U8'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'U8'>;\nexport function dataValueAssertion(\n  kind: 'I8',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'I8'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'I8'>;\nexport function dataValueAssertion(\n  kind: 'U16',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'U16'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'U16'>;\nexport function dataValueAssertion(\n  kind: 'I16',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'I16'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'I16'>;\nexport function dataValueAssertion(\n  kind: 'U32',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'U32'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'U32'>;\nexport function dataValueAssertion(\n  kind: 'I32',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'I32'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'I32'>;\nexport function dataValueAssertion(\n  kind: 'U64',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'U64'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'U64'>;\nexport function dataValueAssertion(\n  kind: 'I64',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'I64'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'I64'>;\nexport function dataValueAssertion(\n  kind: 'U128',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'U128'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'U128'>;\nexport function dataValueAssertion(\n  kind: 'I128',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'I128'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'I128'>;\nexport function dataValueAssertion(\n  kind: 'Bytes',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'Bytes'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'Bytes'>;\nexport function dataValueAssertion(\n  kind: 'Pubkey',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueAssertionArgs,\n    '__kind',\n    'Pubkey'\n  >\n): GetDiscriminatedUnionVariant<DataValueAssertionArgs, '__kind', 'Pubkey'>;\nexport function dataValueAssertion<\n  K extends DataValueAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isDataValueAssertion<K extends DataValueAssertion['__kind']>(\n  kind: K,\n  value: DataValueAssertion\n): value is DataValueAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getI16Decoder,\n  getI16Encoder,\n  getI32Decoder,\n  getI32Encoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type DataValueDeltaAssertion =\n  | { __kind: 'U8'; value: number; operator: IntegerOperator }\n  | { __kind: 'I8'; value: number; operator: IntegerOperator }\n  | { __kind: 'U16'; value: number; operator: IntegerOperator }\n  | { __kind: 'I16'; value: number; operator: IntegerOperator }\n  | { __kind: 'U32'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'I32'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'U64'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'I64'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Bytes'; length: number; operator: EquatableOperator };\n\nexport type DataValueDeltaAssertionArgs =\n  | { __kind: 'U8'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'I8'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'U16'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'I16'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'U32'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'I32'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'U64'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'I64'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'Bytes'; length: number; operator: EquatableOperatorArgs };\n\nexport function getDataValueDeltaAssertionEncoder(): Encoder<DataValueDeltaAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'U8',\n      getStructEncoder([\n        ['value', getI16Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I8',\n      getStructEncoder([\n        ['value', getI16Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U16',\n      getStructEncoder([\n        ['value', getI32Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I16',\n      getStructEncoder([\n        ['value', getI32Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U32',\n      getStructEncoder([\n        ['value', getI64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I32',\n      getStructEncoder([\n        ['value', getI64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'U64',\n      getStructEncoder([\n        ['value', getI128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'I64',\n      getStructEncoder([\n        ['value', getI128Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Bytes',\n      getStructEncoder([\n        ['length', getU16Encoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDataValueDeltaAssertionDecoder(): Decoder<DataValueDeltaAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'U8',\n      getStructDecoder([\n        ['value', getI16Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I8',\n      getStructDecoder([\n        ['value', getI16Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U16',\n      getStructDecoder([\n        ['value', getI32Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I16',\n      getStructDecoder([\n        ['value', getI32Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U32',\n      getStructDecoder([\n        ['value', getI64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I32',\n      getStructDecoder([\n        ['value', getI64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'U64',\n      getStructDecoder([\n        ['value', getI128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'I64',\n      getStructDecoder([\n        ['value', getI128Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Bytes',\n      getStructDecoder([\n        ['length', getU16Decoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDataValueDeltaAssertionCodec(): Codec<\n  DataValueDeltaAssertionArgs,\n  DataValueDeltaAssertion\n> {\n  return combineCodec(\n    getDataValueDeltaAssertionEncoder(),\n    getDataValueDeltaAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function dataValueDeltaAssertion(\n  kind: 'U8',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'U8'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'U8'>;\nexport function dataValueDeltaAssertion(\n  kind: 'I8',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'I8'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'I8'>;\nexport function dataValueDeltaAssertion(\n  kind: 'U16',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'U16'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'U16'>;\nexport function dataValueDeltaAssertion(\n  kind: 'I16',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'I16'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'I16'>;\nexport function dataValueDeltaAssertion(\n  kind: 'U32',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'U32'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'U32'>;\nexport function dataValueDeltaAssertion(\n  kind: 'I32',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'I32'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'I32'>;\nexport function dataValueDeltaAssertion(\n  kind: 'U64',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'U64'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'U64'>;\nexport function dataValueDeltaAssertion(\n  kind: 'I64',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'I64'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'I64'>;\nexport function dataValueDeltaAssertion(\n  kind: 'Bytes',\n  data: GetDiscriminatedUnionVariantContent<\n    DataValueDeltaAssertionArgs,\n    '__kind',\n    'Bytes'\n  >\n): GetDiscriminatedUnionVariant<DataValueDeltaAssertionArgs, '__kind', 'Bytes'>;\nexport function dataValueDeltaAssertion<\n  K extends DataValueDeltaAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isDataValueDeltaAssertion<\n  K extends DataValueDeltaAssertion['__kind'],\n>(\n  kind: K,\n  value: DataValueDeltaAssertion\n): value is DataValueDeltaAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum EquatableOperator {\n  Equal,\n  NotEqual,\n}\n\nexport type EquatableOperatorArgs = EquatableOperator;\n\nexport function getEquatableOperatorEncoder(): Encoder<EquatableOperatorArgs> {\n  return getEnumEncoder(EquatableOperator);\n}\n\nexport function getEquatableOperatorDecoder(): Decoder<EquatableOperator> {\n  return getEnumDecoder(EquatableOperator);\n}\n\nexport function getEquatableOperatorCodec(): Codec<\n  EquatableOperatorArgs,\n  EquatableOperator\n> {\n  return combineCodec(\n    getEquatableOperatorEncoder(),\n    getEquatableOperatorDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum IntegerOperator {\n  Equal,\n  NotEqual,\n  GreaterThan,\n  LessThan,\n  GreaterThanOrEqual,\n  LessThanOrEqual,\n  Contains,\n  DoesNotContain,\n}\n\nexport type IntegerOperatorArgs = IntegerOperator;\n\nexport function getIntegerOperatorEncoder(): Encoder<IntegerOperatorArgs> {\n  return getEnumEncoder(IntegerOperator);\n}\n\nexport function getIntegerOperatorDecoder(): Decoder<IntegerOperator> {\n  return getEnumDecoder(IntegerOperator);\n}\n\nexport function getIntegerOperatorCodec(): Codec<\n  IntegerOperatorArgs,\n  IntegerOperator\n> {\n  return combineCodec(getIntegerOperatorEncoder(), getIntegerOperatorDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum KnownProgram {\n  System,\n  Token,\n  Token2022,\n  Rent,\n  Stake,\n  Vote,\n  BpfLoader,\n  UpgradeableLoader,\n  SysvarConfig,\n}\n\nexport type KnownProgramArgs = KnownProgram;\n\nexport function getKnownProgramEncoder(): Encoder<KnownProgramArgs> {\n  return getEnumEncoder(KnownProgram);\n}\n\nexport function getKnownProgramDecoder(): Decoder<KnownProgram> {\n  return getEnumDecoder(KnownProgram);\n}\n\nexport function getKnownProgramCodec(): Codec<KnownProgramArgs, KnownProgram> {\n  return combineCodec(getKnownProgramEncoder(), getKnownProgramDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum LogLevel {\n  Silent,\n  PlaintextMessage,\n  EncodedMessage,\n  EncodedNoop,\n  FailedPlaintextMessage,\n  FailedEncodedMessage,\n  FailedEncodedNoop,\n}\n\nexport type LogLevelArgs = LogLevel;\n\nexport function getLogLevelEncoder(): Encoder<LogLevelArgs> {\n  return getEnumEncoder(LogLevel);\n}\n\nexport function getLogLevelDecoder(): Decoder<LogLevel> {\n  return getEnumDecoder(LogLevel);\n}\n\nexport function getLogLevelCodec(): Codec<LogLevelArgs, LogLevel> {\n  return combineCodec(getLogLevelEncoder(), getLogLevelDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type MerkleTreeAssertion = {\n  __kind: 'VerifyLeaf';\n  leafIndex: number;\n  leafHash: ReadonlyUint8Array;\n};\n\nexport type MerkleTreeAssertionArgs = MerkleTreeAssertion;\n\nexport function getMerkleTreeAssertionEncoder(): Encoder<MerkleTreeAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'VerifyLeaf',\n      getStructEncoder([\n        ['leafIndex', getU32Encoder()],\n        ['leafHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMerkleTreeAssertionDecoder(): Decoder<MerkleTreeAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'VerifyLeaf',\n      getStructDecoder([\n        ['leafIndex', getU32Decoder()],\n        ['leafHash', fixDecoderSize(getBytesDecoder(), 32)],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMerkleTreeAssertionCodec(): Codec<\n  MerkleTreeAssertionArgs,\n  MerkleTreeAssertion\n> {\n  return combineCodec(\n    getMerkleTreeAssertionEncoder(),\n    getMerkleTreeAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function merkleTreeAssertion(\n  kind: 'VerifyLeaf',\n  data: GetDiscriminatedUnionVariantContent<\n    MerkleTreeAssertionArgs,\n    '__kind',\n    'VerifyLeaf'\n  >\n): GetDiscriminatedUnionVariant<\n  MerkleTreeAssertionArgs,\n  '__kind',\n  'VerifyLeaf'\n>;\nexport function merkleTreeAssertion<\n  K extends MerkleTreeAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isMerkleTreeAssertion<K extends MerkleTreeAssertion['__kind']>(\n  kind: K,\n  value: MerkleTreeAssertion\n): value is MerkleTreeAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type MetaAssertion =\n  | { __kind: 'RentExemptReserve'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'AuthorizedStaker'; value: Address; operator: EquatableOperator }\n  | {\n      __kind: 'AuthorizedWithdrawer';\n      value: Address;\n      operator: EquatableOperator;\n    }\n  | { __kind: 'LockupUnixTimestamp'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'LockupEpoch'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'LockupCustodian'; value: Address; operator: EquatableOperator };\n\nexport type MetaAssertionArgs =\n  | {\n      __kind: 'RentExemptReserve';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'AuthorizedStaker';\n      value: Address;\n      operator: EquatableOperatorArgs;\n    }\n  | {\n      __kind: 'AuthorizedWithdrawer';\n      value: Address;\n      operator: EquatableOperatorArgs;\n    }\n  | {\n      __kind: 'LockupUnixTimestamp';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'LockupEpoch';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'LockupCustodian';\n      value: Address;\n      operator: EquatableOperatorArgs;\n    };\n\nexport function getMetaAssertionEncoder(): Encoder<MetaAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'RentExemptReserve',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'AuthorizedStaker',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'AuthorizedWithdrawer',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'LockupUnixTimestamp',\n      getStructEncoder([\n        ['value', getI64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'LockupEpoch',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'LockupCustodian',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMetaAssertionDecoder(): Decoder<MetaAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'RentExemptReserve',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'AuthorizedStaker',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'AuthorizedWithdrawer',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'LockupUnixTimestamp',\n      getStructDecoder([\n        ['value', getI64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'LockupEpoch',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'LockupCustodian',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMetaAssertionCodec(): Codec<\n  MetaAssertionArgs,\n  MetaAssertion\n> {\n  return combineCodec(getMetaAssertionEncoder(), getMetaAssertionDecoder());\n}\n\n// Data Enum Helpers.\nexport function metaAssertion(\n  kind: 'RentExemptReserve',\n  data: GetDiscriminatedUnionVariantContent<\n    MetaAssertionArgs,\n    '__kind',\n    'RentExemptReserve'\n  >\n): GetDiscriminatedUnionVariant<\n  MetaAssertionArgs,\n  '__kind',\n  'RentExemptReserve'\n>;\nexport function metaAssertion(\n  kind: 'AuthorizedStaker',\n  data: GetDiscriminatedUnionVariantContent<\n    MetaAssertionArgs,\n    '__kind',\n    'AuthorizedStaker'\n  >\n): GetDiscriminatedUnionVariant<\n  MetaAssertionArgs,\n  '__kind',\n  'AuthorizedStaker'\n>;\nexport function metaAssertion(\n  kind: 'AuthorizedWithdrawer',\n  data: GetDiscriminatedUnionVariantContent<\n    MetaAssertionArgs,\n    '__kind',\n    'AuthorizedWithdrawer'\n  >\n): GetDiscriminatedUnionVariant<\n  MetaAssertionArgs,\n  '__kind',\n  'AuthorizedWithdrawer'\n>;\nexport function metaAssertion(\n  kind: 'LockupUnixTimestamp',\n  data: GetDiscriminatedUnionVariantContent<\n    MetaAssertionArgs,\n    '__kind',\n    'LockupUnixTimestamp'\n  >\n): GetDiscriminatedUnionVariant<\n  MetaAssertionArgs,\n  '__kind',\n  'LockupUnixTimestamp'\n>;\nexport function metaAssertion(\n  kind: 'LockupEpoch',\n  data: GetDiscriminatedUnionVariantContent<\n    MetaAssertionArgs,\n    '__kind',\n    'LockupEpoch'\n  >\n): GetDiscriminatedUnionVariant<MetaAssertionArgs, '__kind', 'LockupEpoch'>;\nexport function metaAssertion(\n  kind: 'LockupCustodian',\n  data: GetDiscriminatedUnionVariantContent<\n    MetaAssertionArgs,\n    '__kind',\n    'LockupCustodian'\n  >\n): GetDiscriminatedUnionVariant<MetaAssertionArgs, '__kind', 'LockupCustodian'>;\nexport function metaAssertion<K extends MetaAssertionArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isMetaAssertion<K extends MetaAssertion['__kind']>(\n  kind: K,\n  value: MetaAssertion\n): value is MetaAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type MintAccountAssertion =\n  | {\n      __kind: 'MintAuthority';\n      value: Option<Address>;\n      operator: EquatableOperator;\n    }\n  | { __kind: 'Supply'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Decimals'; value: number; operator: IntegerOperator }\n  | { __kind: 'IsInitialized'; value: boolean; operator: EquatableOperator }\n  | {\n      __kind: 'FreezeAuthority';\n      value: Option<Address>;\n      operator: EquatableOperator;\n    };\n\nexport type MintAccountAssertionArgs =\n  | {\n      __kind: 'MintAuthority';\n      value: OptionOrNullable<Address>;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'Supply'; value: number | bigint; operator: IntegerOperatorArgs }\n  | { __kind: 'Decimals'; value: number; operator: IntegerOperatorArgs }\n  | { __kind: 'IsInitialized'; value: boolean; operator: EquatableOperatorArgs }\n  | {\n      __kind: 'FreezeAuthority';\n      value: OptionOrNullable<Address>;\n      operator: EquatableOperatorArgs;\n    };\n\nexport function getMintAccountAssertionEncoder(): Encoder<MintAccountAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'MintAuthority',\n      getStructEncoder([\n        ['value', getOptionEncoder(getAddressEncoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Supply',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Decimals',\n      getStructEncoder([\n        ['value', getU8Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'IsInitialized',\n      getStructEncoder([\n        ['value', getBooleanEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'FreezeAuthority',\n      getStructEncoder([\n        ['value', getOptionEncoder(getAddressEncoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMintAccountAssertionDecoder(): Decoder<MintAccountAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'MintAuthority',\n      getStructDecoder([\n        ['value', getOptionDecoder(getAddressDecoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Supply',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Decimals',\n      getStructDecoder([\n        ['value', getU8Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'IsInitialized',\n      getStructDecoder([\n        ['value', getBooleanDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'FreezeAuthority',\n      getStructDecoder([\n        ['value', getOptionDecoder(getAddressDecoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMintAccountAssertionCodec(): Codec<\n  MintAccountAssertionArgs,\n  MintAccountAssertion\n> {\n  return combineCodec(\n    getMintAccountAssertionEncoder(),\n    getMintAccountAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function mintAccountAssertion(\n  kind: 'MintAuthority',\n  data: GetDiscriminatedUnionVariantContent<\n    MintAccountAssertionArgs,\n    '__kind',\n    'MintAuthority'\n  >\n): GetDiscriminatedUnionVariant<\n  MintAccountAssertionArgs,\n  '__kind',\n  'MintAuthority'\n>;\nexport function mintAccountAssertion(\n  kind: 'Supply',\n  data: GetDiscriminatedUnionVariantContent<\n    MintAccountAssertionArgs,\n    '__kind',\n    'Supply'\n  >\n): GetDiscriminatedUnionVariant<MintAccountAssertionArgs, '__kind', 'Supply'>;\nexport function mintAccountAssertion(\n  kind: 'Decimals',\n  data: GetDiscriminatedUnionVariantContent<\n    MintAccountAssertionArgs,\n    '__kind',\n    'Decimals'\n  >\n): GetDiscriminatedUnionVariant<MintAccountAssertionArgs, '__kind', 'Decimals'>;\nexport function mintAccountAssertion(\n  kind: 'IsInitialized',\n  data: GetDiscriminatedUnionVariantContent<\n    MintAccountAssertionArgs,\n    '__kind',\n    'IsInitialized'\n  >\n): GetDiscriminatedUnionVariant<\n  MintAccountAssertionArgs,\n  '__kind',\n  'IsInitialized'\n>;\nexport function mintAccountAssertion(\n  kind: 'FreezeAuthority',\n  data: GetDiscriminatedUnionVariantContent<\n    MintAccountAssertionArgs,\n    '__kind',\n    'FreezeAuthority'\n  >\n): GetDiscriminatedUnionVariant<\n  MintAccountAssertionArgs,\n  '__kind',\n  'FreezeAuthority'\n>;\nexport function mintAccountAssertion<\n  K extends MintAccountAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isMintAccountAssertion<\n  K extends MintAccountAssertion['__kind'],\n>(\n  kind: K,\n  value: MintAccountAssertion\n): value is MintAccountAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  getMetaAssertionDecoder,\n  getMetaAssertionEncoder,\n  getStakeAssertionDecoder,\n  getStakeAssertionEncoder,\n  getStakeStateTypeDecoder,\n  getStakeStateTypeEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n  type MetaAssertion,\n  type MetaAssertionArgs,\n  type StakeAssertion,\n  type StakeAssertionArgs,\n  type StakeStateType,\n  type StakeStateTypeArgs,\n} from '.';\n\nexport type StakeAccountAssertion =\n  | { __kind: 'State'; value: StakeStateType; operator: EquatableOperator }\n  | { __kind: 'MetaAssertion'; fields: readonly [MetaAssertion] }\n  | { __kind: 'StakeAssertion'; fields: readonly [StakeAssertion] }\n  | { __kind: 'StakeFlags'; value: number; operator: IntegerOperator };\n\nexport type StakeAccountAssertionArgs =\n  | {\n      __kind: 'State';\n      value: StakeStateTypeArgs;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'MetaAssertion'; fields: readonly [MetaAssertionArgs] }\n  | { __kind: 'StakeAssertion'; fields: readonly [StakeAssertionArgs] }\n  | { __kind: 'StakeFlags'; value: number; operator: IntegerOperatorArgs };\n\nexport function getStakeAccountAssertionEncoder(): Encoder<StakeAccountAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'State',\n      getStructEncoder([\n        ['value', getStakeStateTypeEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'MetaAssertion',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getMetaAssertionEncoder()])],\n      ]),\n    ],\n    [\n      'StakeAssertion',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getStakeAssertionEncoder()])],\n      ]),\n    ],\n    [\n      'StakeFlags',\n      getStructEncoder([\n        ['value', getU8Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getStakeAccountAssertionDecoder(): Decoder<StakeAccountAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'State',\n      getStructDecoder([\n        ['value', getStakeStateTypeDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'MetaAssertion',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getMetaAssertionDecoder()])],\n      ]),\n    ],\n    [\n      'StakeAssertion',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getStakeAssertionDecoder()])],\n      ]),\n    ],\n    [\n      'StakeFlags',\n      getStructDecoder([\n        ['value', getU8Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getStakeAccountAssertionCodec(): Codec<\n  StakeAccountAssertionArgs,\n  StakeAccountAssertion\n> {\n  return combineCodec(\n    getStakeAccountAssertionEncoder(),\n    getStakeAccountAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function stakeAccountAssertion(\n  kind: 'State',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAccountAssertionArgs,\n    '__kind',\n    'State'\n  >\n): GetDiscriminatedUnionVariant<StakeAccountAssertionArgs, '__kind', 'State'>;\nexport function stakeAccountAssertion(\n  kind: 'MetaAssertion',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAccountAssertionArgs,\n    '__kind',\n    'MetaAssertion'\n  >['fields']\n): GetDiscriminatedUnionVariant<\n  StakeAccountAssertionArgs,\n  '__kind',\n  'MetaAssertion'\n>;\nexport function stakeAccountAssertion(\n  kind: 'StakeAssertion',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAccountAssertionArgs,\n    '__kind',\n    'StakeAssertion'\n  >['fields']\n): GetDiscriminatedUnionVariant<\n  StakeAccountAssertionArgs,\n  '__kind',\n  'StakeAssertion'\n>;\nexport function stakeAccountAssertion(\n  kind: 'StakeFlags',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAccountAssertionArgs,\n    '__kind',\n    'StakeFlags'\n  >\n): GetDiscriminatedUnionVariant<\n  StakeAccountAssertionArgs,\n  '__kind',\n  'StakeFlags'\n>;\nexport function stakeAccountAssertion<\n  K extends StakeAccountAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isStakeAccountAssertion<\n  K extends StakeAccountAssertion['__kind'],\n>(\n  kind: K,\n  value: StakeAccountAssertion\n): value is StakeAccountAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type StakeAssertion =\n  | {\n      __kind: 'DelegationVoterPubkey';\n      value: Address;\n      operator: EquatableOperator;\n    }\n  | { __kind: 'DelegationStake'; value: bigint; operator: IntegerOperator }\n  | {\n      __kind: 'DelegationActivationEpoch';\n      value: bigint;\n      operator: IntegerOperator;\n    }\n  | {\n      __kind: 'DelegationDeactivationEpoch';\n      value: bigint;\n      operator: IntegerOperator;\n    }\n  | { __kind: 'CreditsObserved'; value: bigint; operator: IntegerOperator };\n\nexport type StakeAssertionArgs =\n  | {\n      __kind: 'DelegationVoterPubkey';\n      value: Address;\n      operator: EquatableOperatorArgs;\n    }\n  | {\n      __kind: 'DelegationStake';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'DelegationActivationEpoch';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'DelegationDeactivationEpoch';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'CreditsObserved';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    };\n\nexport function getStakeAssertionEncoder(): Encoder<StakeAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'DelegationVoterPubkey',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'DelegationStake',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'DelegationActivationEpoch',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'DelegationDeactivationEpoch',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'CreditsObserved',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getStakeAssertionDecoder(): Decoder<StakeAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'DelegationVoterPubkey',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'DelegationStake',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'DelegationActivationEpoch',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'DelegationDeactivationEpoch',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'CreditsObserved',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getStakeAssertionCodec(): Codec<\n  StakeAssertionArgs,\n  StakeAssertion\n> {\n  return combineCodec(getStakeAssertionEncoder(), getStakeAssertionDecoder());\n}\n\n// Data Enum Helpers.\nexport function stakeAssertion(\n  kind: 'DelegationVoterPubkey',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAssertionArgs,\n    '__kind',\n    'DelegationVoterPubkey'\n  >\n): GetDiscriminatedUnionVariant<\n  StakeAssertionArgs,\n  '__kind',\n  'DelegationVoterPubkey'\n>;\nexport function stakeAssertion(\n  kind: 'DelegationStake',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAssertionArgs,\n    '__kind',\n    'DelegationStake'\n  >\n): GetDiscriminatedUnionVariant<\n  StakeAssertionArgs,\n  '__kind',\n  'DelegationStake'\n>;\nexport function stakeAssertion(\n  kind: 'DelegationActivationEpoch',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAssertionArgs,\n    '__kind',\n    'DelegationActivationEpoch'\n  >\n): GetDiscriminatedUnionVariant<\n  StakeAssertionArgs,\n  '__kind',\n  'DelegationActivationEpoch'\n>;\nexport function stakeAssertion(\n  kind: 'DelegationDeactivationEpoch',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAssertionArgs,\n    '__kind',\n    'DelegationDeactivationEpoch'\n  >\n): GetDiscriminatedUnionVariant<\n  StakeAssertionArgs,\n  '__kind',\n  'DelegationDeactivationEpoch'\n>;\nexport function stakeAssertion(\n  kind: 'CreditsObserved',\n  data: GetDiscriminatedUnionVariantContent<\n    StakeAssertionArgs,\n    '__kind',\n    'CreditsObserved'\n  >\n): GetDiscriminatedUnionVariant<\n  StakeAssertionArgs,\n  '__kind',\n  'CreditsObserved'\n>;\nexport function stakeAssertion<K extends StakeAssertionArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isStakeAssertion<K extends StakeAssertion['__kind']>(\n  kind: K,\n  value: StakeAssertion\n): value is StakeAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum StakeStateType {\n  Uninitialized,\n  Initialized,\n  Stake,\n  RewardsPool,\n}\n\nexport type StakeStateTypeArgs = StakeStateType;\n\nexport function getStakeStateTypeEncoder(): Encoder<StakeStateTypeArgs> {\n  return getEnumEncoder(StakeStateType);\n}\n\nexport function getStakeStateTypeDecoder(): Decoder<StakeStateType> {\n  return getEnumDecoder(StakeStateType);\n}\n\nexport function getStakeStateTypeCodec(): Codec<\n  StakeStateTypeArgs,\n  StakeStateType\n> {\n  return combineCodec(getStakeStateTypeEncoder(), getStakeStateTypeDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type SysvarClockAssertion =\n  | { __kind: 'Slot'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'EpochStartTimestamp'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Epoch'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'LeaderScheduleEpoch'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'UnixTimestamp'; value: bigint; operator: IntegerOperator };\n\nexport type SysvarClockAssertionArgs =\n  | { __kind: 'Slot'; value: number | bigint; operator: IntegerOperatorArgs }\n  | {\n      __kind: 'EpochStartTimestamp';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | { __kind: 'Epoch'; value: number | bigint; operator: IntegerOperatorArgs }\n  | {\n      __kind: 'LeaderScheduleEpoch';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'UnixTimestamp';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    };\n\nexport function getSysvarClockAssertionEncoder(): Encoder<SysvarClockAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Slot',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'EpochStartTimestamp',\n      getStructEncoder([\n        ['value', getI64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Epoch',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'LeaderScheduleEpoch',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'UnixTimestamp',\n      getStructEncoder([\n        ['value', getI64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getSysvarClockAssertionDecoder(): Decoder<SysvarClockAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Slot',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'EpochStartTimestamp',\n      getStructDecoder([\n        ['value', getI64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Epoch',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'LeaderScheduleEpoch',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'UnixTimestamp',\n      getStructDecoder([\n        ['value', getI64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getSysvarClockAssertionCodec(): Codec<\n  SysvarClockAssertionArgs,\n  SysvarClockAssertion\n> {\n  return combineCodec(\n    getSysvarClockAssertionEncoder(),\n    getSysvarClockAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function sysvarClockAssertion(\n  kind: 'Slot',\n  data: GetDiscriminatedUnionVariantContent<\n    SysvarClockAssertionArgs,\n    '__kind',\n    'Slot'\n  >\n): GetDiscriminatedUnionVariant<SysvarClockAssertionArgs, '__kind', 'Slot'>;\nexport function sysvarClockAssertion(\n  kind: 'EpochStartTimestamp',\n  data: GetDiscriminatedUnionVariantContent<\n    SysvarClockAssertionArgs,\n    '__kind',\n    'EpochStartTimestamp'\n  >\n): GetDiscriminatedUnionVariant<\n  SysvarClockAssertionArgs,\n  '__kind',\n  'EpochStartTimestamp'\n>;\nexport function sysvarClockAssertion(\n  kind: 'Epoch',\n  data: GetDiscriminatedUnionVariantContent<\n    SysvarClockAssertionArgs,\n    '__kind',\n    'Epoch'\n  >\n): GetDiscriminatedUnionVariant<SysvarClockAssertionArgs, '__kind', 'Epoch'>;\nexport function sysvarClockAssertion(\n  kind: 'LeaderScheduleEpoch',\n  data: GetDiscriminatedUnionVariantContent<\n    SysvarClockAssertionArgs,\n    '__kind',\n    'LeaderScheduleEpoch'\n  >\n): GetDiscriminatedUnionVariant<\n  SysvarClockAssertionArgs,\n  '__kind',\n  'LeaderScheduleEpoch'\n>;\nexport function sysvarClockAssertion(\n  kind: 'UnixTimestamp',\n  data: GetDiscriminatedUnionVariantContent<\n    SysvarClockAssertionArgs,\n    '__kind',\n    'UnixTimestamp'\n  >\n): GetDiscriminatedUnionVariant<\n  SysvarClockAssertionArgs,\n  '__kind',\n  'UnixTimestamp'\n>;\nexport function sysvarClockAssertion<\n  K extends SysvarClockAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isSysvarClockAssertion<\n  K extends SysvarClockAssertion['__kind'],\n>(\n  kind: K,\n  value: SysvarClockAssertion\n): value is SysvarClockAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type TokenAccountAssertion =\n  | { __kind: 'Mint'; value: Address; operator: EquatableOperator }\n  | { __kind: 'Owner'; value: Address; operator: EquatableOperator }\n  | { __kind: 'Amount'; value: bigint; operator: IntegerOperator }\n  | { __kind: 'Delegate'; value: Option<Address>; operator: EquatableOperator }\n  | { __kind: 'State'; value: number; operator: IntegerOperator }\n  | { __kind: 'IsNative'; value: Option<bigint>; operator: EquatableOperator }\n  | { __kind: 'DelegatedAmount'; value: bigint; operator: IntegerOperator }\n  | {\n      __kind: 'CloseAuthority';\n      value: Option<Address>;\n      operator: EquatableOperator;\n    }\n  | { __kind: 'TokenAccountOwnerIsDerived' };\n\nexport type TokenAccountAssertionArgs =\n  | { __kind: 'Mint'; value: Address; operator: EquatableOperatorArgs }\n  | { __kind: 'Owner'; value: Address; operator: EquatableOperatorArgs }\n  | { __kind: 'Amount'; value: number | bigint; operator: IntegerOperatorArgs }\n  | {\n      __kind: 'Delegate';\n      value: OptionOrNullable<Address>;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'State'; value: number; operator: IntegerOperatorArgs }\n  | {\n      __kind: 'IsNative';\n      value: OptionOrNullable<number | bigint>;\n      operator: EquatableOperatorArgs;\n    }\n  | {\n      __kind: 'DelegatedAmount';\n      value: number | bigint;\n      operator: IntegerOperatorArgs;\n    }\n  | {\n      __kind: 'CloseAuthority';\n      value: OptionOrNullable<Address>;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'TokenAccountOwnerIsDerived' };\n\nexport function getTokenAccountAssertionEncoder(): Encoder<TokenAccountAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Mint',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Owner',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Amount',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Delegate',\n      getStructEncoder([\n        ['value', getOptionEncoder(getAddressEncoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'State',\n      getStructEncoder([\n        ['value', getU8Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'IsNative',\n      getStructEncoder([\n        ['value', getOptionEncoder(getU64Encoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'DelegatedAmount',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n    [\n      'CloseAuthority',\n      getStructEncoder([\n        ['value', getOptionEncoder(getAddressEncoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    ['TokenAccountOwnerIsDerived', getUnitEncoder()],\n  ]);\n}\n\nexport function getTokenAccountAssertionDecoder(): Decoder<TokenAccountAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Mint',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Owner',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Amount',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Delegate',\n      getStructDecoder([\n        ['value', getOptionDecoder(getAddressDecoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'State',\n      getStructDecoder([\n        ['value', getU8Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'IsNative',\n      getStructDecoder([\n        ['value', getOptionDecoder(getU64Decoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'DelegatedAmount',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n    [\n      'CloseAuthority',\n      getStructDecoder([\n        ['value', getOptionDecoder(getAddressDecoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    ['TokenAccountOwnerIsDerived', getUnitDecoder()],\n  ]);\n}\n\nexport function getTokenAccountAssertionCodec(): Codec<\n  TokenAccountAssertionArgs,\n  TokenAccountAssertion\n> {\n  return combineCodec(\n    getTokenAccountAssertionEncoder(),\n    getTokenAccountAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function tokenAccountAssertion(\n  kind: 'Mint',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'Mint'\n  >\n): GetDiscriminatedUnionVariant<TokenAccountAssertionArgs, '__kind', 'Mint'>;\nexport function tokenAccountAssertion(\n  kind: 'Owner',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'Owner'\n  >\n): GetDiscriminatedUnionVariant<TokenAccountAssertionArgs, '__kind', 'Owner'>;\nexport function tokenAccountAssertion(\n  kind: 'Amount',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'Amount'\n  >\n): GetDiscriminatedUnionVariant<TokenAccountAssertionArgs, '__kind', 'Amount'>;\nexport function tokenAccountAssertion(\n  kind: 'Delegate',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'Delegate'\n  >\n): GetDiscriminatedUnionVariant<\n  TokenAccountAssertionArgs,\n  '__kind',\n  'Delegate'\n>;\nexport function tokenAccountAssertion(\n  kind: 'State',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'State'\n  >\n): GetDiscriminatedUnionVariant<TokenAccountAssertionArgs, '__kind', 'State'>;\nexport function tokenAccountAssertion(\n  kind: 'IsNative',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'IsNative'\n  >\n): GetDiscriminatedUnionVariant<\n  TokenAccountAssertionArgs,\n  '__kind',\n  'IsNative'\n>;\nexport function tokenAccountAssertion(\n  kind: 'DelegatedAmount',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'DelegatedAmount'\n  >\n): GetDiscriminatedUnionVariant<\n  TokenAccountAssertionArgs,\n  '__kind',\n  'DelegatedAmount'\n>;\nexport function tokenAccountAssertion(\n  kind: 'CloseAuthority',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenAccountAssertionArgs,\n    '__kind',\n    'CloseAuthority'\n  >\n): GetDiscriminatedUnionVariant<\n  TokenAccountAssertionArgs,\n  '__kind',\n  'CloseAuthority'\n>;\nexport function tokenAccountAssertion(\n  kind: 'TokenAccountOwnerIsDerived'\n): GetDiscriminatedUnionVariant<\n  TokenAccountAssertionArgs,\n  '__kind',\n  'TokenAccountOwnerIsDerived'\n>;\nexport function tokenAccountAssertion<\n  K extends TokenAccountAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isTokenAccountAssertion<\n  K extends TokenAccountAssertion['__kind'],\n>(\n  kind: K,\n  value: TokenAccountAssertion\n): value is TokenAccountAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n} from '.';\n\nexport type UpgradableBufferAssertion = {\n  __kind: 'Authority';\n  value: Option<Address>;\n  operator: EquatableOperator;\n};\n\nexport type UpgradableBufferAssertionArgs = {\n  __kind: 'Authority';\n  value: OptionOrNullable<Address>;\n  operator: EquatableOperatorArgs;\n};\n\nexport function getUpgradableBufferAssertionEncoder(): Encoder<UpgradableBufferAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Authority',\n      getStructEncoder([\n        ['value', getOptionEncoder(getAddressEncoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradableBufferAssertionDecoder(): Decoder<UpgradableBufferAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Authority',\n      getStructDecoder([\n        ['value', getOptionDecoder(getAddressDecoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradableBufferAssertionCodec(): Codec<\n  UpgradableBufferAssertionArgs,\n  UpgradableBufferAssertion\n> {\n  return combineCodec(\n    getUpgradableBufferAssertionEncoder(),\n    getUpgradableBufferAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function upgradableBufferAssertion(\n  kind: 'Authority',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradableBufferAssertionArgs,\n    '__kind',\n    'Authority'\n  >\n): GetDiscriminatedUnionVariant<\n  UpgradableBufferAssertionArgs,\n  '__kind',\n  'Authority'\n>;\nexport function upgradableBufferAssertion<\n  K extends UpgradableBufferAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isUpgradableBufferAssertion<\n  K extends UpgradableBufferAssertion['__kind'],\n>(\n  kind: K,\n  value: UpgradableBufferAssertion\n): value is UpgradableBufferAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getUpgradableBufferAssertionDecoder,\n  getUpgradableBufferAssertionEncoder,\n  getUpgradeableLoaderStateTypeDecoder,\n  getUpgradeableLoaderStateTypeEncoder,\n  getUpgradeableProgramAssertionDecoder,\n  getUpgradeableProgramAssertionEncoder,\n  getUpgradeableProgramDataAssertionDecoder,\n  getUpgradeableProgramDataAssertionEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type UpgradableBufferAssertion,\n  type UpgradableBufferAssertionArgs,\n  type UpgradeableLoaderStateType,\n  type UpgradeableLoaderStateTypeArgs,\n  type UpgradeableProgramAssertion,\n  type UpgradeableProgramAssertionArgs,\n  type UpgradeableProgramDataAssertion,\n  type UpgradeableProgramDataAssertionArgs,\n} from '.';\n\nexport type UpgradeableLoaderStateAssertion =\n  | {\n      __kind: 'State';\n      value: UpgradeableLoaderStateType;\n      operator: EquatableOperator;\n    }\n  | { __kind: 'Buffer'; fields: readonly [UpgradableBufferAssertion] }\n  | { __kind: 'Program'; fields: readonly [UpgradeableProgramAssertion] }\n  | {\n      __kind: 'ProgramData';\n      fields: readonly [UpgradeableProgramDataAssertion];\n    };\n\nexport type UpgradeableLoaderStateAssertionArgs =\n  | {\n      __kind: 'State';\n      value: UpgradeableLoaderStateTypeArgs;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'Buffer'; fields: readonly [UpgradableBufferAssertionArgs] }\n  | { __kind: 'Program'; fields: readonly [UpgradeableProgramAssertionArgs] }\n  | {\n      __kind: 'ProgramData';\n      fields: readonly [UpgradeableProgramDataAssertionArgs];\n    };\n\nexport function getUpgradeableLoaderStateAssertionEncoder(): Encoder<UpgradeableLoaderStateAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'State',\n      getStructEncoder([\n        ['value', getUpgradeableLoaderStateTypeEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Buffer',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getUpgradableBufferAssertionEncoder()])],\n      ]),\n    ],\n    [\n      'Program',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getUpgradeableProgramAssertionEncoder()])],\n      ]),\n    ],\n    [\n      'ProgramData',\n      getStructEncoder([\n        [\n          'fields',\n          getTupleEncoder([getUpgradeableProgramDataAssertionEncoder()]),\n        ],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradeableLoaderStateAssertionDecoder(): Decoder<UpgradeableLoaderStateAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'State',\n      getStructDecoder([\n        ['value', getUpgradeableLoaderStateTypeDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Buffer',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getUpgradableBufferAssertionDecoder()])],\n      ]),\n    ],\n    [\n      'Program',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getUpgradeableProgramAssertionDecoder()])],\n      ]),\n    ],\n    [\n      'ProgramData',\n      getStructDecoder([\n        [\n          'fields',\n          getTupleDecoder([getUpgradeableProgramDataAssertionDecoder()]),\n        ],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradeableLoaderStateAssertionCodec(): Codec<\n  UpgradeableLoaderStateAssertionArgs,\n  UpgradeableLoaderStateAssertion\n> {\n  return combineCodec(\n    getUpgradeableLoaderStateAssertionEncoder(),\n    getUpgradeableLoaderStateAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function upgradeableLoaderStateAssertion(\n  kind: 'State',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableLoaderStateAssertionArgs,\n    '__kind',\n    'State'\n  >\n): GetDiscriminatedUnionVariant<\n  UpgradeableLoaderStateAssertionArgs,\n  '__kind',\n  'State'\n>;\nexport function upgradeableLoaderStateAssertion(\n  kind: 'Buffer',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableLoaderStateAssertionArgs,\n    '__kind',\n    'Buffer'\n  >['fields']\n): GetDiscriminatedUnionVariant<\n  UpgradeableLoaderStateAssertionArgs,\n  '__kind',\n  'Buffer'\n>;\nexport function upgradeableLoaderStateAssertion(\n  kind: 'Program',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableLoaderStateAssertionArgs,\n    '__kind',\n    'Program'\n  >['fields']\n): GetDiscriminatedUnionVariant<\n  UpgradeableLoaderStateAssertionArgs,\n  '__kind',\n  'Program'\n>;\nexport function upgradeableLoaderStateAssertion(\n  kind: 'ProgramData',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableLoaderStateAssertionArgs,\n    '__kind',\n    'ProgramData'\n  >['fields']\n): GetDiscriminatedUnionVariant<\n  UpgradeableLoaderStateAssertionArgs,\n  '__kind',\n  'ProgramData'\n>;\nexport function upgradeableLoaderStateAssertion<\n  K extends UpgradeableLoaderStateAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isUpgradeableLoaderStateAssertion<\n  K extends UpgradeableLoaderStateAssertion['__kind'],\n>(\n  kind: K,\n  value: UpgradeableLoaderStateAssertion\n): value is UpgradeableLoaderStateAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum UpgradeableLoaderStateType {\n  Uninitialized,\n  Buffer,\n  Program,\n  ProgramData,\n}\n\nexport type UpgradeableLoaderStateTypeArgs = UpgradeableLoaderStateType;\n\nexport function getUpgradeableLoaderStateTypeEncoder(): Encoder<UpgradeableLoaderStateTypeArgs> {\n  return getEnumEncoder(UpgradeableLoaderStateType);\n}\n\nexport function getUpgradeableLoaderStateTypeDecoder(): Decoder<UpgradeableLoaderStateType> {\n  return getEnumDecoder(UpgradeableLoaderStateType);\n}\n\nexport function getUpgradeableLoaderStateTypeCodec(): Codec<\n  UpgradeableLoaderStateTypeArgs,\n  UpgradeableLoaderStateType\n> {\n  return combineCodec(\n    getUpgradeableLoaderStateTypeEncoder(),\n    getUpgradeableLoaderStateTypeDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n} from '.';\n\nexport type UpgradeableProgramAssertion = {\n  __kind: 'ProgramDataAddress';\n  value: Address;\n  operator: EquatableOperator;\n};\n\nexport type UpgradeableProgramAssertionArgs = {\n  __kind: 'ProgramDataAddress';\n  value: Address;\n  operator: EquatableOperatorArgs;\n};\n\nexport function getUpgradeableProgramAssertionEncoder(): Encoder<UpgradeableProgramAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'ProgramDataAddress',\n      getStructEncoder([\n        ['value', getAddressEncoder()],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradeableProgramAssertionDecoder(): Decoder<UpgradeableProgramAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'ProgramDataAddress',\n      getStructDecoder([\n        ['value', getAddressDecoder()],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradeableProgramAssertionCodec(): Codec<\n  UpgradeableProgramAssertionArgs,\n  UpgradeableProgramAssertion\n> {\n  return combineCodec(\n    getUpgradeableProgramAssertionEncoder(),\n    getUpgradeableProgramAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function upgradeableProgramAssertion(\n  kind: 'ProgramDataAddress',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableProgramAssertionArgs,\n    '__kind',\n    'ProgramDataAddress'\n  >\n): GetDiscriminatedUnionVariant<\n  UpgradeableProgramAssertionArgs,\n  '__kind',\n  'ProgramDataAddress'\n>;\nexport function upgradeableProgramAssertion<\n  K extends UpgradeableProgramAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isUpgradeableProgramAssertion<\n  K extends UpgradeableProgramAssertion['__kind'],\n>(\n  kind: K,\n  value: UpgradeableProgramAssertion\n): value is UpgradeableProgramAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getEquatableOperatorDecoder,\n  getEquatableOperatorEncoder,\n  getIntegerOperatorDecoder,\n  getIntegerOperatorEncoder,\n  type EquatableOperator,\n  type EquatableOperatorArgs,\n  type IntegerOperator,\n  type IntegerOperatorArgs,\n} from '.';\n\nexport type UpgradeableProgramDataAssertion =\n  | {\n      __kind: 'UpgradeAuthority';\n      value: Option<Address>;\n      operator: EquatableOperator;\n    }\n  | { __kind: 'Slot'; value: bigint; operator: IntegerOperator };\n\nexport type UpgradeableProgramDataAssertionArgs =\n  | {\n      __kind: 'UpgradeAuthority';\n      value: OptionOrNullable<Address>;\n      operator: EquatableOperatorArgs;\n    }\n  | { __kind: 'Slot'; value: number | bigint; operator: IntegerOperatorArgs };\n\nexport function getUpgradeableProgramDataAssertionEncoder(): Encoder<UpgradeableProgramDataAssertionArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'UpgradeAuthority',\n      getStructEncoder([\n        ['value', getOptionEncoder(getAddressEncoder())],\n        ['operator', getEquatableOperatorEncoder()],\n      ]),\n    ],\n    [\n      'Slot',\n      getStructEncoder([\n        ['value', getU64Encoder()],\n        ['operator', getIntegerOperatorEncoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradeableProgramDataAssertionDecoder(): Decoder<UpgradeableProgramDataAssertion> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'UpgradeAuthority',\n      getStructDecoder([\n        ['value', getOptionDecoder(getAddressDecoder())],\n        ['operator', getEquatableOperatorDecoder()],\n      ]),\n    ],\n    [\n      'Slot',\n      getStructDecoder([\n        ['value', getU64Decoder()],\n        ['operator', getIntegerOperatorDecoder()],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpgradeableProgramDataAssertionCodec(): Codec<\n  UpgradeableProgramDataAssertionArgs,\n  UpgradeableProgramDataAssertion\n> {\n  return combineCodec(\n    getUpgradeableProgramDataAssertionEncoder(),\n    getUpgradeableProgramDataAssertionDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function upgradeableProgramDataAssertion(\n  kind: 'UpgradeAuthority',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableProgramDataAssertionArgs,\n    '__kind',\n    'UpgradeAuthority'\n  >\n): GetDiscriminatedUnionVariant<\n  UpgradeableProgramDataAssertionArgs,\n  '__kind',\n  'UpgradeAuthority'\n>;\nexport function upgradeableProgramDataAssertion(\n  kind: 'Slot',\n  data: GetDiscriminatedUnionVariantContent<\n    UpgradeableProgramDataAssertionArgs,\n    '__kind',\n    'Slot'\n  >\n): GetDiscriminatedUnionVariant<\n  UpgradeableProgramDataAssertionArgs,\n  '__kind',\n  'Slot'\n>;\nexport function upgradeableProgramDataAssertion<\n  K extends UpgradeableProgramDataAssertionArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isUpgradeableProgramDataAssertion<\n  K extends UpgradeableProgramDataAssertion['__kind'],\n>(\n  kind: K,\n  value: UpgradeableProgramDataAssertion\n): value is UpgradeableProgramDataAssertion & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getAccountInfoFieldDecoder,\n  getAccountInfoFieldEncoder,\n  getClockFieldDecoder,\n  getClockFieldEncoder,\n  getDataValueDecoder,\n  getDataValueEncoder,\n  type AccountInfoField,\n  type AccountInfoFieldArgs,\n  type ClockField,\n  type ClockFieldArgs,\n  type DataValue,\n  type DataValueArgs,\n} from '.';\n\nexport type WriteType =\n  | { __kind: 'AccountData'; offset: number; dataLength: number }\n  | { __kind: 'AccountInfoField'; fields: readonly [AccountInfoField] }\n  | { __kind: 'DataValue'; fields: readonly [DataValue] }\n  | { __kind: 'Clock'; fields: readonly [ClockField] };\n\nexport type WriteTypeArgs =\n  | { __kind: 'AccountData'; offset: number; dataLength: number }\n  | { __kind: 'AccountInfoField'; fields: readonly [AccountInfoFieldArgs] }\n  | { __kind: 'DataValue'; fields: readonly [DataValueArgs] }\n  | { __kind: 'Clock'; fields: readonly [ClockFieldArgs] };\n\nexport function getWriteTypeEncoder(): Encoder<WriteTypeArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'AccountData',\n      getStructEncoder([\n        ['offset', getU16Encoder()],\n        ['dataLength', getU16Encoder()],\n      ]),\n    ],\n    [\n      'AccountInfoField',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getAccountInfoFieldEncoder()])],\n      ]),\n    ],\n    [\n      'DataValue',\n      getStructEncoder([['fields', getTupleEncoder([getDataValueEncoder()])]]),\n    ],\n    [\n      'Clock',\n      getStructEncoder([['fields', getTupleEncoder([getClockFieldEncoder()])]]),\n    ],\n  ]);\n}\n\nexport function getWriteTypeDecoder(): Decoder<WriteType> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'AccountData',\n      getStructDecoder([\n        ['offset', getU16Decoder()],\n        ['dataLength', getU16Decoder()],\n      ]),\n    ],\n    [\n      'AccountInfoField',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getAccountInfoFieldDecoder()])],\n      ]),\n    ],\n    [\n      'DataValue',\n      getStructDecoder([['fields', getTupleDecoder([getDataValueDecoder()])]]),\n    ],\n    [\n      'Clock',\n      getStructDecoder([['fields', getTupleDecoder([getClockFieldDecoder()])]]),\n    ],\n  ]);\n}\n\nexport function getWriteTypeCodec(): Codec<WriteTypeArgs, WriteType> {\n  return combineCodec(getWriteTypeEncoder(), getWriteTypeDecoder());\n}\n\n// Data Enum Helpers.\nexport function writeType(\n  kind: 'AccountData',\n  data: GetDiscriminatedUnionVariantContent<\n    WriteTypeArgs,\n    '__kind',\n    'AccountData'\n  >\n): GetDiscriminatedUnionVariant<WriteTypeArgs, '__kind', 'AccountData'>;\nexport function writeType(\n  kind: 'AccountInfoField',\n  data: GetDiscriminatedUnionVariantContent<\n    WriteTypeArgs,\n    '__kind',\n    'AccountInfoField'\n  >['fields']\n): GetDiscriminatedUnionVariant<WriteTypeArgs, '__kind', 'AccountInfoField'>;\nexport function writeType(\n  kind: 'DataValue',\n  data: GetDiscriminatedUnionVariantContent<\n    WriteTypeArgs,\n    '__kind',\n    'DataValue'\n  >['fields']\n): GetDiscriminatedUnionVariant<WriteTypeArgs, '__kind', 'DataValue'>;\nexport function writeType(\n  kind: 'Clock',\n  data: GetDiscriminatedUnionVariantContent<\n    WriteTypeArgs,\n    '__kind',\n    'Clock'\n  >['fields']\n): GetDiscriminatedUnionVariant<WriteTypeArgs, '__kind', 'Clock'>;\nexport function writeType<K extends WriteTypeArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isWriteType<K extends WriteType['__kind']>(\n  kind: K,\n  value: WriteType\n): value is WriteType & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getAccountDataAssertionsDecoder,\n  getAccountDataAssertionsEncoder,\n  type AccountDataAssertions,\n  type AccountDataAssertionsArgs,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_ACCOUNT_DATA_MULTI_DISCRIMINATOR = 3;\n\nexport function getAssertAccountDataMultiDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_ACCOUNT_DATA_MULTI_DISCRIMINATOR);\n}\n\nexport type AssertAccountDataMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertAccountDataMultiInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertions: AccountDataAssertions;\n};\n\nexport type AssertAccountDataMultiInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertions: AccountDataAssertionsArgs;\n};\n\nexport function getAssertAccountDataMultiInstructionDataEncoder(): Encoder<AssertAccountDataMultiInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertions', getAccountDataAssertionsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_ACCOUNT_DATA_MULTI_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertAccountDataMultiInstructionDataDecoder(): Decoder<AssertAccountDataMultiInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertions', getAccountDataAssertionsDecoder()],\n  ]);\n}\n\nexport function getAssertAccountDataMultiInstructionDataCodec(): Codec<\n  AssertAccountDataMultiInstructionDataArgs,\n  AssertAccountDataMultiInstructionData\n> {\n  return combineCodec(\n    getAssertAccountDataMultiInstructionDataEncoder(),\n    getAssertAccountDataMultiInstructionDataDecoder()\n  );\n}\n\nexport type AssertAccountDataMultiInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertAccountDataMultiInstructionDataArgs['logLevel'];\n  assertions: AssertAccountDataMultiInstructionDataArgs['assertions'];\n};\n\nexport function getAssertAccountDataMultiInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertAccountDataMultiInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertAccountDataMultiInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertAccountDataMultiInstructionDataEncoder().encode(\n      args as AssertAccountDataMultiInstructionDataArgs\n    ),\n  } as AssertAccountDataMultiInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertAccountDataMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertAccountDataMultiInstructionData;\n};\n\nexport function parseAssertAccountDataMultiInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertAccountDataMultiInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertAccountDataMultiInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getAccountDeltaAssertionDecoder,\n  getAccountDeltaAssertionEncoder,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type AccountDeltaAssertion,\n  type AccountDeltaAssertionArgs,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_ACCOUNT_DELTA_DISCRIMINATOR = 4;\n\nexport function getAssertAccountDeltaDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_ACCOUNT_DELTA_DISCRIMINATOR);\n}\n\nexport type AssertAccountDeltaInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountAccountA extends string | IAccountMeta<string> = string,\n  TAccountAccountB extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountAccountA extends string\n        ? ReadonlyAccount<TAccountAccountA>\n        : TAccountAccountA,\n      TAccountAccountB extends string\n        ? ReadonlyAccount<TAccountAccountB>\n        : TAccountAccountB,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertAccountDeltaInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: AccountDeltaAssertion;\n};\n\nexport type AssertAccountDeltaInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: AccountDeltaAssertionArgs;\n};\n\nexport function getAssertAccountDeltaInstructionDataEncoder(): Encoder<AssertAccountDeltaInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getAccountDeltaAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_ACCOUNT_DELTA_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertAccountDeltaInstructionDataDecoder(): Decoder<AssertAccountDeltaInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getAccountDeltaAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertAccountDeltaInstructionDataCodec(): Codec<\n  AssertAccountDeltaInstructionDataArgs,\n  AssertAccountDeltaInstructionData\n> {\n  return combineCodec(\n    getAssertAccountDeltaInstructionDataEncoder(),\n    getAssertAccountDeltaInstructionDataDecoder()\n  );\n}\n\nexport type AssertAccountDeltaInput<\n  TAccountAccountA extends string = string,\n  TAccountAccountB extends string = string,\n> = {\n  /** Account A where the delta is calculated from */\n  accountA: Address<TAccountAccountA>;\n  /** Account B where the delta is calculated to */\n  accountB: Address<TAccountAccountB>;\n  logLevel?: AssertAccountDeltaInstructionDataArgs['logLevel'];\n  assertion: AssertAccountDeltaInstructionDataArgs['assertion'];\n};\n\nexport function getAssertAccountDeltaInstruction<\n  TAccountAccountA extends string,\n  TAccountAccountB extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertAccountDeltaInput<TAccountAccountA, TAccountAccountB>,\n  config?: { programAddress?: TProgramAddress }\n): AssertAccountDeltaInstruction<\n  TProgramAddress,\n  TAccountAccountA,\n  TAccountAccountB\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    accountA: { value: input.accountA ?? null, isWritable: false },\n    accountB: { value: input.accountB ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [\n      getAccountMeta(accounts.accountA),\n      getAccountMeta(accounts.accountB),\n    ],\n    programAddress,\n    data: getAssertAccountDeltaInstructionDataEncoder().encode(\n      args as AssertAccountDeltaInstructionDataArgs\n    ),\n  } as AssertAccountDeltaInstruction<\n    TProgramAddress,\n    TAccountAccountA,\n    TAccountAccountB\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertAccountDeltaInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Account A where the delta is calculated from */\n    accountA: TAccountMetas[0];\n    /** Account B where the delta is calculated to */\n    accountB: TAccountMetas[1];\n  };\n  data: AssertAccountDeltaInstructionData;\n};\n\nexport function parseAssertAccountDeltaInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertAccountDeltaInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      accountA: getNextAccount(),\n      accountB: getNextAccount(),\n    },\n    data: getAssertAccountDeltaInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getAccountInfoAssertionDecoder,\n  getAccountInfoAssertionEncoder,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type AccountInfoAssertion,\n  type AccountInfoAssertionArgs,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_ACCOUNT_INFO_DISCRIMINATOR = 5;\n\nexport function getAssertAccountInfoDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_ACCOUNT_INFO_DISCRIMINATOR);\n}\n\nexport type AssertAccountInfoInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertAccountInfoInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: AccountInfoAssertion;\n};\n\nexport type AssertAccountInfoInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: AccountInfoAssertionArgs;\n};\n\nexport function getAssertAccountInfoInstructionDataEncoder(): Encoder<AssertAccountInfoInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getAccountInfoAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_ACCOUNT_INFO_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertAccountInfoInstructionDataDecoder(): Decoder<AssertAccountInfoInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getAccountInfoAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertAccountInfoInstructionDataCodec(): Codec<\n  AssertAccountInfoInstructionDataArgs,\n  AssertAccountInfoInstructionData\n> {\n  return combineCodec(\n    getAssertAccountInfoInstructionDataEncoder(),\n    getAssertAccountInfoInstructionDataDecoder()\n  );\n}\n\nexport type AssertAccountInfoInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertAccountInfoInstructionDataArgs['logLevel'];\n  assertion: AssertAccountInfoInstructionDataArgs['assertion'];\n};\n\nexport function getAssertAccountInfoInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertAccountInfoInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertAccountInfoInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertAccountInfoInstructionDataEncoder().encode(\n      args as AssertAccountInfoInstructionDataArgs\n    ),\n  } as AssertAccountInfoInstruction<TProgramAddress, TAccountTargetAccount>;\n\n  return instruction;\n}\n\nexport type ParsedAssertAccountInfoInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertAccountInfoInstructionData;\n};\n\nexport function parseAssertAccountInfoInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertAccountInfoInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertAccountInfoInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getAccountInfoAssertionsDecoder,\n  getAccountInfoAssertionsEncoder,\n  type AccountInfoAssertions,\n  type AccountInfoAssertionsArgs,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_ACCOUNT_INFO_MULTI_DISCRIMINATOR = 6;\n\nexport function getAssertAccountInfoMultiDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_ACCOUNT_INFO_MULTI_DISCRIMINATOR);\n}\n\nexport type AssertAccountInfoMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertAccountInfoMultiInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertions: AccountInfoAssertions;\n};\n\nexport type AssertAccountInfoMultiInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertions: AccountInfoAssertionsArgs;\n};\n\nexport function getAssertAccountInfoMultiInstructionDataEncoder(): Encoder<AssertAccountInfoMultiInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertions', getAccountInfoAssertionsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_ACCOUNT_INFO_MULTI_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertAccountInfoMultiInstructionDataDecoder(): Decoder<AssertAccountInfoMultiInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertions', getAccountInfoAssertionsDecoder()],\n  ]);\n}\n\nexport function getAssertAccountInfoMultiInstructionDataCodec(): Codec<\n  AssertAccountInfoMultiInstructionDataArgs,\n  AssertAccountInfoMultiInstructionData\n> {\n  return combineCodec(\n    getAssertAccountInfoMultiInstructionDataEncoder(),\n    getAssertAccountInfoMultiInstructionDataDecoder()\n  );\n}\n\nexport type AssertAccountInfoMultiInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertAccountInfoMultiInstructionDataArgs['logLevel'];\n  assertions: AssertAccountInfoMultiInstructionDataArgs['assertions'];\n};\n\nexport function getAssertAccountInfoMultiInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertAccountInfoMultiInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertAccountInfoMultiInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertAccountInfoMultiInstructionDataEncoder().encode(\n      args as AssertAccountInfoMultiInstructionDataArgs\n    ),\n  } as AssertAccountInfoMultiInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertAccountInfoMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertAccountInfoMultiInstructionData;\n};\n\nexport function parseAssertAccountInfoMultiInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertAccountInfoMultiInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertAccountInfoMultiInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getBubblegumTreeConfigAssertionDecoder,\n  getBubblegumTreeConfigAssertionEncoder,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type BubblegumTreeConfigAssertion,\n  type BubblegumTreeConfigAssertionArgs,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_BUBBLEGUM_TREE_CONFIG_ACCOUNT_DISCRIMINATOR = 17;\n\nexport function getAssertBubblegumTreeConfigAccountDiscriminatorBytes() {\n  return getU8Encoder().encode(\n    ASSERT_BUBBLEGUM_TREE_CONFIG_ACCOUNT_DISCRIMINATOR\n  );\n}\n\nexport type AssertBubblegumTreeConfigAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertBubblegumTreeConfigAccountInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: BubblegumTreeConfigAssertion;\n};\n\nexport type AssertBubblegumTreeConfigAccountInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: BubblegumTreeConfigAssertionArgs;\n};\n\nexport function getAssertBubblegumTreeConfigAccountInstructionDataEncoder(): Encoder<AssertBubblegumTreeConfigAccountInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getBubblegumTreeConfigAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_BUBBLEGUM_TREE_CONFIG_ACCOUNT_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertBubblegumTreeConfigAccountInstructionDataDecoder(): Decoder<AssertBubblegumTreeConfigAccountInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getBubblegumTreeConfigAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertBubblegumTreeConfigAccountInstructionDataCodec(): Codec<\n  AssertBubblegumTreeConfigAccountInstructionDataArgs,\n  AssertBubblegumTreeConfigAccountInstructionData\n> {\n  return combineCodec(\n    getAssertBubblegumTreeConfigAccountInstructionDataEncoder(),\n    getAssertBubblegumTreeConfigAccountInstructionDataDecoder()\n  );\n}\n\nexport type AssertBubblegumTreeConfigAccountInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target mpl-bubblegum tree config account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertBubblegumTreeConfigAccountInstructionDataArgs['logLevel'];\n  assertion: AssertBubblegumTreeConfigAccountInstructionDataArgs['assertion'];\n};\n\nexport function getAssertBubblegumTreeConfigAccountInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertBubblegumTreeConfigAccountInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertBubblegumTreeConfigAccountInstruction<\n  TProgramAddress,\n  TAccountTargetAccount\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertBubblegumTreeConfigAccountInstructionDataEncoder().encode(\n      args as AssertBubblegumTreeConfigAccountInstructionDataArgs\n    ),\n  } as AssertBubblegumTreeConfigAccountInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertBubblegumTreeConfigAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target mpl-bubblegum tree config account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertBubblegumTreeConfigAccountInstructionData;\n};\n\nexport function parseAssertBubblegumTreeConfigAccountInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertBubblegumTreeConfigAccountInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertBubblegumTreeConfigAccountInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  getMerkleTreeAssertionDecoder,\n  getMerkleTreeAssertionEncoder,\n  type LogLevelArgs,\n  type MerkleTreeAssertion,\n  type MerkleTreeAssertionArgs,\n} from '../types';\n\nexport const ASSERT_MERKLE_TREE_ACCOUNT_DISCRIMINATOR = 16;\n\nexport function getAssertMerkleTreeAccountDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_MERKLE_TREE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type AssertMerkleTreeAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetMerkleTree extends string | IAccountMeta<string> = string,\n  TAccountRoot extends string | IAccountMeta<string> = string,\n  TAccountSplAccountCompression extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetMerkleTree extends string\n        ? ReadonlyAccount<TAccountTargetMerkleTree>\n        : TAccountTargetMerkleTree,\n      TAccountRoot extends string\n        ? ReadonlyAccount<TAccountRoot>\n        : TAccountRoot,\n      TAccountSplAccountCompression extends string\n        ? ReadonlyAccount<TAccountSplAccountCompression>\n        : TAccountSplAccountCompression,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertMerkleTreeAccountInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: MerkleTreeAssertion;\n};\n\nexport type AssertMerkleTreeAccountInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: MerkleTreeAssertionArgs;\n};\n\nexport function getAssertMerkleTreeAccountInstructionDataEncoder(): Encoder<AssertMerkleTreeAccountInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getMerkleTreeAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_MERKLE_TREE_ACCOUNT_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertMerkleTreeAccountInstructionDataDecoder(): Decoder<AssertMerkleTreeAccountInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getMerkleTreeAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertMerkleTreeAccountInstructionDataCodec(): Codec<\n  AssertMerkleTreeAccountInstructionDataArgs,\n  AssertMerkleTreeAccountInstructionData\n> {\n  return combineCodec(\n    getAssertMerkleTreeAccountInstructionDataEncoder(),\n    getAssertMerkleTreeAccountInstructionDataDecoder()\n  );\n}\n\nexport type AssertMerkleTreeAccountInput<\n  TAccountTargetMerkleTree extends string = string,\n  TAccountRoot extends string = string,\n  TAccountSplAccountCompression extends string = string,\n> = {\n  /** Target merkle tree account to be asserted */\n  targetMerkleTree: Address<TAccountTargetMerkleTree>;\n  /** The current root of the merkle tree */\n  root: Address<TAccountRoot>;\n  /** SPL account compression program */\n  splAccountCompression: Address<TAccountSplAccountCompression>;\n  logLevel?: AssertMerkleTreeAccountInstructionDataArgs['logLevel'];\n  assertion: AssertMerkleTreeAccountInstructionDataArgs['assertion'];\n};\n\nexport function getAssertMerkleTreeAccountInstruction<\n  TAccountTargetMerkleTree extends string,\n  TAccountRoot extends string,\n  TAccountSplAccountCompression extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertMerkleTreeAccountInput<\n    TAccountTargetMerkleTree,\n    TAccountRoot,\n    TAccountSplAccountCompression\n  >,\n  config?: { programAddress?: TProgramAddress }\n): AssertMerkleTreeAccountInstruction<\n  TProgramAddress,\n  TAccountTargetMerkleTree,\n  TAccountRoot,\n  TAccountSplAccountCompression\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetMerkleTree: {\n      value: input.targetMerkleTree ?? null,\n      isWritable: false,\n    },\n    root: { value: input.root ?? null, isWritable: false },\n    splAccountCompression: {\n      value: input.splAccountCompression ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [\n      getAccountMeta(accounts.targetMerkleTree),\n      getAccountMeta(accounts.root),\n      getAccountMeta(accounts.splAccountCompression),\n    ],\n    programAddress,\n    data: getAssertMerkleTreeAccountInstructionDataEncoder().encode(\n      args as AssertMerkleTreeAccountInstructionDataArgs\n    ),\n  } as AssertMerkleTreeAccountInstruction<\n    TProgramAddress,\n    TAccountTargetMerkleTree,\n    TAccountRoot,\n    TAccountSplAccountCompression\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertMerkleTreeAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target merkle tree account to be asserted */\n    targetMerkleTree: TAccountMetas[0];\n    /** The current root of the merkle tree */\n    root: TAccountMetas[1];\n    /** SPL account compression program */\n    splAccountCompression: TAccountMetas[2];\n  };\n  data: AssertMerkleTreeAccountInstructionData;\n};\n\nexport function parseAssertMerkleTreeAccountInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertMerkleTreeAccountInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetMerkleTree: getNextAccount(),\n      root: getNextAccount(),\n      splAccountCompression: getNextAccount(),\n    },\n    data: getAssertMerkleTreeAccountInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  getMintAccountAssertionDecoder,\n  getMintAccountAssertionEncoder,\n  type LogLevelArgs,\n  type MintAccountAssertion,\n  type MintAccountAssertionArgs,\n} from '../types';\n\nexport const ASSERT_MINT_ACCOUNT_DISCRIMINATOR = 7;\n\nexport function getAssertMintAccountDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_MINT_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type AssertMintAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertMintAccountInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: MintAccountAssertion;\n};\n\nexport type AssertMintAccountInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: MintAccountAssertionArgs;\n};\n\nexport function getAssertMintAccountInstructionDataEncoder(): Encoder<AssertMintAccountInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getMintAccountAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_MINT_ACCOUNT_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertMintAccountInstructionDataDecoder(): Decoder<AssertMintAccountInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getMintAccountAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertMintAccountInstructionDataCodec(): Codec<\n  AssertMintAccountInstructionDataArgs,\n  AssertMintAccountInstructionData\n> {\n  return combineCodec(\n    getAssertMintAccountInstructionDataEncoder(),\n    getAssertMintAccountInstructionDataDecoder()\n  );\n}\n\nexport type AssertMintAccountInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertMintAccountInstructionDataArgs['logLevel'];\n  assertion: AssertMintAccountInstructionDataArgs['assertion'];\n};\n\nexport function getAssertMintAccountInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertMintAccountInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertMintAccountInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertMintAccountInstructionDataEncoder().encode(\n      args as AssertMintAccountInstructionDataArgs\n    ),\n  } as AssertMintAccountInstruction<TProgramAddress, TAccountTargetAccount>;\n\n  return instruction;\n}\n\nexport type ParsedAssertMintAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertMintAccountInstructionData;\n};\n\nexport function parseAssertMintAccountInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertMintAccountInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertMintAccountInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getMintAccountAssertionsDecoder,\n  getMintAccountAssertionsEncoder,\n  type MintAccountAssertions,\n  type MintAccountAssertionsArgs,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_MINT_ACCOUNT_MULTI_DISCRIMINATOR = 8;\n\nexport function getAssertMintAccountMultiDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_MINT_ACCOUNT_MULTI_DISCRIMINATOR);\n}\n\nexport type AssertMintAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertMintAccountMultiInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertions: MintAccountAssertions;\n};\n\nexport type AssertMintAccountMultiInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertions: MintAccountAssertionsArgs;\n};\n\nexport function getAssertMintAccountMultiInstructionDataEncoder(): Encoder<AssertMintAccountMultiInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertions', getMintAccountAssertionsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_MINT_ACCOUNT_MULTI_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertMintAccountMultiInstructionDataDecoder(): Decoder<AssertMintAccountMultiInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertions', getMintAccountAssertionsDecoder()],\n  ]);\n}\n\nexport function getAssertMintAccountMultiInstructionDataCodec(): Codec<\n  AssertMintAccountMultiInstructionDataArgs,\n  AssertMintAccountMultiInstructionData\n> {\n  return combineCodec(\n    getAssertMintAccountMultiInstructionDataEncoder(),\n    getAssertMintAccountMultiInstructionDataDecoder()\n  );\n}\n\nexport type AssertMintAccountMultiInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertMintAccountMultiInstructionDataArgs['logLevel'];\n  assertions: AssertMintAccountMultiInstructionDataArgs['assertions'];\n};\n\nexport function getAssertMintAccountMultiInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertMintAccountMultiInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertMintAccountMultiInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertMintAccountMultiInstructionDataEncoder().encode(\n      args as AssertMintAccountMultiInstructionDataArgs\n    ),\n  } as AssertMintAccountMultiInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertMintAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertMintAccountMultiInstructionData;\n};\n\nexport function parseAssertMintAccountMultiInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertMintAccountMultiInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertMintAccountMultiInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  getStakeAccountAssertionDecoder,\n  getStakeAccountAssertionEncoder,\n  type LogLevelArgs,\n  type StakeAccountAssertion,\n  type StakeAccountAssertionArgs,\n} from '../types';\n\nexport const ASSERT_STAKE_ACCOUNT_DISCRIMINATOR = 11;\n\nexport function getAssertStakeAccountDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_STAKE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type AssertStakeAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertStakeAccountInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: StakeAccountAssertion;\n};\n\nexport type AssertStakeAccountInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: StakeAccountAssertionArgs;\n};\n\nexport function getAssertStakeAccountInstructionDataEncoder(): Encoder<AssertStakeAccountInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getStakeAccountAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_STAKE_ACCOUNT_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertStakeAccountInstructionDataDecoder(): Decoder<AssertStakeAccountInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getStakeAccountAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertStakeAccountInstructionDataCodec(): Codec<\n  AssertStakeAccountInstructionDataArgs,\n  AssertStakeAccountInstructionData\n> {\n  return combineCodec(\n    getAssertStakeAccountInstructionDataEncoder(),\n    getAssertStakeAccountInstructionDataDecoder()\n  );\n}\n\nexport type AssertStakeAccountInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertStakeAccountInstructionDataArgs['logLevel'];\n  assertion: AssertStakeAccountInstructionDataArgs['assertion'];\n};\n\nexport function getAssertStakeAccountInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertStakeAccountInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertStakeAccountInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertStakeAccountInstructionDataEncoder().encode(\n      args as AssertStakeAccountInstructionDataArgs\n    ),\n  } as AssertStakeAccountInstruction<TProgramAddress, TAccountTargetAccount>;\n\n  return instruction;\n}\n\nexport type ParsedAssertStakeAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertStakeAccountInstructionData;\n};\n\nexport function parseAssertStakeAccountInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertStakeAccountInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertStakeAccountInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getStakeAccountAssertionsDecoder,\n  getStakeAccountAssertionsEncoder,\n  type StakeAccountAssertions,\n  type StakeAccountAssertionsArgs,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_STAKE_ACCOUNT_MULTI_DISCRIMINATOR = 12;\n\nexport function getAssertStakeAccountMultiDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_STAKE_ACCOUNT_MULTI_DISCRIMINATOR);\n}\n\nexport type AssertStakeAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertStakeAccountMultiInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertions: StakeAccountAssertions;\n};\n\nexport type AssertStakeAccountMultiInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertions: StakeAccountAssertionsArgs;\n};\n\nexport function getAssertStakeAccountMultiInstructionDataEncoder(): Encoder<AssertStakeAccountMultiInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertions', getStakeAccountAssertionsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_STAKE_ACCOUNT_MULTI_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertStakeAccountMultiInstructionDataDecoder(): Decoder<AssertStakeAccountMultiInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertions', getStakeAccountAssertionsDecoder()],\n  ]);\n}\n\nexport function getAssertStakeAccountMultiInstructionDataCodec(): Codec<\n  AssertStakeAccountMultiInstructionDataArgs,\n  AssertStakeAccountMultiInstructionData\n> {\n  return combineCodec(\n    getAssertStakeAccountMultiInstructionDataEncoder(),\n    getAssertStakeAccountMultiInstructionDataDecoder()\n  );\n}\n\nexport type AssertStakeAccountMultiInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertStakeAccountMultiInstructionDataArgs['logLevel'];\n  assertions: AssertStakeAccountMultiInstructionDataArgs['assertions'];\n};\n\nexport function getAssertStakeAccountMultiInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertStakeAccountMultiInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertStakeAccountMultiInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertStakeAccountMultiInstructionDataEncoder().encode(\n      args as AssertStakeAccountMultiInstructionDataArgs\n    ),\n  } as AssertStakeAccountMultiInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertStakeAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertStakeAccountMultiInstructionData;\n};\n\nexport function parseAssertStakeAccountMultiInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertStakeAccountMultiInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertStakeAccountMultiInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  getSysvarClockAssertionDecoder,\n  getSysvarClockAssertionEncoder,\n  type LogLevelArgs,\n  type SysvarClockAssertion,\n  type SysvarClockAssertionArgs,\n} from '../types';\n\nexport const ASSERT_SYSVAR_CLOCK_DISCRIMINATOR = 15;\n\nexport function getAssertSysvarClockDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_SYSVAR_CLOCK_DISCRIMINATOR);\n}\n\nexport type AssertSysvarClockInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<TRemainingAccounts>;\n\nexport type AssertSysvarClockInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: SysvarClockAssertion;\n};\n\nexport type AssertSysvarClockInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: SysvarClockAssertionArgs;\n};\n\nexport function getAssertSysvarClockInstructionDataEncoder(): Encoder<AssertSysvarClockInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getSysvarClockAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_SYSVAR_CLOCK_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertSysvarClockInstructionDataDecoder(): Decoder<AssertSysvarClockInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getSysvarClockAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertSysvarClockInstructionDataCodec(): Codec<\n  AssertSysvarClockInstructionDataArgs,\n  AssertSysvarClockInstructionData\n> {\n  return combineCodec(\n    getAssertSysvarClockInstructionDataEncoder(),\n    getAssertSysvarClockInstructionDataDecoder()\n  );\n}\n\nexport type AssertSysvarClockInput = {\n  logLevel?: AssertSysvarClockInstructionDataArgs['logLevel'];\n  assertion: AssertSysvarClockInstructionDataArgs['assertion'];\n};\n\nexport function getAssertSysvarClockInstruction<\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertSysvarClockInput,\n  config?: { programAddress?: TProgramAddress }\n): AssertSysvarClockInstruction<TProgramAddress> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original args.\n  const args = { ...input };\n\n  const instruction = {\n    programAddress,\n    data: getAssertSysvarClockInstructionDataEncoder().encode(\n      args as AssertSysvarClockInstructionDataArgs\n    ),\n  } as AssertSysvarClockInstruction<TProgramAddress>;\n\n  return instruction;\n}\n\nexport type ParsedAssertSysvarClockInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n> = {\n  programAddress: Address<TProgram>;\n  data: AssertSysvarClockInstructionData;\n};\n\nexport function parseAssertSysvarClockInstruction<TProgram extends string>(\n  instruction: IInstruction<TProgram> & IInstructionWithData<Uint8Array>\n): ParsedAssertSysvarClockInstruction<TProgram> {\n  return {\n    programAddress: instruction.programAddress,\n    data: getAssertSysvarClockInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  getTokenAccountAssertionDecoder,\n  getTokenAccountAssertionEncoder,\n  type LogLevelArgs,\n  type TokenAccountAssertion,\n  type TokenAccountAssertionArgs,\n} from '../types';\n\nexport const ASSERT_TOKEN_ACCOUNT_DISCRIMINATOR = 9;\n\nexport function getAssertTokenAccountDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_TOKEN_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type AssertTokenAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertTokenAccountInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: TokenAccountAssertion;\n};\n\nexport type AssertTokenAccountInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: TokenAccountAssertionArgs;\n};\n\nexport function getAssertTokenAccountInstructionDataEncoder(): Encoder<AssertTokenAccountInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getTokenAccountAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_TOKEN_ACCOUNT_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertTokenAccountInstructionDataDecoder(): Decoder<AssertTokenAccountInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getTokenAccountAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertTokenAccountInstructionDataCodec(): Codec<\n  AssertTokenAccountInstructionDataArgs,\n  AssertTokenAccountInstructionData\n> {\n  return combineCodec(\n    getAssertTokenAccountInstructionDataEncoder(),\n    getAssertTokenAccountInstructionDataDecoder()\n  );\n}\n\nexport type AssertTokenAccountInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertTokenAccountInstructionDataArgs['logLevel'];\n  assertion: AssertTokenAccountInstructionDataArgs['assertion'];\n};\n\nexport function getAssertTokenAccountInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertTokenAccountInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertTokenAccountInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertTokenAccountInstructionDataEncoder().encode(\n      args as AssertTokenAccountInstructionDataArgs\n    ),\n  } as AssertTokenAccountInstruction<TProgramAddress, TAccountTargetAccount>;\n\n  return instruction;\n}\n\nexport type ParsedAssertTokenAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertTokenAccountInstructionData;\n};\n\nexport function parseAssertTokenAccountInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertTokenAccountInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertTokenAccountInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getTokenAccountAssertionsDecoder,\n  getTokenAccountAssertionsEncoder,\n  type TokenAccountAssertions,\n  type TokenAccountAssertionsArgs,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_TOKEN_ACCOUNT_MULTI_DISCRIMINATOR = 10;\n\nexport function getAssertTokenAccountMultiDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_TOKEN_ACCOUNT_MULTI_DISCRIMINATOR);\n}\n\nexport type AssertTokenAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertTokenAccountMultiInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertions: TokenAccountAssertions;\n};\n\nexport type AssertTokenAccountMultiInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertions: TokenAccountAssertionsArgs;\n};\n\nexport function getAssertTokenAccountMultiInstructionDataEncoder(): Encoder<AssertTokenAccountMultiInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertions', getTokenAccountAssertionsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_TOKEN_ACCOUNT_MULTI_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertTokenAccountMultiInstructionDataDecoder(): Decoder<AssertTokenAccountMultiInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertions', getTokenAccountAssertionsDecoder()],\n  ]);\n}\n\nexport function getAssertTokenAccountMultiInstructionDataCodec(): Codec<\n  AssertTokenAccountMultiInstructionDataArgs,\n  AssertTokenAccountMultiInstructionData\n> {\n  return combineCodec(\n    getAssertTokenAccountMultiInstructionDataEncoder(),\n    getAssertTokenAccountMultiInstructionDataDecoder()\n  );\n}\n\nexport type AssertTokenAccountMultiInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertTokenAccountMultiInstructionDataArgs['logLevel'];\n  assertions: AssertTokenAccountMultiInstructionDataArgs['assertions'];\n};\n\nexport function getAssertTokenAccountMultiInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertTokenAccountMultiInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertTokenAccountMultiInstruction<TProgramAddress, TAccountTargetAccount> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertTokenAccountMultiInstructionDataEncoder().encode(\n      args as AssertTokenAccountMultiInstructionDataArgs\n    ),\n  } as AssertTokenAccountMultiInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertTokenAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertTokenAccountMultiInstructionData;\n};\n\nexport function parseAssertTokenAccountMultiInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertTokenAccountMultiInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertTokenAccountMultiInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  getUpgradeableLoaderStateAssertionDecoder,\n  getUpgradeableLoaderStateAssertionEncoder,\n  type LogLevelArgs,\n  type UpgradeableLoaderStateAssertion,\n  type UpgradeableLoaderStateAssertionArgs,\n} from '../types';\n\nexport const ASSERT_UPGRADEABLE_LOADER_ACCOUNT_DISCRIMINATOR = 13;\n\nexport function getAssertUpgradeableLoaderAccountDiscriminatorBytes() {\n  return getU8Encoder().encode(ASSERT_UPGRADEABLE_LOADER_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type AssertUpgradeableLoaderAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertUpgradeableLoaderAccountInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertion: UpgradeableLoaderStateAssertion;\n};\n\nexport type AssertUpgradeableLoaderAccountInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertion: UpgradeableLoaderStateAssertionArgs;\n};\n\nexport function getAssertUpgradeableLoaderAccountInstructionDataEncoder(): Encoder<AssertUpgradeableLoaderAccountInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertion', getUpgradeableLoaderStateAssertionEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_UPGRADEABLE_LOADER_ACCOUNT_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertUpgradeableLoaderAccountInstructionDataDecoder(): Decoder<AssertUpgradeableLoaderAccountInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertion', getUpgradeableLoaderStateAssertionDecoder()],\n  ]);\n}\n\nexport function getAssertUpgradeableLoaderAccountInstructionDataCodec(): Codec<\n  AssertUpgradeableLoaderAccountInstructionDataArgs,\n  AssertUpgradeableLoaderAccountInstructionData\n> {\n  return combineCodec(\n    getAssertUpgradeableLoaderAccountInstructionDataEncoder(),\n    getAssertUpgradeableLoaderAccountInstructionDataDecoder()\n  );\n}\n\nexport type AssertUpgradeableLoaderAccountInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertUpgradeableLoaderAccountInstructionDataArgs['logLevel'];\n  assertion: AssertUpgradeableLoaderAccountInstructionDataArgs['assertion'];\n};\n\nexport function getAssertUpgradeableLoaderAccountInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertUpgradeableLoaderAccountInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertUpgradeableLoaderAccountInstruction<\n  TProgramAddress,\n  TAccountTargetAccount\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertUpgradeableLoaderAccountInstructionDataEncoder().encode(\n      args as AssertUpgradeableLoaderAccountInstructionDataArgs\n    ),\n  } as AssertUpgradeableLoaderAccountInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertUpgradeableLoaderAccountInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertUpgradeableLoaderAccountInstructionData;\n};\n\nexport function parseAssertUpgradeableLoaderAccountInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertUpgradeableLoaderAccountInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertUpgradeableLoaderAccountInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n} from '@solana/kit';\nimport {\n  getUpgradeableLoaderStateAssertionsDecoder,\n  getUpgradeableLoaderStateAssertionsEncoder,\n  type UpgradeableLoaderStateAssertions,\n  type UpgradeableLoaderStateAssertionsArgs,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  LogLevel,\n  getLogLevelDecoder,\n  getLogLevelEncoder,\n  type LogLevelArgs,\n} from '../types';\n\nexport const ASSERT_UPGRADEABLE_LOADER_ACCOUNT_MULTI_DISCRIMINATOR = 14;\n\nexport function getAssertUpgradeableLoaderAccountMultiDiscriminatorBytes() {\n  return getU8Encoder().encode(\n    ASSERT_UPGRADEABLE_LOADER_ACCOUNT_MULTI_DISCRIMINATOR\n  );\n}\n\nexport type AssertUpgradeableLoaderAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountTargetAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountTargetAccount extends string\n        ? ReadonlyAccount<TAccountTargetAccount>\n        : TAccountTargetAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AssertUpgradeableLoaderAccountMultiInstructionData = {\n  discriminator: number;\n  logLevel: LogLevel;\n  assertions: UpgradeableLoaderStateAssertions;\n};\n\nexport type AssertUpgradeableLoaderAccountMultiInstructionDataArgs = {\n  logLevel?: LogLevelArgs;\n  assertions: UpgradeableLoaderStateAssertionsArgs;\n};\n\nexport function getAssertUpgradeableLoaderAccountMultiInstructionDataEncoder(): Encoder<AssertUpgradeableLoaderAccountMultiInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['logLevel', getLogLevelEncoder()],\n      ['assertions', getUpgradeableLoaderStateAssertionsEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: ASSERT_UPGRADEABLE_LOADER_ACCOUNT_MULTI_DISCRIMINATOR,\n      logLevel: value.logLevel ?? LogLevel.Silent,\n    })\n  );\n}\n\nexport function getAssertUpgradeableLoaderAccountMultiInstructionDataDecoder(): Decoder<AssertUpgradeableLoaderAccountMultiInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['logLevel', getLogLevelDecoder()],\n    ['assertions', getUpgradeableLoaderStateAssertionsDecoder()],\n  ]);\n}\n\nexport function getAssertUpgradeableLoaderAccountMultiInstructionDataCodec(): Codec<\n  AssertUpgradeableLoaderAccountMultiInstructionDataArgs,\n  AssertUpgradeableLoaderAccountMultiInstructionData\n> {\n  return combineCodec(\n    getAssertUpgradeableLoaderAccountMultiInstructionDataEncoder(),\n    getAssertUpgradeableLoaderAccountMultiInstructionDataDecoder()\n  );\n}\n\nexport type AssertUpgradeableLoaderAccountMultiInput<\n  TAccountTargetAccount extends string = string,\n> = {\n  /** Target account to be asserted */\n  targetAccount: Address<TAccountTargetAccount>;\n  logLevel?: AssertUpgradeableLoaderAccountMultiInstructionDataArgs['logLevel'];\n  assertions: AssertUpgradeableLoaderAccountMultiInstructionDataArgs['assertions'];\n};\n\nexport function getAssertUpgradeableLoaderAccountMultiInstruction<\n  TAccountTargetAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: AssertUpgradeableLoaderAccountMultiInput<TAccountTargetAccount>,\n  config?: { programAddress?: TProgramAddress }\n): AssertUpgradeableLoaderAccountMultiInstruction<\n  TProgramAddress,\n  TAccountTargetAccount\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    targetAccount: { value: input.targetAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [getAccountMeta(accounts.targetAccount)],\n    programAddress,\n    data: getAssertUpgradeableLoaderAccountMultiInstructionDataEncoder().encode(\n      args as AssertUpgradeableLoaderAccountMultiInstructionDataArgs\n    ),\n  } as AssertUpgradeableLoaderAccountMultiInstruction<\n    TProgramAddress,\n    TAccountTargetAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedAssertUpgradeableLoaderAccountMultiInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Target account to be asserted */\n    targetAccount: TAccountMetas[0];\n  };\n  data: AssertUpgradeableLoaderAccountMultiInstructionData;\n};\n\nexport function parseAssertUpgradeableLoaderAccountMultiInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedAssertUpgradeableLoaderAccountMultiInstruction<\n  TProgram,\n  TAccountMetas\n> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      targetAccount: getNextAccount(),\n    },\n    data: getAssertUpgradeableLoaderAccountMultiInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IAccountSignerMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MEMORY_CLOSE_DISCRIMINATOR = 1;\n\nexport function getMemoryCloseDiscriminatorBytes() {\n  return getU8Encoder().encode(MEMORY_CLOSE_DISCRIMINATOR);\n}\n\nexport type MemoryCloseInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountProgramId extends\n    | string\n    | IAccountMeta<string> = 'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95',\n  TAccountPayer extends string | IAccountMeta<string> = string,\n  TAccountMemory extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountProgramId extends string\n        ? ReadonlyAccount<TAccountProgramId>\n        : TAccountProgramId,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            IAccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountMemory extends string\n        ? WritableAccount<TAccountMemory>\n        : TAccountMemory,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MemoryCloseInstructionData = {\n  discriminator: number;\n  memoryId: number;\n  memoryBump: number;\n};\n\nexport type MemoryCloseInstructionDataArgs = {\n  memoryId: number;\n  memoryBump: number;\n};\n\nexport function getMemoryCloseInstructionDataEncoder(): Encoder<MemoryCloseInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['memoryId', getU8Encoder()],\n      ['memoryBump', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: MEMORY_CLOSE_DISCRIMINATOR })\n  );\n}\n\nexport function getMemoryCloseInstructionDataDecoder(): Decoder<MemoryCloseInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['memoryId', getU8Decoder()],\n    ['memoryBump', getU8Decoder()],\n  ]);\n}\n\nexport function getMemoryCloseInstructionDataCodec(): Codec<\n  MemoryCloseInstructionDataArgs,\n  MemoryCloseInstructionData\n> {\n  return combineCodec(\n    getMemoryCloseInstructionDataEncoder(),\n    getMemoryCloseInstructionDataDecoder()\n  );\n}\n\nexport type MemoryCloseInput<\n  TAccountProgramId extends string = string,\n  TAccountPayer extends string = string,\n  TAccountMemory extends string = string,\n> = {\n  /** Lighthouse program */\n  programId?: Address<TAccountProgramId>;\n  /** Payer account */\n  payer: TransactionSigner<TAccountPayer>;\n  /** Memory account */\n  memory: Address<TAccountMemory>;\n  memoryId: MemoryCloseInstructionDataArgs['memoryId'];\n  memoryBump: MemoryCloseInstructionDataArgs['memoryBump'];\n};\n\nexport function getMemoryCloseInstruction<\n  TAccountProgramId extends string,\n  TAccountPayer extends string,\n  TAccountMemory extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: MemoryCloseInput<TAccountProgramId, TAccountPayer, TAccountMemory>,\n  config?: { programAddress?: TProgramAddress }\n): MemoryCloseInstruction<\n  TProgramAddress,\n  TAccountProgramId,\n  TAccountPayer,\n  TAccountMemory\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    programId: { value: input.programId ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    memory: { value: input.memory ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.programId.value) {\n    accounts.programId.value = programAddress;\n    accounts.programId.isWritable = false;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [\n      getAccountMeta(accounts.programId),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.memory),\n    ],\n    programAddress,\n    data: getMemoryCloseInstructionDataEncoder().encode(\n      args as MemoryCloseInstructionDataArgs\n    ),\n  } as MemoryCloseInstruction<\n    TProgramAddress,\n    TAccountProgramId,\n    TAccountPayer,\n    TAccountMemory\n  >;\n\n  return instruction;\n}\n\nexport type ParsedMemoryCloseInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Lighthouse program */\n    programId: TAccountMetas[0];\n    /** Payer account */\n    payer: TAccountMetas[1];\n    /** Memory account */\n    memory: TAccountMetas[2];\n  };\n  data: MemoryCloseInstructionData;\n};\n\nexport function parseMemoryCloseInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedMemoryCloseInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      programId: getNextAccount(),\n      payer: getNextAccount(),\n      memory: getNextAccount(),\n    },\n    data: getMemoryCloseInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IAccountSignerMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type ReadonlyAccount,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getCompactU64Decoder,\n  getCompactU64Encoder,\n  type CompactU64,\n  type CompactU64Args,\n} from '../../hooked';\nimport { LIGHTHOUSE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getWriteTypeDecoder,\n  getWriteTypeEncoder,\n  type WriteType,\n  type WriteTypeArgs,\n} from '../types';\n\nexport const MEMORY_WRITE_DISCRIMINATOR = 0;\n\nexport function getMemoryWriteDiscriminatorBytes() {\n  return getU8Encoder().encode(MEMORY_WRITE_DISCRIMINATOR);\n}\n\nexport type MemoryWriteInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountProgramId extends\n    | string\n    | IAccountMeta<string> = 'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95',\n  TAccountSystemProgram extends\n    | string\n    | IAccountMeta<string> = '11111111111111111111111111111111',\n  TAccountPayer extends string | IAccountMeta<string> = string,\n  TAccountMemory extends string | IAccountMeta<string> = string,\n  TAccountSourceAccount extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountProgramId extends string\n        ? ReadonlyAccount<TAccountProgramId>\n        : TAccountProgramId,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            IAccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountMemory extends string\n        ? WritableAccount<TAccountMemory>\n        : TAccountMemory,\n      TAccountSourceAccount extends string\n        ? ReadonlyAccount<TAccountSourceAccount>\n        : TAccountSourceAccount,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MemoryWriteInstructionData = {\n  discriminator: number;\n  memoryId: number;\n  memoryBump: number;\n  writeOffset: CompactU64;\n  writeType: WriteType;\n};\n\nexport type MemoryWriteInstructionDataArgs = {\n  memoryId?: number;\n  memoryBump: number;\n  writeOffset: CompactU64Args;\n  writeType: WriteTypeArgs;\n};\n\nexport function getMemoryWriteInstructionDataEncoder(): Encoder<MemoryWriteInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', getU8Encoder()],\n      ['memoryId', getU8Encoder()],\n      ['memoryBump', getU8Encoder()],\n      ['writeOffset', getCompactU64Encoder()],\n      ['writeType', getWriteTypeEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: MEMORY_WRITE_DISCRIMINATOR,\n      memoryId: value.memoryId ?? 0,\n    })\n  );\n}\n\nexport function getMemoryWriteInstructionDataDecoder(): Decoder<MemoryWriteInstructionData> {\n  return getStructDecoder([\n    ['discriminator', getU8Decoder()],\n    ['memoryId', getU8Decoder()],\n    ['memoryBump', getU8Decoder()],\n    ['writeOffset', getCompactU64Decoder()],\n    ['writeType', getWriteTypeDecoder()],\n  ]);\n}\n\nexport function getMemoryWriteInstructionDataCodec(): Codec<\n  MemoryWriteInstructionDataArgs,\n  MemoryWriteInstructionData\n> {\n  return combineCodec(\n    getMemoryWriteInstructionDataEncoder(),\n    getMemoryWriteInstructionDataDecoder()\n  );\n}\n\nexport type MemoryWriteInput<\n  TAccountProgramId extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountPayer extends string = string,\n  TAccountMemory extends string = string,\n  TAccountSourceAccount extends string = string,\n> = {\n  /** Lighthouse program */\n  programId?: Address<TAccountProgramId>;\n  /** System program */\n  systemProgram?: Address<TAccountSystemProgram>;\n  /** Payer account */\n  payer: TransactionSigner<TAccountPayer>;\n  /** Memory account */\n  memory: Address<TAccountMemory>;\n  /** Account to be written to memory */\n  sourceAccount: Address<TAccountSourceAccount>;\n  memoryId?: MemoryWriteInstructionDataArgs['memoryId'];\n  memoryBump: MemoryWriteInstructionDataArgs['memoryBump'];\n  writeOffset: MemoryWriteInstructionDataArgs['writeOffset'];\n  writeType: MemoryWriteInstructionDataArgs['writeType'];\n};\n\nexport function getMemoryWriteInstruction<\n  TAccountProgramId extends string,\n  TAccountSystemProgram extends string,\n  TAccountPayer extends string,\n  TAccountMemory extends string,\n  TAccountSourceAccount extends string,\n  TProgramAddress extends Address = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n>(\n  input: MemoryWriteInput<\n    TAccountProgramId,\n    TAccountSystemProgram,\n    TAccountPayer,\n    TAccountMemory,\n    TAccountSourceAccount\n  >,\n  config?: { programAddress?: TProgramAddress }\n): MemoryWriteInstruction<\n  TProgramAddress,\n  TAccountProgramId,\n  TAccountSystemProgram,\n  TAccountPayer,\n  TAccountMemory,\n  TAccountSourceAccount\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? LIGHTHOUSE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    programId: { value: input.programId ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    memory: { value: input.memory ?? null, isWritable: true },\n    sourceAccount: { value: input.sourceAccount ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.programId.value) {\n    accounts.programId.value = programAddress;\n    accounts.programId.isWritable = false;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  const instruction = {\n    accounts: [\n      getAccountMeta(accounts.programId),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.memory),\n      getAccountMeta(accounts.sourceAccount),\n    ],\n    programAddress,\n    data: getMemoryWriteInstructionDataEncoder().encode(\n      args as MemoryWriteInstructionDataArgs\n    ),\n  } as MemoryWriteInstruction<\n    TProgramAddress,\n    TAccountProgramId,\n    TAccountSystemProgram,\n    TAccountPayer,\n    TAccountMemory,\n    TAccountSourceAccount\n  >;\n\n  return instruction;\n}\n\nexport type ParsedMemoryWriteInstruction<\n  TProgram extends string = typeof LIGHTHOUSE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Lighthouse program */\n    programId: TAccountMetas[0];\n    /** System program */\n    systemProgram: TAccountMetas[1];\n    /** Payer account */\n    payer: TAccountMetas[2];\n    /** Memory account */\n    memory: TAccountMetas[3];\n    /** Account to be written to memory */\n    sourceAccount: TAccountMetas[4];\n  };\n  data: MemoryWriteInstructionData;\n};\n\nexport function parseMemoryWriteInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> &\n    IInstructionWithAccounts<TAccountMetas> &\n    IInstructionWithData<Uint8Array>\n): ParsedMemoryWriteInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      programId: getNextAccount(),\n      systemProgram: getNextAccount(),\n      payer: getNextAccount(),\n      memory: getNextAccount(),\n      sourceAccount: getNextAccount(),\n    },\n    data: getMemoryWriteInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getU8Encoder,\n  getUtf8Encoder,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type MemorySeeds = {\n  payer: Address;\n\n  memoryId: number;\n};\n\nexport async function findMemoryPda(\n  seeds: MemorySeeds,\n  config: { programAddress?: Address | undefined } = {}\n): Promise<ProgramDerivedAddress> {\n  const {\n    programAddress = 'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95' as Address<'L2TExMFKdjpN9kozasaurPirfHy9P8sbXoAN1qA3S95'>,\n  } = config;\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      getUtf8Encoder().encode('memory'),\n      getAddressEncoder().encode(seeds.payer),\n      getU8Encoder().encode(seeds.memoryId),\n    ],\n  });\n}\n"]}