import { Knex } from "@medusajs/deps/mikro-orm/knex";
import { CrossModuleJoinSpec } from "@medusajs/types";
export type SqlFragment = {
    sql: string;
    bindings: Knex.RawBinding[];
};
export type ResolvedCrossModuleJoinSpec = CrossModuleJoinSpec & {
    alias: string;
};
export type CorrelateSpec = {
    table: string;
    alias: string;
    key: string;
};
export type LinkType = "pivot" | "source" | "target";
export declare function inferLinkType(joinSpec: CrossModuleJoinSpec, correlateSpec: CorrelateSpec): LinkType;
export declare function qualifyTable(schema: string | undefined, table: string, defaultSchema: any): string;
export declare function getTargetPrimaryKey(joinSpec: CrossModuleJoinSpec): string;
export declare function buildLinkCorrelationSql(joinSpec: CrossModuleJoinSpec, correlateSpec: CorrelateSpec, linkAlias: string): string;
export declare function buildTargetCorrelationSql(joinSpec: CrossModuleJoinSpec, correlateSpec: CorrelateSpec, targetAlias: string, linkType: Exclude<LinkType, "normal">): string;
export declare function buildLinkToTargetJoinSql(joinSpec: CrossModuleJoinSpec, linkAlias: string, targetAlias: string): string;
export declare function buildLinkSoftDeleteSql(linkAlias: string, withDeleted: boolean): string;
export declare function buildTargetSoftDeleteSql(targetAlias: string, withDeleted: boolean): string;
export declare function quoteIdentifier(identifier: string): string;
export declare function resolveCrossModuleJoins(crossModuleJoins: CrossModuleJoinSpec[]): ResolvedCrossModuleJoinSpec[];
//# sourceMappingURL=helpers.d.ts.map