/*!
 * Copyright Sysdoc @ 2019
 */
/// <reference types="sharepoint" />
import { IValue } from "@sysdoc/utilities";
export declare type ITermItem = {
    id: string;
    label: string;
    order?: number;
    parent?: string;
    children?: ITermItem[];
    localProperties?: {
        [key: string]: string;
    };
    customProperties?: {
        [key: string]: string;
    };
};
export interface ITermStore {
    createTerm(parentTerm: SP.Taxonomy.Term, name: string, locale: number, guid: SP.Guid, properties?: IValue[]): Promise<SP.Taxonomy.Term>;
    getItemsFromTerms(terms: SP.Taxonomy.Term[], transform?: (term: SP.Taxonomy.Term) => ITermItem): ITermItem[];
    getParentTermById(termId: string): Promise<SP.Taxonomy.Term>;
    getAllItemsBySetTermId(termId: string): Promise<ITermItem[]>;
    getTerms(termIds: string[]): Promise<SP.Taxonomy.Term[]>;
    getTermsByTermId(termId: string): Promise<SP.Taxonomy.Term[]>;
    getTermsByTermSetId(termSetId: string): Promise<SP.Taxonomy.Term[]>;
    getAllTermsByTermSetId(termSetId: string): Promise<SP.Taxonomy.Term[]>;
    termSetIdFromTaxonomyField(fieldInternalName: string): Promise<string>;
    getTermsByIds(ids: string[]): Promise<SP.Taxonomy.TermCollection>;
    getParentTermByTerm(term: SP.Taxonomy.Term): Promise<SP.Taxonomy.Term>;
    getTopLevelParentOfTerm(id: string): Promise<SP.Taxonomy.Term>;
    getTermParents(termId: string): Promise<SP.Taxonomy.Term[]>;
    getParentThatSatisfies(id: string, fn: (v: SP.Taxonomy.Term) => boolean): Promise<SP.Taxonomy.Term>;
    getTermLabelsById(termId: string): Promise<SP.Taxonomy.Label[]>;
    getLabelsForTerms(terms: SP.Taxonomy.Term[]): Promise<SP.Taxonomy.LabelCollection[]>;
    getTermsSubTreeFlat(termId: string, list?: SP.Taxonomy.Term[]): Promise<SP.Taxonomy.Term[]>;
    getAllTermSetsInSiteCollectionGroup(createIfMissing: boolean): Promise<SP.Taxonomy.TermSet[]>;
    getTermLabels(term: SP.Taxonomy.Term): Promise<SP.Taxonomy.Label[]>;
    getTermById(id: string): Promise<SP.Taxonomy.Term>;
    getSiteCollectionTermGroup(createIfMissing: boolean): Promise<SP.Taxonomy.TermGroup>;
}
export declare type TermStoreContextCallback<T> = (ctx: SP.ClientContext, session: SP.Taxonomy.TaxonomySession, tstore: SP.Taxonomy.TermStore, execute: (result: T) => void) => void;
export declare function createTermStore(): ITermStore;
