/**
 * Cloudflare ABUSE-REPORTS API
 *
 * Generated from Cloudflare TypeScript SDK.
 * DO NOT EDIT - regenerate with: bun scripts/generate.ts --service abuse-reports
 */
import * as Schema from "effect/Schema";
import type * as HttpClient from "effect/unstable/http/HttpClient";
import * as API from "../client/api.ts";
import type { Credentials } from "../credentials.ts";
import { type DefaultErrors } from "../errors.ts";
declare const AbuseReportNotFound_base: Schema.Class<AbuseReportNotFound, Schema.TaggedStruct<"AbuseReportNotFound", {
    readonly code: Schema.Number;
    readonly message: Schema.String;
}>, import("effect/Cause").YieldableError>;
export declare class AbuseReportNotFound extends AbuseReportNotFound_base {
}
declare const InvalidAccountId_base: Schema.Class<InvalidAccountId, Schema.TaggedStruct<"InvalidAccountId", {
    readonly code: Schema.Number;
    readonly message: Schema.String;
}>, import("effect/Cause").YieldableError>;
export declare class InvalidAccountId extends InvalidAccountId_base {
}
declare const InvalidRequest_base: Schema.Class<InvalidRequest, Schema.TaggedStruct<"InvalidRequest", {
    readonly code: Schema.Number;
    readonly message: Schema.String;
}>, import("effect/Cause").YieldableError>;
export declare class InvalidRequest extends InvalidRequest_base {
}
export interface GetAbuseReportRequest {
    reportParam: string;
    /** Cloudflare Account ID */
    accountId: string;
}
export declare const GetAbuseReportRequest: Schema.Schema<GetAbuseReportRequest>;
export interface GetAbuseReportResponse {
    /** Public facing ID of abuse report, aka abuse_rand. */
    id: string;
    /** Creation date of report. Time in RFC 3339 format (https://www.rfc-editor.org/rfc/rfc3339.html) */
    cdate: string;
    /** Domain that relates to the report. */
    domain: string;
    /** A summary of the mitigations related to this report. */
    mitigationSummary: {
        acceptedUrlCount: number;
        activeCount: number;
        externalHostNotified: boolean;
        inReviewCount: number;
        pendingCount: number;
    };
    /** An enum value that represents the status of an abuse record */
    status: "accepted" | "in_review";
    /** The abuse report type */
    type: "PHISH" | "GEN" | "THREAT" | "DMCA" | "EMER" | "TM" | "REG_WHO" | "NCSEI" | "NETWORK";
    /** Justification for the report. */
    justification?: string | null;
    /** Original work / Targeted brand in the alleged abuse. */
    originalWork?: string | null;
    /** Information about the submitter of the report. */
    submitter?: {
        company?: string | null;
        email?: string | null;
        name?: string | null;
        telephone?: string | null;
    } | null;
    urls?: string[] | null;
}
export declare const GetAbuseReportResponse: Schema.Schema<GetAbuseReportResponse>;
export type GetAbuseReportError = DefaultErrors | InvalidAccountId | AbuseReportNotFound;
export declare const getAbuseReport: API.OperationMethod<GetAbuseReportRequest, GetAbuseReportResponse, GetAbuseReportError, Credentials | HttpClient.HttpClient>;
export interface ListAbuseReportsRequest {
    /** Path param: Cloudflare Account ID */
    accountId: string;
    page?: number;
    perPage?: number;
    /** Query param: Returns reports created after the specified date */
    createdAfter?: string;
    /** Query param: Returns reports created before the specified date */
    createdBefore?: string;
    /** Query param: Filter by domain name related to the abuse report */
    domain?: string;
    /** Query param: Filter reports that have any mitigations in the given status. */
    mitigationStatus?: "pending" | "active" | "in_review" | "cancelled" | "removed";
    /** Query param: A property to sort by, followed by the order (id, cdate, domain, type, status) */
    sort?: string;
    /** Query param: Filter by the status of the report. */
    status?: "accepted" | "in_review";
    /** Query param: Filter by the type of the report. */
    type?: "PHISH" | "GEN" | "THREAT" | "DMCA" | "EMER" | "TM" | "REG_WHO" | "NCSEI" | "NETWORK";
}
export declare const ListAbuseReportsRequest: Schema.Schema<ListAbuseReportsRequest>;
export interface ListAbuseReportsResponse {
    result: {
        items?: {
            reports: {
                id: string;
                cdate: string;
                domain: string;
                mitigationSummary: {
                    acceptedUrlCount: number;
                    activeCount: number;
                    externalHostNotified: boolean;
                    inReviewCount: number;
                    pendingCount: number;
                };
                status: "accepted" | "in_review";
                type: "PHISH" | "GEN" | "THREAT" | "DMCA" | "EMER" | "TM" | "REG_WHO" | "NCSEI" | "NETWORK";
                justification?: string | null;
                originalWork?: string | null;
                submitter?: {
                    company?: string | null;
                    email?: string | null;
                    name?: string | null;
                    telephone?: string | null;
                } | null;
                urls?: string[] | null;
            }[];
        }[] | null;
    };
    resultInfo?: {
        count?: number | null;
        page?: number | null;
        perPage?: number | null;
        totalCount?: number | null;
    } | null;
}
export declare const ListAbuseReportsResponse: Schema.Schema<ListAbuseReportsResponse>;
export type ListAbuseReportsError = DefaultErrors | InvalidAccountId;
export declare const listAbuseReports: API.PaginatedOperationMethod<ListAbuseReportsRequest, ListAbuseReportsResponse, ListAbuseReportsError, Credentials | HttpClient.HttpClient>;
export interface CreateAbuseReportRequest {
    reportParam: string;
    /** Path param: Cloudflare Account ID */
    accountId: string;
    /** Body param: The report type for submitted reports. */
    act: "abuse_dmca";
    /** Body param: Text not exceeding 100 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    address1: string;
    /** Body param: The name of the copyright holder. Text not exceeding 60 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    agentName: string;
    /** Body param: Can be `0` for false or `1` for true. Must be value: 1 for DMCA reports */
    agree: "1";
    /** Body param: Text not exceeding 255 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    city: string;
    /** Body param: Text not exceeding 255 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    country: string;
    /** Body param: A valid email of the abuse reporter. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    email: string;
    /** Body param: Should match the value provided in `email` */
    email2: string;
    /** Body param: Notification type based on the abuse type. NOTE: Copyright (DMCA) and Trademark reports cannot be anonymous. */
    hostNotification: "send";
    /** Body param: Text not exceeding 255 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    name: string;
    /** Body param: Text not exceeding 255 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    originalWork: string;
    /** Body param: Notification type based on the abuse type. NOTE: Copyright (DMCA) and Trademark reports cannot be anonymous. */
    ownerNotification: "send";
    /** Body param: Required for DMCA reports, should be same as Name. An affirmation that all information in the report is true and accurate while agreeing to the policies of Cloudflare's abuse reports */
    signature: string;
    /** Body param: Text not exceeding 255 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    state: string;
    /** Body param: A list of valid URLs separated by ‘\n’ (new line character). The list of the URLs should not exceed 250 URLs. All URLs should have the same hostname. Each URL should be unique. This field  */
    urls: string;
    /** Body param: Any additional comments about the infringement not exceeding 2000 characters */
    comments?: string;
    /** Body param: Text not exceeding 100 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    company?: string;
    /** Body param: Text containing 2 characters */
    reportedCountry?: string;
    /** Body param: Text not exceeding 255 characters */
    reportedUserAgent?: string;
    /** Body param: Text not exceeding 20 characters. This field may be released by Cloudflare to third parties such as the Lumen Database (https://lumendatabase.org/). */
    tele?: string;
    /** Body param: Text not exceeding 255 characters */
    title?: string;
}
export declare const CreateAbuseReportRequest: Schema.Schema<CreateAbuseReportRequest>;
export type CreateAbuseReportResponse = string;
export declare const CreateAbuseReportResponse: Schema.Schema<CreateAbuseReportResponse>;
export type CreateAbuseReportError = DefaultErrors | InvalidRequest;
export declare const createAbuseReport: API.OperationMethod<CreateAbuseReportRequest, CreateAbuseReportResponse, CreateAbuseReportError, Credentials | HttpClient.HttpClient>;
export interface ListMitigationsRequest {
    reportId: string;
    /** Path param: Cloudflare Account ID */
    accountId: string;
    page?: number;
    perPage?: number;
    /** Query param: Returns mitigation that were dispatched after the given date */
    effectiveAfter?: string;
    /** Query param: Returns mitigations that were dispatched before the given date */
    effectiveBefore?: string;
    /** Query param: Filter by the type of entity the mitigation impacts. */
    entityType?: "url_pattern" | "account" | "zone";
    /** Query param: A property to sort by, followed by the order */
    sort?: "type,asc" | "type,desc" | "effective_date,asc" | "effective_date,desc" | "status,asc" | "status,desc" | "entity_type,asc" | "entity_type,desc";
    /** Query param: Filter by the status of the mitigation. */
    status?: "pending" | "active" | "in_review" | "cancelled" | "removed";
    /** Query param: Filter by the type of mitigation. This filter parameter can be specified multiple times to include multiple types of mitigations in the result set, e.g. ?type=rate_limit_cache&type=legal_ */
    type?: "legal_block" | "phishing_interstitial" | "network_block" | "rate_limit_cache" | "account_suspend" | "redirect_video_stream";
}
export declare const ListMitigationsRequest: Schema.Schema<ListMitigationsRequest>;
export interface ListMitigationsResponse {
    result: {
        items?: {
            mitigations: {
                id: string;
                effectiveDate: string;
                entityId: string;
                entityType: "url_pattern" | "account" | "zone";
                status: "pending" | "active" | "in_review" | "cancelled" | "removed";
                type: "legal_block" | "phishing_interstitial" | "network_block" | "rate_limit_cache" | "account_suspend" | "redirect_video_stream";
            }[];
        }[] | null;
    };
    resultInfo?: {
        count?: number | null;
        page?: number | null;
        perPage?: number | null;
        totalCount?: number | null;
    } | null;
}
export declare const ListMitigationsResponse: Schema.Schema<ListMitigationsResponse>;
export type ListMitigationsError = DefaultErrors;
export declare const listMitigations: API.PaginatedOperationMethod<ListMitigationsRequest, ListMitigationsResponse, ListMitigationsError, Credentials | HttpClient.HttpClient>;
export interface ReviewMitigationRequest {
    reportId: string;
    /** Path param: Cloudflare Account ID */
    accountId: string;
    /** Body param: List of mitigations to appeal. */
    appeals: {
        id: string;
        reason: "removed" | "misclassified";
    }[];
}
export declare const ReviewMitigationRequest: Schema.Schema<ReviewMitigationRequest>;
export interface ReviewMitigationResponse {
    result: {
        id: string;
        effectiveDate: string;
        entityId: string;
        entityType: "url_pattern" | "account" | "zone";
        status: "pending" | "active" | "in_review" | "cancelled" | "removed";
        type: "legal_block" | "phishing_interstitial" | "network_block" | "rate_limit_cache" | "account_suspend" | "redirect_video_stream";
    }[];
}
export declare const ReviewMitigationResponse: Schema.Schema<ReviewMitigationResponse>;
export type ReviewMitigationError = DefaultErrors;
export declare const reviewMitigation: API.PaginatedOperationMethod<ReviewMitigationRequest, ReviewMitigationResponse, ReviewMitigationError, Credentials | HttpClient.HttpClient>;
export {};
//# sourceMappingURL=abuse-reports.d.ts.map