import type { SdapiBreakpoint, SdapiEvalResult, SdapiFault, SdapiObjectMembers, SdapiScriptThread, BreakpointInput } from './types.js';
/**
 * Error thrown when the SDAPI returns a fault response.
 */
export declare class SdapiError extends Error {
    readonly fault: SdapiFault;
    readonly status: number;
    constructor(fault: SdapiFault, status: number);
}
export interface SdapiClientConfig {
    hostname: string;
    username: string;
    password: string;
    clientId?: string;
}
/**
 * Creates a new SDAPI client.
 */
export declare function createSdapiClient(config: SdapiClientConfig): SdapiClient;
export declare class SdapiClient {
    private readonly baseUrl;
    private readonly headers;
    private readonly logger;
    constructor(config: SdapiClientConfig);
    createClient(): Promise<void>;
    deleteClient(): Promise<void>;
    getBreakpoints(): Promise<SdapiBreakpoint[]>;
    setBreakpoints(breakpoints: BreakpointInput[]): Promise<SdapiBreakpoint[]>;
    deleteBreakpoints(): Promise<void>;
    deleteBreakpoint(id: number): Promise<void>;
    getThreads(): Promise<SdapiScriptThread[]>;
    getThread(threadId: number): Promise<SdapiScriptThread>;
    resetThreads(): Promise<void>;
    resume(threadId: number): Promise<SdapiScriptThread>;
    stepOver(threadId: number): Promise<SdapiScriptThread>;
    stepInto(threadId: number): Promise<SdapiScriptThread>;
    stepOut(threadId: number): Promise<SdapiScriptThread>;
    stopThread(threadId: number): Promise<void>;
    getVariables(threadId: number, frameIndex: number): Promise<SdapiObjectMembers>;
    getMembers(threadId: number, frameIndex: number, objectPath?: string, start?: number, count?: number): Promise<SdapiObjectMembers>;
    evaluate(threadId: number, frameIndex: number, expr: string): Promise<SdapiEvalResult>;
    private request;
    private throwSdapiError;
}
