/**
 * Lightweight HTTP client for talking to a running Markus API server.
 * Used by all CLI commands except `start`, `init`, and `db:init`.
 */
export interface ApiClientOptions {
    server: string;
    apiKey?: string;
}
export declare class ApiError extends Error {
    readonly status: number;
    readonly body: unknown;
    constructor(status: number, body: unknown);
}
export declare class ApiClient {
    private baseUrl;
    private headers;
    constructor(opts: ApiClientOptions);
    get<T = unknown>(path: string, query?: Record<string, string | undefined>): Promise<T>;
    post<T = unknown>(path: string, body?: unknown): Promise<T>;
    put<T = unknown>(path: string, body?: unknown): Promise<T>;
    patch<T = unknown>(path: string, body?: unknown): Promise<T>;
    delete<T = unknown>(path: string, query?: Record<string, string | undefined>): Promise<T>;
    private buildUrl;
    private request;
}
/** Resolve ApiClient from commander global opts */
export declare function createClient(opts: {
    server?: string;
    apiKey?: string;
}): ApiClient;
//# sourceMappingURL=api-client.d.ts.map