import { APIResource } from "../../../core/resource.mjs";
import { APIPromise } from "../../../core/api-promise.mjs";
import { RequestOptions } from "../../../internal/request-options.mjs";
export declare class BaseDetections extends APIResource {
    static readonly _key: readonly ['emailSecurity', 'investigate', 'detections'];
    /**
     * Returns detection details such as threat categories and sender information for
     * messages with a detection.
     *
     * @example
     * ```ts
     * const detection =
     *   await client.emailSecurity.investigate.detections.get(
     *     '4Njp3P0STMz2c02Q-2024-01-05T10:00:00-12345678',
     *     { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    get(investigateID: string, params: DetectionGetParams, options?: RequestOptions): APIPromise<DetectionGetResponse>;
}
export declare class Detections extends BaseDetections {
}
export interface DetectionGetResponse {
    action: string;
    attachments: Array<DetectionGetResponse.Attachment>;
    findings: Array<DetectionGetResponse.Finding> | null;
    headers: Array<DetectionGetResponse.Header>;
    links: Array<DetectionGetResponse.Link>;
    sender_info: DetectionGetResponse.SenderInfo;
    threat_categories: Array<DetectionGetResponse.ThreatCategory>;
    validation: DetectionGetResponse.Validation;
    /**
     * The verdict Email Security assigns to a message.
     */
    final_disposition?: 'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE' | null;
}
export declare namespace DetectionGetResponse {
    interface Attachment {
        /**
         * Size of the attachment in bytes.
         */
        size: number;
        /**
         * MIME type of the attachment.
         */
        content_type?: string | null;
        /**
         * Detection result for this attachment.
         */
        detection?: 'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE' | null;
        /**
         * Whether the attachment is encrypted.
         */
        encrypted?: boolean | null;
        /**
         * Name of the attached file.
         */
        filename?: string | null;
        /**
         * MD5 hash of the attachment.
         */
        md5?: string | null;
        /**
         * Attachment name (alternative to filename).
         */
        name?: string | null;
        /**
         * SHA1 hash of the attachment.
         */
        sha1?: string | null;
        /**
         * SHA256 hash of the attachment.
         */
        sha256?: string | null;
    }
    /**
     * A single detection finding for a message.
     */
    interface Finding {
        attachment?: string | null;
        detail?: string | null;
        /**
         * Detection result associated with this finding.
         */
        detection?: 'MALICIOUS' | 'MALICIOUS-BEC' | 'SUSPICIOUS' | 'SPOOF' | 'SPAM' | 'BULK' | 'ENCRYPTED' | 'EXTERNAL' | 'UNKNOWN' | 'NONE' | null;
        field?: string | null;
        name?: string | null;
        portion?: string | null;
        reason?: string | null;
        score?: number | null;
        value?: string | null;
    }
    interface Header {
        name: string;
        value: string;
    }
    interface Link {
        href: string;
        text?: string | null;
    }
    interface SenderInfo {
        /**
         * The name of the autonomous system.
         */
        as_name?: string | null;
        /**
         * The number of the autonomous system.
         */
        as_number?: number | null;
        geo?: string | null;
        ip?: string | null;
        pld?: string | null;
    }
    interface ThreatCategory {
        id?: number;
        description?: string | null;
        name?: string | null;
    }
    interface Validation {
        comment?: string | null;
        dkim?: 'pass' | 'neutral' | 'fail' | 'error' | 'none' | null;
        dmarc?: 'pass' | 'neutral' | 'fail' | 'error' | 'none' | null;
        spf?: 'pass' | 'neutral' | 'fail' | 'error' | 'none' | null;
    }
}
export interface DetectionGetParams {
    /**
     * Account identifier tag.
     */
    account_id: string;
}
export declare namespace Detections {
    export { type DetectionGetResponse as DetectionGetResponse, type DetectionGetParams as DetectionGetParams };
}
//# sourceMappingURL=detections.d.mts.map