import { IElement } from 'fhirtypes/dist/r4/base';
import { fhirR4Types } from './internal.validator';
import { IBackboneElement, IDomainResource, ResourceTypesType } from 'fhirtypes/dist/r4';
export interface AttributeDefinition<T> {
    name: keyof T;
    type: fhirR4Types | 'Resource' | 'Repeat' | 'Timing';
    isRequired: boolean;
    isArray: boolean;
    enumValues?: readonly string[];
    referenceTypes?: (ResourceTypesType | 'Any')[] | null;
}
export declare function createDatatypeDefinition<T extends IElement>(array: readonly AttributeDefinition<T>[]): readonly AttributeDefinition<T>[];
export declare function createBackboneDefinition<T extends IBackboneElement>(array: readonly AttributeDefinition<T>[]): readonly AttributeDefinition<T>[];
interface IResourceDefinition extends IDomainResource {
    resourceType?: string;
}
export declare function createResourceDefinition<T extends IResourceDefinition>(array: readonly AttributeDefinition<T>[]): readonly AttributeDefinition<T>[];
export {};
