import { APIClient, DataWrapper, type DataWrapperCtor, type OAuthGrantClientCredentialsRequest } from '@awell-health/extensions-core';
import { type PatientReadInputType, type PatientReadResponseType, type PatientCreateInputType, type PatientCreateResponseType, type PatientSearchInputType, type PatientSearchResponseType, type AppointmentReadResponseType, type AppointmentReadInputType, type DocumentReferenceCreateInputType, type DocumentReferenceCreateResponseType, type EncounterSearchResponseType, type EncounterSearchInputType, type EncounterReadInputType, type EncounterReadResponseType } from './schema';
import { type AxiosResponse } from 'axios';
export declare class CernerR4DataWrapper extends DataWrapper {
    getPatient(id: PatientReadInputType): Promise<AxiosResponse<PatientReadResponseType>>;
    createPatient(patient: PatientCreateInputType): Promise<AxiosResponse<PatientCreateResponseType>>;
    searchPatient(data: PatientSearchInputType): Promise<AxiosResponse<PatientSearchResponseType>>;
    getAppointment(id: AppointmentReadInputType): Promise<AxiosResponse<AppointmentReadResponseType>>;
    createDocumentReference(data: DocumentReferenceCreateInputType): Promise<AxiosResponse<DocumentReferenceCreateResponseType>>;
    getEncounter(id: EncounterReadInputType): Promise<AxiosResponse<EncounterReadResponseType>>;
    searchEncounter(data: EncounterSearchInputType): Promise<AxiosResponse<EncounterSearchResponseType>>;
}
interface CernerR4ClientConstructorProps {
    authUrl: string;
    requestConfig: Omit<OAuthGrantClientCredentialsRequest, 'grant_type'>;
    baseUrl: string;
}
export declare class CernerR4APIClient extends APIClient<CernerR4DataWrapper> {
    readonly ctor: DataWrapperCtor<CernerR4DataWrapper>;
    constructor({ authUrl, requestConfig, ...opts }: CernerR4ClientConstructorProps);
    getPatient(id: PatientReadInputType): Promise<AxiosResponse<PatientReadResponseType>>;
    createPatient(patient: PatientCreateInputType): Promise<AxiosResponse<PatientCreateResponseType>>;
    searchPatient(data: PatientSearchInputType): Promise<AxiosResponse<PatientSearchResponseType>>;
    getAppointment(id: AppointmentReadInputType): Promise<AxiosResponse<AppointmentReadResponseType>>;
    createDocumentReference(data: DocumentReferenceCreateInputType): Promise<AxiosResponse<DocumentReferenceCreateResponseType>>;
    searchEncounter(data: EncounterSearchInputType): Promise<AxiosResponse<EncounterSearchResponseType>>;
    getEncounter(id: EncounterReadInputType): Promise<AxiosResponse<EncounterReadResponseType>>;
}
export {};
