import { ethers } from "ethers";
import type { ElementType } from "../../../types";
import type { CallbackType } from "../../../utils/tronweb/contractHelper";
import { LandId } from "../../../config/constants";
import { TransactionResponse } from "@ethersproject/providers";
/**
 * Apostle Allowance To Clock Auction
 * @param provider Ethers provider
 * @param from From
 * @param callback Callback
 * @returns Promise<string | undefined>
 */
export declare const apostleAllowanceToClockAuction: (landId: LandId, provider: ethers.providers.Provider, from: string, callback?: CallbackType | undefined) => Promise<string | undefined>;
/**
 * Apostle Bid
 * @param signer Ethers signer
 * @param tokenId Apostle token id
 * @param referrer Refer address
 * @param amountMax RING Amount
 * @param callback Callback
 */
export declare const apostleBidWithToken: (landId: LandId, signer: ethers.Signer, tokenId: string, referrer: string, amountMax: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Apostle Breed - Apostle reproduction in own
 * @param signer Ethers signer
 * @param tokenId Token id
 * @param targetTokenId Target token id
 * @param amountMax Amount max
 * @param callback Callback
 */
export declare const apostleBreed: (landId: LandId, signer: ethers.Signer, tokenId: string, targetTokenId: string, amountMax: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Apostle Breed Bid - Apostle reproduction
 * @param signer Ethers signer
 * @param tokenId Token id
 * @param targetTokenId Target token id
 * @param amountMax Amount max (bidPrice + autoBirthFee)
 * @param callback Callback
 */
export declare const apostleBreedBid: (landId: LandId, signer: ethers.Signer, tokenId: string, targetTokenId: string, amountMax: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Apostle Hire Bid - Bid apostle on Renting
 * @param signer Ethers signer
 * @param tokenId Apostle token id
 * @param amountMax Amount max (bid price)
 * @param callback Callback
 */
export declare const apostleHireBid: (landId: LandId, signer: ethers.Signer, tokenId: string, amountMax: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Apostle Born Without Element
 * @param signer Ethers signer
 * @param motherTokenId Mother token id
 * @param callback Callback
 */
export declare const apostleBorn: (landId: LandId, signer: ethers.Signer, motherTokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Apostle Born And Enhance
 * @param signer Ethers signer
 * @param motherTokenId Mother token id
 * @param element Element
 * @param level Level
 * @param levelUnitPrice Level unit price
 * @param callback Callback
 * @returns Void
 */
export declare const apostleBornAndEnhance: (landId: LandId, signer: ethers.Signer, motherTokenId: string, element: ElementType, level: number, levelUnitPrice: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Returns the current price of an auction.
 * @param provider Ethers signer
 * @param tokenId Token Id
 * @param callback Callback
 * @returns any
 */
export declare const apostleGetCurrentPriceByTokenId: (landId: LandId, provider: ethers.providers.Provider, tokenId: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Returns the current siring price of an auction.
 * @param provider Ethers signer
 * @param tokenId Token Id
 * @param callback Callback
 * @returns any
 */
export declare const apostleGetCurrentSiringPriceByTokenId: (landId: LandId, provider: ethers.providers.Provider, tokenId: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Sell Apostle asset
 * @param signer Ethers signer
 * @param from
 * @param tokenId - Apostle tokenId
 * @param start - start price
 * @param end - end price
 * @param duration - bid duration time in second
 * @param callback Callback
 * @returns {Promise<void>}
 */
export declare const apostleAskWithToken: (landId: LandId, signer: ethers.Signer, from: string, tokenId: string, startPrice: string, endPrice: string, duration: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleCancelAskWithToken: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Renting apostles to work
 * @param signer
 * @param resourceAddress
 * @param tokenId
 * @param price
 * @param duration
 * @param callback
 */
export declare const apostleHire: (landId: LandId, signer: ethers.Signer, resourceAddress: string, tokenId: string, price: string, duration: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleCancelHire: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleWork: (landId: LandId, signer: ethers.Signer, apostleTokenId: string, landTokenId: string, elementContractAddress: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleStopWork: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleGetAutoBreedFee: (landId: LandId, provider: ethers.providers.Provider, callback?: CallbackType | undefined) => Promise<string>;
export declare const apostleClaim: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleBreedAsk: (landId: LandId, signer: ethers.Signer, from: string, tokenId: string, startPrice: string, endPrice: string, duration: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleCancelBreedAsk: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleTransfer: (landId: LandId, signer: ethers.Signer, from: string, to: string, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const apostleClaimHire: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
