import { JoinerServiceConfigAlias, ModuleJoinerConfig } from "@medusajs/types";
import { ComputedJoinerRelationship, InternalJoinerServiceConfig, RelationMap } from "./types";
/**
 * Indexed view of module joiner configs: services, aliases, entities,
 * relationships, and fieldAlias shortcuts.
 *
 * Built once per RemoteJoiner instance.
 */
export declare class GraphCatalog {
    private cache;
    private relationMap;
    constructor(serviceConfigs: ModuleJoinerConfig[], options?: {
        autoCreateServiceNameAlias?: boolean;
        relationMap?: RelationMap;
    });
    getServiceConfig({ serviceName, serviceAlias, entity, }: {
        serviceName?: string;
        serviceAlias?: string;
        entity?: string;
    }): InternalJoinerServiceConfig | undefined;
    getEntity(entity: string, prop: string): string | undefined;
    /**
     * Internal cross-module join metadata (crossjoinable fields, physical table
     * name) attached to the alias entry matching the given entity.
     */
    getAliasMetadata(entity: string | undefined): NonNullable<JoinerServiceConfigAlias["__internal"]> | undefined;
    getEntityRelationship(params: {
        parentServiceConfig: InternalJoinerServiceConfig;
        property: string;
        entity?: string;
    }): ComputedJoinerRelationship | undefined;
    private index;
    private indexRelationships;
    private indexAliases;
    private collectExtends;
    private mergeExtends;
    private precomputeKeys;
    private ensureKeyArrays;
    private addRelationship;
    private mergeFieldAlias;
    private cacheByAlias;
    private cacheByServiceName;
}
//# sourceMappingURL=catalog.d.ts.map