import { JWKInterface } from "arweave/node/lib/wallet";
import { Struct } from "superstruct";
import winston from "winston";
import { BigNumber } from "../../utils/BigNumberUtils";
export interface ArweaveGatewayConfig {
    host: string;
    protocol?: string;
    port?: number;
}
export declare const DEFAULT_ARWEAVE_GATEWAYS: ArweaveGatewayConfig[];
export declare class ArweaveClient {
    private arweaveJWT;
    private logger;
    private readonly retries;
    private readonly retryDelaySeconds;
    private gateways;
    constructor(arweaveJWT: JWKInterface, logger: winston.Logger, gateways?: ArweaveGatewayConfig[], retries?: number, retryDelaySeconds?: number);
    private _raceGateways;
    private _failoverGateways;
    private _retryRequest;
    private _isNotFoundError;
    private _wrapWriteError;
    set(value: Record<string, unknown>, topicTag?: string | undefined): Promise<string | undefined>;
    get<T>(transactionID: string, validator: Struct<T>): Promise<T | null>;
    getByTopic<T>(tag: string, validator: Struct<T>, originQueryAddress?: string): Promise<{
        data: T;
        hash: string;
    }[]>;
    getMetadata(transactionID: string): Promise<Record<string, string> | null>;
    getAddress(): Promise<string>;
    getBalance(): Promise<BigNumber>;
}
