/**
 * This code was AUTOGENERATED using the Codama library.
 * Please DO NOT EDIT THIS FILE, instead use visitors
 * to add features, then rerun Codama to update it.
 *
 * @see https://github.com/codama-idl/codama
 */

import {
  combineCodec,
  getEnumDecoder,
  getEnumEncoder,
  type FixedSizeCodec,
  type FixedSizeDecoder,
  type FixedSizeEncoder,
} from "@solana/kit";

export enum FarmConfigOption {
  UpdateRewardRps,
  UpdateRewardMinClaimDuration,
  WithdrawAuthority,
  DepositWarmupPeriod,
  WithdrawCooldownPeriod,
  RewardType,
  RpsDecimals,
  LockingMode,
  LockingStartTimestamp,
  LockingDuration,
  LockingEarlyWithdrawalPenaltyBps,
  DepositCapAmount,
  SlashedAmountSpillAddress,
  ScopePricesAccount,
  ScopeOraclePriceId,
  ScopeOracleMaxAge,
  UpdateRewardScheduleCurvePoints,
  UpdatePendingFarmAdmin,
  UpdateStrategyId,
  UpdateDelegatedRpsAdmin,
  UpdateVaultId,
  UpdateExtraDelegatedAuthority,
  UpdateIsRewardUserOnceEnabled,
  UpdateDelegatedAuthority,
  UpdateIsHarvestingPermissionless,
}

export type FarmConfigOptionArgs = FarmConfigOption;

export function getFarmConfigOptionEncoder(): FixedSizeEncoder<FarmConfigOptionArgs> {
  return getEnumEncoder(FarmConfigOption);
}

export function getFarmConfigOptionDecoder(): FixedSizeDecoder<FarmConfigOption> {
  return getEnumDecoder(FarmConfigOption);
}

export function getFarmConfigOptionCodec(): FixedSizeCodec<
  FarmConfigOptionArgs,
  FarmConfigOption
> {
  return combineCodec(
    getFarmConfigOptionEncoder(),
    getFarmConfigOptionDecoder(),
  );
}
