import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const metros = equinix.fabric.getMetros({
 *     pagination: {
 *         limit: 12,
 *         offset: 6,
 *     },
 * });
 * export const numberOfReturnedMetros = metros.then(metros => metros.datas).length;
 * export const firstMetroType = metros.then(metros => metros.datas?.[0]?.type);
 * export const firstMetroCode = metros.then(metros => metros.datas?.[0]?.code);
 * export const firstMetroRegion = metros.then(metros => metros.datas?.[0]?.region);
 * export const firstMetroName = metros.then(metros => metros.datas?.[0]?.name);
 * export const firstMetroEquinixAsn = metros.then(metros => metros.datas?.[0]?.equinixAsn);
 * export const firstMetroLocalVcBandwidthMax = metros.then(metros => metros.datas?.[0]?.localVcBandwidthMax);
 * export const firstMetroGeoCoordinates = metros.then(metros => metros.datas?.[0]?.geoCoordinates);
 * export const firstMetroConnectedMetros = metros.then(metros => metros.datas?.[0]?.connectedMetros);
 * export const firstMetroGeoScopes = metros.then(metros => metros.datas?.[0]?.geoScopes);
 * ```
 */
export declare function getMetros(args: GetMetrosArgs, opts?: pulumi.InvokeOptions): Promise<GetMetrosResult>;
/**
 * A collection of arguments for invoking getMetros.
 */
export interface GetMetrosArgs {
    /**
     * Pagination details for the returned metro list
     */
    pagination: inputs.fabric.GetMetrosPagination;
    /**
     * User On Boarded Metros based on Fabric resource availability
     */
    presence?: string;
}
/**
 * A collection of values returned by getMetros.
 */
export interface GetMetrosResult {
    /**
     * Returned list of metro objects
     */
    readonly datas: outputs.fabric.GetMetrosData[];
    /**
     * The unique identifier of the resource
     */
    readonly id: string;
    /**
     * Pagination details for the returned metro list
     */
    readonly pagination: outputs.fabric.GetMetrosPagination;
    /**
     * User On Boarded Metros based on Fabric resource availability
     */
    readonly presence?: string;
}
/**
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const metros = equinix.fabric.getMetros({
 *     pagination: {
 *         limit: 12,
 *         offset: 6,
 *     },
 * });
 * export const numberOfReturnedMetros = metros.then(metros => metros.datas).length;
 * export const firstMetroType = metros.then(metros => metros.datas?.[0]?.type);
 * export const firstMetroCode = metros.then(metros => metros.datas?.[0]?.code);
 * export const firstMetroRegion = metros.then(metros => metros.datas?.[0]?.region);
 * export const firstMetroName = metros.then(metros => metros.datas?.[0]?.name);
 * export const firstMetroEquinixAsn = metros.then(metros => metros.datas?.[0]?.equinixAsn);
 * export const firstMetroLocalVcBandwidthMax = metros.then(metros => metros.datas?.[0]?.localVcBandwidthMax);
 * export const firstMetroGeoCoordinates = metros.then(metros => metros.datas?.[0]?.geoCoordinates);
 * export const firstMetroConnectedMetros = metros.then(metros => metros.datas?.[0]?.connectedMetros);
 * export const firstMetroGeoScopes = metros.then(metros => metros.datas?.[0]?.geoScopes);
 * ```
 */
export declare function getMetrosOutput(args: GetMetrosOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetMetrosResult>;
/**
 * A collection of arguments for invoking getMetros.
 */
export interface GetMetrosOutputArgs {
    /**
     * Pagination details for the returned metro list
     */
    pagination: pulumi.Input<inputs.fabric.GetMetrosPaginationArgs>;
    /**
     * User On Boarded Metros based on Fabric resource availability
     */
    presence?: pulumi.Input<string>;
}
