import { APIClient, DataWrapper, type DataWrapperCtor, type OAuthGrantClientCredentialsRequest } from '@awell-health/extensions-core';
import { type CreateAppointmentNoteInputType } from '../actions/createAppointmentNote/config/fields';
import { type CreatePatientInputType } from '../actions/createPatient/config/fields';
import { type PatientSchemaType, type AppointmentSchemaType, type CreateAppointmentNoteResponseType, type AddClinicalDocumentToPatientChartInputType, type AddClinicalDocumentToPatientChartResponseType, type CreatePatientResponseType } from './schema';
export declare class AthenaDataWrapper extends DataWrapper {
    createPatient({ practiceId, data, }: {
        practiceId: string;
        data: Omit<CreatePatientInputType, 'practiceid'>;
    }): Promise<CreatePatientResponseType>;
    getPatient({ practiceId, patientId, }: {
        practiceId: string;
        patientId: string;
    }): Promise<PatientSchemaType>;
    getAppointment({ practiceId, appointmentId, }: {
        practiceId: string;
        appointmentId: string;
    }): Promise<AppointmentSchemaType>;
    createAppointmentNote({ practiceId, appointmentId, data, }: {
        practiceId: string;
        appointmentId: string;
        data: Omit<CreateAppointmentNoteInputType, 'practiceid' | 'appointmentid'>;
    }): Promise<CreateAppointmentNoteResponseType>;
    addClinicalDocumentToPatientChart({ practiceId, patientId, data, }: {
        practiceId: string;
        patientId: string;
        data: AddClinicalDocumentToPatientChartInputType;
    }): Promise<AddClinicalDocumentToPatientChartResponseType>;
}
interface AthenaClientConstructorProps {
    authUrl: string;
    requestConfig: Omit<OAuthGrantClientCredentialsRequest, 'grant_type'>;
    baseUrl: string;
}
export declare class AthenaAPIClient extends APIClient<AthenaDataWrapper> {
    readonly ctor: DataWrapperCtor<AthenaDataWrapper>;
    constructor({ authUrl, requestConfig, ...opts }: AthenaClientConstructorProps);
    createPatient({ practiceId, data, }: {
        practiceId: string;
        data: Omit<CreatePatientInputType, 'practiceid'>;
    }): Promise<CreatePatientResponseType>;
    getPatient({ practiceId, patientId, }: {
        practiceId: string;
        patientId: string;
    }): Promise<PatientSchemaType>;
    getAppointment({ practiceId, appointmentId, }: {
        practiceId: string;
        appointmentId: string;
    }): Promise<AppointmentSchemaType>;
    createAppointmentNote({ practiceId, appointmentId, data, }: {
        practiceId: string;
        appointmentId: string;
        data: Omit<CreateAppointmentNoteInputType, 'practiceid' | 'appointmentid'>;
    }): Promise<CreateAppointmentNoteResponseType>;
    addClinicalDocumentToPatientChart({ practiceId, patientId, data, }: {
        practiceId: string;
        patientId: string;
        data: AddClinicalDocumentToPatientChartInputType;
    }): Promise<AddClinicalDocumentToPatientChartResponseType>;
}
export {};
