import { AnyRecord, UnknownRecord } from "../records/record.js";
import { QueryLinkValue } from "./queryLinkValue.js";
export declare enum QueryLinkType {
    LINK = "link",
    PATH_LINK = "path_link",
    EMPTY_PATH_LINK = "empty_path_link"
}
type QueryLinkLink<T extends AnyRecord> = [
    QueryLinkType.LINK,
    QueryLinkValue<T>
];
type QueryLinkPathLink<T extends AnyRecord> = [
    QueryLinkType.PATH_LINK,
    string,
    QueryLinkValue<T>
];
type QueryLinkEmptyPathLink = [QueryLinkType.EMPTY_PATH_LINK, string];
export type QueryLink<T extends AnyRecord> = QueryLinkLink<T> | QueryLinkPathLink<T> | QueryLinkEmptyPathLink;
declare function buildLink<T extends AnyRecord = UnknownRecord>(value: QueryLinkValue<T>): QueryLinkLink<T>;
declare function buildPathLink<T extends AnyRecord = UnknownRecord>(path: string, value: QueryLinkValue<T>): QueryLinkPathLink<T>;
declare function buildEmptyPathLink(path: string): QueryLinkEmptyPathLink;
declare function queryLinkToString<T extends AnyRecord>(queryLink: QueryLink<T>): string;
declare function linkIsInRecord<T extends AnyRecord>(record: T, queryLink: QueryLink<T>): boolean;
declare function queryLinkIsSuperset(link1: QueryLink<AnyRecord>, link2: QueryLink<AnyRecord>): boolean;
export declare const QueryLink: {
    link: typeof buildLink;
    pathLink: typeof buildPathLink;
    emptyPathLink: typeof buildEmptyPathLink;
    isInRecord: typeof linkIsInRecord;
    toString: typeof queryLinkToString;
    isSuperset: typeof queryLinkIsSuperset;
};
export {};
