client-aftermath-ts-sdk
Version:
Client Aftermath TypeScript SDK
265 lines • 9.05 kB
TypeScript
import { ObjectId, SuiAddress } from "../../types";
import { Balance, Event, Object, Timestamp } from "../../general/types/generalTypes";
import { CoinType } from "../coin/coinTypes";
export type FarmsMultiplier = bigint;
export type FarmOwnerOrOneTimeAdminCap = {
ownerCapId: ObjectId;
} | {
oneTimeAdminCapId: ObjectId;
};
export type FarmsLockEnforcement = "Strict" | "Relaxed";
export interface FarmsStakingPoolRewardCoin {
coinType: CoinType;
rewards: Balance;
rewardsAccumulatedPerShare: Balance;
emissionRate: Balance;
emissionSchedulesMs: Timestamp;
emissionStartTimestamp: Timestamp;
lastRewardTimestamp: Timestamp;
rewardsRemaining: Balance;
actualRewards: Balance;
}
export interface FarmsStakingPoolObject extends Object {
stakeCoinType: CoinType;
stakedAmount: Balance;
stakedAmountWithMultiplier: Balance;
minLockDurationMs: Timestamp;
maxLockDurationMs: Timestamp;
maxLockMultiplier: FarmsMultiplier;
rewardCoins: FarmsStakingPoolRewardCoin[];
emissionEndTimestamp: Timestamp;
minStakeAmount: Balance;
lockEnforcement: FarmsLockEnforcement;
isUnlocked: boolean;
}
export interface StakingPoolOwnerCapObject extends Object {
stakingPoolId: ObjectId;
}
export interface StakingPoolOneTimeAdminCapObject extends Object {
stakingPoolId: ObjectId;
}
export interface FarmsStakedPositionRewardCoin {
coinType: CoinType;
baseRewardsAccumulated: Balance;
baseRewardsDebt: Balance;
multiplierRewardsAccumulated: Balance;
multiplierRewardsDebt: Balance;
}
export interface FarmsStakedPositionObject extends Object {
stakingPoolObjectId: ObjectId;
stakeCoinType: CoinType;
stakedAmount: Balance;
stakedAmountWithMultiplier: Balance;
lockStartTimestamp: Timestamp;
lockDurationMs: Timestamp;
lockMultiplier: FarmsMultiplier;
rewardCoins: FarmsStakedPositionRewardCoin[];
lastHarvestRewardsTimestamp: Timestamp;
}
export type PartialFarmsStakedPositionObject = Omit<FarmsStakedPositionObject, "rewardCoins"> & {
rewardCoins: Omit<FarmsStakedPositionRewardCoin, "coinType">[];
};
export type FarmEvent = FarmsAddedRewardEvent | FarmsCreatedVaultEvent | FarmsDepositedPrincipalEvent | FarmsDestroyedStakedPositionEvent | FarmsHarvestedRewardsEvent | FarmsIncreasedEmissionsEvent | FarmsInitializedRewardEvent | FarmsJoinedEvent | FarmsLockedEvent | FarmsSplitEvent | FarmsStakedEvent | FarmsStakedRelaxedEvent | FarmsUnlockedEvent | FarmsWithdrewPrincipalEvent;
export type FarmUserEvent = FarmsDepositedPrincipalEvent | FarmsHarvestedRewardsEvent | FarmsLockedEvent | FarmsStakedEvent | FarmsUnlockedEvent | FarmsWithdrewPrincipalEvent;
export declare const isFarmsDepositedPrincipalEvent: (event: FarmUserEvent) => event is FarmsDepositedPrincipalEvent;
export declare const isFarmsHarvestedRewardsEvent: (event: FarmUserEvent) => event is FarmsHarvestedRewardsEvent;
export declare const isFarmsLockedEvent: (event: FarmUserEvent) => event is FarmsLockedEvent;
export declare const isFarmsStakedEvent: (event: FarmUserEvent) => event is FarmsStakedEvent;
export declare const isFarmsUnlockedEvent: (event: FarmUserEvent) => event is FarmsUnlockedEvent;
export declare const isFarmsWithdrewPrincipalEvent: (event: FarmUserEvent) => event is FarmsWithdrewPrincipalEvent;
export interface FarmsAddedRewardEvent extends Event {
vaultId: ObjectId;
rewardType: CoinType;
rewardAmount: Balance;
}
export interface FarmsCreatedVaultEvent extends Event {
vaultId: ObjectId;
stakeType: CoinType;
minLockDurationMs: Timestamp;
maxLockDurationMs: Timestamp;
maxLockMultiplier: FarmsMultiplier;
minStakeAmount: Balance;
}
export interface FarmsDepositedPrincipalEvent extends Event {
stakedPositionId: ObjectId;
vaultId: ObjectId;
amount: Balance;
stakeType: CoinType;
}
export interface FarmsDestroyedStakedPositionEvent extends Event {
stakedPositionId: ObjectId;
}
export interface FarmsHarvestedRewardsEvent extends Event {
vaultId: ObjectId;
rewardTypes: CoinType[];
rewardAmounts: Balance[];
}
export interface FarmsIncreasedEmissionsEvent extends Event {
vaultId: ObjectId;
rewardType: CoinType;
emissionScheduleMs: Timestamp;
emissionRate: Balance;
}
export interface FarmsInitializedRewardEvent extends Event {
vaultId: ObjectId;
rewardType: CoinType;
rewardAmount: Balance;
emissionRate: Balance;
emissionStartMs: Timestamp;
}
export interface FarmsJoinedEvent extends Event {
stakedPositionId: ObjectId;
otherStakedPositionId: ObjectId;
}
export interface FarmsLockedEvent extends Event {
stakedPositionId: ObjectId;
vaultId: ObjectId;
stakedType: CoinType;
stakedAmount: Balance;
lockStartTimestampMs: Timestamp;
lockDurationMs: Timestamp;
lockMultiplier: FarmsMultiplier;
}
export interface FarmsSplitEvent extends Event {
stakedPositionId: ObjectId;
splitStakedPositionId: ObjectId;
}
export interface FarmsStakedEvent extends Event {
stakedPositionId: ObjectId;
vaultId: ObjectId;
stakedType: CoinType;
stakedAmount: Balance;
multipliedStakedAmount: Balance;
lockStartTimestampMs: Timestamp;
lockDurationMs: Timestamp;
lockMultiplier: FarmsMultiplier;
}
export interface FarmsStakedRelaxedEvent extends Event {
stakedPositionId: ObjectId;
vaultId: ObjectId;
stakedType: CoinType;
stakedAmount: Balance;
lockStartTimestampMs: Timestamp;
lockEndTimestampMs: Timestamp;
}
export interface FarmsUnlockedEvent extends Event {
stakedPositionId: ObjectId;
vaultId: ObjectId;
stakedType: CoinType;
stakedAmount: Balance;
}
export interface FarmsWithdrewPrincipalEvent extends Event {
stakedPositionId: ObjectId;
vaultId: ObjectId;
amount: Balance;
stakeType: CoinType;
}
export interface ApiFarmsOwnedStakedPositionsBody {
walletAddress: SuiAddress;
}
export interface ApiFarmsStakeBody {
stakingPoolId: ObjectId;
lockDurationMs: Timestamp;
stakeCoinType: CoinType;
stakeAmount: Balance;
walletAddress: SuiAddress;
isSponsoredTx?: boolean;
}
export interface ApiFarmsDepositPrincipalBody {
stakedPositionId: ObjectId;
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
depositAmount: Balance;
walletAddress: SuiAddress;
isSponsoredTx?: boolean;
}
export interface ApiFarmsUnstakeBody {
stakedPositionId: ObjectId;
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
rewardCoinTypes: CoinType[];
withdrawAmount: Balance;
walletAddress: SuiAddress;
claimSuiAsAfSui?: boolean;
}
export interface ApiFarmsLockBody {
stakedPositionId: ObjectId;
stakingPoolId: ObjectId;
lockDurationMs: Timestamp;
stakeCoinType: CoinType;
walletAddress: SuiAddress;
}
export interface ApiFarmsRenewLockBody {
stakedPositionId: ObjectId;
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
walletAddress: SuiAddress;
}
export interface ApiFarmsUnlockBody {
stakedPositionId: ObjectId;
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
walletAddress: SuiAddress;
}
export interface ApiHarvestFarmsRewardsBody {
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
stakedPositionIds: ObjectId[];
rewardCoinTypes: CoinType[];
walletAddress: SuiAddress;
claimSuiAsAfSui?: boolean;
}
export interface ApiFarmsCreateStakingPoolBody {
lockEnforcement: FarmsLockEnforcement;
minLockDurationMs: Timestamp;
maxLockDurationMs: Timestamp;
maxLockMultiplier: FarmsMultiplier;
minStakeAmount: Balance;
stakeCoinType: CoinType;
walletAddress: SuiAddress;
}
export type ApiFarmsInitializeStakingPoolRewardBody = {
stakingPoolId: ObjectId;
rewardAmount: Balance;
emissionScheduleMs: Timestamp;
emissionRate: bigint;
emissionDelayTimestampMs: Timestamp;
stakeCoinType: CoinType;
rewardCoinType: CoinType;
walletAddress: SuiAddress;
isSponsoredTx?: boolean;
} & FarmOwnerOrOneTimeAdminCap;
export type ApiFarmsTopUpStakingPoolRewardsBody = {
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
rewards: {
rewardCoinType: CoinType;
rewardAmount: Balance;
}[];
walletAddress: SuiAddress;
isSponsoredTx?: boolean;
} & FarmOwnerOrOneTimeAdminCap;
export type ApiFarmsIncreaseStakingPoolRewardsEmissionsBody = {
ownerCapId: ObjectId;
stakingPoolId: ObjectId;
stakeCoinType: CoinType;
rewards: {
rewardCoinType: CoinType;
emissionScheduleMs: Timestamp;
emissionRate: bigint;
}[];
walletAddress: SuiAddress;
};
export interface ApiFarmsOwnedStakingPoolOwnerCapsBody {
walletAddress: SuiAddress;
}
export interface ApiFarmsOwnedStakingPoolOneTimeAdminCapsBody {
walletAddress: SuiAddress;
}
export type ApiFarmsGrantOneTimeAdminCapBody = {
ownerCapId: ObjectId;
recipientAddress: SuiAddress;
rewardCoinType: CoinType;
walletAddress: SuiAddress;
};
//# sourceMappingURL=farmsTypes.d.ts.map