import { type BaseCollectionPaginationCountResponse, type Entity, type KeyValue } from '../';
import { type AdditionalDataHolder, type BackedModel, type Parsable, type ParseNode, type SerializationWriter } from '@microsoft/kiota-abstractions';
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {GroupCollectionResponse}
 */
export declare function createGroupCollectionResponseFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Group}
 */
export declare function createGroupFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {LocalizedDescription}
 */
export declare function createLocalizedDescriptionFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {LocalizedLabel}
 */
export declare function createLocalizedLabelFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {LocalizedName}
 */
export declare function createLocalizedNameFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {RelationCollectionResponse}
 */
export declare function createRelationCollectionResponseFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Relation}
 */
export declare function createRelationFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {SetCollectionResponse}
 */
export declare function createSetCollectionResponseFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Set}
 */
export declare function createSetFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Store}
 */
export declare function createStoreFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {TermCollectionResponse}
 */
export declare function createTermCollectionResponseFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Term}
 */
export declare function createTermFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoGroup(group?: Partial<Group> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoGroupCollectionResponse(groupCollectionResponse?: Partial<GroupCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoLocalizedDescription(localizedDescription?: Partial<LocalizedDescription> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoLocalizedLabel(localizedLabel?: Partial<LocalizedLabel> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoLocalizedName(localizedName?: Partial<LocalizedName> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRelation(relation?: Partial<Relation> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRelationCollectionResponse(relationCollectionResponse?: Partial<RelationCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoSet(set?: Partial<Set> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoSetCollectionResponse(setCollectionResponse?: Partial<SetCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoStore(store?: Partial<Store> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoTerm(term?: Partial<Term> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoTermCollectionResponse(termCollectionResponse?: Partial<TermCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
export interface Group extends Entity, Parsable {
    /**
     * Date and time of the group creation. Read-only.
     */
    createdDateTime?: Date;
    /**
     * Description that gives details on the term usage.
     */
    description?: string;
    /**
     * Name of the group.
     */
    displayName?: string;
    /**
     * ID of the parent site of this group.
     */
    parentSiteId?: string;
    /**
     * Returns the type of the group. Possible values are: global, system, and siteCollection.
     */
    scope?: TermGroupScope;
    /**
     * All sets under the group in a term [store].
     */
    sets?: Set[];
}
export interface GroupCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Group[];
}
export interface LocalizedDescription extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The description in the localized language.
     */
    description?: string;
    /**
     * The language tag for the label.
     */
    languageTag?: string;
    /**
     * The OdataType property
     */
    odataType?: string;
}
export interface LocalizedLabel extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * Indicates whether the label is the default label.
     */
    isDefault?: boolean;
    /**
     * The language tag for the label.
     */
    languageTag?: string;
    /**
     * The name of the label.
     */
    name?: string;
    /**
     * The OdataType property
     */
    odataType?: string;
}
export interface LocalizedName extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The language tag for the label.
     */
    languageTag?: string;
    /**
     * The name in the localized language.
     */
    name?: string;
    /**
     * The OdataType property
     */
    odataType?: string;
}
export interface Relation extends Entity, Parsable {
    /**
     * The from [term] of the relation. The term from which the relationship is defined. A null value would indicate the relation is directly with the [set].
     */
    fromTerm?: Term;
    /**
     * The type of relation. Possible values are: pin, reuse.
     */
    relationship?: RelationType;
    /**
     * The [set] in which the relation is relevant.
     */
    set?: Set;
    /**
     * The to [term] of the relation. The term to which the relationship is defined.
     */
    toTerm?: Term;
}
export interface RelationCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Relation[];
}
export type RelationType = (typeof RelationTypeObject)[keyof typeof RelationTypeObject];
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeGroup(writer: SerializationWriter, group?: Partial<Group> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeGroupCollectionResponse(writer: SerializationWriter, groupCollectionResponse?: Partial<GroupCollectionResponse> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeLocalizedDescription(writer: SerializationWriter, localizedDescription?: Partial<LocalizedDescription> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeLocalizedLabel(writer: SerializationWriter, localizedLabel?: Partial<LocalizedLabel> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeLocalizedName(writer: SerializationWriter, localizedName?: Partial<LocalizedName> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRelation(writer: SerializationWriter, relation?: Partial<Relation> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRelationCollectionResponse(writer: SerializationWriter, relationCollectionResponse?: Partial<RelationCollectionResponse> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeSet(writer: SerializationWriter, set?: Partial<Set> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeSetCollectionResponse(writer: SerializationWriter, setCollectionResponse?: Partial<SetCollectionResponse> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeStore(writer: SerializationWriter, store?: Partial<Store> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeTerm(writer: SerializationWriter, term?: Partial<Term> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeTermCollectionResponse(writer: SerializationWriter, termCollectionResponse?: Partial<TermCollectionResponse> | undefined): void;
export interface Set extends Entity, Parsable {
    /**
     * Children terms of set in term [store].
     */
    children?: Term[];
    /**
     * Date and time of set creation. Read-only.
     */
    createdDateTime?: Date;
    /**
     * Description giving details on the term usage.
     */
    description?: string;
    /**
     * Name of the set for each languageTag.
     */
    localizedNames?: LocalizedName[];
    /**
     * The parentGroup property
     */
    parentGroup?: Group;
    /**
     * Custom properties for the set.
     */
    properties?: KeyValue[];
    /**
     * Indicates which terms have been pinned or reused directly under the set.
     */
    relations?: Relation[];
    /**
     * All the terms under the set.
     */
    terms?: Term[];
}
export interface SetCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Set[];
}
export interface Store extends Entity, Parsable {
    /**
     * Default language of the term store.
     */
    defaultLanguageTag?: string;
    /**
     * Collection of all groups available in the term store.
     */
    groups?: Group[];
    /**
     * List of languages for the term store.
     */
    languageTags?: string[];
    /**
     * Collection of all sets available in the term store.
     */
    sets?: Set[];
}
export interface Term extends Entity, Parsable {
    /**
     * Children of current term.
     */
    children?: Term[];
    /**
     * Date and time of term creation. Read-only.
     */
    createdDateTime?: Date;
    /**
     * Description about term that is dependent on the languageTag.
     */
    descriptions?: LocalizedDescription[];
    /**
     * Label metadata for a term.
     */
    labels?: LocalizedLabel[];
    /**
     * Last date and time of term modification. Read-only.
     */
    lastModifiedDateTime?: Date;
    /**
     * Collection of properties on the term.
     */
    properties?: KeyValue[];
    /**
     * To indicate which terms are related to the current term as either pinned or reused.
     */
    relations?: Relation[];
    /**
     * The [set] in which the term is created.
     */
    set?: Set;
}
export interface TermCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Term[];
}
export type TermGroupScope = (typeof TermGroupScopeObject)[keyof typeof TermGroupScopeObject];
export declare const RelationTypeObject: {
    readonly Pin: "pin";
    readonly Reuse: "reuse";
};
export declare const TermGroupScopeObject: {
    readonly Global: "global";
    readonly System: "system";
    readonly SiteCollection: "siteCollection";
};
//# sourceMappingURL=index.d.ts.map