import type { LaraClient } from "./net/lara";
import type { MultiPartFile } from "./net/lara/client";
export interface Glossary {
    readonly id: string;
    readonly name: string;
    readonly ownerId: string;
    readonly createdAt: Date;
    readonly updatedAt: Date;
    readonly isPersonal: boolean;
}
export interface GlossaryImport {
    readonly id: string;
    readonly begin: number;
    readonly end: number;
    readonly channel: number;
    readonly size: number;
    readonly progress: number;
}
export interface GlossaryCounts {
    unidirectional?: Record<string, number>;
    multidirectional?: number;
}
export type GlossaryFileFormat = "csv/table-uni" | "csv/table-multi";
export type GlossaryImportCallback = (glossaryImport: GlossaryImport) => void;
export declare class Glossaries {
    private readonly client;
    private readonly pollingInterval;
    constructor(client: LaraClient);
    list(): Promise<Glossary[]>;
    create(name: string): Promise<Glossary>;
    get(id: string): Promise<Glossary | null>;
    delete(id: string): Promise<Glossary>;
    update(id: string, name: string): Promise<Glossary>;
    importCsv(id: string, csv: MultiPartFile, gzip?: boolean): Promise<GlossaryImport>;
    importCsv(id: string, csv: MultiPartFile, contentType: GlossaryFileFormat, gzip?: boolean): Promise<GlossaryImport>;
    getImportStatus(id: string): Promise<GlossaryImport>;
    waitForImport(gImport: GlossaryImport, updateCallback?: GlossaryImportCallback, maxWaitTime?: number): Promise<GlossaryImport>;
    counts(id: string): Promise<GlossaryCounts>;
    export(id: string, contentType: GlossaryFileFormat, source?: string): Promise<string>;
    addOrReplaceEntry(id: string, terms: {
        language: string;
        value: string;
    }[], guid?: string): Promise<GlossaryImport>;
    deleteEntry(id: string, term?: {
        language: string;
        value: string;
    }, guid?: string): Promise<GlossaryImport>;
}
