import * as Core from 'cloudflaredev/core';
import { APIResource } from 'cloudflaredev/resource';
import * as LocationsAPI from 'cloudflaredev/resources/zero-trust/gateway/locations';
import { SinglePage } from 'cloudflaredev/pagination';
export declare class Locations extends APIResource {
    /**
     * Creates a new Zero Trust Gateway location.
     */
    create(params: LocationCreateParams, options?: Core.RequestOptions): Core.APIPromise<Location>;
    /**
     * Updates a configured Zero Trust Gateway location.
     */
    update(locationId: string, params: LocationUpdateParams, options?: Core.RequestOptions): Core.APIPromise<Location>;
    /**
     * Fetches Zero Trust Gateway locations for an account.
     */
    list(params: LocationListParams, options?: Core.RequestOptions): Core.PagePromise<LocationsSinglePage, Location>;
    /**
     * Deletes a configured Zero Trust Gateway location.
     */
    delete(locationId: string, params: LocationDeleteParams, options?: Core.RequestOptions): Core.APIPromise<LocationDeleteResponse>;
    /**
     * Fetches a single Zero Trust Gateway location.
     */
    get(locationId: string, params: LocationGetParams, options?: Core.RequestOptions): Core.APIPromise<Location>;
}
export declare class LocationsSinglePage extends SinglePage<Location> {
}
export interface Location {
    id?: string;
    /**
     * True if the location is the default location.
     */
    client_default?: boolean;
    created_at?: string;
    /**
     * The DNS over HTTPS domain to send DNS requests to. This field is auto-generated
     * by Gateway.
     */
    doh_subdomain?: string;
    /**
     * True if the location needs to resolve EDNS queries.
     */
    ecs_support?: boolean;
    /**
     * IPV6 destination ip assigned to this location. DNS requests sent to this IP will
     * counted as the request under this location. This field is auto-generated by
     * Gateway.
     */
    ip?: string;
    /**
     * The name of the location.
     */
    name?: string;
    /**
     * A list of network ranges that requests from this location would originate from.
     */
    networks?: Array<LocationNetwork>;
    updated_at?: string;
}
export interface LocationNetwork {
    /**
     * The IPv4 address or IPv4 CIDR. IPv4 CIDRs are limited to a maximum of /24.
     */
    network: string;
}
export interface LocationNetworkParam {
    /**
     * The IPv4 address or IPv4 CIDR. IPv4 CIDRs are limited to a maximum of /24.
     */
    network: string;
}
export type LocationDeleteResponse = unknown | string | null;
export interface LocationCreateParams {
    /**
     * Path param:
     */
    account_id: string;
    /**
     * Body param: The name of the location.
     */
    name: string;
    /**
     * Body param: True if the location is the default location.
     */
    client_default?: boolean;
    /**
     * Body param: True if the location needs to resolve EDNS queries.
     */
    ecs_support?: boolean;
    /**
     * Body param: A list of network ranges that requests from this location would
     * originate from.
     */
    networks?: Array<LocationNetworkParam>;
}
export interface LocationUpdateParams {
    /**
     * Path param:
     */
    account_id: string;
    /**
     * Body param: The name of the location.
     */
    name: string;
    /**
     * Body param: True if the location is the default location.
     */
    client_default?: boolean;
    /**
     * Body param: True if the location needs to resolve EDNS queries.
     */
    ecs_support?: boolean;
    /**
     * Body param: A list of network ranges that requests from this location would
     * originate from.
     */
    networks?: Array<LocationNetworkParam>;
}
export interface LocationListParams {
    account_id: string;
}
export interface LocationDeleteParams {
    account_id: string;
}
export interface LocationGetParams {
    account_id: string;
}
export declare namespace Locations {
    export import Location = LocationsAPI.Location;
    export import LocationNetwork = LocationsAPI.LocationNetwork;
    export import LocationDeleteResponse = LocationsAPI.LocationDeleteResponse;
    export import LocationsSinglePage = LocationsAPI.LocationsSinglePage;
    export import LocationCreateParams = LocationsAPI.LocationCreateParams;
    export import LocationUpdateParams = LocationsAPI.LocationUpdateParams;
    export import LocationListParams = LocationsAPI.LocationListParams;
    export import LocationDeleteParams = LocationsAPI.LocationDeleteParams;
    export import LocationGetParams = LocationsAPI.LocationGetParams;
}
//# sourceMappingURL=locations.d.ts.map