import { CapabilityStatement_Rest_Resource_Interaction } from './CapabilityStatement_Rest_Resource_Interaction.js';
import { CapabilityStatement_Rest_Resource_Operation } from './CapabilityStatement_Rest_Resource_Operation.js';
import { CapabilityStatement_Rest_Resource_SearchParam } from './CapabilityStatement_Rest_Resource_SearchParam.js';
import { Extension } from './Extension.js';
import { FhirPrimitive } from './FhirPrimitive.js';
export interface CapabilityStatement_Rest_Resource {
    /**
     * @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[];
    /**
     * @description May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained andor the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. 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. Applications processing a resource are required to check for modifier extensions.
  
  Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).
     * @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 Extensions that cannot be ignored even if unrecognized
     */
    modifierExtension?: Extension[];
    /**
     * @description A type of resource exposed via the restful interface.
     * @short A resource type that is supported
     */
    type: FhirPrimitive<string>;
    /**
     * @description A system-wide profile that is applied across all instances of the resource supported by the system. For example, if declared on Observation, this profile is the "superset" of capabilities for laboratory and vitals and other domains. See further discussion in [Using Profiles](profiling.html#profile-uses).
     * @comment All other profiles for this type that are listed in `.rest.resource.supportedProfile` must conform to this profile.
     * @short System-wide profile
     */
    profile?: FhirPrimitive<string>;
    /**
     * @description A list of profiles representing different use cases the system hostsproduces. A supported profile is a statement about the functionality of the data and services provided by the server (or the client) for supported use cases. For example, a system can define and declare multiple Observation profiles for laboratory observations, vital sign observations, etc. By declaring supported profiles, systems provide a way to determine whether individual resources are conformant. See further discussion in [Using Profiles](profiling.html#profile-uses).
     * @comment Supported profiles must conform to the resource profile in the `.rest.resource.profile` element if it is present. The resource profile is a system-wide profile applied across all instances of the resource supported by the system. A supported profile is a statement about the functionality of the data and services provided by the server (or used by the client) for a particular set of use cases and will not necessarily apply to all data consumed or exposed by the server.
     * @short Use-case specific profiles
     */
    supportedProfile?: FhirPrimitive<string>[];
    /**
     * @description Additional information about the resource type used by the system.
     * @short Additional information about the use of the resource type
     */
    documentation?: FhirPrimitive<string>;
    /**
     * @backbone Nested BackboneElement: interaction [0..*]
     */
    interaction?: CapabilityStatement_Rest_Resource_Interaction[];
    /**
     * @description This field is set to no-version to specify that the system does not support (server) or use (client) versioning for this resource type. If this has some other value, the server must at least correctly track and populate the versionId meta-property on resources. If the value is 'versioned-update', then the server supports all the versioning features, including using e-tags for version integrity in the API.
     * @comment If a server supports versionIds correctly, it SHOULD support vread too, but is not required to do so.
     * @short no-version | versioned | versioned-update
     */
    versioning?: FhirPrimitive<string>;
    /**
     * @description A flag for whether the server is able to return past versions as part of the vRead operation.
     * @comment It is useful to support the vRead operation for current operations, even if past versions aren't available.
     * @short Whether vRead can return past versions
     */
    readHistory?: FhirPrimitive<boolean>;
    /**
     * @description A flag to indicate that the server allows or needs to allow the client to create new identities on the server (that is, the client PUTs to a location where there is no existing resource). Allowing this operation means that the server allows the client to create new identities on the server.
     * @comment Allowing the clients to create new identities on the server means that the system administrator needs to have confidence that the clients do not create clashing identities between them. Obviously, if there is only one client, this won't happen. While creating identities on the client means that the clients need to be managed, it's much more convenient for many scenarios if such management can be put in place.
     * @short If update can commit to a new identity
     */
    updateCreate?: FhirPrimitive<boolean>;
    /**
     * @description A flag that indicates that the server supports conditional create.
     * @comment Conditional Create is mainly appropriate for interface engine scripts converting from other formats, such as v2.
     * @short If allowsuses conditional create
     */
    conditionalCreate?: FhirPrimitive<boolean>;
    /**
     * @description A code that indicates how the server supports conditional read.
     * @comment Conditional Read is mainly appropriate for interface engine scripts converting from other formats, such as v2.
     * @short not-supported | modified-since | not-match | full-support
     */
    conditionalRead?: FhirPrimitive<string>;
    /**
     * @description A flag that indicates that the server supports conditional update.
     * @comment Conditional Update is mainly appropriate for interface engine scripts converting from other formats, such as v2.
     * @short If allowsuses conditional update
     */
    conditionalUpdate?: FhirPrimitive<boolean>;
    /**
     * @description A flag that indicates that the server supports conditional patch.
     * @comment Conditional Patch is mainly appropriate for interface engine scripts converting from other formats, such as v2.
     * @short If allowsuses conditional patch
     */
    conditionalPatch?: FhirPrimitive<boolean>;
    /**
     * @description A code that indicates how the server supports conditional delete.
     * @comment Conditional Delete is mainly appropriate for interface engine scripts converting from other formats, such as v2.
     * @short not-supported | single | multiple - how conditional delete is supported
     */
    conditionalDelete?: FhirPrimitive<string>;
    /**
     * @description A set of flags that defines how references are supported.
     * @short literal | logical | resolves | enforced | local
     */
    referencePolicy?: FhirPrimitive<string>[];
    /**
     * @description A list of _include values supported by the server.
     * @comment Documenting [`_include`](http:hl7.orgfhirR5search.html#revinclude) support helps set conformance expectations for the desired system. Still, it is a level of detail that might not be exposed by production servers or clients when using CapabilityStatement to describe an actual implementation. If this list is empty, the server does not support includes. Support for iterative (a.k.a., recursive) `_include` is communicated by listing the iterative includes values supported by the server in the `searchInclude` element of the "root" resource type. For example, to support the following search:
  
  `GET [base]CarePlan?_include=CarePlan:activity-reference:DeviceRequest&_include:iterate=DeviceRequest:device`
  
  These values would be listed as part of capabilities for "CarePlan":
  
  "searchInclude" : ["CarePlan:activity-reference:DeviceRequest","DeviceRequest:device"],
  
     * @short _include values supported by the server
     */
    searchInclude?: FhirPrimitive<string>[];
    /**
     * @description A list of _revinclude (reverse include) values supported by the server.
     * @comment See `CapabilityStatement.rest.resource.searchInclude` comments.
     * @short _revinclude values supported by the server
     */
    searchRevInclude?: FhirPrimitive<string>[];
    /**
     * @backbone Nested BackboneElement: searchParam [0..*]
     */
    searchParam?: CapabilityStatement_Rest_Resource_SearchParam[];
    /**
     * @backbone Nested BackboneElement: operation [0..*]
     */
    operation?: CapabilityStatement_Rest_Resource_Operation[];
}
//# sourceMappingURL=CapabilityStatement_Rest_Resource.d.ts.map