import { ethers } from "ethers";
import type { ElementType } from "../../../types";
import type { CallbackType } from "../../../utils/ethers/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 Apostle 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>;
/**
 * Cancel the auction by apostle token ID
 * @param landId Land Id
 * @param signer Signer
 * @param tokenId apostle token Id
 * @param callback Callback
 * @returns any
 */
export declare const apostleCancelAskWithToken: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Renting apostles to work
 * @param landId Land Id
 * @param signer Signer
 * @param resourceAddress Resource contract address
 * @param tokenId Apostle tokenId
 * @param price Hire price
 * @param duration Duration in second
 * @param callback Callback
 */
export declare const apostleHire: (landId: LandId, signer: ethers.Signer, resourceAddress: string, tokenId: string, price: string, duration: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Cancel an apostle on Renting
 * @param landId Land Id
 * @param signer Signer
 * @param tokenId Apostle tokenId
 * @param callback Callback
 * @returns any
 */
export declare const apostleCancelHire: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Let apostle go to work
 * @param landId Land Id
 * @param signer Signer
 * @param apostleTokenId Apostle token Id
 * @param landTokenId Land token Id
 * @param elementContractAddress Element contract address
 * @param callback Callback
 * @returns any
 */
export declare const apostleWork: (landId: LandId, signer: ethers.Signer, apostleTokenId: string, landTokenId: string, elementContractAddress: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Stop apostle mining
 * @param landId Land Id
 * @param signer Signer
 * @param tokenId Apostle tokenId
 * @param callback Callback
 * @returns any
 */
export declare const apostleStopWork: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Get apostle breed fee
 * @param landId Land Id
 * @param provider Provider
 * @param callback Callback
 * @returns fee in string
 */
export declare const apostleGetAutoBreedFee: (landId: LandId, provider: ethers.providers.Provider, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Receive apostle
 * @param landId Land Id
 * @param signer Singer
 * @param tokenId Apostle tokenId
 * @param callback Callback
 * @returns any
 */
export declare const apostleClaim: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Apostle Breed Auction
 * @param landId Land Id
 * @param signer Signer
 * @param from Apostle owner
 * @param tokenId Apostle tokenId
 * @param startPrice Start price
 * @param endPrice End price
 * @param duration Auction duration time in second
 * @param callback Callback
 * @returns any
 */
export declare const apostleBreedAsk: (landId: LandId, signer: ethers.Signer, from: string, tokenId: string, startPrice: string, endPrice: string, duration: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Cancel Apostle Breed Auction
 * @param landId Land Id
 * @param signer Signer
 * @param tokenId Apostle tokenId
 * @param callback Callback
 * @returns any
 */
export declare const apostleCancelBreedAsk: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Transfer Apsotle
 * @param landId Land Id
 * @param signer Signer
 * @param from Apostle owner
 * @param to Recipient
 * @param tokenId Apostle tokenId
 * @param callback Callback
 * @returns any
 */
export declare const apostleTransfer: (landId: LandId, signer: ethers.Signer, from: string, to: string, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Claim an apostle that expires at work
 * @param landId Land Id
 * @param signer Signer
 * @param tokenId Apostle tokenId
 * @param callback Callback
 * @returns any
 */
export declare const apostleClaimHire: (landId: LandId, signer: ethers.Signer, tokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
