import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
import { int32 } from '@fable-org/fable-library-js/Int32.js';
import { Union } from '@fable-org/fable-library-js/Types.js';
import { Option } from '@fable-org/fable-library-js/Option.js';
import { OntologyAnnotation } from '../OntologyAnnotation.fs.js';
export type IOType_$union = IOType<0> | IOType<1> | IOType<2> | IOType<3> | IOType<4>;
export type IOType_$cases = {
    0: ["Source", []];
    1: ["Sample", []];
    2: ["Data", []];
    3: ["Material", []];
    4: ["FreeText", [string]];
};
export declare function IOType_Source(): IOType<0>;
export declare function IOType_Sample(): IOType<1>;
export declare function IOType_Data(): IOType<2>;
export declare function IOType_Material(): IOType<3>;
export declare function IOType_FreeText(Item: string): IOType<4>;
export declare class IOType<Tag extends keyof IOType_$cases> extends Union<Tag, IOType_$cases[Tag][0]> {
    readonly tag: Tag;
    readonly fields: IOType_$cases[Tag][1];
    constructor(tag: Tag, fields: IOType_$cases[Tag][1]);
    cases(): string[];
    static get All(): IOType_$union[];
    static get Cases(): [int32, string][];
    get asInput(): string;
    get asOutput(): string;
    Merge(other: IOType_$union): IOType_$union;
    toString(): string;
    static ofString(str: string): IOType_$union;
    static tryOfHeaderString(str: string): Option<IOType_$union>;
    static source(): IOType_$union;
    static sample(): IOType_$union;
    static data(): IOType_$union;
    static material(): IOType_$union;
    static freeText(s: string): IOType_$union;
}
export declare function IOType_$reflection(): TypeInfo;
export type CompositeHeader_$union = CompositeHeader<0> | CompositeHeader<1> | CompositeHeader<2> | CompositeHeader<3> | CompositeHeader<4> | CompositeHeader<5> | CompositeHeader<6> | CompositeHeader<7> | CompositeHeader<8> | CompositeHeader<9> | CompositeHeader<10> | CompositeHeader<11> | CompositeHeader<12> | CompositeHeader<13> | CompositeHeader<14>;
export type CompositeHeader_$cases = {
    0: ["Component", [OntologyAnnotation]];
    1: ["Characteristic", [OntologyAnnotation]];
    2: ["Factor", [OntologyAnnotation]];
    3: ["Parameter", [OntologyAnnotation]];
    4: ["ProtocolType", []];
    5: ["ProtocolDescription", []];
    6: ["ProtocolUri", []];
    7: ["ProtocolVersion", []];
    8: ["ProtocolREF", []];
    9: ["Performer", []];
    10: ["Date", []];
    11: ["Input", [IOType_$union]];
    12: ["Output", [IOType_$union]];
    13: ["FreeText", [string]];
    14: ["Comment", [string]];
};
export declare function CompositeHeader_Component(Item: OntologyAnnotation): CompositeHeader<0>;
export declare function CompositeHeader_Characteristic(Item: OntologyAnnotation): CompositeHeader<1>;
export declare function CompositeHeader_Factor(Item: OntologyAnnotation): CompositeHeader<2>;
export declare function CompositeHeader_Parameter(Item: OntologyAnnotation): CompositeHeader<3>;
export declare function CompositeHeader_ProtocolType(): CompositeHeader<4>;
export declare function CompositeHeader_ProtocolDescription(): CompositeHeader<5>;
export declare function CompositeHeader_ProtocolUri(): CompositeHeader<6>;
export declare function CompositeHeader_ProtocolVersion(): CompositeHeader<7>;
export declare function CompositeHeader_ProtocolREF(): CompositeHeader<8>;
export declare function CompositeHeader_Performer(): CompositeHeader<9>;
export declare function CompositeHeader_Date(): CompositeHeader<10>;
export declare function CompositeHeader_Input(Item: IOType_$union): CompositeHeader<11>;
export declare function CompositeHeader_Output(Item: IOType_$union): CompositeHeader<12>;
export declare function CompositeHeader_FreeText(Item: string): CompositeHeader<13>;
export declare function CompositeHeader_Comment(Item: string): CompositeHeader<14>;
export declare class CompositeHeader<Tag extends keyof CompositeHeader_$cases> extends Union<Tag, CompositeHeader_$cases[Tag][0]> {
    readonly tag: Tag;
    readonly fields: CompositeHeader_$cases[Tag][1];
    constructor(tag: Tag, fields: CompositeHeader_$cases[Tag][1]);
    cases(): string[];
    static get Cases(): [int32, string][];
    static jsGetColumnMetaType(inp: int32): int32;
    toString(): string;
    ToTerm(): OntologyAnnotation;
    static OfHeaderString(str: string): CompositeHeader_$union;
    get IsDeprecated(): boolean;
    get IsCvParamColumn(): boolean;
    get IsTermColumn(): boolean;
    get IsDataColumn(): boolean;
    get IsFeaturedColumn(): boolean;
    get GetFeaturedColumnAccession(): string;
    get GetColumnAccessionShort(): string;
    get IsSingleColumn(): boolean;
    get IsIOType(): boolean;
    get isInput(): boolean;
    get isOutput(): boolean;
    get isParameter(): boolean;
    get isFactor(): boolean;
    get isCharacteristic(): boolean;
    get isComponent(): boolean;
    get isProtocolType(): boolean;
    get isProtocolREF(): boolean;
    get isProtocolDescription(): boolean;
    get isProtocolUri(): boolean;
    get isProtocolVersion(): boolean;
    get isProtocolColumn(): boolean;
    get isPerformer(): boolean;
    get isDate(): boolean;
    get isComment(): boolean;
    get isFreeText(): boolean;
    TryInput(): Option<IOType_$union>;
    TryOutput(): Option<IOType_$union>;
    TryIOType(): Option<IOType_$union>;
    get IsUnique(): boolean;
    Copy(): CompositeHeader_$union;
    TryGetTerm(): Option<OntologyAnnotation>;
    static component(oa: OntologyAnnotation): CompositeHeader_$union;
    static characteristic(oa: OntologyAnnotation): CompositeHeader_$union;
    static factor(oa: OntologyAnnotation): CompositeHeader_$union;
    static parameter(oa: OntologyAnnotation): CompositeHeader_$union;
    static protocolType(): CompositeHeader_$union;
    static protocolDescription(): CompositeHeader_$union;
    static protocolUri(): CompositeHeader_$union;
    static protocolVersion(): CompositeHeader_$union;
    static protocolREF(): CompositeHeader_$union;
    static performer(): CompositeHeader_$union;
    static date(): CompositeHeader_$union;
    static input(io: IOType_$union): CompositeHeader_$union;
    static output(io: IOType_$union): CompositeHeader_$union;
    static freeText(s: string): CompositeHeader_$union;
    static comment(s: string): CompositeHeader_$union;
}
export declare function CompositeHeader_$reflection(): TypeInfo;
//# sourceMappingURL=CompositeHeader.fs.d.ts.map