import * as Core from 'cloudflare/core';
import { APIResource } from 'cloudflare/resource';
import * as RoutesAPI from 'cloudflare/resources/magic-transit/routes';
export declare class Routes extends APIResource {
    /**
     * Creates a new Magic static route. Use `?validate_only=true` as an optional query
     * parameter to run validation only without persisting changes.
     */
    create(params: RouteCreateParams, options?: Core.RequestOptions): Core.APIPromise<RouteCreateResponse>;
    /**
     * Update a specific Magic static route. Use `?validate_only=true` as an optional
     * query parameter to run validation only without persisting changes.
     */
    update(routeIdentifier: string, params: RouteUpdateParams, options?: Core.RequestOptions): Core.APIPromise<RouteUpdateResponse>;
    /**
     * List all Magic static routes.
     */
    list(params: RouteListParams, options?: Core.RequestOptions): Core.APIPromise<RouteListResponse>;
    /**
     * Disable and remove a specific Magic static route.
     */
    delete(routeIdentifier: string, params: RouteDeleteParams, options?: Core.RequestOptions): Core.APIPromise<RouteDeleteResponse>;
    /**
     * Delete multiple Magic static routes.
     */
    empty(params: RouteEmptyParams, options?: Core.RequestOptions): Core.APIPromise<RouteEmptyResponse>;
    /**
     * Get a specific Magic static route.
     */
    get(routeIdentifier: string, params: RouteGetParams, options?: Core.RequestOptions): Core.APIPromise<RouteGetResponse>;
}
export interface RouteCreateResponse {
    routes?: Array<RouteCreateResponse.Route>;
}
export declare namespace RouteCreateResponse {
    interface Route {
        /**
         * The next-hop IP Address for the static route.
         */
        nexthop: string;
        /**
         * IP Prefix in Classless Inter-Domain Routing format.
         */
        prefix: string;
        /**
         * Priority of the static route.
         */
        priority: number;
        /**
         * Identifier
         */
        id?: string;
        /**
         * When the route was created.
         */
        created_on?: string;
        /**
         * An optional human provided description of the static route.
         */
        description?: string;
        /**
         * When the route was last modified.
         */
        modified_on?: string;
        /**
         * Used only for ECMP routes.
         */
        scope?: Route.Scope;
        /**
         * Optional weight of the ECMP scope - if provided.
         */
        weight?: number;
    }
    namespace Route {
        /**
         * Used only for ECMP routes.
         */
        interface Scope {
            /**
             * List of colo names for the ECMP scope.
             */
            colo_names?: Array<string>;
            /**
             * List of colo regions for the ECMP scope.
             */
            colo_regions?: Array<string>;
        }
    }
}
export interface RouteUpdateResponse {
    modified?: boolean;
    modified_route?: unknown;
}
export interface RouteListResponse {
    routes?: Array<RouteListResponse.Route>;
}
export declare namespace RouteListResponse {
    interface Route {
        /**
         * The next-hop IP Address for the static route.
         */
        nexthop: string;
        /**
         * IP Prefix in Classless Inter-Domain Routing format.
         */
        prefix: string;
        /**
         * Priority of the static route.
         */
        priority: number;
        /**
         * Identifier
         */
        id?: string;
        /**
         * When the route was created.
         */
        created_on?: string;
        /**
         * An optional human provided description of the static route.
         */
        description?: string;
        /**
         * When the route was last modified.
         */
        modified_on?: string;
        /**
         * Used only for ECMP routes.
         */
        scope?: Route.Scope;
        /**
         * Optional weight of the ECMP scope - if provided.
         */
        weight?: number;
    }
    namespace Route {
        /**
         * Used only for ECMP routes.
         */
        interface Scope {
            /**
             * List of colo names for the ECMP scope.
             */
            colo_names?: Array<string>;
            /**
             * List of colo regions for the ECMP scope.
             */
            colo_regions?: Array<string>;
        }
    }
}
export interface RouteDeleteResponse {
    deleted?: boolean;
    deleted_route?: unknown;
}
export interface RouteEmptyResponse {
    deleted?: boolean;
    deleted_routes?: unknown;
}
export interface RouteGetResponse {
    route?: unknown;
}
export interface RouteCreateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    body: unknown;
}
export interface RouteUpdateParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param: The next-hop IP Address for the static route.
     */
    nexthop: string;
    /**
     * Body param: IP Prefix in Classless Inter-Domain Routing format.
     */
    prefix: string;
    /**
     * Body param: Priority of the static route.
     */
    priority: number;
    /**
     * Body param: An optional human provided description of the static route.
     */
    description?: string;
    /**
     * Body param: Used only for ECMP routes.
     */
    scope?: RouteUpdateParams.Scope;
    /**
     * Body param: Optional weight of the ECMP scope - if provided.
     */
    weight?: number;
}
export declare namespace RouteUpdateParams {
    /**
     * Used only for ECMP routes.
     */
    interface Scope {
        /**
         * List of colo names for the ECMP scope.
         */
        colo_names?: Array<string>;
        /**
         * List of colo regions for the ECMP scope.
         */
        colo_regions?: Array<string>;
    }
}
export interface RouteListParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface RouteDeleteParams {
    /**
     * Identifier
     */
    account_id: string;
}
export interface RouteEmptyParams {
    /**
     * Path param: Identifier
     */
    account_id: string;
    /**
     * Body param:
     */
    routes: Array<RouteEmptyParams.Route>;
}
export declare namespace RouteEmptyParams {
    interface Route {
    }
}
export interface RouteGetParams {
    /**
     * Identifier
     */
    account_id: string;
}
export declare namespace Routes {
    export import RouteCreateResponse = RoutesAPI.RouteCreateResponse;
    export import RouteUpdateResponse = RoutesAPI.RouteUpdateResponse;
    export import RouteListResponse = RoutesAPI.RouteListResponse;
    export import RouteDeleteResponse = RoutesAPI.RouteDeleteResponse;
    export import RouteEmptyResponse = RoutesAPI.RouteEmptyResponse;
    export import RouteGetResponse = RoutesAPI.RouteGetResponse;
    export import RouteCreateParams = RoutesAPI.RouteCreateParams;
    export import RouteUpdateParams = RoutesAPI.RouteUpdateParams;
    export import RouteListParams = RoutesAPI.RouteListParams;
    export import RouteDeleteParams = RoutesAPI.RouteDeleteParams;
    export import RouteEmptyParams = RoutesAPI.RouteEmptyParams;
    export import RouteGetParams = RoutesAPI.RouteGetParams;
}
//# sourceMappingURL=routes.d.ts.map