import { Union } from '@fable-org/fable-library-js/Types.js';
import { TypeInfo } from '@fable-org/fable-library-js/Reflection.js';
import { ArcTable } from './Table/ArcTable.fs.js';
import { Person } from './Person.fs.js';
import { OntologyAnnotation } from './OntologyAnnotation.fs.js';
import { SemVer } from './Helper/SemVer.fs.js';
import { int32 } from '@fable-org/fable-library-js/Int32.js';
export type Organisation_$union = Organisation<0> | Organisation<1>;
export type Organisation_$cases = {
    0: ["DataPLANT", []];
    1: ["Other", [string]];
};
export declare function Organisation_DataPLANT(): Organisation<0>;
export declare function Organisation_Other(Item: string): Organisation<1>;
export declare class Organisation<Tag extends keyof Organisation_$cases> extends Union<Tag, Organisation_$cases[Tag][0]> {
    readonly tag: Tag;
    readonly fields: Organisation_$cases[Tag][1];
    constructor(tag: Tag, fields: Organisation_$cases[Tag][1]);
    cases(): string[];
    static ofString(str: string): Organisation_$union;
    toString(): string;
    IsOfficial(): boolean;
}
export declare function Organisation_$reflection(): TypeInfo;
export declare class Template {
    "Id@": string;
    "Table@": ArcTable;
    "Name@": string;
    "Description@": string;
    "Organisation@": Organisation_$union;
    "Version@": string;
    "Authors@": Person[];
    "EndpointRepositories@": OntologyAnnotation[];
    "Tags@": OntologyAnnotation[];
    "LastUpdated@": Date;
    constructor(id: string, table: ArcTable, name?: string, description?: string, organisation?: Organisation_$union, version?: string, authors?: Person[], repos?: OntologyAnnotation[], tags?: OntologyAnnotation[], lastUpdated?: Date);
    get Id(): string;
    set Id(v: string);
    get Table(): ArcTable;
    set Table(v: ArcTable);
    get Name(): string;
    set Name(v: string);
    get Description(): string;
    set Description(v: string);
    get Organisation(): Organisation_$union;
    set Organisation(v: Organisation_$union);
    get Version(): string;
    set Version(v: string);
    get Authors(): Person[];
    set Authors(v: Person[]);
    get EndpointRepositories(): OntologyAnnotation[];
    set EndpointRepositories(v: OntologyAnnotation[]);
    get Tags(): OntologyAnnotation[];
    set Tags(v: OntologyAnnotation[]);
    get LastUpdated(): Date;
    set LastUpdated(v: Date);
    static make(id: string, table: ArcTable, name: string, description: string, organisation: Organisation_$union, version: string, authors: Person[], repos: OntologyAnnotation[], tags: OntologyAnnotation[], lastUpdated: Date): Template;
    static create(id: string, table: ArcTable, name?: string, description?: string, organisation?: Organisation_$union, version?: string, authors?: Person[], repos?: OntologyAnnotation[], tags?: OntologyAnnotation[], lastUpdated?: Date): Template;
    static init(templateName: string): Template;
    get SemVer(): SemVer | undefined;
    ReferenceEquals(other: Template): boolean;
    StructurallyEquals(other: Template): boolean;
    Copy(): Template;
    Equals(other: any): boolean;
    GetHashCode(): int32;
}
export declare function Template_$reflection(): TypeInfo;
export declare function Template_$ctor_Z17EA765C(id: string, table: ArcTable, name?: string, description?: string, organisation?: Organisation_$union, version?: string, authors?: Person[], repos?: OntologyAnnotation[], tags?: OntologyAnnotation[], lastUpdated?: Date): Template;
//# sourceMappingURL=Template.fs.d.ts.map