/** * 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, getAddressDecoder, getAddressEncoder, getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder, getU128Decoder, getU128Encoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, } from "@solana/kit"; /** Stores the state relevant for tracking liquidity mining rewards */ export type RewardInfo = { /** Indicates if the reward has been initialized */ initialized: number; /** reward token flag */ rewardTokenFlag: number; /** padding */ padding0: Array; /** Padding to ensure `reward_rate: u128` is 16-byte aligned */ padding1: Array; /** Reward token mint. */ mint: Address; /** Reward vault token account. */ vault: Address; /** Authority account that allows to fund rewards */ funder: Address; /** reward duration */ rewardDuration: bigint; /** reward duration end */ rewardDurationEnd: bigint; /** reward rate */ rewardRate: bigint; /** Reward per token stored */ rewardPerTokenStored: Array; /** The last time reward states were updated. */ lastUpdateTime: bigint; /** * Accumulated seconds when the farm distributed rewards but the bin was empty. * These rewards will be carried over to the next reward time window. */ cumulativeSecondsWithEmptyLiquidityReward: bigint; }; export type RewardInfoArgs = { /** Indicates if the reward has been initialized */ initialized: number; /** reward token flag */ rewardTokenFlag: number; /** padding */ padding0: Array; /** Padding to ensure `reward_rate: u128` is 16-byte aligned */ padding1: Array; /** Reward token mint. */ mint: Address; /** Reward vault token account. */ vault: Address; /** Authority account that allows to fund rewards */ funder: Address; /** reward duration */ rewardDuration: number | bigint; /** reward duration end */ rewardDurationEnd: number | bigint; /** reward rate */ rewardRate: number | bigint; /** Reward per token stored */ rewardPerTokenStored: Array; /** The last time reward states were updated. */ lastUpdateTime: number | bigint; /** * Accumulated seconds when the farm distributed rewards but the bin was empty. * These rewards will be carried over to the next reward time window. */ cumulativeSecondsWithEmptyLiquidityReward: number | bigint; }; export function getRewardInfoEncoder(): FixedSizeEncoder { return getStructEncoder([ ["initialized", getU8Encoder()], ["rewardTokenFlag", getU8Encoder()], ["padding0", getArrayEncoder(getU8Encoder(), { size: 6 })], ["padding1", getArrayEncoder(getU8Encoder(), { size: 8 })], ["mint", getAddressEncoder()], ["vault", getAddressEncoder()], ["funder", getAddressEncoder()], ["rewardDuration", getU64Encoder()], ["rewardDurationEnd", getU64Encoder()], ["rewardRate", getU128Encoder()], ["rewardPerTokenStored", getArrayEncoder(getU8Encoder(), { size: 32 })], ["lastUpdateTime", getU64Encoder()], ["cumulativeSecondsWithEmptyLiquidityReward", getU64Encoder()], ]); } export function getRewardInfoDecoder(): FixedSizeDecoder { return getStructDecoder([ ["initialized", getU8Decoder()], ["rewardTokenFlag", getU8Decoder()], ["padding0", getArrayDecoder(getU8Decoder(), { size: 6 })], ["padding1", getArrayDecoder(getU8Decoder(), { size: 8 })], ["mint", getAddressDecoder()], ["vault", getAddressDecoder()], ["funder", getAddressDecoder()], ["rewardDuration", getU64Decoder()], ["rewardDurationEnd", getU64Decoder()], ["rewardRate", getU128Decoder()], ["rewardPerTokenStored", getArrayDecoder(getU8Decoder(), { size: 32 })], ["lastUpdateTime", getU64Decoder()], ["cumulativeSecondsWithEmptyLiquidityReward", getU64Decoder()], ]); } export function getRewardInfoCodec(): FixedSizeCodec< RewardInfoArgs, RewardInfo > { return combineCodec(getRewardInfoEncoder(), getRewardInfoDecoder()); }