import { type BaseCollectionPaginationCountResponse, type DirectoryObject, type Entity } from '../index.js';
import { type AdditionalDataHolder, type BackedModel, type DateOnly, type Guid, type Parsable, type ParseNode, type SerializationWriter } from '@microsoft/kiota-abstractions';
export interface AdminCloudLicensing extends Entity, Parsable {
    /**
     * The set of all allotments within the organization. Read-only.
     */
    allotments?: Allotment[] | null;
    /**
     * The set of all asynchronous allotment assignment errors that affect the organization. Read-only.
     */
    assignmentErrors?: AssignmentError[] | null;
    /**
     * The set of all license assignments within the organization. Not nullable.
     */
    assignments?: Assignment[] | null;
}
export interface Allotment extends Entity, Parsable {
    /**
     * The number of licenses contained within the allotment. Not nullable. Read-only.
     */
    allottedUnits?: number | null;
    /**
     * The assignableTo property
     */
    assignableTo?: AssigneeTypes[] | null;
    /**
     * The list of license assignments that consume licenses from this allotment. Not nullable.
     */
    assignments?: Assignment[] | null;
    /**
     * The number of licenses that are currently consumed by assignments from this allotment. Not nullable. Read-only.
     */
    consumedUnits?: number | null;
    /**
     * The externalServiceIdentifier property
     */
    externalServiceIdentifier?: string | null;
    /**
     * The list of services that might be enabled or disabled for assignments from this allotment. Not nullable. Read-only.
     */
    services?: Service[] | null;
    /**
     * Unique identifier (GUID) for the service SKU that is equal to the skuId property on the related subscribedSku object. Read-only. Supports $filter.
     */
    skuId?: Guid | null;
    /**
     * Unique SKU display name that is equal to the skuPartNumber on the related subscribedSku object; for example, AAD_Premium. Read-only.
     */
    skuPartNumber?: string | null;
    /**
     * Basic information about the subscriptions that supports this allotment.
     */
    subscriptions?: Subscription[] | null;
    /**
     * List of over-assigned users who are in the waiting room for an allotment due to license capacity limits.
     */
    waitingMembers?: WaitingMember[] | null;
}
export interface AllotmentCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Allotment[] | null;
}
export type AssigneeTypes = (typeof AssigneeTypesObject)[keyof typeof AssigneeTypesObject];
export interface Assignment extends Entity, Parsable {
    /**
     * The allotment from which licenses are assigned. Not nullable.
     */
    allotment?: Allotment | null;
    /**
     * The assignedTo property
     */
    assignedTo?: DirectoryObject | null;
    /**
     * The list of disabled service plans for this assignment. Not nullable.
     */
    disabledServicePlanIds?: Guid[] | null;
}
export interface AssignmentCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Assignment[] | null;
}
export interface AssignmentError extends Entity, Parsable {
    /**
     * The assignedTo property
     */
    assignedTo?: DirectoryObject | null;
    /**
     * The error code associated with the assignment synchronization failure.
     */
    code?: string | null;
    /**
     * The error message associated with the assignment synchronization failure.
     */
    message?: string | null;
    /**
     * The date and time at which the error most recently occurred. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    occurrenceDateTime?: Date | null;
    /**
     * Unique identifier (GUID) for the service SKU that is equal to the skuId property on the related subscribedSku object. Read-only. Supports $filter.
     */
    skuId?: Guid | null;
    /**
     * The affected usageRight, if one exists. Read-only.
     */
    usageRight?: UsageRight | null;
}
export interface AssignmentErrorCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: AssignmentError[] | null;
}
/**
 * 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 {AdminCloudLicensing}
 */
export declare function createAdminCloudLicensingFromDiscriminatorValue(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 {AllotmentCollectionResponse}
 */
export declare function createAllotmentCollectionResponseFromDiscriminatorValue(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 {Allotment}
 */
export declare function createAllotmentFromDiscriminatorValue(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 {AssignmentCollectionResponse}
 */
export declare function createAssignmentCollectionResponseFromDiscriminatorValue(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 {AssignmentErrorCollectionResponse}
 */
export declare function createAssignmentErrorCollectionResponseFromDiscriminatorValue(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 {AssignmentError}
 */
export declare function createAssignmentErrorFromDiscriminatorValue(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 {Assignment}
 */
export declare function createAssignmentFromDiscriminatorValue(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 {GroupCloudLicensing}
 */
export declare function createGroupCloudLicensingFromDiscriminatorValue(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 {Service}
 */
export declare function createServiceFromDiscriminatorValue(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 {Subscription}
 */
export declare function createSubscriptionFromDiscriminatorValue(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 {UsageRight}
 */
export declare function createUsageRightFromDiscriminatorValue(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 {UserCloudLicensing}
 */
export declare function createUserCloudLicensingFromDiscriminatorValue(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 {WaitingMemberCollectionResponse}
 */
export declare function createWaitingMemberCollectionResponseFromDiscriminatorValue(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 {WaitingMember}
 */
export declare function createWaitingMemberFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * The deserialization information for the current model
 * @param AdminCloudLicensing The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAdminCloudLicensing(adminCloudLicensing?: Partial<AdminCloudLicensing> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param Allotment The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAllotment(allotment?: Partial<Allotment> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param AllotmentCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAllotmentCollectionResponse(allotmentCollectionResponse?: Partial<AllotmentCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param Assignment The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAssignment(assignment?: Partial<Assignment> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param AssignmentCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAssignmentCollectionResponse(assignmentCollectionResponse?: Partial<AssignmentCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param AssignmentError The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAssignmentError(assignmentError?: Partial<AssignmentError> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param AssignmentErrorCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAssignmentErrorCollectionResponse(assignmentErrorCollectionResponse?: Partial<AssignmentErrorCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param GroupCloudLicensing The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoGroupCloudLicensing(groupCloudLicensing?: Partial<GroupCloudLicensing> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param Service The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoService(service?: Partial<Service> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param Subscription The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoSubscription(subscription?: Partial<Subscription> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param UsageRight The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoUsageRight(usageRight?: Partial<UsageRight> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param UserCloudLicensing The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoUserCloudLicensing(userCloudLicensing?: Partial<UserCloudLicensing> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param WaitingMember The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoWaitingMember(waitingMember?: Partial<WaitingMember> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param WaitingMemberCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoWaitingMemberCollectionResponse(waitingMemberCollectionResponse?: Partial<WaitingMemberCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
export interface GroupCloudLicensing extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * The assignments property
     */
    assignments?: Assignment[] | null;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * The usageRights property
     */
    usageRights?: UsageRight[] | null;
}
/**
 * Serializes information the current object
 * @param AdminCloudLicensing The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAdminCloudLicensing(writer: SerializationWriter, adminCloudLicensing?: Partial<AdminCloudLicensing> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param Allotment The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAllotment(writer: SerializationWriter, allotment?: Partial<Allotment> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param AllotmentCollectionResponse The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAllotmentCollectionResponse(writer: SerializationWriter, allotmentCollectionResponse?: Partial<AllotmentCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param Assignment The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAssignment(writer: SerializationWriter, assignment?: Partial<Assignment> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param AssignmentCollectionResponse The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAssignmentCollectionResponse(writer: SerializationWriter, assignmentCollectionResponse?: Partial<AssignmentCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param AssignmentError The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAssignmentError(writer: SerializationWriter, assignmentError?: Partial<AssignmentError> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param AssignmentErrorCollectionResponse The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAssignmentErrorCollectionResponse(writer: SerializationWriter, assignmentErrorCollectionResponse?: Partial<AssignmentErrorCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param GroupCloudLicensing The instance to serialize from.
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeGroupCloudLicensing(writer: SerializationWriter, groupCloudLicensing?: Partial<GroupCloudLicensing> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param Service The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeService(writer: SerializationWriter, service?: Partial<Service> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param Subscription The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeSubscription(writer: SerializationWriter, subscription?: Partial<Subscription> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param UsageRight The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeUsageRight(writer: SerializationWriter, usageRight?: Partial<UsageRight> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param UserCloudLicensing The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeUserCloudLicensing(writer: SerializationWriter, userCloudLicensing?: Partial<UserCloudLicensing> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param WaitingMember The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeWaitingMember(writer: SerializationWriter, waitingMember?: Partial<WaitingMember> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param WaitingMemberCollectionResponse The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeWaitingMemberCollectionResponse(writer: SerializationWriter, waitingMemberCollectionResponse?: Partial<WaitingMemberCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
export interface Service extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * The assignableTo property
     */
    assignableTo?: AssigneeTypes[] | null;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * The unique identifier of the service plan that is equal to the servicePlanId property on the related servicePlanInfo objects.
     */
    planId?: Guid | null;
    /**
     * The name of the service plan that is equal to the servicePlanName property on the related servicePlanInfo objects.
     */
    planName?: string | null;
}
export interface Subscription extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The date on which the current state transitions to the next state.
     */
    nextLifecycleDate?: DateOnly | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * The date when the subscription started.
     */
    startDate?: DateOnly | null;
    /**
     * The state property
     */
    state?: SubscriptionState | null;
    /**
     * Identifier for the subscription object.
     */
    subscriptionId?: string | null;
    /**
     * The tags property
     */
    tags?: SubscriptionTags[] | null;
}
export type SubscriptionState = (typeof SubscriptionStateObject)[keyof typeof SubscriptionStateObject];
export type SubscriptionTags = (typeof SubscriptionTagsObject)[keyof typeof SubscriptionTagsObject];
export interface UsageRight extends Entity, Parsable {
    /**
     * The set of allotments associated with the assignments that combine to form this usageRight.
     */
    allotments?: Allotment[] | null;
    /**
     * The set of assignments that combine to form this usageRight, including both direct assignments and assignments inherited through group membership.
     */
    assignments?: Assignment[] | null;
    /**
     * The externalServiceIdentifier property
     */
    externalServiceIdentifier?: string | null;
    /**
     * Information about the services associated with the usageRight. Not nullable. Read-only. Supports $filter on the planId property.
     */
    services?: Service[] | null;
    /**
     * Unique identifier (GUID) for the service SKU that is equal to the skuId property on the related subscribedSku object. Read-only. Supports $filter.
     */
    skuId?: Guid | null;
    /**
     * Unique SKU display name that is equal to the skuPartNumber on the related subscribedSku object; for example, AAD_Premium. Read-only.
     */
    skuPartNumber?: string | null;
}
export interface UserCloudLicensing extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * The assignmentErrors property
     */
    assignmentErrors?: AssignmentError[] | null;
    /**
     * The assignments property
     */
    assignments?: Assignment[] | null;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
    /**
     * The usageRights property
     */
    usageRights?: UsageRight[] | null;
    /**
     * The waitingMembers property
     */
    waitingMembers?: WaitingMember[] | null;
}
export interface WaitingMember extends Entity, Parsable {
    /**
     * The allotment property
     */
    allotment?: Allotment | null;
    /**
     * The assignedTo property
     */
    assignedTo?: DirectoryObject | null;
    /**
     * Indicates the moment when the user or device first waited for this license. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    waitingSinceDateTime?: Date | null;
}
export interface WaitingMemberCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: WaitingMember[] | null;
}
export declare const AssigneeTypesObject: {
    readonly None: "none";
    readonly User: "user";
    readonly Group: "group";
    readonly Device: "device";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const SubscriptionStateObject: {
    readonly Active: "active";
    readonly Warning: "warning";
    readonly Suspended: "suspended";
    readonly LockedOut: "lockedOut";
    readonly Deleted: "deleted";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const SubscriptionTagsObject: {
    readonly None: "none";
    readonly Trial: "trial";
    readonly UnknownFutureValue: "unknownFutureValue";
};
//# sourceMappingURL=index.d.ts.map