import { LoginProps } from './types';
import { Participant, Meeting, ParticipantToMeetingProps, GoMeetingProps, GoMeetingPayload, FetchEndpoint, EditParticipantAttributes } from '.';
/**
 * **Módulo** de Proveedor CEV.
 */
export declare abstract class BaseProvider {
    /**
     * Dominio proveedor.
     */
    url: string;
    /**
     * Token del proveedor.
     */
    token: string;
    /**
     * Método que autentifica contra el proveedor el usuario con privilegios
     * para crear una reunión.
     *
     * @param {LoginProps} props - Parámetros para el Login del Proveedor CEV.
     */
    abstract login(props: LoginProps): Promise<string>;
    /**
     * Método que permite añadir un participante a la reunión.
     * @param {Participant} participant - Instancia de participante a añadir.
     */
    abstract createParticipant(participant: Participant): Promise<Participant>;
    /**
     * Método que permite editar un participante.
     */
    abstract editParticipant(participant: EditParticipantAttributes): Promise<FetchEndpoint>;
    /**
     * Método que permite crear una reunión.
     * @param {Meeting} meeting - Instancia de meeting a crear.
     */
    abstract createMeeting(meeting: Meeting): Promise<Meeting>;
    /**
     * Devuelve la url con la sesión para conectar directamente a AdobeConnect.
     * @param {GoMeetingProps} props - Parámetros de goMeeting.
     */
    abstract goMeeting(props: GoMeetingProps): Promise<GoMeetingPayload>;
    /**
     * Devuelve la url con la sesión para conectar directamente al proveedor.
     * @param {GoMeetingProps} props - Parámetros de goMeeting.
     */
    abstract goMeetingTeacher(props: GoMeetingProps): Promise<string>;
    /**
     * Añade un participante a la meeting.
     * @param {ParticipantToMeetingProps} props - Parámetros de ParticipantToMeeting.
     */
    abstract participantToMeeting(props: ParticipantToMeetingProps): Promise<boolean>;
}
//# sourceMappingURL=BaseProvider.d.ts.map