@kamino-finance/farms-sdk
Version:
96 lines • 2.85 kB
TypeScript
import { Address } from "@solana/kit";
import { FarmAndKey } from "../models";
import { FarmState } from "../@codegen/farms/accounts";
export interface IFarmResponse {
config: FarmConfig;
state: FarmState;
}
export interface ILogger {
log: (...args: any[]) => void;
debug: (...args: any[]) => void;
warn: (...args: any[]) => void;
error: (...args: any[]) => void;
}
export declare const noOpLogger: ILogger;
export interface ReserveInfo {
address: Address;
symbol: string;
farmCollateral: Address;
farmDebt: Address;
}
export interface MarketWithReserves {
address: Address;
marketName: string;
reserves: ReserveInfo[];
}
export interface StrategyInfo {
address: Address;
farm: Address;
}
export interface VaultInfo {
address: Address;
vaultFarm: Address;
}
export declare function getAllFarmConfigsAndStates({ allFarms, logger, markets, strategies, vaults, }: {
allFarms: FarmAndKey[];
logger: ILogger;
markets: MarketWithReserves[];
strategies: StrategyInfo[];
vaults: VaultInfo[];
}): {
collateralFarms: IFarmResponse[];
debtFarms: IFarmResponse[];
strategyFarms: IFarmResponse[];
earnVaultFarms: IFarmResponse[];
standaloneFarms: IFarmResponse[];
};
export type FarmConfig = {
farmMetadata: FarmMetadata;
farmPubkey: Address;
stakingTokenMint: Address;
withdrawAuthority: Address;
globalConfig: Address;
strategyId: Address;
vaultId: Address;
depositCapAmount: number;
rewards: Array<{
rewardTokenMint: Address;
rewardType: string;
rewardPerSecondDecimals: number;
minClaimDurationSeconds: number;
rewardCurve: Array<{
startTs: number;
rps: number;
} | undefined>;
rewardAvailable: number;
rewardToTopUp: number;
rewardToTopUpDurationDays: number;
} | undefined>;
farmAdmin: Address;
delegateAuthority: Address;
pendingFarmAdmin: Address;
scopePrices: Address;
scopePriceOracleId: string;
isRewardUserOnceEnabled: number;
scopeOracleMaxAge: number;
lockingMode: number;
lockingStart: number;
lockingDuration: number;
lockingEarlyWithdrawalPenaltyBps: number;
depositWarmupPeriod: number;
withdrawCooldownPeriod: number;
slashedAmountSpillAddress: Address;
delegatedRpsAdmin: Address;
secondDelegatedAuthority: Address;
};
export type FarmMetadata = {
type: string;
reserve: Address | undefined;
reserveSymbol: string | undefined;
market: Address | undefined;
marketName: string | undefined;
strategy: Address | undefined;
vault: Address | undefined;
};
export declare function getFarmConfigType(farmKey: Address, farmState: FarmState, farmMetadata: FarmMetadata): FarmConfig;
//# sourceMappingURL=farms.d.ts.map