import { Option } from '@fable-org/fable-library-js/Option.js';
import { OntologyAnnotation } from '../OntologyAnnotation.fs.js';
import { Value_$union } from '../Value.fs.js';
import { Record } from '@fable-org/fable-library-js/Types.js';
import { IComparable, IEquatable } from '@fable-org/fable-library-js/Util.js';
import { IPropertyValue } from '../IPropertyValue.fs.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
import { Comment$ } from '../Comment.fs.js';
export declare class Component extends Record implements IEquatable<Component>, IComparable<Component>, IPropertyValue {
    readonly ComponentValue: Option<Value_$union>;
    readonly ComponentUnit: Option<OntologyAnnotation>;
    readonly ComponentType: Option<OntologyAnnotation>;
    constructor(ComponentValue: Option<Value_$union>, ComponentUnit: Option<OntologyAnnotation>, ComponentType: Option<OntologyAnnotation>);
    AlternateName(): Option<string>;
    MeasurementMethod(): Option<string>;
    Description(): Option<string>;
    GetCategory(): Option<OntologyAnnotation>;
    GetAdditionalType(): string;
    GetValue(): Option<Value_$union>;
    GetUnit(): Option<OntologyAnnotation>;
}
export declare function Component_$reflection(): TypeInfo;
export declare function Component__get_ComponentName(this$: Component): Option<string>;
export declare function Component_make(value: Option<Value_$union>, unit: Option<OntologyAnnotation>, componentType: Option<OntologyAnnotation>): Component;
export declare function Component_create_Z2F0B38C7(value?: Value_$union, unit?: OntologyAnnotation, componentType?: OntologyAnnotation): Component;
export declare function Component_get_empty(): Component;
/**
 * This function creates a string containing full isa term triplet information about the component
 *
 * Components do not have enough fields in ISA-JSON to include all existing ontology term information.
 * This function allows us, to add the same information as `Parameter`, `Characteristics`.., to `Component`.
 * Without this string composition we loose the ontology information for the header value.
 */
export declare function Component_composeName(value: Value_$union, unit: Option<OntologyAnnotation>): string;
/**
 * This function parses the given Component header string format into the ISA-JSON Component type
 *
 * Components do not have enough fields in ISA-JSON to include all existing ontology term information.
 * This function allows us, to add the same information as `Parameter`, `Characteristics`.., to `Component`.
 * Without this string composition we loose the ontology information for the header value.
 */
export declare function Component_decomposeName_Z721C83C5(name: string): [Value_$union, Option<OntologyAnnotation>];
/**
 * Create a ISAJson Component from ISATab string entries
 */
export declare function Component_fromISAString_7C9A7CF8(name?: string, term?: string, source?: string, accession?: string, comments?: Comment$[]): Component;
/**
 * Get ISATab string entries from an ISAJson Component object
 */
export declare function Component_toStringObject_Z685B8F25(c: Component): [string, {
    TermAccessionNumber: string;
    TermName: string;
    TermSourceREF: string;
}];
export declare function Component__get_NameText(this$: Component): string;
/**
 * Returns the ontology of the category of the Value as string
 */
export declare function Component__get_UnitText(this$: Component): string;
export declare function Component__get_ValueText(this$: Component): string;
export declare function Component__get_ValueWithUnitText(this$: Component): string;
export declare function Component__MapCategory_658CFBF6(this$: Component, f: ((arg0: OntologyAnnotation) => OntologyAnnotation)): Component;
export declare function Component__SetCategory_ZDED3A0F(this$: Component, c: OntologyAnnotation): Component;
export declare function Component_createAsPV(alternateName: Option<string>, measurementMethod: Option<string>, description: Option<string>, category: Option<OntologyAnnotation>, value: Option<Value_$union>, unit: Option<OntologyAnnotation>): Component;
//# sourceMappingURL=Component.fs.d.ts.map