import { APIResource } from "../../core/resource.mjs";
import { APIPromise } from "../../core/api-promise.mjs";
import { PagePromise, V4PagePaginationArray, type V4PagePaginationArrayParams } from "../../core/pagination.mjs";
import { RequestOptions } from "../../internal/request-options.mjs";
export declare class BaseClientCertificates extends APIResource {
    static readonly _key: readonly ['clientCertificates'];
    /**
     * Create a new API Shield mTLS Client Certificate.
     *
     * @example
     * ```ts
     * const clientCertificate =
     *   await client.clientCertificates.create({
     *     zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
     *     csr: '-----BEGIN CERTIFICATE REQUEST-----\nMIICY....\n-----END CERTIFICATE REQUEST-----',
     *     validity_days: 3650,
     *   });
     * ```
     */
    create(params: ClientCertificateCreateParams, options?: RequestOptions): APIPromise<ClientCertificate>;
    /**
     * List all of your Zone's API Shield mTLS Client Certificates by Status and/or
     * using Pagination.
     *
     * @example
     * ```ts
     * // Automatically fetches more pages as needed.
     * for await (const clientCertificate of client.clientCertificates.list(
     *   { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     * )) {
     *   // ...
     * }
     * ```
     */
    list(params: ClientCertificateListParams, options?: RequestOptions): PagePromise<ClientCertificatesV4PagePaginationArray, ClientCertificate>;
    /**
     * Set a API Shield mTLS Client Certificate to pending_revocation status for
     * processing to revoked status.
     *
     * @example
     * ```ts
     * const clientCertificate =
     *   await client.clientCertificates.delete(
     *     '0d89c70d-ad9f-4843-b99f-6cc0252067e9',
     *     { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    delete(clientCertificateID: string, params: ClientCertificateDeleteParams, options?: RequestOptions): APIPromise<ClientCertificate>;
    /**
     * If a API Shield mTLS Client Certificate is in a pending_revocation state, you
     * may reactivate it with this endpoint.
     *
     * @example
     * ```ts
     * const clientCertificate =
     *   await client.clientCertificates.edit(
     *     '0d89c70d-ad9f-4843-b99f-6cc0252067e9',
     *     { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    edit(clientCertificateID: string, params: ClientCertificateEditParams, options?: RequestOptions): APIPromise<ClientCertificate>;
    /**
     * Get Details for a single mTLS API Shield Client Certificate.
     *
     * @example
     * ```ts
     * const clientCertificate =
     *   await client.clientCertificates.get(
     *     '0d89c70d-ad9f-4843-b99f-6cc0252067e9',
     *     { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     *   );
     * ```
     */
    get(clientCertificateID: string, params: ClientCertificateGetParams, options?: RequestOptions): APIPromise<ClientCertificate>;
}
export declare class ClientCertificates extends BaseClientCertificates {
}
export type ClientCertificatesV4PagePaginationArray = V4PagePaginationArray<ClientCertificate>;
export interface ClientCertificate {
    /**
     * Client Certificate Tag
     */
    id?: string;
    /**
     * The Client Certificate PEM.
     */
    certificate?: string;
    /**
     * Certificate Authority used to issue the Client Certificate.
     */
    certificate_authority?: ClientCertificate.CertificateAuthority;
    /**
     * Common Name of the Client Certificate.
     */
    common_name?: string;
    /**
     * Country, provided by the CSR.
     */
    country?: string;
    /**
     * The Certificate Signing Request (CSR). Must be newline-encoded.
     */
    csr?: string;
    /**
     * Date that the Client Certificate expires.
     */
    expires_on?: string;
    /**
     * Unique identifier of the Client Certificate.
     */
    fingerprint_sha256?: string;
    /**
     * Date that the Client Certificate was issued by the Certificate Authority.
     */
    issued_on?: string;
    /**
     * Location, provided by the CSR.
     */
    location?: string;
    /**
     * Organization, provided by the CSR.
     */
    organization?: string;
    /**
     * Organizational Unit, provided by the CSR.
     */
    organizational_unit?: string;
    /**
     * The serial number on the created Client Certificate.
     */
    serial_number?: string;
    /**
     * The type of hash used for the Client Certificate..
     */
    signature?: string;
    /**
     * Subject Key Identifier.
     */
    ski?: string;
    /**
     * State, provided by the CSR.
     */
    state?: string;
    /**
     * Client Certificates may be active or revoked, and the pending_reactivation or
     * pending_revocation represent in-progress asynchronous transitions.
     */
    status?: 'active' | 'pending_reactivation' | 'pending_revocation' | 'revoked';
    /**
     * The number of days the Client Certificate will be valid after the issued_on
     * date.
     */
    validity_days?: number;
}
export declare namespace ClientCertificate {
    /**
     * Certificate Authority used to issue the Client Certificate.
     */
    interface CertificateAuthority {
        id?: string;
        name?: string;
    }
}
export interface ClientCertificateCreateParams {
    /**
     * Path param: Identifier.
     */
    zone_id: string;
    /**
     * Body param: The Certificate Signing Request (CSR). Must be newline-encoded.
     */
    csr: string;
    /**
     * Body param: The number of days the Client Certificate will be valid after the
     * issued_on date.
     */
    validity_days: number;
}
export interface ClientCertificateListParams extends V4PagePaginationArrayParams {
    /**
     * Path param: Identifier.
     */
    zone_id: string;
    /**
     * Query param: Limit to the number of records returned.
     */
    limit?: number;
    /**
     * Query param: Offset the results.
     */
    offset?: number;
    /**
     * Query param: Client Certitifcate Status to filter results by.
     */
    status?: 'all' | 'active' | 'pending_reactivation' | 'pending_revocation' | 'revoked';
}
export interface ClientCertificateDeleteParams {
    /**
     * Identifier.
     */
    zone_id: string;
}
export interface ClientCertificateEditParams {
    /**
     * Path param: Identifier.
     */
    zone_id: string;
    /**
     * Body param
     */
    reactivate?: boolean;
}
export interface ClientCertificateGetParams {
    /**
     * Identifier.
     */
    zone_id: string;
}
export declare namespace ClientCertificates {
    export { type ClientCertificate as ClientCertificate, type ClientCertificatesV4PagePaginationArray as ClientCertificatesV4PagePaginationArray, type ClientCertificateCreateParams as ClientCertificateCreateParams, type ClientCertificateListParams as ClientCertificateListParams, type ClientCertificateDeleteParams as ClientCertificateDeleteParams, type ClientCertificateEditParams as ClientCertificateEditParams, type ClientCertificateGetParams as ClientCertificateGetParams, };
}
//# sourceMappingURL=client-certificates.d.mts.map