import type { Address, Peer, BalanceResponse, PeerBalance, ChequebookAddressResponse, ChequebookBalanceResponse, LastChequesResponse, LastChequesForPeerResponse, LastCashoutActionResponse, Settlements, AllSettlements, RemovePeerResponse, Topology, PingResponse, Health, NodeAddresses, ReserveState, ChainState, NumberString, ExtendedTag, PostageBatchBuckets, PostageBatch, TransactionInfo, TransactionHash, NodeInfo, BeeVersions, WalletBalance } from './types';
import { BatchId, BeeOptions, CashoutOptions, PostageBatchOptions, RequestOptions, Tag } from './types';
export declare class BeeDebug {
    /**
     * URL on which is the Debug API of Bee node exposed
     */
    readonly url: string;
    /**
     * Ky instance that defines connection to Bee node
     * @private
     */
    private readonly ky;
    constructor(url: string, options?: BeeOptions);
    getNodeAddresses(options?: RequestOptions): Promise<NodeAddresses>;
    getBlocklist(options?: RequestOptions): Promise<Peer[]>;
    /**
     * Retrieve tag extended information from Bee node
     *
     * @param tagUid UID or tag object to be retrieved
     * @throws TypeError if tagUid is in not correct format
     *
     * @see [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/access-the-swarm/syncing)
     * @see [Bee API reference - `GET /tags/{uid}`](https://docs.ethswarm.org/debug-api/#tag/Tag)
     *
     */
    retrieveExtendedTag(tagUid: number | Tag, options?: RequestOptions): Promise<ExtendedTag>;
    /**
     * Get list of peers for this node
     */
    getPeers(options?: RequestOptions): Promise<Peer[]>;
    removePeer(peer: string | Address, options?: RequestOptions): Promise<RemovePeerResponse>;
    getTopology(options?: RequestOptions): Promise<Topology>;
    pingPeer(peer: string | Address, options?: RequestOptions): Promise<PingResponse>;
    /**
     * Get the balances with all known peers including prepaid services
     */
    getAllBalances(options?: RequestOptions): Promise<BalanceResponse>;
    /**
     * Get the balances with a specific peer including prepaid services
     *
     * @param address Swarm address of peer
     */
    getPeerBalance(address: Address | string, options?: RequestOptions): Promise<PeerBalance>;
    /**
     * Get the past due consumption balances with all known peers
     */
    getPastDueConsumptionBalances(options?: RequestOptions): Promise<BalanceResponse>;
    /**
     * Get the past due consumption balance with a specific peer
     *
     * @param address Swarm address of peer
     */
    getPastDueConsumptionPeerBalance(address: Address | string, options?: RequestOptions): Promise<PeerBalance>;
    /**
     * Get the address of the chequebook contract used.
     *
     * **Warning:** The address is returned with 0x prefix unlike all other calls.
     * https://github.com/ethersphere/bee/issues/1443
     */
    getChequebookAddress(options?: RequestOptions): Promise<ChequebookAddressResponse>;
    /**
     * Get the balance of the chequebook
     */
    getChequebookBalance(options?: RequestOptions): Promise<ChequebookBalanceResponse>;
    /**
     * Get last cheques for all peers
     */
    getLastCheques(options?: RequestOptions): Promise<LastChequesResponse>;
    /**
     * Get last cheques for the peer
     *
     * @param address  Swarm address of peer
     */
    getLastChequesForPeer(address: Address | string, options?: RequestOptions): Promise<LastChequesForPeerResponse>;
    /**
     * Get last cashout action for the peer
     *
     * @param address  Swarm address of peer
     */
    getLastCashoutAction(address: Address | string, options?: RequestOptions): Promise<LastCashoutActionResponse>;
    /**
     * Cashout the last cheque for the peer
     *
     * @param address  Swarm address of peer
     * @param options
     * @param options.gasPrice Gas price for the cashout transaction in WEI
     * @param options.gasLimit Gas limit for the cashout transaction in WEI
     */
    cashoutLastCheque(address: string | Address, options?: CashoutOptions): Promise<string>;
    /**
     * Deposit tokens from overlay address into chequebook
     *
     * @param amount  Amount of tokens to deposit (must be positive integer)
     * @param gasPrice Gas Price in WEI for the transaction call
     * @return string  Hash of the transaction
     */
    depositTokens(amount: number | NumberString, gasPrice?: NumberString, options?: RequestOptions): Promise<string>;
    /**
     * Withdraw tokens from the chequebook to the overlay address
     *
     * @param amount  Amount of tokens to withdraw (must be positive integer)
     * @param gasPrice Gas Price in WEI for the transaction call
     * @return string  Hash of the transaction
     */
    withdrawTokens(amount: number | NumberString, gasPrice?: NumberString, options?: RequestOptions): Promise<string>;
    /**
     * Get amount of sent and received from settlements with a peer
     *
     * @param address  Swarm address of peer
     */
    getSettlements(address: Address | string, options?: RequestOptions): Promise<Settlements>;
    /**
     * Get settlements with all known peers and total amount sent or received
     */
    getAllSettlements(options?: RequestOptions): Promise<AllSettlements>;
    /**
     * Get health of node
     */
    getHealth(options?: RequestOptions): Promise<Health>;
    /**
     * Get mode information of node
     */
    getNodeInfo(options?: RequestOptions): Promise<NodeInfo>;
    /**
     * Connnects to a node and checks if it is a supported Bee version by the bee-js
     *
     * @returns true if the Bee node version is supported
     * @deprecated Use `BeeDebug.isSupportedExactVersion()` instead
     */
    isSupportedVersion(options?: RequestOptions): Promise<boolean> | never;
    /**
     * Connects to a node and checks if its version matches with the one that bee-js supports.
     *
     * Be aware that this is the most strict version check and most probably
     * you will want to use more relaxed API-versions based checks like
     * `BeeDebug.isSupportedApiVersion()`, `BeeDebug.isSupportedMainApiVersion()` or `BeeDebug.isSupportedDebugApiVersion()`
     * based on your use-case.
     *
     * @param options
     */
    isSupportedExactVersion(options?: RequestOptions): Promise<boolean> | never;
    /**
     * Connects to a node and checks if its main's API version matches with the one that bee-js supports.
     *
     * This is useful if you are not using `BeeDebug` class (for anything else then this check)
     * and want to make sure about compatibility.
     *
     * @param options
     */
    isSupportedMainApiVersion(options?: RequestOptions): Promise<boolean> | never;
    /**
     * Connects to a node and checks if its Debug API version matches with the one that bee-js supports.
     *
     * This is useful if you are not using `Bee` class in your application and want to make sure
     * about compatibility.
     *
     * @param options
     */
    isSupportedDebugApiVersion(options?: RequestOptions): Promise<boolean> | never;
    /**
     *
     * Connects to a node and checks if its Main and Debug API versions matches with the one that bee-js supports.
     *
     * This should be the main way how to check compatibility for your app and Bee node.
     *
     * @param options
     */
    isSupportedApiVersion(options?: RequestOptions): Promise<boolean> | never;
    /**
     * Returns object with all versions specified by the connected Bee node (properties prefixed with `bee*`)
     * and versions that bee-js supports (properties prefixed with `supported*`).
     *
     * @param options
     */
    getVersions(options?: RequestOptions): Promise<BeeVersions> | never;
    /**
     * Get reserve state
     */
    getReserveState(options?: RequestOptions): Promise<ReserveState>;
    /**
     * Get chain state
     */
    getChainState(options?: RequestOptions): Promise<ChainState>;
    /**
     * Get wallet balances for xDai and BZZ of the Bee node
     *
     * @param options
     */
    getWalletBalance(options?: RequestOptions): Promise<WalletBalance>;
    /**
     * Creates new postage batch from the funds that the node has available in its Ethereum account.
     *
     * For better understanding what each parameter means and what are the optimal values please see
     * [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive).
     *
     * **WARNING: THIS CREATES TRANSACTIONS THAT SPENDS MONEY**
     *
     * @param amount Amount that represents the value per chunk, has to be greater or equal zero.
     * @param depth Logarithm of the number of chunks that can be stamped with the batch.
     * @param options Options for creation of postage batch
     * @throws BeeArgumentError when negative amount or depth is specified
     * @throws TypeError if non-integer value is passed to amount or depth
     *
     * @see [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive)
     * @see [Bee Debug API reference - `POST /stamps`](https://docs.ethswarm.org/debug-api/#tag/Postage-Stamps/paths/~1stamps~1{amount}~1{depth}/post)
     */
    createPostageBatch(amount: NumberString, depth: number, options?: PostageBatchOptions): Promise<BatchId>;
    /**
     * Topup a fresh amount of BZZ to given Postage Batch.
     *
     * For better understanding what each parameter means and what are the optimal values please see
     * [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive).
     *
     * **WARNING: THIS CREATES TRANSACTIONS THAT SPENDS MONEY**
     *
     * @param postageBatchId Batch ID
     * @param amount Amount to be added to the batch
     * @param options Request options
     *
     * @see [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive)
     * @see [Bee Debug API reference - `PATCH /stamps/topup/${id}/${amount}`](https://docs.ethswarm.org/debug-api/#tag/Postage-Stamps/paths/~1stamps~1topup~1{id}~1{amount}/patch)
     */
    topUpBatch(postageBatchId: BatchId | string, amount: NumberString, options?: RequestOptions): Promise<void>;
    /**
     * Dilute given Postage Batch with new depth (that has to be bigger then the original depth), which allows
     * the Postage Batch to be used for more chunks.
     *
     * For better understanding what each parameter means and what are the optimal values please see
     * [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive).
     *
     * **WARNING: THIS CREATES TRANSACTIONS THAT SPENDS MONEY**
     *
     * @param postageBatchId Batch ID
     * @param depth Amount to be added to the batch
     * @param options Request options
     *
     * @see [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive)
     * @see [Bee Debug API reference - `PATCH /stamps/topup/${id}/${amount}`](https://docs.ethswarm.org/debug-api/#tag/Postage-Stamps/paths/~1stamps~1topup~1{id}~1{amount}/patch)
     */
    diluteBatch(postageBatchId: BatchId | string, depth: number, options?: RequestOptions): Promise<void>;
    /**
     * Return details for specific postage batch.
     *
     * @param postageBatchId Batch ID
     *
     * @see [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive)
     * @see [Bee Debug API reference - `GET /stamps/${id}`](https://docs.ethswarm.org/debug-api/#tag/Postage-Stamps/paths/~1stamps~1{id}/get)
     */
    getPostageBatch(postageBatchId: BatchId | string, options?: RequestOptions): Promise<PostageBatch>;
    /**
     * Return detailed information related to buckets for specific postage batch.
     *
     * @param postageBatchId Batch ID
     *
     * @see [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive)
     * @see [Bee Debug API reference - `GET /stamps/${id}/buckets`](https://docs.ethswarm.org/debug-api/#tag/Postage-Stamps/paths/~1stamps~1{id}~1buckets/get)
     */
    getPostageBatchBuckets(postageBatchId: BatchId | string, options?: RequestOptions): Promise<PostageBatchBuckets>;
    /**
     * Return all postage batches that has the node available.
     *
     * @see [Bee docs - Keep your data alive / Postage stamps](https://docs.ethswarm.org/docs/access-the-swarm/keep-your-data-alive)
     * @see [Bee Debug API reference - `GET /stamps`](https://docs.ethswarm.org/debug-api/#tag/Postage-Stamps/paths/~1stamps/get)
     */
    getAllPostageBatch(options?: RequestOptions): Promise<PostageBatch[]>;
    /**
     * Return lists of all current pending transactions that the Bee made
     */
    getAllPendingTransactions(options?: RequestOptions): Promise<TransactionInfo[]>;
    /**
     * Return transaction information for specific transaction
     * @param transactionHash
     */
    getPendingTransaction(transactionHash: TransactionHash | string, options?: RequestOptions): Promise<TransactionInfo>;
    /**
     * Rebroadcast already created transaction.
     * This is mainly needed when your transaction fall off mempool from other reason is not incorporated into block.
     *
     * @param transactionHash
     */
    rebroadcastPendingTransaction(transactionHash: TransactionHash | string, options?: RequestOptions): Promise<TransactionHash>;
    /**
     * Cancel currently pending transaction
     * @param transactionHash
     * @param gasPrice
     */
    cancelPendingTransaction(transactionHash: TransactionHash | string, gasPrice?: NumberString, options?: RequestOptions): Promise<TransactionHash>;
    private waitForUsablePostageStamp;
    private getKy;
}
