import { type BaseCollectionPaginationCountResponse, type Dictionary, type Entity } from '../../';
import { type AdditionalDataHolder, type BackedModel, type Parsable, type ParseNode, type SerializationWriter } from '@microsoft/kiota-abstractions';
export interface ActivityLog 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 OdataType property
     */
    odataType?: string;
    /**
     * The statusFrom property
     */
    statusFrom?: SecurityAlertStatus;
    /**
     * The statusTo property
     */
    statusTo?: SecurityAlertStatus;
    /**
     * The UPN of the partner user who did the status update activity. This attribute is set by the system.
     */
    updatedBy?: string;
    /**
     * The date and time for the status update activity. This attribute is set by the system. 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.
     */
    updatedDateTime?: Date;
}
export interface AdditionalDataDictionary extends Dictionary, Parsable {
}
export interface AffectedResource 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 OdataType property
     */
    odataType?: string;
    /**
     * The resource path of the resource affected by the security alert.
     */
    resourceId?: string;
    /**
     * The type of resource.
     */
    resourceType?: string;
}
/**
 * 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 {ActivityLog}
 */
export declare function createActivityLogFromDiscriminatorValue(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 {AdditionalDataDictionary}
 */
export declare function createAdditionalDataDictionaryFromDiscriminatorValue(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 {AffectedResource}
 */
export declare function createAffectedResourceFromDiscriminatorValue(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 {PartnerSecurityAlertCollectionResponse}
 */
export declare function createPartnerSecurityAlertCollectionResponseFromDiscriminatorValue(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 {PartnerSecurityAlert}
 */
export declare function createPartnerSecurityAlertFromDiscriminatorValue(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 {PartnerSecurity}
 */
export declare function createPartnerSecurityFromDiscriminatorValue(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 deserializeIntoActivityLog(activityLog?: Partial<ActivityLog> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAdditionalDataDictionary(additionalDataDictionary?: Partial<AdditionalDataDictionary> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAffectedResource(affectedResource?: Partial<AffectedResource> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoPartnerSecurity(partnerSecurity?: Partial<PartnerSecurity> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoPartnerSecurityAlert(partnerSecurityAlert?: Partial<PartnerSecurityAlert> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoPartnerSecurityAlertCollectionResponse(partnerSecurityAlertCollectionResponse?: Partial<PartnerSecurityAlertCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
export interface PartnerSecurity extends Entity, Parsable {
    /**
     * The security alerts or a vulnerability of a CSP partner's customer that the partner must be made aware of for further action.
     */
    securityAlerts?: PartnerSecurityAlert[];
}
export interface PartnerSecurityAlert extends Entity, Parsable {
    /**
     * Represents the activity by a partner and includes details of state transitions, who performed them, and when they occurred.
     */
    activityLogs?: ActivityLog[];
    /**
     * A bag of name-value pairs that contain more details about an alert.
     */
    additionalDetails?: AdditionalDataDictionary;
    /**
     * Contains details of the resources affected by the security alert.
     */
    affectedResources?: AffectedResource[];
    /**
     * The type of vulnerability that impacts the customer due to this alert. For more information, see Security alerts reference guide.
     */
    alertType?: string;
    /**
     * The modern offer category ID of the subscription.
     */
    catalogOfferId?: string;
    /**
     * The confidenceLevel property
     */
    confidenceLevel?: SecurityAlertConfidence;
    /**
     * The impacted customer tenant associated with the alert.
     */
    customerTenantId?: string;
    /**
     * The description for each alert.
     */
    description?: string;
    /**
     * Time when the alert was detected or created. 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.
     */
    detectedDateTime?: Date;
    /**
     * The display name of the alert.
     */
    displayName?: string;
    /**
     * Time of the first activity associated with the alert. 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.
     */
    firstObservedDateTime?: Date;
    /**
     * Indicates whether an alert is a test alert.
     */
    isTest?: boolean;
    /**
     * Time of the latest activity associated with the alert. 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.
     */
    lastObservedDateTime?: Date;
    /**
     * The UPN of the partner user who resolved the alert.
     */
    resolvedBy?: string;
    /**
     * Time when the alert was resolved. 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.
     */
    resolvedOnDateTime?: Date;
    /**
     * The reason provided by the partner for addressing the alert. The possible values are: legitimate, ignore, fraud, unknownFutureValue.
     */
    resolvedReason?: SecurityAlertResolvedReason;
    /**
     * The severity property
     */
    severity?: SecurityAlertSeverity;
    /**
     * The status property
     */
    status?: SecurityAlertStatus;
    /**
     * The subscription associated with the alert for the customer.
     */
    subscriptionId?: string;
    /**
     * The value-added reseller tenant associated with the partner tenant and customer tenant.
     */
    valueAddedResellerTenantId?: string;
}
export interface PartnerSecurityAlertCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: PartnerSecurityAlert[];
}
export type SecurityAlertConfidence = (typeof SecurityAlertConfidenceObject)[keyof typeof SecurityAlertConfidenceObject];
export type SecurityAlertResolvedReason = (typeof SecurityAlertResolvedReasonObject)[keyof typeof SecurityAlertResolvedReasonObject];
export type SecurityAlertSeverity = (typeof SecurityAlertSeverityObject)[keyof typeof SecurityAlertSeverityObject];
export type SecurityAlertStatus = (typeof SecurityAlertStatusObject)[keyof typeof SecurityAlertStatusObject];
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeActivityLog(writer: SerializationWriter, activityLog?: Partial<ActivityLog> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAdditionalDataDictionary(writer: SerializationWriter, additionalDataDictionary?: Partial<AdditionalDataDictionary> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAffectedResource(writer: SerializationWriter, affectedResource?: Partial<AffectedResource> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializePartnerSecurity(writer: SerializationWriter, partnerSecurity?: Partial<PartnerSecurity> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializePartnerSecurityAlert(writer: SerializationWriter, partnerSecurityAlert?: Partial<PartnerSecurityAlert> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializePartnerSecurityAlertCollectionResponse(writer: SerializationWriter, partnerSecurityAlertCollectionResponse?: Partial<PartnerSecurityAlertCollectionResponse> | undefined): void;
export declare const SecurityAlertConfidenceObject: {
    readonly Low: "low";
    readonly Medium: "medium";
    readonly High: "high";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const SecurityAlertResolvedReasonObject: {
    readonly Legitimate: "legitimate";
    readonly Ignore: "ignore";
    readonly Fraud: "fraud";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const SecurityAlertSeverityObject: {
    readonly Informational: "informational";
    readonly High: "high";
    readonly Medium: "medium";
    readonly Low: "low";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const SecurityAlertStatusObject: {
    readonly Active: "active";
    readonly Resolved: "resolved";
    readonly Investigating: "investigating";
    readonly UnknownFutureValue: "unknownFutureValue";
};
//# sourceMappingURL=index.d.ts.map