import { AxiosError } from 'axios';
import jsonpatch from 'fast-json-patch';
import { IAgentManager, ISTSLogger } from '@nsshunt/stsutils';
import { Bundle, Resource } from './../fhir-ts/index.js';
import { IFhirResponse, IFhirClient } from './commonTypes.js';
export interface IFhirRESTClient {
    GetAccessToken: () => Promise<string>;
    agentManager?: IAgentManager;
    endpoint: string;
    stsfhirport: string;
    stsfhirapiroot: string;
    user: string;
    logger: ISTSLogger;
    onRetryAttempt?: (attempt: number, error: AxiosError, delayMs: number) => void;
}
export declare class FhirRESTClient implements IFhirClient {
    #private;
    constructor(options: IFhirRESTClient);
    protected BaseUrl(): string;
    protected HandleError: (error: any) => void;
    protected LogError: (method: string, error: any) => void;
    protected LogWarning: (method: string, message: any) => void;
    ProcessBatchOrTransactionResources: (bundle: Bundle) => Promise<IFhirResponse>;
    GetResources: (searchUrl: URL) => Promise<IFhirResponse>;
    GetHistoryFhirResources: (searchUrl: URL) => Promise<IFhirResponse>;
    GetHistoryFhirResource: (searchUrl: URL) => Promise<IFhirResponse>;
    GetAllFhirResources: (searchUrl: URL) => Promise<IFhirResponse>;
    GetResource: (resourceType: string, resourceId: string) => Promise<IFhirResponse>;
    PutResource: (resourceType: string, domainResource: Resource, versionIdETag: string) => Promise<IFhirResponse>;
    PatchResource: (resourceType: string, resourceId: string, domainResource: Partial<Resource> | jsonpatch.Operation[], contentType: string, versionIdETag: string) => Promise<IFhirResponse>;
    PostResource: (resourceType: string, domainResource: Resource) => Promise<IFhirResponse>;
    GetHistoryInstanceFhirResource: (resourceType: string, resourceId: string, versionId: string) => Promise<IFhirResponse>;
    protected ExtractNumber(str: string): number | null;
    DeleteResource: (resourceType: string, resourceId: string, versionIdETag: string) => Promise<IFhirResponse>;
    GetMetadata: () => Promise<IFhirResponse>;
    GetLatency: (params: any) => Promise<any>;
    GenericSearchTesting: (resourceType: string, params: any) => Promise<IFhirResponse>;
}
//# sourceMappingURL=fhirRESTClient.d.ts.map