import { IElement } from 'fhirtypes/dist/r4';
import { PractitionerRoleAvailableTime } from '../../models';
import { BackboneBuilder, IBuildable } from '../base';
import { ExtractUnderscoreKeys } from '../../../core/commons/utils';
import { DaysOfWeekType } from 'fhirtypes/dist/r4/types';
type PrimitiveExtensionFields = ExtractUnderscoreKeys<PractitionerRoleAvailableTime>;
/**
 * @description Interface for chaining the building of a PractitionerRoleAvailableTime
 * @interface IPractitionerRoleAvailableTimeBuilder
 * @extends {IBuildable<PractitionerRoleAvailableTime>}
 */
interface IPractitionerRoleAvailableTimeBuilder extends IBuildable<PractitionerRoleAvailableTime> {
    addDaysOfWeek(value: DaysOfWeekType): this;
    setAllDay(value: boolean): this;
    setAvailableStartTime(value: string): this;
    setAvailableEndTime(value: string): this;
}
/**
 * @version R4 (v4.0.1)
 * @summary FHIR® Specification by HL7®
 * @description Class for building a PractitionerRoleAvailableTime
 * @class PractitionerRoleAvailableTimeBuilder
 * @extends {BackboneBuilder}
 * @implements {IPractitionerRoleAvailableTimeBuilder}
 * @author Roberto Araneda Espinoza
 */
export declare class PractitionerRoleAvailableTimeBuilder extends BackboneBuilder implements IPractitionerRoleAvailableTimeBuilder {
    private readonly practitionerRoleAvailableTime;
    constructor();
    /**
     * @description Adds a primitive extension to the element
     * @param param - the field to add the extension to
     * @param extension - the extension to add
     * @returns {this}
     * @example addPrimitiveExtension('_value', { value: 'test' })
     */
    addPrimitiveExtension<T extends PrimitiveExtensionFields>(param: T, extension: IElement): this;
    /**
     * @description Builds the model
     * @returns {PractitionerRoleAvailableTime}
     */
    build(): PractitionerRoleAvailableTime;
    /**
     * @description Adds a value to the daysOfWeek array
     * @description Indicates which days of the week are available between the start and end Times.
     * @param value - the value to add
     * @returns {this}
     */
    addDaysOfWeek(value: DaysOfWeekType): this;
    /**
     * @description Sets the allDay value
     * @description Is this always available? (hence times are irrelevant) e.g. 24 hour service.
     * @param value - the value to set
     * @returns {this}
     */
    setAllDay(value: boolean): this;
    /**
     * @description Sets the availableStartTime value
     * @description The opening time of day. Note: If the AllDay flag is set, then this time is ignored.
     * @param value - the value to set
     * @returns {this}
     */
    setAvailableStartTime(value: string): this;
    /**
     * @description Sets the availableEndTime value
     * @description The closing time of day. Note: If the AllDay flag is set, then this time is ignored.
     * @param value - the value to set
     * @returns {this}
     */
    setAvailableEndTime(value: string): this;
}
export {};
