import { Duration } from './Duration.js';
import { Extension } from './Extension.js';
import { FhirPrimitive } from './FhirPrimitive.js';
import { Period } from './Period.js';
import { Range } from './Range.js';
export interface Timing_Repeat {
    /**
     * @description Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
     * @short Unique id for inter-element referencing
     */
    id?: string;
    /**
     * @description May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
     * @comment There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.
     * @short Additional content defined by implementations
     */
    extension?: Extension[];
    /**
     * @choice This is part of the bounds[x] choice.
     * @oneOf boundsDuration, boundsRange, boundsPeriod
     */
    boundsDuration?: Duration;
    /**
     * @choice This is part of the bounds[x] choice.
     * @oneOf boundsDuration, boundsRange, boundsPeriod
     */
    boundsRange?: Range;
    /**
     * @choice This is part of the bounds[x] choice.
     * @oneOf boundsDuration, boundsRange, boundsPeriod
     */
    boundsPeriod?: Period;
    /**
     * @description A total count of the desired number of repetitions across the duration of the entire timing specification. If countMax is present, this element indicates the lower bound of the allowed range of count values.
     * @comment If you have both bounds and count, then this should be understood as within the bounds period, until count times happens.
     * @short Number of times to repeat
     */
    count?: FhirPrimitive<number>;
    /**
     * @description If present, indicates that the count is a range - so to perform the action between [count] and [countMax] times.
     * @short Maximum number of times to repeat
     */
    countMax?: FhirPrimitive<number>;
    /**
     * @description How long this thing happens for when it happens. If durationMax is present, this element indicates the lower bound of the allowed range of the duration.
     * @comment For some events the duration is part of the definition of the event (e.g. IV infusions, where the duration is implicit in the specified quantity and rate). For others, it's part of the timing specification (e.g. exercise).
     * @short How long when it happens
     */
    duration?: FhirPrimitive<number>;
    /**
     * @description If present, indicates that the duration is a range - so to perform the action between [duration] and [durationMax] time length.
     * @comment For some events the duration is part of the definition of the event (e.g. IV infusions, where the duration is implicit in the specified quantity and rate). For others, it's part of the timing specification (e.g. exercise).
     * @short How long when it happens (Max)
     */
    durationMax?: FhirPrimitive<number>;
    /**
     * @description The units of time for the duration, in UCUM units
  Normal practice is to use the 'mo' code as a calendar month when calculating the next occurrence.
     * @short s | min | h | d | wk | mo | a - unit of time (UCUM)
     */
    durationUnit?: FhirPrimitive<string>;
    /**
     * @description The number of times to repeat the action within the specified period. If frequencyMax is present, this element indicates the lower bound of the allowed range of the frequency.
     * @short Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
     */
    frequency?: FhirPrimitive<number>;
    /**
     * @description If present, indicates that the frequency is a range - so to repeat between [frequency] and [frequencyMax] times within the period or period range.
     * @short Event occurs up to frequencyMax times per period
     */
    frequencyMax?: FhirPrimitive<number>;
    /**
     * @description Indicates the duration of time over which repetitions are to occur; e.g. to express "3 times per day", 3 would be the frequency and "1 day" would be the period. If periodMax is present, this element indicates the lower bound of the allowed range of the period length.
     * @short The duration to which the frequency applies. I.e. Event occurs frequency times per period
     */
    period?: FhirPrimitive<number>;
    /**
     * @description If present, indicates that the period is a range from [period] to [periodMax], allowing expressing concepts such as "do this once every 3-5 days.
     * @short Upper limit of period (3-4 hours)
     */
    periodMax?: FhirPrimitive<number>;
    /**
     * @description The units of time for the period in UCUM units
  Normal practice is to use the 'mo' code as a calendar month when calculating the next occurrence.
     * @short s | min | h | d | wk | mo | a - unit of time (UCUM)
     */
    periodUnit?: FhirPrimitive<string>;
    /**
     * @description If one or more days of week is provided, then the action happens only on the specified day(s).
     * @comment If no days are specified, the action is assumed to happen every day as otherwise specified.
     * @short mon | tue | wed | thu | fri | sat | sun
     */
    dayOfWeek?: FhirPrimitive<string>[];
    /**
     * @description Specified time of day for action to take place.
     * @comment When time of day is specified, it is inferred that the action happens every day (as filtered by dayofWeek) on the specified times. If there's a timeOfDay, there cannot be a when, or vice versa.
     * @short Time of day for action
     */
    timeOfDay?: FhirPrimitive<string>[];
    /**
     * @description An approximate time period during the day, potentially linked to an event of daily living that indicates when the action should occur.
     * @comment When more than one event is listed, the event is tied to the union of the specified events.
     * @short Code for time period of occurrence
     */
    when?: FhirPrimitive<string>[];
    /**
     * @description The number of minutes from the event. If the event code does not indicate whether the minutes is before or after the event, then the offset is assumed to be after the event.
     * @short Minutes from event (before or after)
     */
    offset?: FhirPrimitive<number>;
}
//# sourceMappingURL=Timing_Repeat.d.ts.map