import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as TunnelsAPI from 'cloudflaredev/resources/zero-trust/tunnels/tunnels';
import * as Shared from 'cloudflaredev/resources/shared';
import * as ConfigurationsAPI from 'cloudflaredev/resources/zero-trust/tunnels/configurations';
import * as ConnectionsAPI from 'cloudflaredev/resources/zero-trust/tunnels/connections';
import * as ConnectorsAPI from 'cloudflaredev/resources/zero-trust/tunnels/connectors';
import * as ManagementAPI from 'cloudflaredev/resources/zero-trust/tunnels/management';
import * as TokenAPI from 'cloudflaredev/resources/zero-trust/tunnels/token';
import { V4PagePaginationArray, type V4PagePaginationArrayParams } from 'cloudflaredev/pagination';
export declare class Tunnels extends APIResource {
    configurations: ConfigurationsAPI.Configurations;
    connections: ConnectionsAPI.Connections;
    token: TokenAPI.Token;
    connectors: ConnectorsAPI.Connectors;
    management: ManagementAPI.Management;
    /**
     * Creates a new Argo Tunnel in an account.
     */
    create(params: TunnelCreateParams, options?: Core.RequestOptions): Core.APIPromise<TunnelCreateResponse>;
    /**
     * Lists and filters all types of Tunnels in an account.
     */
    list(params: TunnelListParams, options?: Core.RequestOptions): Core.PagePromise<TunnelListResponsesV4PagePaginationArray, TunnelListResponse>;
    /**
     * Deletes an Argo Tunnel from an account.
     */
    delete(tunnelId: string, params: TunnelDeleteParams, options?: Core.RequestOptions): Core.APIPromise<TunnelDeleteResponse>;
    /**
     * Updates an existing Cloudflare Tunnel.
     */
    edit(tunnelId: string, params: TunnelEditParams, options?: Core.RequestOptions): Core.APIPromise<TunnelEditResponse>;
    /**
     * Fetches a single Argo Tunnel.
     */
    get(tunnelId: string, params: TunnelGetParams, options?: Core.RequestOptions): Core.APIPromise<TunnelGetResponse>;
}
export declare class TunnelListResponsesV4PagePaginationArray extends V4PagePaginationArray<TunnelListResponse> {
}
export interface Connection {
    /**
     * The Cloudflare data center used for this connection.
     */
    colo_name?: string;
    /**
     * Cloudflare continues to track connections for several minutes after they
     * disconnect. This is an optimization to improve latency and reliability of
     * reconnecting. If `true`, the connection has disconnected but is still being
     * tracked. If `false`, the connection is actively serving traffic.
     */
    is_pending_reconnect?: boolean;
    /**
     * UUID of the Cloudflare Tunnel connection.
     */
    uuid?: string;
}
export interface TunnelCreateResponse {
    /**
     * UUID of the tunnel.
     */
    id: string;
    /**
     * The tunnel connections between your origin and Cloudflare's edge.
     */
    connections: Array<Connection>;
    /**
     * Timestamp of when the resource was created.
     */
    created_at: string;
    /**
     * A user-friendly name for a tunnel.
     */
    name: string;
    /**
     * Timestamp of when the resource was deleted. If `null`, the resource has not been
     * deleted.
     */
    deleted_at?: string;
}
/**
 * A Cloudflare Tunnel that connects your origin to Cloudflare's edge.
 */
export type TunnelListResponse = Shared.CloudflareTunnel | TunnelListResponse.TunnelWARPConnectorTunnel;
export declare namespace TunnelListResponse {
    /**
     * A Warp Connector Tunnel that connects your origin to Cloudflare's edge.
     */
    interface TunnelWARPConnectorTunnel {
        /**
         * UUID of the tunnel.
         */
        id?: string;
        /**
         * Cloudflare account ID
         */
        account_tag?: string;
        /**
         * The Cloudflare Tunnel connections between your origin and Cloudflare's edge.
         */
        connections?: Array<TunnelWARPConnectorTunnel.Connection>;
        /**
         * Timestamp of when the tunnel established at least one connection to Cloudflare's
         * edge. If `null`, the tunnel is inactive.
         */
        conns_active_at?: string;
        /**
         * Timestamp of when the tunnel became inactive (no connections to Cloudflare's
         * edge). If `null`, the tunnel is active.
         */
        conns_inactive_at?: string;
        /**
         * Timestamp of when the resource was created.
         */
        created_at?: string;
        /**
         * Timestamp of when the resource was deleted. If `null`, the resource has not been
         * deleted.
         */
        deleted_at?: string;
        /**
         * Metadata associated with the tunnel.
         */
        metadata?: unknown;
        /**
         * A user-friendly name for a tunnel.
         */
        name?: string;
        /**
         * The status of the tunnel. Valid values are `inactive` (tunnel has never been
         * run), `degraded` (tunnel is active and able to serve traffic but in an unhealthy
         * state), `healthy` (tunnel is active and able to serve traffic), or `down`
         * (tunnel can not serve traffic as it has no connections to the Cloudflare Edge).
         */
        status?: string;
        /**
         * The type of tunnel.
         */
        tun_type?: 'cfd_tunnel' | 'warp_connector' | 'ip_sec' | 'gre' | 'cni';
    }
    namespace TunnelWARPConnectorTunnel {
        interface Connection {
            /**
             * UUID of the Cloudflare Tunnel connection.
             */
            id?: string;
            /**
             * UUID of the Cloudflare Tunnel connector.
             */
            client_id?: string;
            /**
             * The cloudflared version used to establish this connection.
             */
            client_version?: string;
            /**
             * The Cloudflare data center used for this connection.
             */
            colo_name?: string;
            /**
             * Cloudflare continues to track connections for several minutes after they
             * disconnect. This is an optimization to improve latency and reliability of
             * reconnecting. If `true`, the connection has disconnected but is still being
             * tracked. If `false`, the connection is actively serving traffic.
             */
            is_pending_reconnect?: boolean;
            /**
             * Timestamp of when the connection was established.
             */
            opened_at?: string;
            /**
             * The public IP address of the host running cloudflared.
             */
            origin_ip?: string;
            /**
             * UUID of the Cloudflare Tunnel connection.
             */
            uuid?: string;
        }
    }
}
export interface TunnelDeleteResponse {
    /**
     * UUID of the tunnel.
     */
    id: string;
    /**
     * The tunnel connections between your origin and Cloudflare's edge.
     */
    connections: Array<Connection>;
    /**
     * Timestamp of when the resource was created.
     */
    created_at: string;
    /**
     * A user-friendly name for a tunnel.
     */
    name: string;
    /**
     * Timestamp of when the resource was deleted. If `null`, the resource has not been
     * deleted.
     */
    deleted_at?: string;
}
/**
 * A Cloudflare Tunnel that connects your origin to Cloudflare's edge.
 */
export type TunnelEditResponse = Shared.CloudflareTunnel | TunnelEditResponse.TunnelWARPConnectorTunnel;
export declare namespace TunnelEditResponse {
    /**
     * A Warp Connector Tunnel that connects your origin to Cloudflare's edge.
     */
    interface TunnelWARPConnectorTunnel {
        /**
         * UUID of the tunnel.
         */
        id?: string;
        /**
         * Cloudflare account ID
         */
        account_tag?: string;
        /**
         * The Cloudflare Tunnel connections between your origin and Cloudflare's edge.
         */
        connections?: Array<TunnelWARPConnectorTunnel.Connection>;
        /**
         * Timestamp of when the tunnel established at least one connection to Cloudflare's
         * edge. If `null`, the tunnel is inactive.
         */
        conns_active_at?: string;
        /**
         * Timestamp of when the tunnel became inactive (no connections to Cloudflare's
         * edge). If `null`, the tunnel is active.
         */
        conns_inactive_at?: string;
        /**
         * Timestamp of when the resource was created.
         */
        created_at?: string;
        /**
         * Timestamp of when the resource was deleted. If `null`, the resource has not been
         * deleted.
         */
        deleted_at?: string;
        /**
         * Metadata associated with the tunnel.
         */
        metadata?: unknown;
        /**
         * A user-friendly name for a tunnel.
         */
        name?: string;
        /**
         * The status of the tunnel. Valid values are `inactive` (tunnel has never been
         * run), `degraded` (tunnel is active and able to serve traffic but in an unhealthy
         * state), `healthy` (tunnel is active and able to serve traffic), or `down`
         * (tunnel can not serve traffic as it has no connections to the Cloudflare Edge).
         */
        status?: string;
        /**
         * The type of tunnel.
         */
        tun_type?: 'cfd_tunnel' | 'warp_connector' | 'ip_sec' | 'gre' | 'cni';
    }
    namespace TunnelWARPConnectorTunnel {
        interface Connection {
            /**
             * UUID of the Cloudflare Tunnel connection.
             */
            id?: string;
            /**
             * UUID of the Cloudflare Tunnel connector.
             */
            client_id?: string;
            /**
             * The cloudflared version used to establish this connection.
             */
            client_version?: string;
            /**
             * The Cloudflare data center used for this connection.
             */
            colo_name?: string;
            /**
             * Cloudflare continues to track connections for several minutes after they
             * disconnect. This is an optimization to improve latency and reliability of
             * reconnecting. If `true`, the connection has disconnected but is still being
             * tracked. If `false`, the connection is actively serving traffic.
             */
            is_pending_reconnect?: boolean;
            /**
             * Timestamp of when the connection was established.
             */
            opened_at?: string;
            /**
             * The public IP address of the host running cloudflared.
             */
            origin_ip?: string;
            /**
             * UUID of the Cloudflare Tunnel connection.
             */
            uuid?: string;
        }
    }
}
export interface TunnelGetResponse {
    /**
     * UUID of the tunnel.
     */
    id: string;
    /**
     * The tunnel connections between your origin and Cloudflare's edge.
     */
    connections: Array<Connection>;
    /**
     * Timestamp of when the resource was created.
     */
    created_at: string;
    /**
     * A user-friendly name for a tunnel.
     */
    name: string;
    /**
     * Timestamp of when the resource was deleted. If `null`, the resource has not been
     * deleted.
     */
    deleted_at?: string;
}
export interface TunnelCreateParams {
    /**
     * Path param: Cloudflare account ID
     */
    account_id: string;
    /**
     * Body param: A user-friendly name for a tunnel.
     */
    name: string;
    /**
     * Body param: Sets the password required to run a locally-managed tunnel. Must be
     * at least 32 bytes and encoded as a base64 string.
     */
    tunnel_secret: string;
}
export interface TunnelListParams extends V4PagePaginationArrayParams {
    /**
     * Path param: Cloudflare account ID
     */
    account_id: string;
    /**
     * Query param:
     */
    exclude_prefix?: string;
    /**
     * Query param: If provided, include only tunnels that were created (and not
     * deleted) before this time.
     */
    existed_at?: string;
    /**
     * Query param:
     */
    include_prefix?: string;
    /**
     * Query param: If `true`, only include deleted tunnels. If `false`, exclude
     * deleted tunnels. If empty, all tunnels will be included.
     */
    is_deleted?: boolean;
    /**
     * Query param: A user-friendly name for the tunnel.
     */
    name?: string;
    /**
     * Query param: The types of tunnels to filter separated by a comma.
     */
    tun_types?: string;
    /**
     * Query param: UUID of the tunnel.
     */
    uuid?: string;
    /**
     * Query param:
     */
    was_active_at?: string;
    /**
     * Query param:
     */
    was_inactive_at?: string;
}
export interface TunnelDeleteParams {
    /**
     * Cloudflare account ID
     */
    account_id: string;
}
export interface TunnelEditParams {
    /**
     * Path param: Cloudflare account ID
     */
    account_id: string;
    /**
     * Body param: A user-friendly name for a tunnel.
     */
    name?: string;
    /**
     * Body param: Sets the password required to run a locally-managed tunnel. Must be
     * at least 32 bytes and encoded as a base64 string.
     */
    tunnel_secret?: string;
}
export interface TunnelGetParams {
    /**
     * Cloudflare account ID
     */
    account_id: string;
}
export declare namespace Tunnels {
    export import Connection = TunnelsAPI.Connection;
    export import TunnelCreateResponse = TunnelsAPI.TunnelCreateResponse;
    export import TunnelListResponse = TunnelsAPI.TunnelListResponse;
    export import TunnelDeleteResponse = TunnelsAPI.TunnelDeleteResponse;
    export import TunnelEditResponse = TunnelsAPI.TunnelEditResponse;
    export import TunnelGetResponse = TunnelsAPI.TunnelGetResponse;
    export import TunnelListResponsesV4PagePaginationArray = TunnelsAPI.TunnelListResponsesV4PagePaginationArray;
    export import TunnelCreateParams = TunnelsAPI.TunnelCreateParams;
    export import TunnelListParams = TunnelsAPI.TunnelListParams;
    export import TunnelDeleteParams = TunnelsAPI.TunnelDeleteParams;
    export import TunnelEditParams = TunnelsAPI.TunnelEditParams;
    export import TunnelGetParams = TunnelsAPI.TunnelGetParams;
    export import Configurations = ConfigurationsAPI.Configurations;
    export import ConfigurationUpdateResponse = ConfigurationsAPI.ConfigurationUpdateResponse;
    export import ConfigurationGetResponse = ConfigurationsAPI.ConfigurationGetResponse;
    export import ConfigurationUpdateParams = ConfigurationsAPI.ConfigurationUpdateParams;
    export import ConfigurationGetParams = ConfigurationsAPI.ConfigurationGetParams;
    export import Connections = ConnectionsAPI.Connections;
    export import Client = ConnectionsAPI.Client;
    export import ConnectionDeleteResponse = ConnectionsAPI.ConnectionDeleteResponse;
    export import ConnectionGetResponse = ConnectionsAPI.ConnectionGetResponse;
    export import ConnectionDeleteParams = ConnectionsAPI.ConnectionDeleteParams;
    export import ConnectionGetParams = ConnectionsAPI.ConnectionGetParams;
    export import Token = TokenAPI.Token;
    export import TokenGetResponse = TokenAPI.TokenGetResponse;
    export import TokenGetParams = TokenAPI.TokenGetParams;
    export import Connectors = ConnectorsAPI.Connectors;
    export import ConnectorGetParams = ConnectorsAPI.ConnectorGetParams;
    export import Management = ManagementAPI.Management;
    export import ManagementCreateResponse = ManagementAPI.ManagementCreateResponse;
    export import ManagementCreateParams = ManagementAPI.ManagementCreateParams;
}
//# sourceMappingURL=tunnels.d.ts.map