import { DomainResource, Extension, Identifier, Reference } from 'fhir/r3.js';
import { InterweaveMessageEventType } from '../../common.js';
export interface DataConsumerEndpoint {
    /**
    * Unique id for the element within a resource (for internal references)
    * This may be any string value that does not contain spaces
    */
    id?: string;
    /**
    * May be used to represent additional information
    * that is not part of the basic definition of the element.
    * In order to make the use of extensions safe and manageable,
    * there is a strict set of governance  applied to the definition and use of extensions.
    * Though any implementer is allowed to define an extension,
    * there is a set of requirements that SHALL be met as part of the definition of the extension.
    */
    extension?: Extension;
    /**
    * 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 that contains it.
    * Usually modifier elements provide negation or qualification.
    * In order to make the use of extensions safe and manageable,
    * there is a strict set of governance applied to the definition and use of extensions.
    * Though any implementer is allowed to 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.
    */
    modifierExtension?: Extension;
    /**
     * What type of endpoint this is (subscription or messaging)
     */
    type: 'sub' | 'msg';
    /**
     * URL of endpoint
     */
    address: string;
    /**
     * The message type as defined by messageheader.event.coding that this endpoint accepts.
     */
    messageEventType?: InterweaveMessageEventType[];
    /**
     * Certificate details
     */
    certificateDN?: string;
    /**
     * Set of headers expected by endpoint
     */
    header?: string[];
}
/**
 * DataConsumer defines a consumer of data for the regional shared care record
 */
export interface DataConsumer extends DomainResource {
    /**
     * The resourceType, always DataConsumer
     */
    readonly resourceType: 'DataConsumer';
    /**
     * An identifier for this DataConsumer
     */
    identifier?: Identifier[];
    /**
     * A label assigned to the consumer for human identification and communication
     */
    name: string;
    /**
     * A description of consumer for human identification and communication
     */
    narrative?: string;
    /**
     * Whether the DataConsumer is actively connected to the System of Systems
     */
    status: 'active' | 'inactive';
    /**
     * The date that the consumer was registered
     */
    registered: string;
    /**
     * The DNS domain for the consumer
     */
    domainName?: string;
    /**
     * Organization that is the owner of the data consumer
     */
    organization: Reference;
    /**
     * The minimum maturity expected from providers
     */
    minimumProviderMaturity: number;
    iam: {
        /**
        * Unique id for the element within a resource (for internal references)
        * This may be any string value that does not contain spaces
        */
        id?: string;
        /**
        * May be used to represent additional information
        * that is not part of the basic definition of the element.
        * In order to make the use of extensions safe and manageable,
        * there is a strict set of governance  applied to the definition and use of extensions.
        * Though any implementer is allowed to define an extension,
        * there is a set of requirements that SHALL be met as part of the definition of the extension.
        */
        extension?: Extension;
        /**
        * 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 that contains it.
        * Usually modifier elements provide negation or qualification.
        * In order to make the use of extensions safe and manageable,
        * there is a strict set of governance applied to the definition and use of extensions.
        * Though any implementer is allowed to 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.
        */
        modifierExtension?: Extension;
        /**
         * Credentials for the consumer
         */
        secretHash: string;
        /**
         * Public key to verify signed token
         */
        certificate: string;
    };
    endpoint?: DataConsumerEndpoint[];
    consumer: {
        /**
        * Unique id for the element within a resource (for internal references)
        * This may be any string value that does not contain spaces
        */
        id?: string;
        /**
        * May be used to represent additional information
        * that is not part of the basic definition of the element.
        * In order to make the use of extensions safe and manageable,
        * there is a strict set of governance  applied to the definition and use of extensions.
        * Though any implementer is allowed to define an extension,
        * there is a set of requirements that SHALL be met as part of the definition of the extension.
        */
        extension?: Extension;
        /**
        * 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 that contains it.
        * Usually modifier elements provide negation or qualification.
        * In order to make the use of extensions safe and manageable,
        * there is a strict set of governance applied to the definition and use of extensions.
        * Though any implementer is allowed to 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.
        */
        modifierExtension?: Extension;
        /**
         * URL of client
         */
        address?: string;
        /**
         * Certificate details
         */
        certificateDN?: string;
        /**
         * What IAM roles the consumer client may assert they have
         */
        roles?: string[];
        /**
         * What IAM reasons the consumer client may assert they have
         */
        reasonsForAccess?: string[];
    };
}
//# sourceMappingURL=dataConsumer.d.ts.map