import { Union } from '@fable-org/fable-library-js/Types.js';
import { Source } from './Source.fs.js';
import { Material } from './Material.fs.js';
import { Data } from '../Data.fs.js';
import { Sample } from './Sample.fs.js';
import { IISAPrintable } from '../Helper/Printer.fs.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
import { Option } from '@fable-org/fable-library-js/Option.js';
import { FSharpList } from '@fable-org/fable-library-js/List.js';
import { MaterialAttributeValue } from './MaterialAttributeValue.fs.js';
import { MaterialAttribute } from './MaterialAttribute.fs.js';
import { OntologyAnnotation } from '../OntologyAnnotation.fs.js';
import { FactorValue } from './FactorValue.fs.js';
export type ProcessInput_$union = ProcessInput<0> | ProcessInput<1> | ProcessInput<2> | ProcessInput<3>;
export type ProcessInput_$cases = {
    0: ["Source", [Source]];
    1: ["Sample", [Sample]];
    2: ["Data", [Data]];
    3: ["Material", [Material]];
};
export declare function ProcessInput_Source(Item: Source): ProcessInput<0>;
export declare function ProcessInput_Sample(Item: Sample): ProcessInput<1>;
export declare function ProcessInput_Data(Item: Data): ProcessInput<2>;
export declare function ProcessInput_Material(Item: Material): ProcessInput<3>;
export declare class ProcessInput<Tag extends keyof ProcessInput_$cases> extends Union<Tag, ProcessInput_$cases[Tag][0]> implements IISAPrintable {
    readonly tag: Tag;
    readonly fields: ProcessInput_$cases[Tag][1];
    constructor(tag: Tag, fields: ProcessInput_$cases[Tag][1]);
    cases(): string[];
    Print(): string;
    PrintCompact(): string;
}
export declare function ProcessInput_$reflection(): TypeInfo;
export declare function ProcessInput__get_TryName(this$: ProcessInput_$union): Option<string>;
export declare function ProcessInput__get_Name(this$: ProcessInput_$union): string;
export declare function ProcessInput_get_Default(): ProcessInput_$union;
/**
 * Returns name of processInput
 */
export declare function ProcessInput_tryGetName_5B3D5BA9(pi: ProcessInput_$union): Option<string>;
/**
 * Returns name of processInput
 */
export declare function ProcessInput_getName_5B3D5BA9(pi: ProcessInput_$union): string;
/**
 * Returns true, if given name equals name of processInput
 */
export declare function ProcessInput_nameEquals(name: string, pi: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Sample
 */
export declare function ProcessInput_isSample_5B3D5BA9(pi: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Source
 */
export declare function ProcessInput_isSource_5B3D5BA9(pi: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Data
 */
export declare function ProcessInput_isData_5B3D5BA9(pi: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Material
 */
export declare function ProcessInput_isMaterial_5B3D5BA9(pi: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Source
 */
export declare function ProcessInput__isSource(this$: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Sample
 */
export declare function ProcessInput__isSample(this$: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Data
 */
export declare function ProcessInput__isData(this$: ProcessInput_$union): boolean;
/**
 * Returns true, if Process Input is Material
 */
export declare function ProcessInput__isMaterial(this$: ProcessInput_$union): boolean;
/**
 * If given process input is a sample, returns it, else returns None
 */
export declare function ProcessInput_trySample_5B3D5BA9(pi: ProcessInput_$union): Option<Sample>;
/**
 * If given process input is a source, returns it, else returns None
 */
export declare function ProcessInput_trySource_5B3D5BA9(pi: ProcessInput_$union): Option<Source>;
/**
 * If given process input is a data, returns it, else returns None
 */
export declare function ProcessInput_tryData_5B3D5BA9(pi: ProcessInput_$union): Option<Data>;
/**
 * If given process input is a material, returns it, else returns None
 */
export declare function ProcessInput_tryMaterial_5B3D5BA9(pi: ProcessInput_$union): Option<Material>;
export declare function ProcessInput_setCharacteristicValues(characteristics: FSharpList<MaterialAttributeValue>, pi: ProcessInput_$union): ProcessInput_$union;
/**
 * If given process input contains characteristics, returns them
 */
export declare function ProcessInput_tryGetCharacteristicValues_5B3D5BA9(pi: ProcessInput_$union): Option<FSharpList<MaterialAttributeValue>>;
/**
 * If given process input contains characteristics, returns them
 */
export declare function ProcessInput_tryGetCharacteristics_5B3D5BA9(pi: ProcessInput_$union): Option<FSharpList<MaterialAttribute>>;
export declare function ProcessInput_getCharacteristicValues_5B3D5BA9(pi: ProcessInput_$union): FSharpList<MaterialAttributeValue>;
/**
 * If given process output contains units, returns them
 */
export declare function ProcessInput_getUnits_5B3D5BA9(pi: ProcessInput_$union): FSharpList<OntologyAnnotation>;
export declare function ProcessInput_createSource_Z5E00540E(name: string, characteristics?: FSharpList<MaterialAttributeValue>): ProcessInput_$union;
export declare function ProcessInput_createSample_Z598187B7(name: string, characteristics?: FSharpList<MaterialAttributeValue>, factors?: FSharpList<FactorValue>, derivesFrom?: FSharpList<Source>): ProcessInput_$union;
export declare function ProcessInput_createMaterial_4452CB4C(name: string, characteristics?: FSharpList<MaterialAttributeValue>, derivesFrom?: FSharpList<Material>): ProcessInput_$union;
export declare function ProcessInput_createImageFile_Z721C83C5(name: string): ProcessInput_$union;
export declare function ProcessInput_createRawData_Z721C83C5(name: string): ProcessInput_$union;
export declare function ProcessInput_createDerivedData_Z721C83C5(name: string): ProcessInput_$union;
//# sourceMappingURL=ProcessInput.fs.d.ts.map