import type { IPlainTransactionObject } from '@multiversx/sdk-core/out/interface';
import type { NftData } from '..';
import type { GlobalOffer } from '../types/collection';
import type { AcceptGlobalOffer, Auction, ChangeListing, NewListingArgs, Payment, SendCustomOffer, SendGlobalOffer, WithSenderAndNonce } from '../types/interactions';
export declare class SCInteraction {
    private xo;
    private call;
    private api;
    private config;
    private factory;
    private constructor();
    static init(): Promise<SCInteraction>;
    private getResult;
    /**
     * Gets the percentage of each transaction that will be paid to the marketplace.
     *
     * @returns The percentage of each transaction that will be paid to the marketplace.
     */
    getMarketplaceFees: () => Promise<number>;
    /**
     * Retrieves the list of accepted payment tokens.
     * @returns {string[]} A list of accepted payment tokens.
     */
    getAcceptedPaymentTokens: () => Promise<string[]>;
    /**
     * This function returns a list of IDs of global offers.
     * @returns {number[]} a list of IDs of global offers.
     */
    getGlobalOfferIDs: () => Promise<number[]>;
    /**
     * Gets the balance of a user in a token of a specific pool.
     * @param address The address of the user.
     * @param token The token address.
     * @param nonce The nonce of the pool.
     * @returns {number} The balance of the user in the token of the pool.
     */
    getUserPoolBalance(address: string, token: string, nonce: number): Promise<number>;
    private isOfferActive;
    /**
     * Returns the global offer data for the offer with the given id.
     *
     * @param global_offer_id The id of the global offer for which to return the data.
     *
     * @returns An object containing the global offer data for the offer with the given id. If the global offer id is invalid, the return value will be null.
     */
    getGlobalOfferData: (global_offer_id: number) => Promise<GlobalOffer>;
    /**
     * Returns the auction struct for the given id.
     *
     * @param auctionID The id of the auction for which to return the data.
     *
     * @returns {Auction} An object containing the auction data for the given id. If the auction id is invalid, the return value will be null.
     */
    getAuctionInfo: (auctionID: number) => Promise<Auction | null>;
    /** Gets the number of listings.
     * @returns {number} The number of listings.
     * */
    getListingsCount(): Promise<number>;
    /** Gets the number of custom offers.
     * @returns {number} The number of custom offers.
     * */
    getOffersCount(): Promise<number>;
    /** Gets the number of global offers.
     * @returns {number} The number of global offers.
     * */
    getGlobalOffersCount(): Promise<number>;
    /** Gets the number of collections listed.
     * @returns {number} The number of collections listed.
     * */
    getCollectionsCount(): Promise<number>;
    /**
     * Checks whether a collection is listed with at least 1 NFT.
     *
     * @param collection name of the collection
     * @return true if the collection is listed, false otherwise
     */
    isCollectionListed(collection: string): Promise<boolean>;
    /** Gets the on sale NFT count of the collection.
     *
     * @param collection The collection identifier for which one wants to get the on sale NFT count.
     *
     * @returns {number} The on sale NFT count of the collection.
     * */
    getCollectionNFTsOnSaleCount(collection: string): Promise<number>;
    /** Gets the active unique auction IDs of collection.
     *
     * @param collection The collection identifier for which one wants to get the active unique auction IDs.
     *
     * @returns {number[]} The active unique auction IDs of collection.
     * */
    getAuctionIDsForCollection(collection: string): Promise<number[]>;
    /**
     * Withdraw auctions from the smart contract.
     *
     * @param auctionIDs The IDs of the auctions to withdraw from
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    withdrawAuctions({ auctionIDs, sender, market, signature, }: {
        auctionIDs: number[];
        sender: WithSenderAndNonce;
        signature?: string;
        market?: string;
    }): IPlainTransactionObject[];
    /**
     * Withdraw global offer from the smart contract.
     *
     * @param auctionIDs The IDs of the global offer to withdraw
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    withdrawGlobalOffer(offerID: number, market: string | undefined, senderNonce: WithSenderAndNonce): IPlainTransactionObject;
    /**
     * Accept a global offer
     *
     * @param offerID The offer ID
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    acceptGlobalOffer({ signature, offer_id, auction_ids_opt, market, nfts, address, nonce, }: AcceptGlobalOffer & WithSenderAndNonce): IPlainTransactionObject;
    /**
     * Send a global offer
     * @param payment_token The token used for payment
     * @param payment_nonce The nonce of the payment token
     * @param price The price of the offer
     * @param collection The collection of the NFT
     * @param attributes The attributes of the NFT
     * @param depositAmount The deposit amount
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     * */
    sendGlobalOffer({ payment_token, payment_nonce, price, collection, quantity, attributes, depositAmount, address, nonce, }: SendGlobalOffer & WithSenderAndNonce): IPlainTransactionObject;
    /**
     * Send a custom offer
     * @param payment_token The token used for payment
     * @param payment_nonce The nonce of the payment token
     * @param price The price of the offer
     * @param deadline The deadline of the offer
     * @param nft The NFT to be sold
     * @param depositAmount The deposit amount
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     * */
    sendCustomOffer({ payment_token, payment_nonce, price, deadline, nft, depositAmount, address, nonce, }: SendCustomOffer & WithSenderAndNonce): IPlainTransactionObject;
    /**
     * Withdraws a custom offer
     *
     * @param offerID The offer ID
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    withdrawCustomOffer(offerID: number, senderNonce: WithSenderAndNonce, market: string): IPlainTransactionObject;
    /**
     * Decline a custom offer
     *
     * @param offerID The offer ID
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    declineCustomOffer(offerID: number, sender: WithSenderAndNonce, nft: NftData, market: string): IPlainTransactionObject;
    /**
     * Accept a custom offer
     *
     * @param offerID The offer ID
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    acceptCustomOffer(offerID: number, sender: WithSenderAndNonce, nft: NftData, market: string): IPlainTransactionObject;
    /**
     * @public
     * @function endAuction
     * @param {number} auctionID - The unique identifier of the auction.
     * @returns {IPlainTransactionObject} The resulting interaction with the specified chainID and gas limit.
     *
     * This function allows ending an auction by its auctionID. It takes the following parameter:
     * - auctionID (number): The unique identifier of the auction.
     *
     * The function calls the `endAuction` method on the smart contract with the provided auctionID.
     * Finally, it returns the resulting interaction with the specified chainID and gas limit.
     */
    endAuction(auctionID: number, sender: WithSenderAndNonce, market?: string): IPlainTransactionObject;
    /**
     * Bid on an auction
     *
     * @param auctionID The auction ID
     * @param collection The NFT Collection
     * @param nonce The NFT nonce
     * @param payment The payment object
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    bidOnAuctionId(auctionID: number, collection: string, nonce: number, payment: Payment, sender: WithSenderAndNonce): IPlainTransactionObject;
    /**
     * Bulk buy  auctions
     *
     * @param auctionIDs The auction IDs
     * @param payment The payment object
     * @returns {IPlainTransactionObject} The interaction object of the smart contract
     */
    bulkBuy(auctionIDs: number[], payment: Payment, sender: WithSenderAndNonce): IPlainTransactionObject;
    /**
     * @public
     * @async
     * @function buyAuctionById
     * @param {Object} options - An object containing the necessary parameters to buy an auction.
     * @param {number} options.auctionID - The unique identifier of the auction.
     * @param {string} [options.collection] - The collection the auctioned token belongs to (optional).
     * @param {number} [options.nonce] - The nonce of the auctioned token (optional).
     * @param {number} [options.quantity=1] - The quantity of tokens to buy (default is 1).
     * @param {string} [options.token='EGLD'] - The payment token (default is 'EGLD').
     * @param {number} [options.paymentAmount] - The payment amount for the auction (optional).
     * @param {boolean} [options.withCheck=true] - Whether to check the auction information (default is true).
     * @param {boolean} [options.isBigUintPayment=false] - Whether the payment amount is a big integer (default is false).
     * @returns {Promise<IPlainTransactionObject>} The resulting interaction with the specified chainID and gas limit.
     *
     * This function allows a user to buy an auction by its auctionID. It takes an object with the following properties:
     * - auctionID (number): The unique identifier of the auction.
     * - collection (string, optional): The collection the auctioned token belongs to.
     * - nonce (number, optional): The nonce of the auctioned token.
     * - quantity (number, optional): The quantity of tokens to buy (default is 1).
     * - token (string, optional): The payment token (default is 'EGLD').
     * - paymentAmount (number, optional): The payment amount for the auction.
     * - withCheck (boolean, optional): Whether to check the auction information (default is true).
     * - isBigUintPayment (boolean, optional): Whether the payment amount is a big integer (default is false).
     *
     * The function first checks if the auction exists and if its type is NFT or SftOnePerPayment. If not, an error is thrown.
     * Then, it calculates the payment amount and calls the `buy` method on the smart contract with the provided parameters.
     * Finally, the function returns the resulting interaction with the specified chainID and gas limit.
     */
    buyAuctionById({ auctionID, collection, nonce, paymentAmount, quantity, token, withCheck, isBigUintPayment, isBid, decimals, market, sender, }: {
        auctionID: number;
        collection?: string;
        nonce?: number;
        quantity?: number;
        token?: string;
        paymentAmount?: string;
        withCheck?: boolean;
        isBigUintPayment?: boolean;
        isBid?: boolean;
        market?: string;
        decimals?: number;
        sender: WithSenderAndNonce;
    }): Promise<IPlainTransactionObject>;
    /**
     * @docutype
     * @public
     * @async
     * @function changeListing
     * @param {ChangeListing[]} listings - An array of objects containing the information needed to change a listing.
     * @returns {IPlainTransactionObject} The resulting interaction with the specified chainID and gas limit.
     *
     * This function takes an array of `ChangeListing` objects and constructs `Struct` instances using the provided
     * information. Each `ChangeListing` object should have the following properties:
     * - paymentToken (string): The identifier of the payment token type.
     * - price (BigInt): The new price for the listing.
     * - auctionID (number): The unique identifier of the auction.
     * - deadline (number): The deadline (in Unix time) for the listing.
     *
     * The function then calls the `changeListing` method on the smart contract and returns the resulting interaction
     * with the specified chainID and gas limit.
     */
    changeListing(listings: ChangeListing[], sender: WithSenderAndNonce, marketplace: string): Promise<IPlainTransactionObject>;
    listNFTs(listings: NewListingArgs[], sender: WithSenderAndNonce): Promise<IPlainTransactionObject>;
}
//# sourceMappingURL=index.d.ts.map