import type { Client } from "./_internal/client/index";
/** SDK version and default API version — sourced from generated version.ts */
import { SDK_VERSION, DEFAULT_API_VERSION } from "./version";
export { SDK_VERSION, DEFAULT_API_VERSION };
export interface BaseClientConfig {
    /** Base URL of the GPT Platform API */
    baseUrl?: string;
    /** User JWT token (Bearer auth) */
    token?: string;
    /** Application API key (x-application-key header) */
    apiKey?: string;
    /**
     * Application UUID for use in API call body attributes (e.g., application_id
     * when creating plans, agents, or other application-scoped resources).
     * NOT sent as a header — the server identifies the application from the API key.
     */
    applicationId?: string;
    /**
     * API version date to use for requests (e.g., "2025-12-03").
     * Defaults to the version this SDK was built against.
     * Pin this to a specific date to prevent breaking changes
     * when upgrading the SDK.
     */
    apiVersion?: string;
    /**
     * Default workspace ID appended as `?workspace_id=` to every request.
     * Use for server-side operations scoped to a specific workspace.
     */
    workspaceId?: string;
}
export interface RequestOptions {
    /** AbortSignal for cancellation */
    signal?: AbortSignal;
    /** Idempotency key override */
    idempotencyKey?: string;
    /** Additional headers for this request */
    headers?: Record<string, string>;
}
export declare abstract class BaseClient {
    protected config: BaseClientConfig;
    /** Per-instance HTTP client — isolated from all other BaseClient instances */
    protected clientInstance: Client;
    /** The effective API version used by this client instance */
    readonly apiVersion: string;
    constructor(config?: BaseClientConfig);
    protected requestWithRetry<T>(fn: () => Promise<T>): Promise<T>;
    protected unwrap<T>(resource: unknown): T;
    protected getHeaders(): Record<string, string>;
    /**
     * Switch the workspace context for all subsequent requests.
     */
    setWorkspaceId(workspaceId: string | undefined): void;
    /**
     * Get the current workspace ID, if set.
     */
    getWorkspaceId(): string | undefined;
}
//# sourceMappingURL=base-client.d.ts.map