import { EntityLink } from "../links/entityLink.js";
import { AnyRecordLink } from "../links/recordLink.js";
import { VersionLink } from "../links/versionLink.js";
import { AnyRecord, UnknownRecord } from "../records/record.js";
export declare enum QueryLinkValueType {
    TAG = "tag",
    ENTITY = "entity",
    RECORD = "record",
    VERSION = "version"
}
type QueryLinkValueTag = [QueryLinkValueType.TAG, string];
type QueryLinkValueEntity = [QueryLinkValueType.ENTITY, EntityLink];
type QueryLinkValueRecord<T extends AnyRecord> = [
    QueryLinkValueType.RECORD,
    AnyRecordLink,
    T
];
type QueryLinkValueVersion = [QueryLinkValueType.VERSION, VersionLink];
export type QueryLinkValue<T extends AnyRecord> = QueryLinkValueTag | QueryLinkValueEntity | QueryLinkValueRecord<T> | QueryLinkValueVersion;
declare function queryValueTag(tag: string): QueryLinkValueTag;
declare function queryValueEntity(entity: string): QueryLinkValueEntity;
declare function queryValueRecord<T extends AnyRecord = UnknownRecord>(recordLink: AnyRecordLink): QueryLinkValueRecord<T>;
declare function queryValueVersion(versionLink: VersionLink): QueryLinkValueVersion;
declare function queryLinkValueToString<T extends AnyRecord>(queryLinkValue: QueryLinkValue<T>): string;
declare function queryLinkValueIs(value: QueryLinkValue<AnyRecord>, obj: any): boolean;
declare function queryLinkValuesMatch(value1: QueryLinkValue<AnyRecord>, value2: QueryLinkValue<AnyRecord>): boolean;
export declare const QueryLinkValue: {
    tag: typeof queryValueTag;
    entity: typeof queryValueEntity;
    record: typeof queryValueRecord;
    version: typeof queryValueVersion;
    is: typeof queryLinkValueIs;
    match: typeof queryLinkValuesMatch;
    toString: typeof queryLinkValueToString;
};
export {};
