import { Observable } from "rxjs";
import type { AccountDescriptor } from "@ledgerhq/coin-bitcoin/descriptor";
export declare function setMockStatus(s: SatStackStatus): void;
export type RPCNodeConfig = {
    host: string;
    username: string;
    password: string;
    tls?: boolean;
    notls?: boolean;
};
export declare function isValidHost(host: string): boolean;
export declare function validateRPCNodeConfig(config: RPCNodeConfig): Array<{
    field: string;
    error: Error;
}>;
export declare function checkRPCNodeConfig(config: RPCNodeConfig): Promise<void>;
export type SatStackConfig = {
    node: RPCNodeConfig;
    accounts: Array<{
        descriptor: AccountDescriptor;
        extra?: Record<string, any>;
    }>;
    extra?: Record<string, any>;
};
export declare function parseSatStackConfig(json: string): SatStackConfig | null | undefined;
export declare function stringifySatStackConfig(config: SatStackConfig): string;
export declare function editSatStackConfig(existing: SatStackConfig, edit: Partial<SatStackConfig>): SatStackConfig;
export type SatStackStatus = {
    type: "satstack-outdated";
    progress?: undefined;
} | {
    type: "satstack-disconnected";
    progress?: undefined;
} | {
    type: "node-disconnected";
    progress?: undefined;
} | {
    type: "invalid-chain";
    found: string;
    progress?: undefined;
} | {
    type: "initializing";
    progress?: undefined;
} | {
    type: "syncing";
    progress: number;
} | {
    type: "scanning";
    progress: number;
} | {
    type: "ready";
    progress?: undefined;
};
export declare function isSatStackEnabled(): boolean;
export declare function fetchSatStackStatus(): Promise<SatStackStatus>;
export declare function checkDescriptorExists(descriptor: string): Promise<boolean>;
export declare function requiresSatStackReady(): Promise<void>;
export declare const statusObservable: Observable<SatStackStatus>;
//# sourceMappingURL=satstack.d.ts.map