import Api from "./lib/api";
import CryptoInterface, { SignatureOptions } from "./lib/crypto/crypto-interface";
import Transaction from "./lib/transaction";
import { JWKInterface } from "./lib/wallet";
import { TransactionUploader, SerializedUploader } from "./lib/transaction-uploader";
import Chunks from "./chunks";
import "arconnect";
export interface TransactionConfirmedData {
    block_indep_hash: string;
    block_height: number;
    number_of_confirmations: number;
}
export interface TransactionStatusResponse {
    status: number;
    confirmed: TransactionConfirmedData | null;
}
export default class Transactions {
    private api;
    private crypto;
    private chunks;
    constructor(api: Api, crypto: CryptoInterface, chunks: Chunks);
    getTransactionAnchor(): Promise<string>;
    getPrice(byteSize: number, targetAddress?: string): Promise<string>;
    get(id: string): Promise<Transaction>;
    fromRaw(attributes: object): Transaction;
    /** @deprecated use GQL https://gql-guide.arweave.net */
    search(tagName: string, tagValue: string): Promise<string[]>;
    getStatus(id: string): Promise<TransactionStatusResponse>;
    getData(id: string, options?: {
        decode?: boolean;
        string?: boolean;
    }): Promise<string | Uint8Array>;
    sign(transaction: Transaction, jwk?: JWKInterface | "use_wallet", //"use_wallet" for backwards compatibility only
    options?: SignatureOptions): Promise<void>;
    verify(transaction: Transaction): Promise<boolean>;
    post(transaction: Transaction | Buffer | string | object): Promise<{
        status: number;
        statusText: string;
        data: any;
    }>;
    /**
     * Gets an uploader than can be used to upload a transaction chunk by chunk, giving progress
     * and the ability to resume.
     *
     * Usage example:
     *
     * ```
     * const uploader = arweave.transactions.getUploader(transaction);
     * while (!uploader.isComplete) {
     *   await uploader.uploadChunk();
     *   console.log(`${uploader.pctComplete}%`);
     * }
     * ```
     *
     * @param upload a Transaction object, a previously save progress object, or a transaction id.
     * @param data the data of the transaction. Required when resuming an upload.
     */
    getUploader(upload: Transaction | SerializedUploader | string, data?: Uint8Array | ArrayBuffer): Promise<TransactionUploader>;
    /**
     * Async generator version of uploader
     *
     * Usage example:
     *
     * ```
     * for await (const uploader of arweave.transactions.upload(tx)) {
     *  console.log(`${uploader.pctComplete}%`);
     * }
     * ```
     *
     * @param upload a Transaction object, a previously save uploader, or a transaction id.
     * @param data the data of the transaction. Required when resuming an upload.
     */
    upload(upload: Transaction | SerializedUploader | string, data: Uint8Array): AsyncGenerator<TransactionUploader, TransactionUploader, unknown>;
}
