import { Option } from '@fable-org/fable-library-js/Option.js';
import { OntologyAnnotation } from '../OntologyAnnotation.fs.js';
import { Comment$ } from '../Comment.fs.js';
import { FSharpList } from '@fable-org/fable-library-js/List.js';
import { IEquatable } from '@fable-org/fable-library-js/Util.js';
import { Record } from '@fable-org/fable-library-js/Types.js';
import { IISAPrintable } from '../Helper/Printer.fs.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
export declare class Factor extends Record implements IEquatable<Factor>, IISAPrintable {
    readonly Name: Option<string>;
    readonly FactorType: Option<OntologyAnnotation>;
    readonly Comments: Option<Comment$[]>;
    constructor(Name: Option<string>, FactorType: Option<OntologyAnnotation>, Comments: Option<Comment$[]>);
    static make(name: Option<string>, factorType: Option<OntologyAnnotation>, comments: Option<Comment$[]>): Factor;
    static create(Name?: string, FactorType?: OntologyAnnotation, Comments?: Comment$[]): Factor;
    static get empty(): Factor;
    static fromString(name: string, term: string, source: string, accession: string, comments?: Comment$[]): Factor;
    static toStringObject(factor: Factor): {
        TermAccessionNumber: string;
        TermName: string;
        TermSourceREF: string;
    };
    get NameText(): string;
    MapCategory(f: ((arg0: OntologyAnnotation) => OntologyAnnotation)): Factor;
    SetCategory(c: OntologyAnnotation): Factor;
    static tryGetByName(name: string, factors: FSharpList<Factor>): Option<Factor>;
    static existsByName(name: string, factors: FSharpList<Factor>): boolean;
    static add(factors: FSharpList<Factor>, factor: Factor): FSharpList<Factor>;
    static removeByName(name: string, factors: FSharpList<Factor>): FSharpList<Factor>;
    static getComments(factor: Factor): Option<Comment$[]>;
    static mapComments(f: ((arg0: Comment$[]) => Comment$[]), factor: Factor): Factor;
    static setComments(factor: Factor, comments: Comment$[]): Factor;
    static getFactorType(factor: Factor): Option<OntologyAnnotation>;
    static mapFactorType(f: ((arg0: OntologyAnnotation) => OntologyAnnotation), factor: Factor): Factor;
    static setFactorType(factor: Factor, factorType: OntologyAnnotation): Factor;
    static tryGetName(f: Factor): Option<string>;
    static getNameAsString(f: Factor): string;
    static nameEqualsString(name: string, f: Factor): boolean;
    Copy(): Factor;
    Print(): string;
    PrintCompact(): string;
}
export declare function Factor_$reflection(): TypeInfo;
//# sourceMappingURL=Factor.fs.d.ts.map