import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as KeylessCertificatesAPI from 'cloudflare/resources/keyless-certificates';
export declare class KeylessCertificates extends APIResource {
    /**
     * Create Keyless SSL Configuration
     */
    create(params: KeylessCertificateCreateParams, options?: Core.RequestOptions): Core.APIPromise<TLSCertificatesAndHostnamesBase>;
    /**
     * List all Keyless SSL configurations for a given zone.
     */
    list(params: KeylessCertificateListParams, options?: Core.RequestOptions): Core.APIPromise<KeylessCertificateListResponse | null>;
    /**
     * Delete Keyless SSL Configuration
     */
    delete(keylessCertificateId: string, params: KeylessCertificateDeleteParams, options?: Core.RequestOptions): Core.APIPromise<KeylessCertificateDeleteResponse>;
    /**
     * This will update attributes of a Keyless SSL. Consists of one or more of the
     * following: host,name,port.
     */
    edit(keylessCertificateId: string, params: KeylessCertificateEditParams, options?: Core.RequestOptions): Core.APIPromise<TLSCertificatesAndHostnamesBase>;
    /**
     * Get details for one Keyless SSL configuration.
     */
    get(keylessCertificateId: string, params: KeylessCertificateGetParams, options?: Core.RequestOptions): Core.APIPromise<TLSCertificatesAndHostnamesBase>;
}
export interface TLSCertificatesAndHostnamesBase {
    /**
     * Keyless certificate identifier tag.
     */
    id: string;
    /**
     * When the Keyless SSL was created.
     */
    created_on: string;
    /**
     * Whether or not the Keyless SSL is on or off.
     */
    enabled: boolean;
    /**
     * The keyless SSL name.
     */
    host: string;
    /**
     * When the Keyless SSL was last modified.
     */
    modified_on: string;
    /**
     * The keyless SSL name.
     */
    name: string;
    /**
     * Available permissions for the Keyless SSL for the current user requesting the
     * item.
     */
    permissions: Array<unknown>;
    /**
     * The keyless SSL port used to communicate between Cloudflare and the client's
     * Keyless SSL server.
     */
    port: number;
    /**
     * Status of the Keyless SSL.
     */
    status: 'active' | 'deleted';
    /**
     * Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    tunnel?: TLSCertificatesAndHostnamesBase.Tunnel;
}
export declare namespace TLSCertificatesAndHostnamesBase {
    /**
     * Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    interface Tunnel {
        /**
         * Private IP of the Key Server Host
         */
        private_ip: string;
        /**
         * Cloudflare Tunnel Virtual Network ID
         */
        vnet_id: string;
    }
}
export interface TLSCertificatesAndHostnamesKeylessCertificate {
    /**
     * Keyless certificate identifier tag.
     */
    id: string;
    /**
     * When the Keyless SSL was created.
     */
    created_on: string;
    /**
     * Whether or not the Keyless SSL is on or off.
     */
    enabled: boolean;
    /**
     * The keyless SSL name.
     */
    host: string;
    /**
     * When the Keyless SSL was last modified.
     */
    modified_on: string;
    /**
     * The keyless SSL name.
     */
    name: string;
    /**
     * Available permissions for the Keyless SSL for the current user requesting the
     * item.
     */
    permissions: Array<unknown>;
    /**
     * The keyless SSL port used to communicate between Cloudflare and the client's
     * Keyless SSL server.
     */
    port: number;
    /**
     * Status of the Keyless SSL.
     */
    status: 'active' | 'deleted';
    /**
     * Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    tunnel?: TLSCertificatesAndHostnamesKeylessCertificate.Tunnel;
}
export declare namespace TLSCertificatesAndHostnamesKeylessCertificate {
    /**
     * Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    interface Tunnel {
        /**
         * Private IP of the Key Server Host
         */
        private_ip: string;
        /**
         * Cloudflare Tunnel Virtual Network ID
         */
        vnet_id: string;
    }
}
export type KeylessCertificateListResponse = Array<TLSCertificatesAndHostnamesBase>;
export interface KeylessCertificateDeleteResponse {
    /**
     * Identifier
     */
    id?: string;
}
export interface KeylessCertificateCreateParams {
    /**
     * Path param: Identifier
     */
    zone_id: string;
    /**
     * Body param: The zone's SSL certificate or SSL certificate and intermediate(s).
     */
    certificate: string;
    /**
     * Body param: The keyless SSL name.
     */
    host: string;
    /**
     * Body param: The keyless SSL port used to communicate between Cloudflare and the
     * client's Keyless SSL server.
     */
    port: number;
    /**
     * Body param: A ubiquitous bundle has the highest probability of being verified
     * everywhere, even by clients using outdated or unusual trust stores. An optimal
     * bundle uses the shortest chain and newest intermediates. And the force bundle
     * verifies the chain, but does not otherwise modify it.
     */
    bundle_method?: 'ubiquitous' | 'optimal' | 'force';
    /**
     * Body param: The keyless SSL name.
     */
    name?: string;
    /**
     * Body param: Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    tunnel?: KeylessCertificateCreateParams.Tunnel;
}
export declare namespace KeylessCertificateCreateParams {
    /**
     * Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    interface Tunnel {
        /**
         * Private IP of the Key Server Host
         */
        private_ip: string;
        /**
         * Cloudflare Tunnel Virtual Network ID
         */
        vnet_id: string;
    }
}
export interface KeylessCertificateListParams {
    /**
     * Identifier
     */
    zone_id: string;
}
export interface KeylessCertificateDeleteParams {
    /**
     * Identifier
     */
    zone_id: string;
}
export interface KeylessCertificateEditParams {
    /**
     * Path param: Identifier
     */
    zone_id: string;
    /**
     * Body param: Whether or not the Keyless SSL is on or off.
     */
    enabled?: boolean;
    /**
     * Body param: The keyless SSL name.
     */
    host?: string;
    /**
     * Body param: The keyless SSL name.
     */
    name?: string;
    /**
     * Body param: The keyless SSL port used to communicate between Cloudflare and the
     * client's Keyless SSL server.
     */
    port?: number;
    /**
     * Body param: Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    tunnel?: KeylessCertificateEditParams.Tunnel;
}
export declare namespace KeylessCertificateEditParams {
    /**
     * Configuration for using Keyless SSL through a Cloudflare Tunnel
     */
    interface Tunnel {
        /**
         * Private IP of the Key Server Host
         */
        private_ip: string;
        /**
         * Cloudflare Tunnel Virtual Network ID
         */
        vnet_id: string;
    }
}
export interface KeylessCertificateGetParams {
    /**
     * Identifier
     */
    zone_id: string;
}
export declare namespace KeylessCertificates {
    export import TLSCertificatesAndHostnamesBase = KeylessCertificatesAPI.TLSCertificatesAndHostnamesBase;
    export import TLSCertificatesAndHostnamesKeylessCertificate = KeylessCertificatesAPI.TLSCertificatesAndHostnamesKeylessCertificate;
    export import KeylessCertificateListResponse = KeylessCertificatesAPI.KeylessCertificateListResponse;
    export import KeylessCertificateDeleteResponse = KeylessCertificatesAPI.KeylessCertificateDeleteResponse;
    export import KeylessCertificateCreateParams = KeylessCertificatesAPI.KeylessCertificateCreateParams;
    export import KeylessCertificateListParams = KeylessCertificatesAPI.KeylessCertificateListParams;
    export import KeylessCertificateDeleteParams = KeylessCertificatesAPI.KeylessCertificateDeleteParams;
    export import KeylessCertificateEditParams = KeylessCertificatesAPI.KeylessCertificateEditParams;
    export import KeylessCertificateGetParams = KeylessCertificatesAPI.KeylessCertificateGetParams;
}
//# sourceMappingURL=keyless-certificates.d.ts.map