import { Record } from '@fable-org/fable-library-js/Types.js';
import { Option } from '@fable-org/fable-library-js/Option.js';
import { OntologyAnnotation } from '../OntologyAnnotation.fs.js';
import { FSharpList } from '@fable-org/fable-library-js/List.js';
import { ProtocolParameter } from './ProtocolParameter.fs.js';
import { Component } from './Component.fs.js';
import { Comment$ } from '../Comment.fs.js';
import { IEquatable } from '@fable-org/fable-library-js/Util.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
export declare class Protocol extends Record implements IEquatable<Protocol> {
    readonly ID: Option<string>;
    readonly Name: Option<string>;
    readonly ProtocolType: Option<OntologyAnnotation>;
    readonly Description: Option<string>;
    readonly Uri: Option<string>;
    readonly Version: Option<string>;
    readonly Parameters: Option<FSharpList<ProtocolParameter>>;
    readonly Components: Option<FSharpList<Component>>;
    readonly Comments: Option<FSharpList<Comment$>>;
    constructor(ID: Option<string>, Name: Option<string>, ProtocolType: Option<OntologyAnnotation>, Description: Option<string>, Uri: Option<string>, Version: Option<string>, Parameters: Option<FSharpList<ProtocolParameter>>, Components: Option<FSharpList<Component>>, Comments: Option<FSharpList<Comment$>>);
}
export declare function Protocol_$reflection(): TypeInfo;
export declare function Protocol_make(id: Option<string>, name: Option<string>, protocolType: Option<OntologyAnnotation>, description: Option<string>, uri: Option<string>, version: Option<string>, parameters: Option<FSharpList<ProtocolParameter>>, components: Option<FSharpList<Component>>, comments: Option<FSharpList<Comment$>>): Protocol;
export declare function Protocol_create_Z414665E7(Id?: string, Name?: string, ProtocolType?: OntologyAnnotation, Description?: string, Uri?: string, Version?: string, Parameters?: FSharpList<ProtocolParameter>, Components?: FSharpList<Component>, Comments?: FSharpList<Comment$>): Protocol;
export declare function Protocol_get_empty(): Protocol;
/**
 * If a protocol with the given identfier exists in the list, returns it
 */
export declare function Protocol_tryGetByName(name: string, protocols: FSharpList<Protocol>): Option<Protocol>;
/**
 * If a protocol with the given name exists in the list exists, returns true
 */
export declare function Protocol_existsByName(name: string, protocols: FSharpList<Protocol>): boolean;
/**
 * Adds the given protocol to the protocols
 */
export declare function Protocol_add(protocols: FSharpList<Protocol>, protocol: Protocol): FSharpList<Protocol>;
/**
 * If a protocol with the given name exists in the list, removes it
 */
export declare function Protocol_removeByName(name: string, protocols: FSharpList<Protocol>): FSharpList<Protocol>;
/**
 * Returns comments of a protocol
 */
export declare function Protocol_getComments_3BF20962(protocol: Protocol): Option<FSharpList<Comment$>>;
/**
 * Applies function f on comments of a protocol
 */
export declare function Protocol_mapComments(f: ((arg0: FSharpList<Comment$>) => FSharpList<Comment$>), protocol: Protocol): Protocol;
/**
 * Replaces comments of a protocol by given comment list
 */
export declare function Protocol_setComments(protocol: Protocol, comments: FSharpList<Comment$>): Protocol;
/**
 * Returns protocol type of a protocol
 */
export declare function Protocol_getProtocolType_3BF20962(protocol: Protocol): Option<OntologyAnnotation>;
/**
 * Applies function f on protocol type of a protocol
 */
export declare function Protocol_mapProtocolType(f: ((arg0: OntologyAnnotation) => OntologyAnnotation), protocol: Protocol): Protocol;
/**
 * Replaces protocol type of a protocol by given protocol type
 */
export declare function Protocol_setProtocolType(protocol: Protocol, protocolType: OntologyAnnotation): Protocol;
/**
 * Returns protocol version of a protocol
 */
export declare function Protocol_getVersion_3BF20962(protocol: Protocol): Option<string>;
/**
 * Applies function f on protocol version of a protocol
 */
export declare function Protocol_mapVersion(f: ((arg0: string) => string), protocol: Protocol): Protocol;
/**
 * Replaces protocol version of a protocol by given protocol version
 */
export declare function Protocol_setVersion(protocol: Protocol, version: string): Protocol;
/**
 * Protocol Name
 * Returns protocol name of a protocol
 */
export declare function Protocol_getName_3BF20962(protocol: Protocol): Option<string>;
/**
 * Applies function f on protocol name of a protocol
 */
export declare function Protocol_mapName(f: ((arg0: string) => string), protocol: Protocol): Protocol;
/**
 * Replaces protocol name of a protocol by given protocol name
 */
export declare function Protocol_setName(protocol: Protocol, name: string): Protocol;
/**
 * Returns protocol description of a protocol
 */
export declare function Protocol_getDescription_3BF20962(protocol: Protocol): Option<string>;
/**
 * Applies function f on protocol description of a protocol
 */
export declare function Protocol_mapDescription(f: ((arg0: string) => string), protocol: Protocol): Protocol;
/**
 * Replaces protocol description of a protocol by given protocol description
 */
export declare function Protocol_setDescription(protocol: Protocol, description: string): Protocol;
/**
 * Returns protocol URI of a protocol
 */
export declare function Protocol_getUri_3BF20962(protocol: Protocol): Option<string>;
/**
 * Applies function f on protocol URI of a protocol
 */
export declare function Protocol_mapUri(f: ((arg0: string) => string), protocol: Protocol): Protocol;
/**
 * Replaces protocol URI of a protocol by given protocol URI
 */
export declare function Protocol_setUri(protocol: Protocol, uri: string): Protocol;
/**
 * Returns components of a protocol
 */
export declare function Protocol_getComponents_3BF20962(protocol: Protocol): Option<FSharpList<Component>>;
/**
 * Applies function f on components of a protocol
 */
export declare function Protocol_mapComponents(f: ((arg0: FSharpList<Component>) => FSharpList<Component>), protocol: Protocol): Protocol;
/**
 * Replaces components of a protocol by given component list
 */
export declare function Protocol_setComponents(protocol: Protocol, components: FSharpList<Component>): Protocol;
export declare function Protocol_addComponent(comp: Component, protocol: Protocol): Protocol;
/**
 * Returns protocol parameters of a protocol
 */
export declare function Protocol_getParameters_3BF20962(protocol: Protocol): Option<FSharpList<ProtocolParameter>>;
/**
 * Applies function f on protocol parameters of a protocol
 */
export declare function Protocol_mapParameters(f: ((arg0: FSharpList<ProtocolParameter>) => FSharpList<ProtocolParameter>), protocol: Protocol): Protocol;
/**
 * Replaces protocol parameters of a protocol by given protocol parameter list
 */
export declare function Protocol_setParameters(protocol: Protocol, parameters: FSharpList<ProtocolParameter>): Protocol;
export declare function Protocol_addParameter(parameter: ProtocolParameter, protocol: Protocol): Protocol;
//# sourceMappingURL=Protocol.fs.d.ts.map