import { FhirDataType } from '../base-models/fhir-data-types'; /** * @category Utilities: Decorators * @hidden */ export declare const CHOICE_DATA_TYPES = "ChoiceDatatypes"; /** * @category Utilities: Decorators * @hidden */ export declare const OPEN_DATA_TYPE_FIELDS = "OpenDatatypeFields"; /** * Data elements captured in decorator metadata property `ChoiceDatatypes` by ChoiceDataTypesMeta decorator * * @category Utilities: Decorators * @interface */ export interface ChoiceDatatypeDef { fieldName: string; fieldTypes: FhirDataType[]; } /** * Decorator metadata captured by ChoiceDataTypesMeta decorator * * @category Utilities: Decorators * @interface */ export interface ChoiceDatatypeMetaObj { ChoiceDatatypes: ChoiceDatatypeDef[]; } /** * Decorator metadata captured by OpenDataTypesMeta decorator * * @category Utilities: Decorators * @interface */ export interface OpenDatatypeMetaObj { OpenDatatypeFields: string[]; } /** * Helper that returns the metadata data elements captured by ChoiceDataTypesMeta decorator * * @param metadata - ChoiceDataTypesMeta decorator metadata * @returns the metadata data elements captured by ChoiceDataTypesMeta decorator * * @category Utilities: Decorators */ export declare function getChoiceDatatypeDefs(metadata: DecoratorMetadataObject | null): ChoiceDatatypeDef[]; /** * Helper that returns the metadata data elements captured by OpenDataTypesMeta decorator * * @param metadata - OpenDataTypesMeta decorator metadata * @returns the metadata data elements captured by OpenDataTypesMeta decorator * * @category Utilities: Decorators */ export declare function getOpenDatatypeFields(metadata: DecoratorMetadataObject | null): string[]; /** * Helper that returns the metadata data elements for the provided `fieldName` captured by ChoiceDataTypesMeta decorator * * @param metadata - ChoiceDataTypesMeta decorator metadata * @param fieldName - field name for which to retrieve the metadata data elements * @returns the metadata data elements for the provided fieldName captured by ChoiceDataTypesMeta decorator * * @category Utilities: Decorators */ export declare function getChoiceDatatypeDefsForField(metadata: DecoratorMetadataObject | null, fieldName: string): FhirDataType[]; /** * Factory function for ChoiceDataTypesMeta decorator for polymorphic (i.e., value[x]) data type fields * * @remarks * This decorator collects the polymorphic data type field names and stores it in the decorator 'metadata' object * in the `ChoiceDatatypes` property. This property is an array of `ChoiceDatatypeDef` ({ fieldName; fieldNames }) * objects having one array item for each polymorphic data type field capturing the specified data types. * * NOTE: The @ChoiceDataTypes() decorator depends on this metadata! * * @param sourceField - source field name * @param choiceDataTypes - array of FhirDataType values for supported polymorphic data types * @returns ChoiceDataTypesMeta decorator * @throws [AssertionError](https://nodejs.org/docs/latest-v22.x/api/assert.html#class-assertassertionerror) for invalid uses (Decorator) * * @see {@link ChoiceDataTypes} * @see {@link ChoiceDatatypeDef} * @category Decorators */ export declare function ChoiceDataTypesMeta(sourceField: string, choiceDataTypes: FhirDataType[]): (_target: unknown, context: ClassFieldDecoratorContext) => void; /** * Factory function for ChoiceDataTypes decorator for polymorphic (i.e., value[x]) data type "set"/"add" methods * * @remarks * This decorator validates the data type of the provided "set"/"add" method argument against the list * of the provided choiceDataTypes. The choiceDataTypes are expressed as FHIR primitive and/or * complex data type names. These values are available in each data type class as `instance.fhirType()`. * * NOTE: This decorator depends on the ChoiceDataTypesMeta decorator(...) decorator! * * @param sourceField - source field name * @returns ChoiceDataTypes decorator * @throws [AssertionError](https://nodejs.org/docs/latest-v22.x/api/assert.html#class-assertassertionerror) for invalid uses (Decorator) * @throws {@link InvalidTypeError} for actual choice data type does not agree with the specified choiceDataTypes (Decorator) * * @see {@link ChoiceDataTypesMeta} * @category Decorators */ export declare function ChoiceDataTypes(sourceField: string): (originalMethod: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return; /** * Factory function for OpenDataTypesMeta decorator for open data type fields * * @remarks * This decorator collects the open data type field names and stores it in the decorator 'metadata' object * in the `OpenDatatypeFields` property. This property is an array of `string` ({ fieldName; fieldNames }) * values having one array item for each open data type field. * * @param sourceField - source field name * @returns OpenDataTypesMeta decorator * * @category Decorators */ export declare function OpenDataTypesMeta(sourceField: string): (_target: unknown, context: ClassFieldDecoratorContext) => void; /** * Factory function for ReferenceTargets decorator. * * @remarks * This decorator validates the provided Reference.reference value for relative or absolute * references are only for the defined ElementDefinition's 'targetProfile' value(s). * * @param sourceField - source field name * @param referenceTargets - string array of target references. * An empty array is allowed and represents "Any" resource. * @returns ReferenceTargets decorator * @throws [AssertionError](https://nodejs.org/docs/latest-v22.x/api/assert.html#class-assertassertionerror) for invalid uses * @throws {@link InvalidTypeError} for an actual reference type do not agree with the specified ReferenceTargets * * @category Decorators */ export declare function ReferenceTargets(sourceField: string, referenceTargets: string[]): (originalMethod: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return; //# sourceMappingURL=decorators.d.ts.map