import { CODEABLE_CONCEPT, EXTENSION, IDENTTIFIER, MONEY, MULTI_RESOURCE, PERIOD } from "../config";
import { ResourceMaster } from "../Interfaces";
import { QUANTITY } from "../resources/Observation";
import ResourceMain from "../resources/ResourceMai";
import { TO_HTML_HCX_OPTIONS } from "./interfaces";
interface OwnedBy extends MULTI_RESOURCE {
    resource: "Organization";
}
interface AdministeredBy extends MULTI_RESOURCE {
    resource: "Organization";
}
interface Network extends MULTI_RESOURCE {
    resource: "Organization";
}
interface CoverageArea extends MULTI_RESOURCE {
    resource: "Location";
}
interface Coverage {
    id?: string;
    extension?: EXTENSION[];
    modifierExtension?: EXTENSION[];
    type: CODEABLE_CONCEPT;
    requirement?: string;
    benefit: {
        extension?: EXTENSION[];
        modifierExtension?: EXTENSION[];
        type: CODEABLE_CONCEPT;
        requirement?: string;
        limit?: {
            id?: string;
            extension?: EXTENSION[];
            modifierExtension?: EXTENSION[];
            value?: QUANTITY;
            code?: CODEABLE_CONCEPT;
        }[];
    }[];
    network?: Network[];
}
interface Plan {
    id?: string;
    extension?: EXTENSION[];
    modifierExtension?: EXTENSION[];
    identifier?: IDENTTIFIER[];
    coverageArea?: CoverageArea[];
    type: CODEABLE_CONCEPT;
    generalCost?: {
        id?: string;
        extension?: EXTENSION[];
        modifierExtension?: EXTENSION[];
        type?: CODEABLE_CONCEPT;
        groupSize?: number;
        cost?: MONEY;
        comment?: string;
    }[];
    network?: Network[];
}
export interface INSURANCE_PLAN {
    id?: string;
    text: string;
    resourceType: "InsurancePlan";
    identifier: IDENTTIFIER[];
    extension: EXTENSION[];
    status: "draft" | "active" | "retired" | "unknown";
    type: CODEABLE_CONCEPT;
    period: PERIOD;
    name: string;
    ownedBy: OwnedBy;
    administeredBy?: AdministeredBy;
    alias?: string[];
    coverage: Coverage[];
    plan: Plan[];
}
export interface TO_HTML_HCX_OPTIONS_INSURANCE_PLAN extends Omit<TO_HTML_HCX_OPTIONS, "body"> {
    body: INSURANCE_PLAN;
}
export declare class InsurancePlan extends ResourceMain implements ResourceMaster {
    getFHIR(options: INSURANCE_PLAN): {
        resourceType: string;
        id: string | undefined;
        meta: {
            versionId: string;
            profile: string[];
        };
        text: {
            status: string;
            div: string;
        };
        alias: string[] | undefined;
        extension: EXTENSION[];
        identifier: IDENTTIFIER[];
        status: "unknown" | "active" | "draft" | "retired";
        type: CODEABLE_CONCEPT;
        name: string;
        period: PERIOD;
        ownedBy: {
            reference: string;
            identifier: IDENTTIFIER | undefined;
            display: string | undefined;
            type: string | undefined;
        };
        administeredBy: {
            reference: string;
            identifier: IDENTTIFIER | undefined;
            display: string | undefined;
            type: string | undefined;
        } | undefined;
        coverage: Coverage[];
        plan: Plan[];
    };
    convertFhirToObject(options: any): INSURANCE_PLAN;
    toHtml(option: TO_HTML_HCX_OPTIONS_INSURANCE_PLAN): Promise<string>;
    statusArray?: Function | undefined;
}
export {};
//# sourceMappingURL=Insuranceplan.d.ts.map