import React from 'react';
import type { ConnectionStorage } from '@mongodb-js/connection-storage/provider';
type ElectableSpecs = {
    instanceSize?: string;
};
type RegionConfig = {
    priority: number;
    electableSpecs: ElectableSpecs;
};
type ReplicationSpec = {
    regionConfigs: RegionConfig[];
};
type ClusterType = 'REPLICASET' | 'SHARDED' | 'GEOSHARDED';
type ClusterDescription = {
    '@provider': string;
    uniqueId: string;
    groupId: string;
    name: string;
    clusterType: ClusterType;
    srvAddress: string;
    state: string;
    deploymentItemName: string;
    replicationSpecList?: ReplicationSpec[];
    isPaused?: boolean;
    geoSharding?: {
        selfManagedSharding?: boolean;
    };
};
export type ClusterDescriptionWithDataProcessingRegion = ClusterDescription & {
    dataProcessingRegion: {
        regionalUrl: string;
    };
};
type ReplicaSetDeploymentItem = {
    _id: string;
    state: {
        clusterId: string;
    };
};
type ShardingDeploymentItem = {
    name: string;
    state: {
        clusterId: string;
    };
};
type Deployment = {
    replicaSets?: ReplicaSetDeploymentItem[];
    sharding?: ShardingDeploymentItem[];
};
export declare function buildConnectionInfoFromClusterDescription(driverProxyEndpoint: string, orgId: string, projectId: string, description: ClusterDescriptionWithDataProcessingRegion, deployment: Deployment, extraConnectionOptions?: Record<string, any>): {
    id: string;
    connectionOptions: {
        connectionString: string;
        lookup: () => {
            wsURL: string;
            projectId: string;
            clusterName: string;
            srvAddress: string;
        };
    };
    atlasMetadata: {
        instanceSize: string | undefined;
        clusterType: ClusterType;
        geoSharding: {
            selfManagedSharding: boolean | undefined;
        };
        metricsId: string;
        metricsType: "serverless" | "replicaSet" | "cluster";
        orgId: string;
        projectId: string;
        clusterUniqueId: string;
        clusterName: string;
        regionalBaseUrl: string;
    };
};
/**
 * Only used in the sandbox to provide connection info when connecting to the
 * non-Atlas deployment
 * @internal
 */
export declare const SandboxConnectionStorageProviver: ({ value, extraConnectionOptions, children, }: {
    value: ConnectionStorage | null;
    extraConnectionOptions?: Record<string, any> | undefined;
    children: React.ReactNode;
}) => React.JSX.Element;
export declare const AtlasCloudConnectionStorageProvider: ({ orgId, projectId, children, }: {
    orgId: string;
    projectId: string;
    children: React.ReactChild;
}) => React.JSX.Element;
export {};
//# sourceMappingURL=connection-storage.d.ts.map