import type { Xumm } from "xumm";
import { XamanXrplNetwork, XrplNetwork, XrplTransaction } from "../../core/types/xrpl";
interface XamanQrDataResponse {
    qrMatrix: boolean[][];
    wsStatusUrl: string;
    deepLinkUrl: string;
}
/**
 * Client to interact with the Xaman backend through a Squid proxy.
 * Retrieves the QR code data for the following methods:
 * - sign in
 * - get user session
 * - send tx
 */
export declare abstract class XamanClient {
    static baseUrl: string;
    static signIn(signal?: AbortSignal): Promise<XamanQrDataResponse>;
    static userSession(payload: string, signal?: AbortSignal): Promise<{
        response: {
            account: string;
        };
    }>;
    static sendTx({ tx, signal, network, }: {
        tx: XrplTransaction;
        signal?: AbortSignal;
        network: XrplNetwork;
    }): Promise<XamanQrDataResponse>;
    static fetch<T>(endpoint: string, body?: Record<string, any>, signal?: AbortSignal): Promise<T>;
    static getXamanNetwork(network: XrplNetwork): XamanXrplNetwork;
}
export declare function isXamanXAppContext(): boolean;
/**
 * Initializes the Xumm sdk on client-side, if not already initialized.
 * Returns null on server-side.
 *
 * the Xumm constructor can run in 3 different environments: Server, Browser, and xApp (Xaman's embedded browser)
 * When running on the server, the constructor needs both App ID and API secret
 * When running in xApp or browser envs, the constructor only needs the App ID
 * We avoid initializing the Xumm instance on the server
 * as it would throw an error during SRR (API secret is required in server env).
 */
export declare function getXummClient(): Promise<Xumm | null>;
export {};
