import { APIResource } from "../../../../../core/resource.mjs";
import * as TagsAPI from "./tags.mjs";
import { BaseTags, TagListParams, TagListResponse, Tags } from "./tags.mjs";
import { APIPromise } from "../../../../../core/api-promise.mjs";
import { RequestOptions } from "../../../../../internal/request-options.mjs";
export declare class BaseByDataset extends APIResource {
    static readonly _key: readonly ['cloudforceOne', 'threatEvents', 'indicators', 'byDataset'];
    /**
     * This method is deprecated. Please use /events/indicators to retrieve a paginated
     * list of indicators.
     *
     * @deprecated Use indicators.list instead (GET /accounts/{account_id}/cloudforce-one/events/indicators).
     */
    list(datasetID: string, params: ByDatasetListParams, options?: RequestOptions): APIPromise<ByDatasetListResponse>;
    /**
     * Retrieves a specific indicator by its UUID.
     *
     * @example
     * ```ts
     * const byDataset =
     *   await client.cloudforceOne.threatEvents.indicators.byDataset.get(
     *     'indicator_id',
     *     { account_id: 'account_id', dataset_id: 'dataset_id' },
     *   );
     * ```
     */
    get(indicatorID: string, params: ByDatasetGetParams, options?: RequestOptions): APIPromise<ByDatasetGetResponse>;
}
export declare class ByDataset extends BaseByDataset {
    tags: TagsAPI.Tags;
}
export interface ByDatasetListResponse {
    indicators: Array<ByDatasetListResponse.Indicator>;
    pagination: ByDatasetListResponse.Pagination;
}
export declare namespace ByDatasetListResponse {
    interface Indicator {
        createdAt: string;
        indicatorType: string;
        /**
         * RSS article sources from which this indicator was extracted.
         */
        sources: Array<Indicator.Source>;
        updatedAt: string;
        uuid: string;
        value: string;
        /**
         * The dataset ID this indicator belongs to. Included in list responses.
         */
        datasetId?: string;
        /**
         * Related events, capped by `relatedEventsLimit` (default 2). Check
         * `relatedEventsHasMore` to detect a capped list; pass `relatedEventsLimit=-1` to
         * retrieve all of them.
         */
        relatedEvents?: Array<Indicator.RelatedEvent>;
        /**
         * True when this indicator appears in more events than `relatedEvents` contains
         * because `relatedEventsLimit` capped the list. Pass `relatedEventsLimit=-1` to
         * retrieve every related event.
         */
        relatedEventsHasMore?: boolean;
        tags?: Array<Indicator.Tag>;
        /**
         * Traffic Light Protocol designation. UPPERCASE. Possible values: CLEAR, GREEN,
         * AMBER, AMBER-STRICT, RED, PURPLE. Null when not set.
         */
        tlp?: string | null;
    }
    namespace Indicator {
        interface Source {
            resourceId: string;
            resourceType: 'article';
            system: 'threat-signals';
            /**
             * Threat Signals article title; null for historical provenance without a stored
             * title.
             */
            title: string | null;
        }
        interface RelatedEvent {
            datasetId: string;
            eventId: string;
            /**
             * ISO 8601 date of the related event. Null for legacy relationships created before
             * event-date tracking was added.
             */
            eventDate?: string | null;
        }
        interface Tag {
            /**
             * The UUID of the tag category, or null when the tag is uncategorized.
             */
            categoryId?: string | null;
            categoryName?: string;
            uuid?: string;
            value?: string;
        }
    }
    interface Pagination {
        page: number;
        pageSize: number;
        totalCount: number;
        totalPages: number;
    }
}
export interface ByDatasetGetResponse {
    createdAt: string;
    indicatorType: string;
    updatedAt: string;
    uuid: string;
    value: string;
    /**
     * The dataset ID this indicator belongs to. Included in list responses.
     */
    datasetId?: string;
    /**
     * Related events, capped by `relatedEventsLimit` (default 2). Check
     * `relatedEventsHasMore` to detect a capped list; pass `relatedEventsLimit=-1` to
     * retrieve all of them.
     */
    relatedEvents?: Array<ByDatasetGetResponse.RelatedEvent>;
    /**
     * True when this indicator appears in more events than `relatedEvents` contains
     * because `relatedEventsLimit` capped the list. Pass `relatedEventsLimit=-1` to
     * retrieve every related event.
     */
    relatedEventsHasMore?: boolean;
    tags?: Array<ByDatasetGetResponse.Tag>;
    /**
     * Traffic Light Protocol designation. UPPERCASE. Possible values: CLEAR, GREEN,
     * AMBER, AMBER-STRICT, RED, PURPLE. Null when not set.
     */
    tlp?: string | null;
}
export declare namespace ByDatasetGetResponse {
    interface RelatedEvent {
        datasetId: string;
        eventId: string;
        /**
         * ISO 8601 date of the related event. Null for legacy relationships created before
         * event-date tracking was added.
         */
        eventDate?: string | null;
    }
    interface Tag {
        /**
         * The UUID of the tag category, or null when the tag is uncategorized.
         */
        categoryId?: string | null;
        categoryName?: string;
        uuid?: string;
        value?: string;
    }
}
export interface ByDatasetListParams {
    /**
     * Path param: Account ID.
     */
    account_id: string;
    /**
     * Query param
     */
    indicatorType?: string;
    /**
     * Query param: Filter by indicator value (substring match)
     */
    name?: string;
    /**
     * Query param
     */
    page?: number;
    /**
     * Query param
     */
    pageSize?: number;
    /**
     * Query param: Filter indicators by related event UUID(s). Multiple UUIDs can be
     * provided by repeating the parameter.
     */
    relatedEvent?: Array<string>;
}
export interface ByDatasetGetParams {
    /**
     * Account ID.
     */
    account_id: string;
    /**
     * Dataset ID.
     */
    dataset_id: string;
}
export declare namespace ByDataset {
    export { type ByDatasetListResponse as ByDatasetListResponse, type ByDatasetGetResponse as ByDatasetGetResponse, type ByDatasetListParams as ByDatasetListParams, type ByDatasetGetParams as ByDatasetGetParams, };
    export { Tags as Tags, BaseTags as BaseTags, type TagListResponse as TagListResponse, type TagListParams as TagListParams, };
}
//# sourceMappingURL=by-dataset.d.mts.map