/**
 * 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 StrategyConfigOption { UpdateDepositCap, UpdateDepositCapIxn, UpdateWithdrawalCapACapacity, UpdateWithdrawalCapAInterval, UpdateWithdrawalCapACurrentTotal, UpdateWithdrawalCapBCapacity, UpdateWithdrawalCapBInterval, UpdateWithdrawalCapBCurrentTotal, UpdateMaxDeviationBps, UpdateSwapVaultMaxSlippage, UpdateStrategyType, UpdateDepositFee, UpdateWithdrawFee, UpdateCollectFeesFee, UpdateReward0Fee, UpdateReward1Fee, UpdateReward2Fee, UpdateAdminAuthority, KaminoRewardIndex0TS, KaminoRewardIndex1TS, KaminoRewardIndex2TS, KaminoRewardIndex0RewardPerSecond, KaminoRewardIndex1RewardPerSecond, KaminoRewardIndex2RewardPerSecond, UpdateDepositBlocked, UpdateRaydiumProtocolPositionOrBaseVaultAuthority, UpdateRaydiumPoolConfigOrBaseVaultAuthority, UpdateInvestBlocked, UpdateWithdrawBlocked, UpdateLocalAdminBlocked, DeprecatedUpdateCollateralIdA, DeprecatedUpdateCollateralIdB, UpdateFlashVaultSwap, AllowDepositWithoutInvest, UpdateSwapVaultMaxSlippageFromRef, ResetReferencePrices, UpdateStrategyCreationState, UpdateIsCommunity, UpdateRebalanceType, UpdateRebalanceParams, UpdateDepositMintingMethod, UpdateLookupTable, UpdateReferencePriceType, UpdateReward0Amount, UpdateReward1Amount, UpdateReward2Amount, UpdateFarm, UpdateRebalancesCapCapacity, UpdateRebalancesCapInterval, UpdateRebalancesCapCurrentTotal, UpdateSwapUnevenAuthority, UpdatePendingStrategyAdmin, UpdateMaxDeviationFromRefPriceOnInvestBps };

export type StrategyConfigOptionArgs = StrategyConfigOption;

export function getStrategyConfigOptionEncoder(): FixedSizeEncoder<StrategyConfigOptionArgs> {
    return getEnumEncoder(StrategyConfigOption);
}

export function getStrategyConfigOptionDecoder(): FixedSizeDecoder<StrategyConfigOption> {
    return getEnumDecoder(StrategyConfigOption);
}

export function getStrategyConfigOptionCodec(): FixedSizeCodec<StrategyConfigOptionArgs, StrategyConfigOption> {
    return combineCodec(getStrategyConfigOptionEncoder(), getStrategyConfigOptionDecoder());
}