import { ethers } from "ethers";
import type { CallbackType } from "../../../utils/ethers/contractHelper";
import { LandId } from "../../../config/constants";
import { TransactionResponse } from "@ethersproject/providers";
export interface furnaceGetTreasurePriceResponse {
    priceGoldBox: string;
    priceSilverBox: string;
}
/**
 * Get treasure price
 * @param landId Land Id
 * @param provider Provider
 * @param callback Callback
 * @returns any
 */
export declare const furnaceGetTreasurePrice: (landId: LandId, provider: ethers.providers.Provider, callback?: CallbackType | undefined) => Promise<furnaceGetTreasurePriceResponse>;
/**
 * Buy treasure
 * @param landId Land Id
 * @param signer Signer
 * @param to Recipient
 * @param goldBoxAmount Gold box amount
 * @param silverBoxAmount Silver box amount
 * @param cost Max cost
 * @param callback Callback
 * @returns any
 */
export declare const furnaceBuyTreasure: (landId: LandId, signer: ethers.Signer, to: string, goldBoxAmount: string, silverBoxAmount: string, cost: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Use nft and elements or LP tokens in the furnace formula to the props.
 * @param signer
 * @param formulaIndex Formula for props - https://github.com/evolutionlandorg/furnace/blob/dev/src/Formula.sol
 * @param majorTokenId ERC721 token Id
 * @param minorTokenAddress Elements or LP tokens contract address
 * @param callback callback
 */
export declare const furnaceEnchantProps: (landId: LandId, signer: ethers.Signer, formulaIndex: number, majorTokenId: string, minorTokenAddress: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Disenchant furnace props, and will get elements or LP and nft
 * @param signer
 * @param propsTokenId Token Id of the Props
 * @param depth Supports one-time decomposition of high-level props. If a prop is in the second level, it needs to be restored to its original state, and the depth needs to be passed in 2
 * @param callback
 */
export declare const furnaceDisenchantProps: (landId: LandId, signer: ethers.Signer, propsTokenId: string, depth: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Get treasure is opened
 * @param landId Land Id
 * @param provider Provider
 * @param treasureTokenId Id of treasure
 * @param callback Callback
 * @returns any
 */
export declare const furnaceGetTreasureStatus: (landId: LandId, provider: ethers.providers.Provider, treasureTokenId: string, callback?: CallbackType | undefined) => Promise<boolean>;
/**
 * Open furnace treasure
 * @param landId Land Id
 * @param signer Signer
 * @param param2 Signature content
 * @param callback Callback
 * @returns any
 */
export declare const furnaceOpenTreasure: (landId: LandId, signer: ethers.Signer, { boxIds, amounts, hashmessage, v, r, s, }: {
    boxIds: string[];
    amounts: string[];
    hashmessage: string;
    v: number;
    r: string;
    s: string;
}, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Disenchant Equipment and will get elements and material
 * @param landId Land Id
 * @param signer Signer
 * @param equipmentTokenId Id of Equipment
 * @param callback Callback
 * @returns any
 */
export declare const furnaceDismantleEquipment: (landId: LandId, signer: ethers.Signer, equipmentTokenId: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Use material and elements tokens in the furnace formula to the equipment.
 * @param landId Land Id
 * @param signer Signer
 * @param equipmentTokenId  Id of Equipment
 * @param tokenContractAddress Element token address
 * @param callback Callback
 * @returns any
 */
export declare const furnaceEnchantEquipment: (landId: LandId, signer: ethers.Signer, equipmentTokenId: string, tokenContractAddress: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
