import { TransactionResponse } from "@ethersproject/providers";
import { LandId } from "../../../config/constants";
import { ElementType } from "../../../types";
import { CallbackType } from "../../../utils/ethers/contractHelper";
import { ethers } from "ethers";
export interface ElementRaffleBalanceResponse {
    lands: string;
    apostles: string;
}
export declare const elementRaffleBalance: (landId: LandId, provider: ethers.providers.Provider, element: ElementType, callback?: CallbackType | undefined) => Promise<ElementRaffleBalanceResponse>;
export declare type ElementRaffleBalanceOfBatchResponse = Partial<Record<ElementType, ElementRaffleBalanceResponse>>;
export declare const elementRaffleBalanceOfBatch: (landId: LandId, provider: ethers.providers.Provider, callback?: CallbackType | undefined) => Promise<ElementRaffleBalanceOfBatchResponse>;
export declare const elementRaffleElementTokenAddress: (landId: LandId, provider: ethers.providers.Provider, element: ElementType, callback?: CallbackType | undefined) => Promise<string>;
export declare type ElementRaffleElementTokenAddressOfBatchResponse = Partial<Record<ElementType, string>>;
export declare const elementRaffleElementTokenAddressOfBatch: (landId: LandId, provider: ethers.providers.Provider, callback?: CallbackType | undefined) => Promise<ElementRaffleElementTokenAddressOfBatchResponse>;
export declare const elementRaffleSmallDrawFee: (landId: LandId, provider: ethers.providers.Provider, element: ElementType, callback?: CallbackType | undefined) => Promise<string>;
export declare const elementRaffleLargeDrawFee: (landId: LandId, provider: ethers.providers.Provider, element: ElementType, callback?: CallbackType | undefined) => Promise<string>;
interface ElementRaffleDrawFee {
    smallDrawFee: string;
    largeDrawFee: string;
}
export declare type ElementRaffleDrawFeeOfBatchResponse = Partial<Record<ElementType, ElementRaffleDrawFee>>;
export declare const elementRaffleDrawFeeOfBatch: (landId: LandId, provider: ethers.providers.Provider, callback?: CallbackType | undefined) => Promise<ElementRaffleDrawFeeOfBatchResponse>;
export declare const elementRaffleSmallDraw: (landId: LandId, signer: ethers.Signer, element: ElementType, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export declare const elementRaffleLargeDraw: (landId: LandId, signer: ethers.Signer, element: ElementType, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
export {};
