import { type BaseCollectionPaginationCountResponse, type Entity } from '../index.js';
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 {EntityTypeAndIds}
 */
export declare function createEntityTypeAndIdsFromDiscriminatorValue(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 {RecoveryChangeObjectBase}
 */
export declare function createRecoveryChangeObjectBaseFromDiscriminatorValue(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 {Recovery}
 */
export declare function createRecoveryFromDiscriminatorValue(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 {RecoveryJobBaseCollectionResponse}
 */
export declare function createRecoveryJobBaseCollectionResponseFromDiscriminatorValue(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 {RecoveryJobBase}
 */
export declare function createRecoveryJobBaseFromDiscriminatorValue(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 {RecoveryJobCollectionResponse}
 */
export declare function createRecoveryJobCollectionResponseFromDiscriminatorValue(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 {RecoveryJobEntityNameAndIdsFilter}
 */
export declare function createRecoveryJobEntityNameAndIdsFilterFromDiscriminatorValue(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 {RecoveryJobEntityNamesFilter}
 */
export declare function createRecoveryJobEntityNamesFilterFromDiscriminatorValue(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 {RecoveryJobFilteringCriteriaBase}
 */
export declare function createRecoveryJobFilteringCriteriaBaseFromDiscriminatorValue(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 {RecoveryJob}
 */
export declare function createRecoveryJobFromDiscriminatorValue(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 {RecoveryPreviewJobCollectionResponse}
 */
export declare function createRecoveryPreviewJobCollectionResponseFromDiscriminatorValue(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 {RecoveryPreviewJob}
 */
export declare function createRecoveryPreviewJobFromDiscriminatorValue(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 {SnapshotCollectionResponse}
 */
export declare function createSnapshotCollectionResponseFromDiscriminatorValue(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 {Snapshot}
 */
export declare function createSnapshotFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * The deserialization information for the current model
 * @param EntityTypeAndIds The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoEntityTypeAndIds(entityTypeAndIds?: Partial<EntityTypeAndIds> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param Recovery The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecovery(recovery?: Partial<Recovery> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryChangeObjectBase The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryChangeObjectBase(recoveryChangeObjectBase?: Partial<RecoveryChangeObjectBase> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJob The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJob(recoveryJob?: Partial<RecoveryJob> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJobBase The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJobBase(recoveryJobBase?: Partial<RecoveryJobBase> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJobBaseCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJobBaseCollectionResponse(recoveryJobBaseCollectionResponse?: Partial<RecoveryJobBaseCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJobCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJobCollectionResponse(recoveryJobCollectionResponse?: Partial<RecoveryJobCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJobEntityNameAndIdsFilter The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJobEntityNameAndIdsFilter(recoveryJobEntityNameAndIdsFilter?: Partial<RecoveryJobEntityNameAndIdsFilter> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJobEntityNamesFilter The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJobEntityNamesFilter(recoveryJobEntityNamesFilter?: Partial<RecoveryJobEntityNamesFilter> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryJobFilteringCriteriaBase The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryJobFilteringCriteriaBase(recoveryJobFilteringCriteriaBase?: Partial<RecoveryJobFilteringCriteriaBase> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryPreviewJob The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryPreviewJob(recoveryPreviewJob?: Partial<RecoveryPreviewJob> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param RecoveryPreviewJobCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRecoveryPreviewJobCollectionResponse(recoveryPreviewJobCollectionResponse?: Partial<RecoveryPreviewJobCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param Snapshot The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoSnapshot(snapshot?: Partial<Snapshot> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @param SnapshotCollectionResponse The instance to deserialize into.
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoSnapshotCollectionResponse(snapshotCollectionResponse?: Partial<SnapshotCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
export interface EntityTypeAndIds extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The entityIds property
     */
    entityIds?: string[] | null;
    /**
     * The entityType property
     */
    entityType?: ResourceTypeName | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
}
export interface Recovery extends Entity, Parsable {
    /**
     * The jobs property
     */
    jobs?: RecoveryJobBase[] | null;
    /**
     * The snapshots property
     */
    snapshots?: Snapshot[] | null;
}
export type RecoveryAction = (typeof RecoveryActionObject)[keyof typeof RecoveryActionObject];
export interface RecoveryChangeObjectBase extends Entity, Parsable {
    /**
     * The displayName property
     */
    displayName?: string | null;
    /**
     * The entityTypeName property
     */
    entityTypeName?: ResourceTypeName | null;
    /**
     * The failureMessage property
     */
    failureMessage?: string | null;
    /**
     * The recoveryAction property
     */
    recoveryAction?: RecoveryAction | null;
}
export interface RecoveryJob extends Parsable, RecoveryJobBase {
    /**
     * The totalFailedChanges property
     */
    totalFailedChanges?: number | null;
    /**
     * The totalLinksModified property
     */
    totalLinksModified?: number | null;
    /**
     * The totalObjectsModified property
     */
    totalObjectsModified?: number | null;
}
export interface RecoveryJobBase extends Entity, Parsable {
    /**
     * The filteringCriteria property
     */
    filteringCriteria?: RecoveryJobFilteringCriteriaBase | null;
    /**
     * The jobCompletionDateTime property
     */
    jobCompletionDateTime?: Date | null;
    /**
     * The jobStartDateTime property
     */
    jobStartDateTime?: Date | null;
    /**
     * The status property
     */
    status?: RecoveryStatus | null;
    /**
     * The targetStateDateTime property
     */
    targetStateDateTime?: Date | null;
    /**
     * The totalChangedLinksCalculated property
     */
    totalChangedLinksCalculated?: number | null;
    /**
     * The totalChangedObjectsCalculated property
     */
    totalChangedObjectsCalculated?: number | null;
}
export interface RecoveryJobBaseCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: RecoveryJobBase[] | null;
}
export interface RecoveryJobCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: RecoveryJob[] | null;
}
export interface RecoveryJobEntityNameAndIdsFilter extends Parsable, RecoveryJobFilteringCriteriaBase {
    /**
     * The filterValues property
     */
    filterValues?: EntityTypeAndIds[] | null;
}
export interface RecoveryJobEntityNamesFilter extends Parsable, RecoveryJobFilteringCriteriaBase {
    /**
     * The entityTypes property
     */
    entityTypes?: ResourceTypeName[] | null;
}
export interface RecoveryJobFilteringCriteriaBase extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean | null;
    /**
     * The OdataType property
     */
    odataType?: string | null;
}
export interface RecoveryPreviewJob extends Parsable, RecoveryJobBase {
}
export interface RecoveryPreviewJobCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: RecoveryPreviewJob[] | null;
}
export type RecoveryStatus = (typeof RecoveryStatusObject)[keyof typeof RecoveryStatusObject];
export type ResourceTypeName = (typeof ResourceTypeNameObject)[keyof typeof ResourceTypeNameObject];
/**
 * Serializes information the current object
 * @param EntityTypeAndIds 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 serializeEntityTypeAndIds(writer: SerializationWriter, entityTypeAndIds?: Partial<EntityTypeAndIds> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param Recovery The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecovery(writer: SerializationWriter, recovery?: Partial<Recovery> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryChangeObjectBase The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryChangeObjectBase(writer: SerializationWriter, recoveryChangeObjectBase?: Partial<RecoveryChangeObjectBase> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJob The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJob(writer: SerializationWriter, recoveryJob?: Partial<RecoveryJob> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJobBase The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJobBase(writer: SerializationWriter, recoveryJobBase?: Partial<RecoveryJobBase> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJobBaseCollectionResponse The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJobBaseCollectionResponse(writer: SerializationWriter, recoveryJobBaseCollectionResponse?: Partial<RecoveryJobBaseCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJobCollectionResponse The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJobCollectionResponse(writer: SerializationWriter, recoveryJobCollectionResponse?: Partial<RecoveryJobCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJobEntityNameAndIdsFilter The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJobEntityNameAndIdsFilter(writer: SerializationWriter, recoveryJobEntityNameAndIdsFilter?: Partial<RecoveryJobEntityNameAndIdsFilter> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJobEntityNamesFilter The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJobEntityNamesFilter(writer: SerializationWriter, recoveryJobEntityNamesFilter?: Partial<RecoveryJobEntityNamesFilter> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryJobFilteringCriteriaBase The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryJobFilteringCriteriaBase(writer: SerializationWriter, recoveryJobFilteringCriteriaBase?: Partial<RecoveryJobFilteringCriteriaBase> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryPreviewJob The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryPreviewJob(writer: SerializationWriter, recoveryPreviewJob?: Partial<RecoveryPreviewJob> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param RecoveryPreviewJobCollectionResponse The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRecoveryPreviewJobCollectionResponse(writer: SerializationWriter, recoveryPreviewJobCollectionResponse?: Partial<RecoveryPreviewJobCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param Snapshot The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeSnapshot(writer: SerializationWriter, snapshot?: Partial<Snapshot> | undefined | null, isSerializingDerivedType?: boolean): void;
/**
 * Serializes information the current object
 * @param isSerializingDerivedType A boolean indicating whether the serialization is for a derived type.
 * @param SnapshotCollectionResponse The instance to serialize from.
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeSnapshotCollectionResponse(writer: SerializationWriter, snapshotCollectionResponse?: Partial<SnapshotCollectionResponse> | undefined | null, isSerializingDerivedType?: boolean): void;
export interface Snapshot extends Entity, Parsable {
    /**
     * The createdDateTime property
     */
    createdDateTime?: Date | null;
    /**
     * The recoveryJobs property
     */
    recoveryJobs?: RecoveryJob[] | null;
    /**
     * The recoveryPreviewJobs property
     */
    recoveryPreviewJobs?: RecoveryPreviewJob[] | null;
    /**
     * The totalChangedObjects property
     */
    totalChangedObjects?: number | null;
}
export interface SnapshotCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: Snapshot[] | null;
}
export declare const RecoveryActionObject: {
    /** Represents a soft delete action during recovery */
    readonly SoftDelete: "softDelete";
    /** Represents an update action during recovery */
    readonly Update: "update";
    /** Represents a restore action during recovery */
    readonly Restore: "restore";
    /** This will help in making this enum evolable and adding more values in the future */
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const RecoveryStatusObject: {
    /** Represents a job that has been initialized but has not been started yet */
    readonly Initialized: "initialized";
    /** Represents a job that is in progress */
    readonly Running: "running";
    /** Represents a job that ran successfully and is now complete */
    readonly Successful: "successful";
    /** Represents a job that we were not able to run successfully */
    readonly Failed: "failed";
    /** Represents a job that was abandoned by the user */
    readonly Abandoned: "abandoned";
    /** This will help in making this enum evolable and adding more values in the future- */
    readonly UnknownFutureValue: "unknownFutureValue";
    /** Represents a job for which we have started calculating the diff/preview. */
    readonly Calculating: "calculating";
    /** Represents a job for which we have started loading data of the snapshot. */
    readonly LoadingData: "loadingData";
};
export declare const ResourceTypeNameObject: {
    /** Represents the user entity */
    readonly User: "user";
    /** Represents the group entity */
    readonly Group: "group";
    /** Represents the conditional access policy entity */
    readonly ConditionalAccessPolicy: "conditionalAccessPolicy";
    /** Represents the named location policy entity */
    readonly NamedLocationPolicy: "namedLocationPolicy";
    /** Represents the authentication method policy entity */
    readonly AuthenticationMethodPolicy: "authenticationMethodPolicy";
    /** Represents the authorization policy entity */
    readonly AuthorizationPolicy: "authorizationPolicy";
    /** Represents the authentication strength policy entity */
    readonly AuthenticationStrengthPolicy: "authenticationStrengthPolicy";
    /** Represents the application entity */
    readonly Application: "application";
    /** Represents the service principal entity */
    readonly ServicePrincipal: "servicePrincipal";
    /** This will help in making this enum evolable and adding more values in the future. */
    readonly UnknownFutureValue: "unknownFutureValue";
    /** Represents the oAuth2PermissionGrant entity. */
    readonly OAuth2PermissionGrant: "oAuth2PermissionGrant";
    /** Represents the appRoleAssignment entity. */
    readonly AppRoleAssignment: "appRoleAssignment";
    /** Represents the organization entity. */
    readonly Organization: "organization";
};
//# sourceMappingURL=index.d.ts.map