import { APIResource } from "../../../core/resource.js";
import * as ZskAPI from "./zsk.js";
import { BaseZsk, Zsk, ZskListParams, ZskListResponse, ZskListResponsesSinglePage } from "./zsk.js";
import { APIPromise } from "../../../core/api-promise.js";
import { RequestOptions } from "../../../internal/request-options.js";
export declare class BaseDNSSECResource extends APIResource {
    static readonly _key: readonly ['dns', 'dnssec'];
    /**
     * Delete DNSSEC.
     *
     * @example
     * ```ts
     * const dnssec = await client.dns.dnssec.delete({
     *   zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
     * });
     * ```
     */
    delete(params: DNSSECDeleteParams, options?: RequestOptions): APIPromise<DNSSECDeleteResponse>;
    /**
     * Enable or disable DNSSEC.
     *
     * @example
     * ```ts
     * const dnssec = await client.dns.dnssec.edit({
     *   zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
     * });
     * ```
     */
    edit(params: DNSSECEditParams, options?: RequestOptions): APIPromise<DNSSEC>;
    /**
     * Details about DNSSEC status and configuration.
     *
     * @example
     * ```ts
     * const dnssec = await client.dns.dnssec.get({
     *   zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
     * });
     * ```
     */
    get(params: DNSSECGetParams, options?: RequestOptions): APIPromise<DNSSEC>;
}
export declare class DNSSECResource extends BaseDNSSECResource {
    zsk: ZskAPI.Zsk;
}
export interface DNSSEC {
    /**
     * Algorithm key code.
     */
    algorithm?: string | null;
    /**
     * Digest hash.
     */
    digest?: string | null;
    /**
     * Type of digest algorithm.
     */
    digest_algorithm?: string | null;
    /**
     * Coded type for digest algorithm.
     */
    digest_type?: string | null;
    /**
     * If true, multi-signer DNSSEC is enabled on the zone, allowing multiple providers
     * to serve a DNSSEC-signed zone at the same time. This is required for DNSKEY
     * records (except those automatically generated by Cloudflare) to be added to the
     * zone.
     *
     * See
     * [Multi-signer DNSSEC](https://developers.cloudflare.com/dns/dnssec/multi-signer-dnssec/)
     * for details.
     */
    dnssec_multi_signer?: boolean;
    /**
     * If true, allows Cloudflare to transfer in a DNSSEC-signed zone including
     * signatures from an external provider, without requiring Cloudflare to sign any
     * records on the fly.
     *
     * Note that this feature has some limitations. See
     * [Cloudflare as Secondary](https://developers.cloudflare.com/dns/zone-setups/zone-transfers/cloudflare-as-secondary/setup/#dnssec)
     * for details.
     */
    dnssec_presigned?: boolean;
    /**
     * If true, enables the use of NSEC3 together with DNSSEC on the zone. Combined
     * with setting dnssec_presigned to true, this enables the use of NSEC3 records
     * when transferring in from an external provider. If dnssec_presigned is instead
     * set to false (default), NSEC3 records will be generated and signed at request
     * time.
     *
     * See
     * [DNSSEC with NSEC3](https://developers.cloudflare.com/dns/dnssec/enable-nsec3/)
     * for details.
     */
    dnssec_use_nsec3?: boolean;
    /**
     * Full DS record.
     */
    ds?: string | null;
    /**
     * Flag for DNSSEC record.
     */
    flags?: number | null;
    /**
     * Code for key tag.
     */
    key_tag?: number | null;
    /**
     * Algorithm key type.
     */
    key_type?: string | null;
    /**
     * When DNSSEC was last modified.
     */
    modified_on?: string | null;
    /**
     * Public key for DS record.
     */
    public_key?: string | null;
    /**
     * Status of DNSSEC, based on user-desired state and presence of necessary records.
     */
    status?: 'active' | 'pending' | 'disabled' | 'pending-disabled' | 'error';
}
export type DNSSECDeleteResponse = string;
export interface DNSSECDeleteParams {
    /**
     * Identifier.
     */
    zone_id: string;
}
export interface DNSSECEditParams {
    /**
     * Path param: Identifier.
     */
    zone_id: string;
    /**
     * Body param: If true, multi-signer DNSSEC is enabled on the zone, allowing
     * multiple providers to serve a DNSSEC-signed zone at the same time. This is
     * required for DNSKEY records (except those automatically generated by Cloudflare)
     * to be added to the zone.
     *
     * See
     * [Multi-signer DNSSEC](https://developers.cloudflare.com/dns/dnssec/multi-signer-dnssec/)
     * for details.
     */
    dnssec_multi_signer?: boolean;
    /**
     * Body param: If true, allows Cloudflare to transfer in a DNSSEC-signed zone
     * including signatures from an external provider, without requiring Cloudflare to
     * sign any records on the fly.
     *
     * Note that this feature has some limitations. See
     * [Cloudflare as Secondary](https://developers.cloudflare.com/dns/zone-setups/zone-transfers/cloudflare-as-secondary/setup/#dnssec)
     * for details.
     */
    dnssec_presigned?: boolean;
    /**
     * Body param: If true, enables the use of NSEC3 together with DNSSEC on the zone.
     * Combined with setting dnssec_presigned to true, this enables the use of NSEC3
     * records when transferring in from an external provider. If dnssec_presigned is
     * instead set to false (default), NSEC3 records will be generated and signed at
     * request time.
     *
     * See
     * [DNSSEC with NSEC3](https://developers.cloudflare.com/dns/dnssec/enable-nsec3/)
     * for details.
     */
    dnssec_use_nsec3?: boolean;
    /**
     * Body param: Status of DNSSEC, based on user-desired state and presence of
     * necessary records.
     */
    status?: 'active' | 'disabled';
}
export interface DNSSECGetParams {
    /**
     * Identifier.
     */
    zone_id: string;
}
export declare namespace DNSSECResource {
    export { type DNSSEC as DNSSEC, type DNSSECDeleteResponse as DNSSECDeleteResponse, type DNSSECDeleteParams as DNSSECDeleteParams, type DNSSECEditParams as DNSSECEditParams, type DNSSECGetParams as DNSSECGetParams, };
    export { Zsk as Zsk, BaseZsk as BaseZsk, type ZskListResponse as ZskListResponse, type ZskListResponsesSinglePage as ZskListResponsesSinglePage, type ZskListParams as ZskListParams, };
}
//# sourceMappingURL=dnssec.d.ts.map