import { BigNumber, Signer, ContractTransaction } from 'ethers';
import { UFOMarketplaceConfig, NFTInfo, UAPClaimInfo, BucketInfo, WeaponInfo, LootBuySellInfo, PurchaseType } from './types';
export declare class ufoMarketplaceSDK {
    private signer;
    private config;
    private galaticFactory;
    private plasma;
    private usdtToken;
    private wETHToken;
    private netId;
    constructor(_signer: Signer, _config: UFOMarketplaceConfig, _netID: string);
    sleep(ms: number): Promise<void>;
    nftHasApprovalToMarketplace(contractAddr: string, nftId: string): Promise<boolean>;
    approveNftToMarketplace(contractAddr: string, nftId: string): Promise<ContractTransaction>;
    wETHAllowance(amount: string): Promise<boolean>;
    wETHBalance(): Promise<string>;
    getNFTCurrentSupply(contractAddr: string): Promise<number>;
    revealNft(): Promise<ContractTransaction>;
    test(): Promise<void>;
    batchMintGalaticNFT(categoryIds: [number], amounts: [number], type: PurchaseType, merkleProof: string[]): Promise<ContractTransaction>;
    private batchMintGalaticNFTByPlasma;
    private batchMintGalaticNFTByBeam;
    private batchMintGalaticNFTByUsdt;
    plasmaAmountPerNFT(): Promise<string>;
    getWETHAllowanceOfNFTFactory(): Promise<string>;
    getWETHAllowanceOfMarketplace(): Promise<string>;
    private getAddressOfPriceToken;
    approveToken(price_unit: string, spender: string, amount: string): Promise<ContractTransaction>;
    hasApprovalToken(price_unit: string, spnder: string, amount: string): Promise<boolean>;
    approveWETHToMarketplace(): Promise<ContractTransaction>;
    approveWETHToNFTFactory(amount: BigNumber): Promise<ContractTransaction>;
    hasWETHApprovalOfMarketplace(amount: string): Promise<boolean>;
    hasPlasmaApprovalOfNFTFactory(amount: string): Promise<boolean>;
    approveUsdtToNFTFactory(price: number): Promise<ContractTransaction>;
    approvePlasmaToNFTFactory(price: number): Promise<ContractTransaction>;
    approvePlasmaToMarketplace(): Promise<ContractTransaction>;
    private getPlasmaAllowanceOfNFTFactory;
    getNftAddresses(): Promise<string[]>;
    /**
     * buy and sell weapon
     * buy and sell type depends on buySellType variable of LootBuySellInfo structre
     */
    buySellWeaponNFT(v: BigNumber, r: string, s: string, data: LootBuySellInfo): Promise<ContractTransaction>;
    /**
     * this function is called by buyer to purchase the
     */
    purchaseLoot(quantity: BigNumber, tokenType: BigNumber): Promise<ContractTransaction>;
    /**
     * this function is called by sender to send some loot as gift
     * this function is depricated because this function only transfer the loot box to receiver
     */
    /**
     * this function is called by buyer to purchase the
     */
    purchaseLootAndSendGift(quantity: BigNumber, giftReceiver: string, tokenType: BigNumber): Promise<ContractTransaction>;
    /**
     * this function is called by opener who open the loot
     */
    openLoot(v: BigNumber, r: string, s: string, data: WeaponInfo): Promise<ContractTransaction>;
    /**
     * update the weapon by weapon owner
     */
    updateWeapon(weaponId: BigNumber): Promise<ContractTransaction>;
    /**
     * this function is called by buyer on fixed sell item
     */
    buyNFT(v: BigNumber, r: string, s: string, data: NFTInfo): Promise<ContractTransaction>;
    /**
     * this function is called by seller on auction sell. seller accept one bid in many bids
     */
    sellNFT(v: BigNumber, r: string, s: string, data: NFTInfo): Promise<ContractTransaction>;
    claimUAP(v: BigNumber, r: string, s: string, data: UAPClaimInfo): Promise<ContractTransaction>;
    purchaseCartItems(v: BigNumber, r: string, s: string, data: BucketInfo): Promise<ContractTransaction>;
}
