import { VestingCalculation, VestingConfig } from "./vestingUtils";
import { Farms } from "../Farms";
import { FarmState, UserState } from "../@codegen/farms/accounts";
import { Address } from "@solana/kit";
import Decimal from "decimal.js";
export declare function getSeasonFarmsFromCDN(): Promise<SeasonFarm[]>;
export interface SeasonFarmsCdnResponse {
    "mainnet-beta": {
        seasonFarms: SeasonFarm[];
    };
}
export interface SeasonFarm {
    farmAddress: string;
    season: string;
    rewardMint: string;
    vestingConfig: VestingConfig;
}
export interface SeasonFarmData {
    seasonFarm: SeasonFarm;
    farmState: FarmState;
    userStates: Map<Address, UserState>;
    stats: SeasonFarmStats;
}
export interface UserAllocation {
    address: Address;
    allocationLamports: number;
}
export declare function getExistingUserStatesMapForFarm(farmsClient: Farms, farm: Address): Promise<Map<Address, UserState>>;
export declare function getUserStateDefaultLastClaimTs(farmState: FarmState, userState: UserState): number;
export declare function getRewardIndexInFarm(farmState: FarmState, rewardMint: string): number;
export declare function getSeasonFarmsData(farmsClient: Farms, userAllocations: UserAllocation[]): Promise<SeasonFarmData[]>;
export interface SeasonFarmStats {
    statsTimestampSeconds: number;
    hasVestingStarted: boolean;
    hasVestingEnded: boolean;
    farmRewardVaultBalance: Decimal;
    rewardsClaimedFromVault: Decimal;
    rewardsClaimedFromFarmAccounting: Decimal;
    totalClaimableAllocation: Decimal;
    farmRewardsIssuedCumulative: Decimal;
    farmRewardsIssuedUnclaimed: Decimal;
    pctRewardsAvailableInVaultToUnclaimed: Decimal;
    doRewardsClaimedMatch: boolean;
    isTotalIssuedCummulativeLessOrThanClaimable: boolean;
    isTotalIssuedUnclaimedLessOrThanClaimable: boolean;
    totalUsers: number;
    numberOfUserStatesUninitialized: number;
    numberOfFullyVestedUsers: number;
    numberOfUsersWithUnexpectedUnclaimedAmounts: number;
    numberOfUsersForfited: number;
    numberOfUsersClaimed: number;
    numberOfUsersWithUnexpectedCumulativeAmounts: number;
    totalForfeitures: Decimal;
    userStats: UserStats[];
    totalFarmVestingCalculation: VestingCalculation;
}
export interface UserStats {
    userAddress: Address;
    userAllocation: Decimal;
    isUserInitialized: boolean;
    hasUserClaimed: boolean;
    hasUserForfited: boolean;
    isUserFullyVested: boolean;
    userTotalClaimableAtStatsTs: Decimal;
    isUserRewardsIssuedUnclaimedExpected: boolean;
    isUserRewardsIssuedCumulativeExpected: boolean;
}
//# sourceMappingURL=seasonFarmUtils.d.ts.map