import { CODEABLE_CONCEPT, IDENTTIFIER, MULTI_RESOURCE, PERIOD } from "../config";
import { ResourceMaster } from "../Interfaces";
import ResourceMain from "./ResourceMai";
declare const CoverageStatus: readonly ["active", "cancelled", "draft", "entered-in-error"];
declare type CoverageStatus = typeof CoverageStatus[number];
interface policyHolder extends MULTI_RESOURCE {
    resource: "Patient" | "RelatedPerson" | "Organization";
}
interface subscriber extends MULTI_RESOURCE {
    resource: "Patient" | "RelatedPerson";
}
interface payor extends MULTI_RESOURCE {
    resource: "Patient" | "RelatedPerson" | "Organization";
}
interface SAMPLE_QUANTITY {
    value: number;
    unit: string;
    system: string;
    code: string;
}
interface MONEY {
    value: number;
    currency: string;
}
interface costToBeneficiary {
    type?: CODEABLE_CONCEPT;
    category?: CODEABLE_CONCEPT;
    network?: CODEABLE_CONCEPT;
    unit?: CODEABLE_CONCEPT;
    term?: CODEABLE_CONCEPT;
    value?: SAMPLE_QUANTITY | MONEY;
    exception?: {
        type: CODEABLE_CONCEPT;
        period?: PERIOD;
    }[];
}
export interface COVERAGE {
    id?: string;
    identifier: IDENTTIFIER[];
    text: string;
    status: CoverageStatus;
    type?: CODEABLE_CONCEPT;
    /**
     * Corporate insurences
     */
    policyHolder?: policyHolder;
    /**
     * main person in the policy
     */
    subscriber?: subscriber;
    /**
     * id of the subscriber
     */
    subscriberId?: IDENTTIFIER[];
    /**
     * Patient
     */
    beneficiaryPatientId: string;
    /**
     *
  For some coverages a single identifier is issued to the Subscriber and then a unique dependent number is issued to each beneficiary.
     */
    dependent?: string;
    relationship?: CODEABLE_CONCEPT;
    period?: PERIOD;
    insurerOrganizationId?: string;
    payor: payor[];
    class?: {
        type: CODEABLE_CONCEPT;
        value: IDENTTIFIER;
        name: string;
    }[];
    order?: number;
    network?: string;
    costToBeneficiary?: costToBeneficiary[];
    subrogation?: boolean;
    contractId?: string[];
    insurancePlanId?: string;
}
export declare class Coverage extends ResourceMain implements ResourceMaster {
    getFHIR(options: COVERAGE): {
        id: string | undefined;
        resourceType: string;
        type: CODEABLE_CONCEPT | undefined;
        identifier: IDENTTIFIER[];
        text: {
            status: string;
            div: string;
        };
        status: "active" | "entered-in-error" | "cancelled" | "draft";
        policyHolder: {
            reference: string;
        } | undefined;
        subscriber: {
            reference: string;
        } | undefined;
        subscriberId: IDENTTIFIER[] | undefined;
        beneficiary: {
            reference: string;
        };
        dependent: string | undefined;
        relationship: CODEABLE_CONCEPT | undefined;
        payor: any[];
        period: PERIOD | undefined;
        insurer: {
            reference: string;
        } | undefined;
        class: {
            type: CODEABLE_CONCEPT;
            value: IDENTTIFIER;
            name: string;
        }[] | undefined;
        order: number | undefined;
        network: string | undefined;
        costToBeneficiary: costToBeneficiary[] | undefined;
        subrogation: boolean | undefined;
        contract: {
            reference: string;
        }[] | undefined;
        insurancePlan: {
            reference: string;
        } | undefined;
    };
    convertFhirToObject(options: any): COVERAGE;
    statusArray?: Function | undefined;
}
export {};
//# sourceMappingURL=Coverage.d.ts.map