import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as GRETunnelsAPI from 'cloudflare/resources/magic-transit/gre-tunnels';
export declare class GRETunnels extends APIResource {
    /**
     * Creates new GRE tunnels. Use `?validate_only=true` as an optional query
     * parameter to only run validation without persisting changes.
     */
    create(params: GRETunnelCreateParams, options?: Core.RequestOptions): Core.APIPromise<GRETunnelCreateResponse>;
    /**
     * Updates a specific GRE tunnel. Use `?validate_only=true` as an optional query
     * parameter to only run validation without persisting changes.
     */
    update(tunnelIdentifier: string, params: GRETunnelUpdateParams, options?: Core.RequestOptions): Core.APIPromise<GRETunnelUpdateResponse>;
    /**
     * Lists GRE tunnels associated with an account.
     */
    list(params: GRETunnelListParams, options?: Core.RequestOptions): Core.APIPromise<GRETunnelListResponse>;
    /**
     * Disables and removes a specific static GRE tunnel. Use `?validate_only=true` as
     * an optional query parameter to only run validation without persisting changes.
     */
    delete(tunnelIdentifier: string, params: GRETunnelDeleteParams, options?: Core.RequestOptions): Core.APIPromise<GRETunnelDeleteResponse>;
    /**
     * Lists informtion for a specific GRE tunnel.
     */
    get(tunnelIdentifier: string, params: GRETunnelGetParams, options?: Core.RequestOptions): Core.APIPromise<GRETunnelGetResponse>;
}
export interface GRETunnelCreateResponse {
    gre_tunnels?: Array<GRETunnelCreateResponse.GRETunnel>;
}
export declare namespace GRETunnelCreateResponse {
    interface GRETunnel {
        /**
         * The IP address assigned to the Cloudflare side of the GRE tunnel.
         */
        cloudflare_gre_endpoint: string;
        /**
         * The IP address assigned to the customer side of the GRE tunnel.
         */
        customer_gre_endpoint: string;
        /**
         * A 31-bit prefix (/31 in CIDR notation) supporting two hosts, one for each side
         * of the tunnel. Select the subnet from the following private IP space:
         * 10.0.0.0–10.255.255.255, 172.16.0.0–172.31.255.255, 192.168.0.0–192.168.255.255.
         */
        interface_address: string;
        /**
         * The name of the tunnel. The name cannot contain spaces or special characters,
         * must be 15 characters or less, and cannot share a name with another GRE tunnel.
         */
        name: string;
        /**
         * Tunnel identifier tag.
         */
        id?: string;
        /**
         * The date and time the tunnel was created.
         */
        created_on?: string;
        /**
         * An optional description of the GRE tunnel.
         */
        description?: string;
        health_check?: GRETunnel.HealthCheck;
        /**
         * The date and time the tunnel was last modified.
         */
        modified_on?: string;
        /**
         * Maximum Transmission Unit (MTU) in bytes for the GRE tunnel. The minimum value
         * is 576.
         */
        mtu?: number;
        /**
         * Time To Live (TTL) in number of hops of the GRE tunnel.
         */
        ttl?: number;
    }
    namespace GRETunnel {
        interface HealthCheck {
            /**
             * The direction of the flow of the healthcheck. Either unidirectional, where the
             * probe comes to you via the tunnel and the result comes back to Cloudflare via
             * the open Internet, or bidirectional where both the probe and result come and go
             * via the tunnel. Note in the case of bidirecitonal healthchecks, the target field
             * in health_check is ignored as the interface_address is used to send traffic into
             * the tunnel.
             */
            direction?: 'unidirectional' | 'bidirectional';
            /**
             * Determines whether to run healthchecks for a tunnel.
             */
            enabled?: boolean;
            /**
             * How frequent the health check is run. The default value is `mid`.
             */
            rate?: 'low' | 'mid' | 'high';
            /**
             * The destination address in a request type health check. After the healthcheck is
             * decapsulated at the customer end of the tunnel, the ICMP echo will be forwarded
             * to this address. This field defaults to `customer_gre_endpoint address`. This
             * field is ignored for bidirectional healthchecks as the interface_address (not
             * assigned to the Cloudflare side of the tunnel) is used as the target.
             */
            target?: string;
            /**
             * The type of healthcheck to run, reply or request. The default value is `reply`.
             */
            type?: 'reply' | 'request';
        }
    }
}
export interface GRETunnelUpdateResponse {
    modified?: boolean;
    modified_gre_tunnel?: unknown;
}
export interface GRETunnelListResponse {
    gre_tunnels?: Array<GRETunnelListResponse.GRETunnel>;
}
export declare namespace GRETunnelListResponse {
    interface GRETunnel {
        /**
         * The IP address assigned to the Cloudflare side of the GRE tunnel.
         */
        cloudflare_gre_endpoint: string;
        /**
         * The IP address assigned to the customer side of the GRE tunnel.
         */
        customer_gre_endpoint: string;
        /**
         * A 31-bit prefix (/31 in CIDR notation) supporting two hosts, one for each side
         * of the tunnel. Select the subnet from the following private IP space:
         * 10.0.0.0–10.255.255.255, 172.16.0.0–172.31.255.255, 192.168.0.0–192.168.255.255.
         */
        interface_address: string;
        /**
         * The name of the tunnel. The name cannot contain spaces or special characters,
         * must be 15 characters or less, and cannot share a name with another GRE tunnel.
         */
        name: string;
        /**
         * Tunnel identifier tag.
         */
        id?: string;
        /**
         * The date and time the tunnel was created.
         */
        created_on?: string;
        /**
         * An optional description of the GRE tunnel.
         */
        description?: string;
        health_check?: GRETunnel.HealthCheck;
        /**
         * The date and time the tunnel was last modified.
         */
        modified_on?: string;
        /**
         * Maximum Transmission Unit (MTU) in bytes for the GRE tunnel. The minimum value
         * is 576.
         */
        mtu?: number;
        /**
         * Time To Live (TTL) in number of hops of the GRE tunnel.
         */
        ttl?: number;
    }
    namespace GRETunnel {
        interface HealthCheck {
            /**
             * The direction of the flow of the healthcheck. Either unidirectional, where the
             * probe comes to you via the tunnel and the result comes back to Cloudflare via
             * the open Internet, or bidirectional where both the probe and result come and go
             * via the tunnel. Note in the case of bidirecitonal healthchecks, the target field
             * in health_check is ignored as the interface_address is used to send traffic into
             * the tunnel.
             */
            direction?: 'unidirectional' | 'bidirectional';
            /**
             * Determines whether to run healthchecks for a tunnel.
             */
            enabled?: boolean;
            /**
             * How frequent the health check is run. The default value is `mid`.
             */
            rate?: 'low' | 'mid' | 'high';
            /**
             * The destination address in a request type health check. After the healthcheck is
             * decapsulated at the customer end of the tunnel, the ICMP echo will be forwarded
             * to this address. This field defaults to `customer_gre_endpoint address`. This
             * field is ignored for bidirectional healthchecks as the interface_address (not
             * assigned to the Cloudflare side of the tunnel) is used as the target.
             */
            target?: string;
            /**
             * The type of healthcheck to run, reply or request. The default value is `reply`.
             */
            type?: 'reply' | 'request';
        }
    }
}
export interface GRETunnelDeleteResponse {
    deleted?: boolean;
    deleted_gre_tunnel?: unknown;
}
export interface GRETunnelGetResponse {
    gre_tunnel?: unknown;
}
export interface GRETunnelCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    body: unknown;
}
export interface GRETunnelUpdateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param: The IP address assigned to the Cloudflare side of the GRE tunnel.
     */
    cloudflare_gre_endpoint: string;
    /**
     * Body param: The IP address assigned to the customer side of the GRE tunnel.
     */
    customer_gre_endpoint: string;
    /**
     * Body param: A 31-bit prefix (/31 in CIDR notation) supporting two hosts, one for
     * each side of the tunnel. Select the subnet from the following private IP space:
     * 10.0.0.0–10.255.255.255, 172.16.0.0–172.31.255.255, 192.168.0.0–192.168.255.255.
     */
    interface_address: string;
    /**
     * Body param: The name of the tunnel. The name cannot contain spaces or special
     * characters, must be 15 characters or less, and cannot share a name with another
     * GRE tunnel.
     */
    name: string;
    /**
     * Body param: An optional description of the GRE tunnel.
     */
    description?: string;
    /**
     * Body param:
     */
    health_check?: GRETunnelUpdateParams.HealthCheck;
    /**
     * Body param: Maximum Transmission Unit (MTU) in bytes for the GRE tunnel. The
     * minimum value is 576.
     */
    mtu?: number;
    /**
     * Body param: Time To Live (TTL) in number of hops of the GRE tunnel.
     */
    ttl?: number;
}
export declare namespace GRETunnelUpdateParams {
    interface HealthCheck {
        /**
         * The direction of the flow of the healthcheck. Either unidirectional, where the
         * probe comes to you via the tunnel and the result comes back to Cloudflare via
         * the open Internet, or bidirectional where both the probe and result come and go
         * via the tunnel. Note in the case of bidirecitonal healthchecks, the target field
         * in health_check is ignored as the interface_address is used to send traffic into
         * the tunnel.
         */
        direction?: 'unidirectional' | 'bidirectional';
        /**
         * Determines whether to run healthchecks for a tunnel.
         */
        enabled?: boolean;
        /**
         * How frequent the health check is run. The default value is `mid`.
         */
        rate?: 'low' | 'mid' | 'high';
        /**
         * The destination address in a request type health check. After the healthcheck is
         * decapsulated at the customer end of the tunnel, the ICMP echo will be forwarded
         * to this address. This field defaults to `customer_gre_endpoint address`. This
         * field is ignored for bidirectional healthchecks as the interface_address (not
         * assigned to the Cloudflare side of the tunnel) is used as the target.
         */
        target?: string;
        /**
         * The type of healthcheck to run, reply or request. The default value is `reply`.
         */
        type?: 'reply' | 'request';
    }
}
export interface GRETunnelListParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface GRETunnelDeleteParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface GRETunnelGetParams {
    /**
     * Identifier
     */
    account_id: string;
}
export declare namespace GRETunnels {
    export import GRETunnelCreateResponse = GRETunnelsAPI.GRETunnelCreateResponse;
    export import GRETunnelUpdateResponse = GRETunnelsAPI.GRETunnelUpdateResponse;
    export import GRETunnelListResponse = GRETunnelsAPI.GRETunnelListResponse;
    export import GRETunnelDeleteResponse = GRETunnelsAPI.GRETunnelDeleteResponse;
    export import GRETunnelGetResponse = GRETunnelsAPI.GRETunnelGetResponse;
    export import GRETunnelCreateParams = GRETunnelsAPI.GRETunnelCreateParams;
    export import GRETunnelUpdateParams = GRETunnelsAPI.GRETunnelUpdateParams;
    export import GRETunnelListParams = GRETunnelsAPI.GRETunnelListParams;
    export import GRETunnelDeleteParams = GRETunnelsAPI.GRETunnelDeleteParams;
    export import GRETunnelGetParams = GRETunnelsAPI.GRETunnelGetParams;
}
//# sourceMappingURL=gre-tunnels.d.ts.map