import { AnyObjectType, Balance, Event, Object, Timestamp, Url, ObjectId, SuiAddress } from "../../general/types/generalTypes";
export type SuiFrenAccessoryType = string;
export type SuiFrenAccessoryName = string;
export interface CapyLabsAppObject extends Object {
    mixingLimit: bigint;
    coolDownPeriodEpochs: bigint;
    mixingPrice: Balance;
    suiProfits: Balance;
}
export interface SuiFrenObject extends Object {
    generation: bigint;
    birthdate: Timestamp;
    cohort: bigint;
    genes: bigint[];
    attributes: SuiFrenAttributes;
    birthLocation: string;
    mixLimit?: bigint;
    lastEpochMixed?: bigint;
    display: {
        link: Url;
        imageUrl: Url;
        description: string;
        projectUrl: Url;
    };
}
export type PartialSuiFrenObject = Omit<SuiFrenObject, "mixLimit" | "lastEpochMixed">;
export type SuiFrenAttributes = {
    skin: "stripes" | "cheetah";
    main: "6FBBEE";
    secondary: "CF9696";
    expression: "bigSmile";
    ears: "ear1";
};
export declare enum SuiFrensSortOption {
    PriceLowToHigh = "Price (low to high)",
    PriceHighToLow = "Price (high to low)"
}
export interface StakedSuiFrenInfo {
    suiFren: SuiFrenObject;
    metadata: StakedSuiFrenMetadataV1Object;
    position?: StakedSuiFrenPositionObject;
}
export interface StakedSuiFrenPositionObject extends Object {
    suiFrenId: ObjectId;
}
export interface StakedSuiFrenMetadataV1Object extends Object {
    suiFrenId: ObjectId;
    collectedFees: Balance;
    autoStakeFees: boolean;
    mixFee: Balance;
    feeIncrementPerMix: Balance;
    minRemainingMixesToKeep: bigint;
}
export interface SuiFrenVaultStateV1Object extends Object {
    stakedSuiFrens: bigint;
    totalMixes: bigint;
}
export interface SuiFrenAccessoryObject extends Object {
    name: SuiFrenAccessoryName;
    type: SuiFrenAccessoryType;
    imageUrl: Url;
}
export interface HarvestSuiFrenFeesEvent extends Event {
    harvester: SuiAddress;
    fees: bigint;
}
export interface StakeSuiFrenEvent extends Event {
    staker: SuiAddress;
    suiFrenId: ObjectId;
}
export interface UnstakeSuiFrenEvent extends Event {
    unstaker: SuiAddress;
    suiFrenId: ObjectId;
    fees: Balance;
}
export interface MixSuiFrensEvent extends Event {
    mixer: SuiAddress;
    parentOneId: ObjectId;
    parentTwoId: ObjectId;
    childId: ObjectId;
    fee: Balance;
}
export interface SuiFrenStats {
    totalMixes: bigint;
    currentTotalStaked: bigint;
    mixingFees24hr: Balance;
    mixingVolume24hr: number;
}
export interface ApiStakeSuiFrenBody {
    suiFrenId: ObjectId;
    baseFee: Balance;
    feeIncrementPerMix: Balance;
    minRemainingMixesToKeep: bigint;
    suiFrenType: AnyObjectType;
    walletAddress: SuiAddress;
}
export interface ApiUnstakeSuiFrenBody {
    stakedPositionId: ObjectId;
    suiFrenType: AnyObjectType;
    walletAddress: SuiAddress;
}
export interface ApiMixSuiFrensBody {
    suiFrenParentOne: {
        objectId: ObjectId;
        mixFee: Balance | undefined;
    };
    suiFrenParentTwo: {
        objectId: ObjectId;
        mixFee: Balance | undefined;
    };
    baseFee: Balance;
    suiFrenType: AnyObjectType;
    walletAddress: SuiAddress;
    isSponsoredTx?: boolean;
}
export interface ApiHarvestSuiFrenFeesBody {
    stakedPositionIds: ObjectId[];
    walletAddress: SuiAddress;
}
export interface ApiAddSuiFrenAccessoryBody {
    suiFrenId: ObjectId;
    accessoryId: ObjectId;
    isOwned: boolean;
    suiFrenType: AnyObjectType;
    walletAddress: SuiAddress;
}
export type ApiRemoveSuiFrenAccessoryBody = {
    accessoryType: SuiFrenAccessoryType;
    suiFrenType: AnyObjectType;
    walletAddress: SuiAddress;
} & ({
    suiFrenId: ObjectId;
} | {
    stakedPositionId: ObjectId;
});
export interface ApiAccessoriesForSuiFrenBody {
    suiFrenId: ObjectId;
}
export interface ApiOwnedSuiFrenAccessoriesBody {
    walletAddress: SuiAddress;
}
export interface ApiOwnedSuiFrensBody {
    walletAddress: SuiAddress;
}
export interface ApiOwnedStakedSuiFrensBody {
    walletAddress: SuiAddress;
}
//# sourceMappingURL=suiFrensTypes.d.ts.map