/**
 * Cloudflare DNS-FIREWALL API
 *
 * Generated from Cloudflare TypeScript SDK.
 * DO NOT EDIT - regenerate with: bun scripts/generate.ts --service dns-firewall
 */
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";
export interface GetAnalyticReportRequest {
    dnsFirewallId: string;
    /** Path param: Identifier. */
    accountId: string;
    /** Query param: A comma-separated list of dimensions to group results by. */
    dimensions?: string;
    /** Query param: Segmentation filter in 'attribute operator value' format. */
    filters?: string;
    /** Query param: Limit number of returned metrics. */
    limit?: number;
    /** Query param: A comma-separated list of metrics to query. */
    metrics?: string;
    /** Query param: Start date and time of requesting data period in ISO 8601 format. */
    since?: string;
    /** Query param: A comma-separated list of dimensions to sort by, where each dimension may be prefixed by - (descending) or + (ascending). */
    sort?: string;
    /** Query param: End date and time of requesting data period in ISO 8601 format. */
    until?: string;
}
export declare const GetAnalyticReportRequest: Schema.Schema<GetAnalyticReportRequest>;
export interface GetAnalyticReportResponse {
    /** Array with one row per combination of dimension values. */
    data: {
        dimensions: string[];
        metrics: number[];
    }[];
    /** Number of seconds between current time and last processed event, in another words how many seconds of data could be missing. */
    dataLag: number;
    /** Maximum results for each metric (object mapping metric names to values). Currently always an empty object. */
    max: unknown;
    /** Minimum results for each metric (object mapping metric names to values). Currently always an empty object. */
    min: unknown;
    query: {
        dimensions: string[];
        limit: number;
        metrics: string[];
        since: string;
        until: string;
        filters?: string | null;
        sort?: string[] | null;
    };
    /** Total number of rows in the result. */
    rows: number;
    /** Total results for metrics across all data (object mapping metric names to values). */
    totals: unknown;
}
export declare const GetAnalyticReportResponse: Schema.Schema<GetAnalyticReportResponse>;
export type GetAnalyticReportError = DefaultErrors;
export declare const getAnalyticReport: API.OperationMethod<GetAnalyticReportRequest, GetAnalyticReportResponse, GetAnalyticReportError, Credentials | HttpClient.HttpClient>;
export interface GetAnalyticReportBytimeRequest {
    dnsFirewallId: string;
    /** Path param: Identifier. */
    accountId: string;
    /** Query param: A comma-separated list of dimensions to group results by. */
    dimensions?: string;
    /** Query param: Segmentation filter in 'attribute operator value' format. */
    filters?: string;
    /** Query param: Limit number of returned metrics. */
    limit?: number;
    /** Query param: A comma-separated list of metrics to query. */
    metrics?: string;
    /** Query param: Start date and time of requesting data period in ISO 8601 format. */
    since?: string;
    /** Query param: A comma-separated list of dimensions to sort by, where each dimension may be prefixed by - (descending) or + (ascending). */
    sort?: string;
    /** Query param: Unit of time to group data by. */
    timeDelta?: "all" | "auto" | "year" | "quarter" | "month" | "week" | "day" | "hour" | "dekaminute" | "minute";
    /** Query param: End date and time of requesting data period in ISO 8601 format. */
    until?: string;
}
export declare const GetAnalyticReportBytimeRequest: Schema.Schema<GetAnalyticReportBytimeRequest>;
export interface GetAnalyticReportBytimeResponse {
    /** Array with one row per combination of dimension values. */
    data: {
        dimensions: string[];
        metrics: number[][];
    }[];
    /** Number of seconds between current time and last processed event, in another words how many seconds of data could be missing. */
    dataLag: number;
    /** Maximum results for each metric (object mapping metric names to values). Currently always an empty object. */
    max: unknown;
    /** Minimum results for each metric (object mapping metric names to values). Currently always an empty object. */
    min: unknown;
    query: {
        dimensions: string[];
        limit: number;
        metrics: string[];
        since: string;
        timeDelta: "all" | "auto" | "year" | "quarter" | "month" | "week" | "day" | "hour" | "dekaminute" | "minute";
        until: string;
        filters?: string | null;
        sort?: string[] | null;
    };
    /** Total number of rows in the result. */
    rows: number;
    /** Array of time intervals in the response data. Each interval is represented as an array containing two values: the start time, and the end time. */
    timeIntervals: string[][];
    /** Total results for metrics across all data (object mapping metric names to values). */
    totals: unknown;
}
export declare const GetAnalyticReportBytimeResponse: Schema.Schema<GetAnalyticReportBytimeResponse>;
export type GetAnalyticReportBytimeError = DefaultErrors;
export declare const getAnalyticReportBytime: API.OperationMethod<GetAnalyticReportBytimeRequest, GetAnalyticReportBytimeResponse, GetAnalyticReportBytimeError, Credentials | HttpClient.HttpClient>;
export interface GetDnsFirewallRequest {
    dnsFirewallId: string;
    /** Identifier. */
    accountId: string;
}
export declare const GetDnsFirewallRequest: Schema.Schema<GetDnsFirewallRequest>;
export interface GetDnsFirewallResponse {
    /** Identifier. */
    id: string;
    /** Whether to refuse to answer queries for the ANY type */
    deprecateAnyRequests: boolean;
    dnsFirewallIps: string[];
    /** Whether to forward client IP (resolver) subnet if no EDNS Client Subnet is sent */
    ecsFallback: boolean;
    /** By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets an upper bound on this duration. For caching purposes, high */
    maximumCacheTtl: number;
    /** By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets a lower bound on this duration. For caching purposes, lower */
    minimumCacheTtl: number;
    /** Last modification of DNS Firewall cluster */
    modifiedOn: string;
    /** DNS Firewall cluster name */
    name: string;
    /** This setting controls how long DNS Firewall should cache negative responses (e.g., NXDOMAIN) from the upstream servers.  This setting does not affect the TTL value in the DNS response Cloudflare retur */
    negativeCacheTtl: number | null;
    /** Ratelimit in queries per second per datacenter (applies to DNS queries sent to the upstream nameservers configured on the cluster) */
    ratelimit: number | null;
    /** Number of retries for fetching DNS responses from upstream nameservers (not counting the initial attempt) */
    retries: number;
    upstreamIps: string[];
    /** Attack mitigation settings */
    attackMitigation?: {
        enabled?: boolean | null;
        onlyWhenUpstreamUnhealthy?: boolean | null;
    } | null;
}
export declare const GetDnsFirewallResponse: Schema.Schema<GetDnsFirewallResponse>;
export type GetDnsFirewallError = DefaultErrors;
export declare const getDnsFirewall: API.OperationMethod<GetDnsFirewallRequest, GetDnsFirewallResponse, GetDnsFirewallError, Credentials | HttpClient.HttpClient>;
export interface ListDnsFirewallsRequest {
    /** Path param: Identifier. */
    accountId: string;
    page?: number;
    perPage?: number;
}
export declare const ListDnsFirewallsRequest: Schema.Schema<ListDnsFirewallsRequest>;
export interface ListDnsFirewallsResponse {
    result: {
        id: string;
        deprecateAnyRequests: boolean;
        dnsFirewallIps: string[];
        ecsFallback: boolean;
        maximumCacheTtl: number;
        minimumCacheTtl: number;
        modifiedOn: string;
        name: string;
        negativeCacheTtl: number | null;
        ratelimit: number | null;
        retries: number;
        upstreamIps: string[];
        attackMitigation?: {
            enabled?: boolean | null;
            onlyWhenUpstreamUnhealthy?: boolean | null;
        } | null;
    }[];
    resultInfo?: {
        count?: number | null;
        page?: number | null;
        perPage?: number | null;
        totalCount?: number | null;
    } | null;
}
export declare const ListDnsFirewallsResponse: Schema.Schema<ListDnsFirewallsResponse>;
export type ListDnsFirewallsError = DefaultErrors;
export declare const listDnsFirewalls: API.PaginatedOperationMethod<ListDnsFirewallsRequest, ListDnsFirewallsResponse, ListDnsFirewallsError, Credentials | HttpClient.HttpClient>;
export interface CreateDnsFirewallRequest {
    /** Path param: Identifier. */
    accountId: string;
    /** Body param: DNS Firewall cluster name */
    name: string;
    /** Body param: */
    upstreamIps: string[];
    /** Body param: Attack mitigation settings */
    attackMitigation?: {
        enabled?: boolean;
        onlyWhenUpstreamUnhealthy?: boolean;
    } | null;
    /** Body param: Whether to refuse to answer queries for the ANY type */
    deprecateAnyRequests?: boolean;
    /** Body param: Whether to forward client IP (resolver) subnet if no EDNS Client Subnet is sent */
    ecsFallback?: boolean;
    /** Body param: By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets an upper bound on this duration. For caching pu */
    maximumCacheTtl?: number;
    /** Body param: By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets a lower bound on this duration. For caching pur */
    minimumCacheTtl?: number;
    /** Body param: This setting controls how long DNS Firewall should cache negative responses (e.g., NXDOMAIN) from the upstream servers.  This setting does not affect the TTL value in the DNS response Clou */
    negativeCacheTtl?: number | null;
    /** Body param: Ratelimit in queries per second per datacenter (applies to DNS queries sent to the upstream nameservers configured on the cluster) */
    ratelimit?: number | null;
    /** Body param: Number of retries for fetching DNS responses from upstream nameservers (not counting the initial attempt) */
    retries?: number;
}
export declare const CreateDnsFirewallRequest: Schema.Schema<CreateDnsFirewallRequest>;
export interface CreateDnsFirewallResponse {
    /** Identifier. */
    id: string;
    /** Whether to refuse to answer queries for the ANY type */
    deprecateAnyRequests: boolean;
    dnsFirewallIps: string[];
    /** Whether to forward client IP (resolver) subnet if no EDNS Client Subnet is sent */
    ecsFallback: boolean;
    /** By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets an upper bound on this duration. For caching purposes, high */
    maximumCacheTtl: number;
    /** By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets a lower bound on this duration. For caching purposes, lower */
    minimumCacheTtl: number;
    /** Last modification of DNS Firewall cluster */
    modifiedOn: string;
    /** DNS Firewall cluster name */
    name: string;
    /** This setting controls how long DNS Firewall should cache negative responses (e.g., NXDOMAIN) from the upstream servers.  This setting does not affect the TTL value in the DNS response Cloudflare retur */
    negativeCacheTtl: number | null;
    /** Ratelimit in queries per second per datacenter (applies to DNS queries sent to the upstream nameservers configured on the cluster) */
    ratelimit: number | null;
    /** Number of retries for fetching DNS responses from upstream nameservers (not counting the initial attempt) */
    retries: number;
    upstreamIps: string[];
    /** Attack mitigation settings */
    attackMitigation?: {
        enabled?: boolean | null;
        onlyWhenUpstreamUnhealthy?: boolean | null;
    } | null;
}
export declare const CreateDnsFirewallResponse: Schema.Schema<CreateDnsFirewallResponse>;
export type CreateDnsFirewallError = DefaultErrors;
export declare const createDnsFirewall: API.OperationMethod<CreateDnsFirewallRequest, CreateDnsFirewallResponse, CreateDnsFirewallError, Credentials | HttpClient.HttpClient>;
export interface PatchDnsFirewallRequest {
    dnsFirewallId: string;
    /** Path param: Identifier. */
    accountId: string;
    /** Body param: Attack mitigation settings */
    attackMitigation?: {
        enabled?: boolean;
        onlyWhenUpstreamUnhealthy?: boolean;
    } | null;
    /** Body param: Whether to refuse to answer queries for the ANY type */
    deprecateAnyRequests?: boolean;
    /** Body param: Whether to forward client IP (resolver) subnet if no EDNS Client Subnet is sent */
    ecsFallback?: boolean;
    /** Body param: By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets an upper bound on this duration. For caching pu */
    maximumCacheTtl?: number;
    /** Body param: By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets a lower bound on this duration. For caching pur */
    minimumCacheTtl?: number;
    /** Body param: DNS Firewall cluster name */
    name?: string;
    /** Body param: This setting controls how long DNS Firewall should cache negative responses (e.g., NXDOMAIN) from the upstream servers.  This setting does not affect the TTL value in the DNS response Clou */
    negativeCacheTtl?: number | null;
    /** Body param: Ratelimit in queries per second per datacenter (applies to DNS queries sent to the upstream nameservers configured on the cluster) */
    ratelimit?: number | null;
    /** Body param: Number of retries for fetching DNS responses from upstream nameservers (not counting the initial attempt) */
    retries?: number;
    /** Body param: */
    upstreamIps?: string[];
}
export declare const PatchDnsFirewallRequest: Schema.Schema<PatchDnsFirewallRequest>;
export interface PatchDnsFirewallResponse {
    /** Identifier. */
    id: string;
    /** Whether to refuse to answer queries for the ANY type */
    deprecateAnyRequests: boolean;
    dnsFirewallIps: string[];
    /** Whether to forward client IP (resolver) subnet if no EDNS Client Subnet is sent */
    ecsFallback: boolean;
    /** By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets an upper bound on this duration. For caching purposes, high */
    maximumCacheTtl: number;
    /** By default, Cloudflare attempts to cache responses for as long as indicated by the TTL received from upstream nameservers. This setting sets a lower bound on this duration. For caching purposes, lower */
    minimumCacheTtl: number;
    /** Last modification of DNS Firewall cluster */
    modifiedOn: string;
    /** DNS Firewall cluster name */
    name: string;
    /** This setting controls how long DNS Firewall should cache negative responses (e.g., NXDOMAIN) from the upstream servers.  This setting does not affect the TTL value in the DNS response Cloudflare retur */
    negativeCacheTtl: number | null;
    /** Ratelimit in queries per second per datacenter (applies to DNS queries sent to the upstream nameservers configured on the cluster) */
    ratelimit: number | null;
    /** Number of retries for fetching DNS responses from upstream nameservers (not counting the initial attempt) */
    retries: number;
    upstreamIps: string[];
    /** Attack mitigation settings */
    attackMitigation?: {
        enabled?: boolean | null;
        onlyWhenUpstreamUnhealthy?: boolean | null;
    } | null;
}
export declare const PatchDnsFirewallResponse: Schema.Schema<PatchDnsFirewallResponse>;
export type PatchDnsFirewallError = DefaultErrors;
export declare const patchDnsFirewall: API.OperationMethod<PatchDnsFirewallRequest, PatchDnsFirewallResponse, PatchDnsFirewallError, Credentials | HttpClient.HttpClient>;
export interface DeleteDnsFirewallRequest {
    dnsFirewallId: string;
    /** Identifier. */
    accountId: string;
}
export declare const DeleteDnsFirewallRequest: Schema.Schema<DeleteDnsFirewallRequest>;
export interface DeleteDnsFirewallResponse {
    /** Identifier. */
    id?: string | null;
}
export declare const DeleteDnsFirewallResponse: Schema.Schema<DeleteDnsFirewallResponse>;
export type DeleteDnsFirewallError = DefaultErrors;
export declare const deleteDnsFirewall: API.OperationMethod<DeleteDnsFirewallRequest, DeleteDnsFirewallResponse, DeleteDnsFirewallError, Credentials | HttpClient.HttpClient>;
export interface GetReverseDnRequest {
    dnsFirewallId: string;
    /** Identifier. */
    accountId: string;
}
export declare const GetReverseDnRequest: Schema.Schema<GetReverseDnRequest>;
export interface GetReverseDnResponse {
    /** Map of cluster IP addresses to PTR record contents */
    ptr: Record<string, unknown>;
}
export declare const GetReverseDnResponse: Schema.Schema<GetReverseDnResponse>;
export type GetReverseDnError = DefaultErrors;
export declare const getReverseDn: API.OperationMethod<GetReverseDnRequest, GetReverseDnResponse, GetReverseDnError, Credentials | HttpClient.HttpClient>;
export interface PatchReverseDnRequest {
    dnsFirewallId: string;
    /** Path param: Identifier. */
    accountId: string;
    /** Body param: Map of cluster IP addresses to PTR record contents */
    ptr?: Record<string, unknown>;
}
export declare const PatchReverseDnRequest: Schema.Schema<PatchReverseDnRequest>;
export interface PatchReverseDnResponse {
    /** Map of cluster IP addresses to PTR record contents */
    ptr: Record<string, unknown>;
}
export declare const PatchReverseDnResponse: Schema.Schema<PatchReverseDnResponse>;
export type PatchReverseDnError = DefaultErrors;
export declare const patchReverseDn: API.OperationMethod<PatchReverseDnRequest, PatchReverseDnResponse, PatchReverseDnError, Credentials | HttpClient.HttpClient>;
//# sourceMappingURL=dns-firewall.d.ts.map