import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as CertificatesAPI from 'cloudflaredev/resources/zero-trust/access/certificates/certificates';
import * as SettingsAPI from 'cloudflaredev/resources/zero-trust/access/certificates/settings';
import { SinglePage } from 'cloudflaredev/pagination';
export declare class Certificates extends APIResource {
    settings: SettingsAPI.Settings;
    /**
     * Adds a new mTLS root certificate to Access.
     */
    create(params: CertificateCreateParams, options?: Core.RequestOptions): Core.APIPromise<Certificate>;
    /**
     * Updates a configured mTLS certificate.
     */
    update(uuid: string, params: CertificateUpdateParams, options?: Core.RequestOptions): Core.APIPromise<Certificate>;
    /**
     * Lists all mTLS root certificates.
     */
    list(params?: CertificateListParams, options?: Core.RequestOptions): Core.PagePromise<CertificatesSinglePage, Certificate>;
    list(options?: Core.RequestOptions): Core.PagePromise<CertificatesSinglePage, Certificate>;
    /**
     * Deletes an mTLS certificate.
     */
    delete(uuid: string, params?: CertificateDeleteParams, options?: Core.RequestOptions): Core.APIPromise<CertificateDeleteResponse>;
    delete(uuid: string, options?: Core.RequestOptions): Core.APIPromise<CertificateDeleteResponse>;
    /**
     * Fetches a single mTLS certificate.
     */
    get(uuid: string, params?: CertificateGetParams, options?: Core.RequestOptions): Core.APIPromise<Certificate>;
    get(uuid: string, options?: Core.RequestOptions): Core.APIPromise<Certificate>;
}
export declare class CertificatesSinglePage extends SinglePage<Certificate> {
}
/**
 * A fully-qualified domain name (FQDN).
 */
export type AssociatedHostnames = string;
/**
 * A fully-qualified domain name (FQDN).
 */
export type AssociatedHostnamesParam = string;
export interface Certificate {
    /**
     * The ID of the application that will use this certificate.
     */
    id?: string;
    /**
     * The hostnames of the applications that will use this certificate.
     */
    associated_hostnames?: Array<AssociatedHostnames>;
    created_at?: string;
    expires_on?: string;
    /**
     * The MD5 fingerprint of the certificate.
     */
    fingerprint?: string;
    /**
     * The name of the certificate.
     */
    name?: string;
    updated_at?: string;
}
export interface CertificateDeleteResponse {
    /**
     * UUID
     */
    id?: string;
}
export interface CertificateCreateParams {
    /**
     * Body param: The certificate content.
     */
    certificate: string;
    /**
     * Body param: The name of the certificate.
     */
    name: string;
    /**
     * Path param: The Account ID to use for this endpoint. Mutually exclusive with the
     * Zone ID.
     */
    account_id?: string;
    /**
     * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the
     * Account ID.
     */
    zone_id?: string;
    /**
     * Body param: The hostnames of the applications that will use this certificate.
     */
    associated_hostnames?: Array<AssociatedHostnamesParam>;
}
export interface CertificateUpdateParams {
    /**
     * Body param: The hostnames of the applications that will use this certificate.
     */
    associated_hostnames: Array<AssociatedHostnamesParam>;
    /**
     * Path param: The Account ID to use for this endpoint. Mutually exclusive with the
     * Zone ID.
     */
    account_id?: string;
    /**
     * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the
     * Account ID.
     */
    zone_id?: string;
    /**
     * Body param: The name of the certificate.
     */
    name?: string;
}
export interface CertificateListParams {
    /**
     * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
     */
    account_id?: string;
    /**
     * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
     */
    zone_id?: string;
}
export interface CertificateDeleteParams {
    /**
     * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
     */
    account_id?: string;
    /**
     * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
     */
    zone_id?: string;
}
export interface CertificateGetParams {
    /**
     * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
     */
    account_id?: string;
    /**
     * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
     */
    zone_id?: string;
}
export declare namespace Certificates {
    export import AssociatedHostnames = CertificatesAPI.AssociatedHostnames;
    export import Certificate = CertificatesAPI.Certificate;
    export import CertificateDeleteResponse = CertificatesAPI.CertificateDeleteResponse;
    export import CertificatesSinglePage = CertificatesAPI.CertificatesSinglePage;
    export import CertificateCreateParams = CertificatesAPI.CertificateCreateParams;
    export import CertificateUpdateParams = CertificatesAPI.CertificateUpdateParams;
    export import CertificateListParams = CertificatesAPI.CertificateListParams;
    export import CertificateDeleteParams = CertificatesAPI.CertificateDeleteParams;
    export import CertificateGetParams = CertificatesAPI.CertificateGetParams;
    export import Settings = SettingsAPI.Settings;
    export import CertificateSettings = SettingsAPI.CertificateSettings;
    export import SettingUpdateResponse = SettingsAPI.SettingUpdateResponse;
    export import SettingGetResponse = SettingsAPI.SettingGetResponse;
    export import SettingUpdateParams = SettingsAPI.SettingUpdateParams;
    export import SettingGetParams = SettingsAPI.SettingGetParams;
}
//# sourceMappingURL=certificates.d.ts.map