import { AftermathApi } from "../../../general/providers/aftermathApi";
import { AnyObjectType, FarmsAddresses, Timestamp, CoinType, ApiFarmsStakeBody, ApiHarvestFarmsRewardsBody, ApiFarmsDepositPrincipalBody, Balance, ApiFarmsUnstakeBody, FarmsLockEnforcement, FarmsMultiplier, ApiFarmsCreateStakingPoolBody, ApiFarmsTopUpStakingPoolRewardsBody, ApiFarmsInitializeStakingPoolRewardBody, StakingPoolOwnerCapObject, ApiFarmsOwnedStakingPoolOwnerCapsBody, ApiFarmsIncreaseStakingPoolRewardsEmissionsBody, PartialFarmsStakedPositionObject, EventsInputs, FarmsStakedEvent, FarmsStakedRelaxedEvent, FarmsLockedEvent, FarmsUnlockedEvent, FarmsWithdrewPrincipalEvent, FarmsDepositedPrincipalEvent, FarmsHarvestedRewardsEvent, FarmsCreatedVaultEvent, StakingPoolOneTimeAdminCapObject, FarmOwnerOrOneTimeAdminCap, ObjectId, SuiAddress } from "../../../types";
import { TransactionArgument, Transaction } from "@mysten/sui/transactions";
import { MoveErrors, MoveErrorsInterface } from "../../../general/types/moveErrorsInterface";
export declare class FarmsApi implements MoveErrorsInterface {
    private readonly Provider;
    private static readonly constants;
    readonly addresses: FarmsAddresses;
    readonly objectTypes: {
        stakedPosition: AnyObjectType;
        stakingPoolOwnerCap: AnyObjectType;
        stakingPoolOneTimeAdminCap: AnyObjectType;
    };
    readonly eventTypes: {
        createdVault: AnyObjectType;
        initializedReward: AnyObjectType;
        addedReward: AnyObjectType;
        increasedEmissions: AnyObjectType;
        staked: AnyObjectType;
        stakedRelaxed: AnyObjectType;
        locked: AnyObjectType;
        unlocked: AnyObjectType;
        depositedPrincipal: AnyObjectType;
        withdrewPrincipal: AnyObjectType;
        harvestedRewards: AnyObjectType;
    };
    readonly moveErrors: MoveErrors;
    constructor(Provider: AftermathApi);
    fetchOwnedStakingPoolOwnerCaps: (inputs: ApiFarmsOwnedStakingPoolOwnerCapsBody) => Promise<StakingPoolOwnerCapObject[]>;
    fetchOwnedStakingPoolOneTimeAdminCaps: (inputs: ApiFarmsOwnedStakingPoolOwnerCapsBody) => Promise<StakingPoolOneTimeAdminCapObject[]>;
    fetchOwnedPartialStakedPositions: (inputs: {
        walletAddress: SuiAddress;
    }) => Promise<PartialFarmsStakedPositionObject[]>;
    fetchCreatedVaultEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsCreatedVaultEvent>>;
    fetchStakedEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsStakedEvent>>;
    fetchStakedRelaxedEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsStakedRelaxedEvent>>;
    fetchLockedEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsLockedEvent>>;
    fetchUnlockedEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsUnlockedEvent>>;
    fetchDepositedPrincipalEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsDepositedPrincipalEvent>>;
    fetchWithdrewPrincipalEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsWithdrewPrincipalEvent>>;
    fetchHarvestedRewardsEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<FarmsHarvestedRewardsEvent>>;
    stakeTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId;
        stakeCoinId: ObjectId | TransactionArgument;
        lockDurationMs: Timestamp;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    depositPrincipalTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinId: ObjectId | TransactionArgument;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    withdrawPrincipalTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        withdrawAmount: Balance;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    destroyStakedPositionTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    updatePositionTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    lockTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        lockDurationMs: Timestamp;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    renewLockTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    unlockTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    beginHarvestTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    harvestRewardsTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        harvestedRewardsEventMetadataId: ObjectId | TransactionArgument;
        stakeCoinType: CoinType;
        rewardCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    endHarvestTx: (inputs: {
        tx: Transaction;
        harvestedRewardsEventMetadataId: ObjectId | TransactionArgument;
    }) => import("@mysten/sui/transactions").TransactionResult;
    newStakingPoolTx: (inputs: {
        tx: Transaction;
        lockEnforcement: FarmsLockEnforcement;
        minLockDurationMs: Timestamp;
        maxLockDurationMs: Timestamp;
        maxLockMultiplier: FarmsMultiplier;
        minStakeAmount: Balance;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    shareStakingPoolTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId | TransactionArgument;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    transferOwnerCapTx: (inputs: {
        tx: Transaction;
        ownerCapId: ObjectId | TransactionArgument;
        recipientAddress: SuiAddress;
    }) => import("@mysten/sui/transactions").TransactionResult;
    grantOneTimeAdminCapTx: (inputs: {
        tx: Transaction;
        ownerCapId: ObjectId | TransactionArgument;
        recipientAddress: SuiAddress;
        rewardCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    initializeStakingPoolRewardTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId;
        rewardCoinId: ObjectId | TransactionArgument;
        emissionScheduleMs: Timestamp;
        emissionRate: bigint;
        emissionDelayTimestampMs: Timestamp;
        stakeCoinType: CoinType;
        rewardCoinType: CoinType;
    } & FarmOwnerOrOneTimeAdminCap) => import("@mysten/sui/transactions").TransactionResult;
    topUpStakingPoolRewardTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId;
        rewardCoinId: ObjectId | TransactionArgument;
        stakeCoinType: CoinType;
        rewardCoinType: CoinType;
    } & FarmOwnerOrOneTimeAdminCap) => import("@mysten/sui/transactions").TransactionResult;
    increaseStakingPoolRewardEmissionsTx: (inputs: {
        tx: Transaction;
        ownerCapId: ObjectId;
        stakingPoolId: ObjectId;
        emissionScheduleMs: Timestamp;
        emissionRate: bigint;
        stakeCoinType: CoinType;
        rewardCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    setStakingPoolMinStakeAmountTx: (inputs: {
        tx: Transaction;
        ownerCapId: ObjectId;
        stakingPoolId: ObjectId;
        minStakeAmount: bigint;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    isVaultUnlockedTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    remainingRewardsTx: (inputs: {
        tx: Transaction;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    fetchBuildStakeTx: (inputs: ApiFarmsStakeBody) => Promise<Transaction>;
    fetchBuildDepositPrincipalTx: (inputs: ApiFarmsDepositPrincipalBody) => Promise<Transaction>;
    fetchBuildWithdrawPrincipalTx: (inputs: {
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        withdrawAmount: Balance;
        stakeCoinType: CoinType;
        walletAddress: SuiAddress;
    }) => Promise<Transaction>;
    fetchBuildUnstakeTx: (inputs: ApiFarmsUnstakeBody) => Promise<Transaction>;
    buildUpdatePositionTx: (inputs: {
        walletAddress: string;
    } & Omit<{
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }, "tx">) => Transaction;
    buildLockTx: (inputs: {
        walletAddress: string;
    } & Omit<{
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        lockDurationMs: Timestamp;
        stakeCoinType: CoinType;
    }, "tx">) => Transaction;
    buildRenewLockTx: (inputs: {
        walletAddress: string;
    } & Omit<{
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }, "tx">) => Transaction;
    buildUnlockTx: (inputs: {
        walletAddress: string;
    } & Omit<{
        tx: Transaction;
        stakedPositionId: ObjectId;
        stakingPoolId: ObjectId;
        stakeCoinType: CoinType;
    }, "tx">) => Transaction;
    fetchBuildHarvestRewardsTx: (inputs: ApiHarvestFarmsRewardsBody) => Promise<Transaction>;
    fetchBuildCreateStakingPoolTx: (inputs: ApiFarmsCreateStakingPoolBody) => Promise<Transaction>;
    fetchBuildInitializeStakingPoolRewardTx: (inputs: ApiFarmsInitializeStakingPoolRewardBody) => Promise<Transaction>;
    fetchBuildTopUpStakingPoolRewardsTx: (inputs: ApiFarmsTopUpStakingPoolRewardsBody) => Promise<Transaction>;
    fetchIncreaseStakingPoolRewardsEmissionsTx: (inputs: ApiFarmsIncreaseStakingPoolRewardsEmissionsBody) => Transaction;
    buildSetStakingPoolMinStakeAmountTx: (inputs: {
        walletAddress: string;
    } & Omit<{
        tx: Transaction;
        ownerCapId: ObjectId;
        stakingPoolId: ObjectId;
        minStakeAmount: bigint;
        stakeCoinType: CoinType;
    }, "tx">) => Transaction;
    buildGrantOneTimeAdminCapTx: (inputs: {
        walletAddress: string;
    } & Omit<{
        tx: Transaction;
        ownerCapId: ObjectId | TransactionArgument;
        recipientAddress: SuiAddress;
        rewardCoinType: CoinType;
    }, "tx">) => Transaction;
    private createdVaultEventType;
    private initializedRewardEventType;
    private addedRewardEventType;
    private increasedEmissionsEventType;
    private stakedEventType;
    private stakedRelaxedEventType;
    private lockedEventType;
    private unlockedEventType;
    private depositedPrincipalEventType;
    private withdrewPrincipalEventType;
    private harvestedRewardsEventType;
    private static isFarmOwnerCapId;
    private static isFarmOneTimeAdminCapId;
    private static farmCapId;
}
//# sourceMappingURL=farmsApi.d.ts.map