import { TransactionArgument, Transaction } from "@mysten/sui/transactions";
import { AftermathApi } from "../../../general/providers/aftermathApi";
import { MixSuiFrensEvent, SuiFrenObject, SuiFrenStats, SuiFrenVaultStateV1Object, StakeSuiFrenEvent, UnstakeSuiFrenEvent, SuiFrenAttributes, SuiFrensSortOption, SuiFrenAccessoryObject, StakedSuiFrenInfo, SuiFrenAccessoryType, ApiMixSuiFrensBody, ApiRemoveSuiFrenAccessoryBody, ApiAddSuiFrenAccessoryBody, HarvestSuiFrenFeesEvent } from "../suiFrensTypes";
import { AnyObjectType, Balance, SuiFrensAddresses, DynamicFieldObjectsWithCursor, DynamicFieldsInputs, EventsInputs, ObjectId, SuiAddress } from "../../../types";
export declare class SuiFrensApi {
    private readonly Provider;
    private static readonly constants;
    readonly addresses: SuiFrensAddresses;
    readonly objectTypes: {
        suiFren: AnyObjectType;
        capy: AnyObjectType;
        bullshark: AnyObjectType;
        suiFrenAccessory: AnyObjectType;
        stakedSuiFrenPosition: AnyObjectType;
        stakedSuiFrenMetadataV1: AnyObjectType;
    };
    readonly eventTypes: {
        harvestSuiFrenFees: AnyObjectType;
        mixSuiFrens: AnyObjectType;
        stakeSuiFren: AnyObjectType;
        unstakeSuiFren: AnyObjectType;
    };
    constructor(Provider: AftermathApi);
    fetchMixingLimitsAndLastEpochMixeds: (inputs: {
        suiFrenIds: ObjectId[];
        suiFrenType: AnyObjectType;
    }) => Promise<{
        mixLimit: bigint | undefined;
        lastEpochMixed: bigint | undefined;
    }[]>;
    fetchMixingLimit: (inputs: {
        suiFrenId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => Promise<bigint | undefined>;
    fetchLastEpochMixed: (inputs: {
        suiFrenId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => Promise<bigint | undefined>;
    fetchStakedSuiFrenMetadataIds: (inputs: {
        suiFrenIds: ObjectId[];
    }) => Promise<ObjectId[]>;
    fetchHarvestSuiFrenFeesEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<HarvestSuiFrenFeesEvent>>;
    fetchMixSuiFrensEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<MixSuiFrensEvent>>;
    fetchStakeSuiFrenEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<StakeSuiFrenEvent>>;
    fetchUnstakeSuiFrenEvents: (inputs: EventsInputs) => Promise<import("../../../types").EventsWithCursor<UnstakeSuiFrenEvent>>;
    fetchCapyLabsApp: () => Promise<import("../suiFrensTypes").CapyLabsAppObject>;
    fetchSuiFrenVaultStateV1Object: () => Promise<SuiFrenVaultStateV1Object>;
    fetchSuiFrens: (inputs: {
        suiFrenIds: ObjectId[];
    }) => Promise<SuiFrenObject[]>;
    fetchOwnedSuiFrens: (inputs: {
        walletAddress: SuiAddress;
    }) => Promise<SuiFrenObject[]>;
    fetchStakedSuiFrens: (inputs: {
        stakedSuiFrenIds: ObjectId[];
    }) => Promise<StakedSuiFrenInfo[]>;
    fetchStakedSuiFrensDynamicFields: (inputs: DynamicFieldsInputs) => Promise<DynamicFieldObjectsWithCursor<StakedSuiFrenInfo>>;
    fetchAccessoriesForSuiFren: (inputs: {
        suiFrenId: ObjectId;
    }) => Promise<SuiFrenAccessoryObject[]>;
    fetchOwnedAccessories: (inputs: {
        walletAddress: SuiAddress;
    }) => Promise<SuiFrenAccessoryObject[]>;
    fetchAccessories: (inputs: {
        objectIds: ObjectId[];
    }) => Promise<SuiFrenAccessoryObject[]>;
    fetchStakedSuiFrensDynamicFieldsWithFilters: (inputs: {
        attributes: Partial<SuiFrenAttributes>;
        sortBy?: SuiFrensSortOption;
        limit?: number;
        limitStepSize?: number;
        cursor?: ObjectId;
    }) => Promise<DynamicFieldObjectsWithCursor<StakedSuiFrenInfo>>;
    fetchOwnedStakedSuiFrens: (inputs: {
        walletAddress: SuiAddress;
    }) => Promise<StakedSuiFrenInfo[]>;
    devInspectMetadataObjectIdMulTx: (inputs: {
        tx: Transaction;
        suiFrenIds: ObjectId[];
    }) => import("@mysten/sui/transactions").TransactionResult;
    devInspectMixLimitAndLastEpochMixedMulTx: (inputs: {
        tx: Transaction;
        suiFrenIds: ObjectId[];
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    mixingLimitTx: (inputs: {
        tx: Transaction;
        suiFrenId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    lastEpochMixedTx: (inputs: {
        tx: Transaction;
        suiFrenId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    mixAndKeepTx: (inputs: {
        tx: Transaction;
        parentOneId: ObjectId;
        parentTwoId: ObjectId;
        suiPaymentCoinId: ObjectId | TransactionArgument;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    mixWithStakedAndKeepTx: (inputs: {
        tx: Transaction;
        nonStakedParentId: ObjectId;
        stakedParentId: ObjectId;
        suiPaymentCoinId: ObjectId | TransactionArgument;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    mixStakedWithStakedAndKeepTx: (inputs: {
        tx: Transaction;
        parentOneId: ObjectId;
        parentTwoId: ObjectId;
        suiPaymentCoinId: ObjectId | TransactionArgument;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    stakeAndKeepTx: (inputs: {
        tx: Transaction;
        suiFrenId: ObjectId;
        autoStakeFees: boolean;
        baseFee: Balance;
        feeIncrementPerMix: Balance;
        minRemainingMixesToKeep: bigint;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    unstakeAndKeepTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    beginHarvestTx: (inputs: {
        tx: Transaction;
    }) => import("@mysten/sui/transactions").TransactionResult;
    harvestTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        harvestFeesEventMetadataId: ObjectId | TransactionArgument;
    }) => import("@mysten/sui/transactions").TransactionResult;
    endHarvestTx: (inputs: {
        tx: Transaction;
        harvestFeesEventMetadataId: ObjectId | TransactionArgument;
    }) => import("@mysten/sui/transactions").TransactionResult;
    addAccessoryTx: (inputs: {
        tx: Transaction;
        suiFrenId: ObjectId;
        accessoryId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    addAccessoryToOwnedSuiFrenTx: (inputs: {
        tx: Transaction;
        suiFrenId: ObjectId;
        accessoryId: ObjectId;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    removeAccessoryAndKeepTx: (inputs: {
        tx: Transaction;
        stakedPositionId: ObjectId;
        accessoryType: SuiFrenAccessoryType;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    removeAccessoryFromOwnedSuiFrenAndKeepTx: (inputs: {
        tx: Transaction;
        suiFrenId: ObjectId;
        accessoryType: SuiFrenAccessoryType;
        suiFrenType: AnyObjectType;
    }) => import("@mysten/sui/transactions").TransactionResult;
    fetchStakeTx: (inputs: {
        walletAddress: SuiAddress;
    } & Omit<{
        tx: Transaction;
        suiFrenId: ObjectId;
        baseFee: Balance;
        feeIncrementPerMix: Balance;
        minRemainingMixesToKeep: bigint;
        suiFrenType: AnyObjectType;
    }, "tx">) => Transaction;
    fetchUnstakeTx: (inputs: {
        walletAddress: SuiAddress;
    } & Omit<{
        tx: Transaction;
        stakedPositionId: ObjectId;
        suiFrenType: AnyObjectType;
    }, "tx">) => Transaction;
    fetchBuildMixTx: (inputs: ApiMixSuiFrensBody) => Promise<Transaction>;
    fetchBuildHarvestFeesTx: (inputs: {
        walletAddress: SuiAddress;
        stakedPositionIds: ObjectId[];
    }) => Promise<Transaction>;
    fetchBuildAddAccessoryTx: (inputs: ApiAddSuiFrenAccessoryBody) => Transaction;
    fetchBuildRemoveAccessoryTx: (inputs: ApiRemoveSuiFrenAccessoryBody) => Transaction;
    fetchSuiFrenStats: () => Promise<SuiFrenStats>;
    filterSuiFrensWithAttributes: (inputs: {
        suiFrens: SuiFrenObject[];
        attributes: Partial<SuiFrenAttributes>;
    }) => SuiFrenObject[];
    private fetchCompletePartialSuiFrenObjects;
    private fetchNonStakedCompletePartialSuiFrenObject;
    private fetchOwnedPartialSuiFrenBullsharks;
    private harvestSuiFrenFeesEventType;
    private mixSuiFrensEventType;
    private stakeSuiFrenEventType;
    private unstakeSuiFrenEventType;
}
//# sourceMappingURL=suiFrensApi.d.ts.map