import { type BaseCollectionPaginationCountResponse, type Entity, type User } from '../index.js';
import { type AdditionalDataHolder, type BackedModel, type Parsable, type ParseNode, type SerializationWriter } from '@microsoft/kiota-abstractions';
export type AccountType = (typeof AccountTypeObject)[keyof typeof AccountTypeObject];
export interface AssignedTelephoneNumber 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>;
    /**
     * The assignmentCategory property
     */
    assignmentCategory?: AssignmentCategory | null;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * The assigned phone number.
     */
    telephoneNumber?: string | null;
}
export type AssignmentCategory = (typeof AssignmentCategoryObject)[keyof typeof AssignmentCategoryObject];
export type AssignmentType = (typeof AssignmentTypeObject)[keyof typeof AssignmentTypeObject];
/**
 * 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 {AssignedTelephoneNumber}
 */
export declare function createAssignedTelephoneNumberFromDiscriminatorValue(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 {EffectivePolicyAssignment}
 */
export declare function createEffectivePolicyAssignmentFromDiscriminatorValue(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 {PolicyAssignment}
 */
export declare function createPolicyAssignmentFromDiscriminatorValue(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 {TeamsAdminRoot}
 */
export declare function createTeamsAdminRootFromDiscriminatorValue(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 {TeamsPolicyAssignment}
 */
export declare function createTeamsPolicyAssignmentFromDiscriminatorValue(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 {TeamsUserConfigurationCollectionResponse}
 */
export declare function createTeamsUserConfigurationCollectionResponseFromDiscriminatorValue(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 {TeamsUserConfiguration}
 */
export declare function createTeamsUserConfigurationFromDiscriminatorValue(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 deserializeIntoAssignedTelephoneNumber(assignedTelephoneNumber?: Partial<AssignedTelephoneNumber> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoEffectivePolicyAssignment(effectivePolicyAssignment?: Partial<EffectivePolicyAssignment> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoPolicyAssignment(policyAssignment?: Partial<PolicyAssignment> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoTeamsAdminRoot(teamsAdminRoot?: Partial<TeamsAdminRoot> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoTeamsPolicyAssignment(teamsPolicyAssignment?: Partial<TeamsPolicyAssignment> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoTeamsUserConfiguration(teamsUserConfiguration?: Partial<TeamsUserConfiguration> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoTeamsUserConfigurationCollectionResponse(teamsUserConfigurationCollectionResponse?: Partial<TeamsUserConfigurationCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
export interface EffectivePolicyAssignment 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 | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * The policyAssignment property
     */
    policyAssignment?: PolicyAssignment | null;
    /**
     * The type of the assigned policy; for example, TeamsMeetingPolicy and TeamsCallingPolicy.
     */
    policyType?: string | null;
}
export interface PolicyAssignment 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>;
    /**
     * The assignmentType property
     */
    assignmentType?: AssignmentType | null;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * Represents the name of the policy.
     */
    displayName?: string | null;
    /**
     * Represents the group identifier.
     */
    groupId?: string | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * Represents the unique identifier for the policy.
     */
    policyId?: string | null;
}
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAssignedTelephoneNumber(writer: SerializationWriter, assignedTelephoneNumber?: Partial<AssignedTelephoneNumber> | undefined | null): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeEffectivePolicyAssignment(writer: SerializationWriter, effectivePolicyAssignment?: Partial<EffectivePolicyAssignment> | undefined | null): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializePolicyAssignment(writer: SerializationWriter, policyAssignment?: Partial<PolicyAssignment> | undefined | null): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeTeamsAdminRoot(writer: SerializationWriter, teamsAdminRoot?: Partial<TeamsAdminRoot> | undefined | null): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeTeamsPolicyAssignment(writer: SerializationWriter, teamsPolicyAssignment?: Partial<TeamsPolicyAssignment> | undefined | null): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeTeamsUserConfiguration(writer: SerializationWriter, teamsUserConfiguration?: Partial<TeamsUserConfiguration> | undefined | null): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeTeamsUserConfigurationCollectionResponse(writer: SerializationWriter, teamsUserConfigurationCollectionResponse?: Partial<TeamsUserConfigurationCollectionResponse> | undefined | null): void;
export interface TeamsAdminRoot extends Entity, Parsable {
    /**
     * The policy property
     */
    policy?: TeamsPolicyAssignment | null;
    /**
     * Represents the configuration information of users who have accounts hosted on Microsoft Teams.
     */
    userConfigurations?: TeamsUserConfiguration[] | null;
}
export interface TeamsPolicyAssignment extends Entity, Parsable {
}
export interface TeamsUserConfiguration extends Entity, Parsable {
    /**
     * The type of the account in the Teams context. The possible values are: user, resourceAccount, guest, sfbOnPremUser, unknown, unknownFutureValue, ineligibleUser. Use the Prefer: include-unknown-enum-members request header to get the following value from this enum evolvable enum: ineligibleUser.
     */
    accountType?: AccountType | null;
    /**
     * The date and time when the user was created. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    createdDateTime?: Date | null;
    /**
     * Contains the user's effective policy assignments, with each assignment including policyType and policyAssignment details.
     */
    effectivePolicyAssignments?: EffectivePolicyAssignment[] | null;
    /**
     * The Teams features enabled for a given user based on licensing or service plan.
     */
    featureTypes?: string[] | null;
    /**
     * Indicates whether voice capability is enabled.
     */
    isEnterpriseVoiceEnabled?: boolean | null;
    /**
     * The date and time when the user's details were last modified. The system updates this value each time the user's details are changed. The timestamp represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    modifiedDateTime?: Date | null;
    /**
     * Includes both the phone number and its corresponding assignment category. The assignment category can include values such as primary, private, and alternate.
     */
    telephoneNumbers?: AssignedTelephoneNumber[] | null;
    /**
     * The unique identifier of the tenant in Entra to which this user is assigned.
     */
    tenantId?: string | null;
    /**
     * Represents an Entra user account.
     */
    user?: User | null;
    /**
     * The sign-in address of the user.
     */
    userPrincipalName?: string | null;
}
export interface TeamsUserConfigurationCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: TeamsUserConfiguration[] | null;
}
export declare const AccountTypeObject: {
    readonly User: "user";
    readonly ResourceAccount: "resourceAccount";
    readonly Guest: "guest";
    readonly SfbOnPremUser: "sfbOnPremUser";
    readonly Unknown: "unknown";
    readonly UnknownFutureValue: "unknownFutureValue";
    readonly IneligibleUser: "ineligibleUser";
};
export declare const AssignmentCategoryObject: {
    readonly Primary: "primary";
    readonly Private: "private";
    readonly Alternate: "alternate";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const AssignmentTypeObject: {
    readonly Direct: "direct";
    readonly Group: "group";
    readonly UnknownFutureValue: "unknownFutureValue";
};
//# sourceMappingURL=index.d.ts.map