import { APIResource } from "../../../core/resource.mjs";
import * as IssuesAPI from "../../intel/attack-surface-report/issues.mjs";
import * as AuditLogsAPI from "./audit-logs.mjs";
import { AuditLogListByInsightParams, AuditLogListByInsightResponse, AuditLogListByInsightResponsesCursorPagination, AuditLogListParams, AuditLogListResponse, AuditLogListResponsesCursorPagination, AuditLogs, BaseAuditLogs } from "./audit-logs.mjs";
import * as ClassAPI from "./class.mjs";
import { BaseClass, Class, ClassGetParams, ClassGetResponse } from "./class.mjs";
import * as ClassificationAPI from "./classification.mjs";
import { BaseClassification, Classification, ClassificationUpdateParams, ClassificationUpdateResponse } from "./classification.mjs";
import * as ContextAPI from "./context.mjs";
import { BaseContext, Context, ContextGetParams, ContextGetResponse } from "./context.mjs";
import * as SeverityAPI from "./severity.mjs";
import { BaseSeverity, Severity, SeverityGetParams, SeverityGetResponse } from "./severity.mjs";
import * as TypeAPI from "./type.mjs";
import { BaseType, Type, TypeGetParams, TypeGetResponse } from "./type.mjs";
import { APIPromise } from "../../../core/api-promise.mjs";
import { PagePromise, V4PagePagination, type V4PagePaginationParams } from "../../../core/pagination.mjs";
import { RequestOptions } from "../../../internal/request-options.mjs";
export declare class BaseInsights extends APIResource {
    static readonly _key: readonly ['securityCenter', 'insights'];
    /**
     * Lists all Security Center insights for the account or zone, showing security
     * findings and recommendations.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const insightListResponse of client.securityCenter.insights.list(
     *   { account_id: 'account_id' },
     * )) {
     *   // ...
     * }
     * ```
     */
    list(params?: InsightListParams | null | undefined, options?: RequestOptions): PagePromise<InsightListResponsesV4PagePagination, InsightListResponse>;
    /**
     * Archives a Security Center insight for an account or zone, removing it from the
     * active insights list while preserving historical data.
     *
     * @example
     * ```ts
     * const response =
     *   await client.securityCenter.insights.dismiss('issue_id', {
     *     account_id: 'account_id',
     *   });
     * ```
     */
    dismiss(issueID: string, params: InsightDismissParams, options?: RequestOptions): APIPromise<InsightDismissResponse>;
}
export declare class Insights extends BaseInsights {
    class: ClassAPI.Class;
    severity: SeverityAPI.Severity;
    type: TypeAPI.Type;
    auditLogs: AuditLogsAPI.AuditLogs;
    classification: ClassificationAPI.Classification;
    context: ContextAPI.Context;
}
export type InsightListResponsesV4PagePagination = V4PagePagination<InsightListResponse>;
export interface InsightListResponse {
    /**
     * Indicates the total number of results.
     */
    count?: number;
    issues?: Array<InsightListResponse.Issue>;
    /**
     * Specifies the current page within paginated list of results.
     */
    page?: number;
    /**
     * Sets the number of results per page of results.
     */
    per_page?: number;
}
export declare namespace InsightListResponse {
    interface Issue {
        id?: string;
        dismissed?: boolean;
        /**
         * Indicates whether the insight has a large payload that requires fetching via the
         * context endpoint.
         */
        has_extended_context?: boolean;
        issue_class?: string;
        issue_type?: IssuesAPI.IssueType;
        payload?: Issue.Payload;
        resolve_link?: string;
        resolve_text?: string;
        severity?: 'Low' | 'Moderate' | 'Critical';
        since?: string;
        /**
         * The current status of the insight.
         */
        status?: 'active' | 'resolved';
        subject?: string;
        timestamp?: string;
        /**
         * User-defined classification for the insight. Can be 'false_positive',
         * 'accept_risk', 'other', or null.
         */
        user_classification?: 'false_positive' | 'accept_risk' | 'other' | null;
    }
    namespace Issue {
        interface Payload {
            /**
             * Describes the method used to detect insight.
             */
            detection_method?: string;
            zone_tag?: string;
        }
    }
}
export interface InsightDismissResponse {
    errors: Array<InsightDismissResponse.Error>;
    messages: Array<InsightDismissResponse.Message>;
    /**
     * Whether the API call was successful.
     */
    success: true;
}
export declare namespace InsightDismissResponse {
    interface Error {
        code: number;
        message: string;
        documentation_url?: string;
        source?: Error.Source;
    }
    namespace Error {
        interface Source {
            pointer?: string;
        }
    }
    interface Message {
        code: number;
        message: string;
        documentation_url?: string;
        source?: Message.Source;
    }
    namespace Message {
        interface Source {
            pointer?: string;
        }
    }
}
export interface InsightListParams extends V4PagePaginationParams {
    /**
     * Path param: The Account ID to use for this endpoint. Mutually exclusive with the
     * Zone ID.
     */
    account_id?: string;
    /**
     * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the
     * Account ID.
     */
    zone_id?: string;
    /**
     * Query param
     */
    dismissed?: boolean;
    /**
     * Query param
     */
    issue_class?: Array<string>;
    /**
     * Query param
     */
    'issue_class~neq'?: Array<string>;
    /**
     * Query param
     */
    issue_type?: Array<IssuesAPI.IssueTypeParam>;
    /**
     * Query param
     */
    'issue_type~neq'?: Array<IssuesAPI.IssueTypeParam>;
    /**
     * Query param
     */
    product?: Array<string>;
    /**
     * Query param
     */
    'product~neq'?: Array<string>;
    /**
     * Query param
     */
    severity?: Array<IssuesAPI.SeverityQueryParamParam>;
    /**
     * Query param
     */
    'severity~neq'?: Array<IssuesAPI.SeverityQueryParamParam>;
    /**
     * Query param
     */
    source?: Array<'cloudflare' | 'riskrecon'>;
    /**
     * Query param
     */
    subject?: Array<string>;
    /**
     * Query param
     */
    'subject~neq'?: Array<string>;
}
export interface InsightDismissParams {
    /**
     * Path param: The Account ID to use for this endpoint. Mutually exclusive with the
     * Zone ID.
     */
    account_id?: string;
    /**
     * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the
     * Account ID.
     */
    zone_id?: string;
    /**
     * Body param
     */
    dismiss?: boolean;
}
export declare namespace Insights {
    export { type InsightListResponse as InsightListResponse, type InsightDismissResponse as InsightDismissResponse, type InsightListResponsesV4PagePagination as InsightListResponsesV4PagePagination, type InsightListParams as InsightListParams, type InsightDismissParams as InsightDismissParams, };
    export { Class as Class, BaseClass as BaseClass, type ClassGetResponse as ClassGetResponse, type ClassGetParams as ClassGetParams, };
    export { Severity as Severity, BaseSeverity as BaseSeverity, type SeverityGetResponse as SeverityGetResponse, type SeverityGetParams as SeverityGetParams, };
    export { Type as Type, BaseType as BaseType, type TypeGetResponse as TypeGetResponse, type TypeGetParams as TypeGetParams, };
    export { AuditLogs as AuditLogs, BaseAuditLogs as BaseAuditLogs, type AuditLogListResponse as AuditLogListResponse, type AuditLogListByInsightResponse as AuditLogListByInsightResponse, type AuditLogListResponsesCursorPagination as AuditLogListResponsesCursorPagination, type AuditLogListByInsightResponsesCursorPagination as AuditLogListByInsightResponsesCursorPagination, type AuditLogListParams as AuditLogListParams, type AuditLogListByInsightParams as AuditLogListByInsightParams, };
    export { Classification as Classification, BaseClassification as BaseClassification, type ClassificationUpdateResponse as ClassificationUpdateResponse, type ClassificationUpdateParams as ClassificationUpdateParams, };
    export { Context as Context, BaseContext as BaseContext, type ContextGetResponse as ContextGetResponse, type ContextGetParams as ContextGetParams, };
}
//# sourceMappingURL=insights.d.mts.map