import { type AssetSpecVersionRef } from './asset-spec.js';
export declare const VERSION_NODE_KIND_VALUES: readonly ["APP_VERSION", "ASSET_VERSION", "PACK_VERSION", "ASSET_SPEC_VERSION"];
export type VersionNodeKind = (typeof VERSION_NODE_KIND_VALUES)[number];
export declare const RELATION_TYPE_VALUES: readonly ["USES", "CONTAINS", "REMIXES"];
export type RelationType = (typeof RELATION_TYPE_VALUES)[number];
export interface VersionNodeRef {
    id: string;
    kind: VersionNodeKind;
    appVersionId?: number | null;
    assetVersionId?: number | null;
    packVersionId?: number | null;
    assetSpecVersionId?: number | null;
    createdAt: string;
    updatedAt: string;
}
export interface NodeRelationRecord {
    id: number;
    fromNodeId: string;
    toNodeId: string;
    type: RelationType;
    createdAt: string;
    updatedAt: string;
}
export interface BatchUpsertNodeRelationsRequest {
    relations: Array<{
        fromNodeId: string;
        toNodeId: string;
        type: RelationType;
    }>;
}
export interface BatchUpsertNodeRelationsResponse {
    relations: NodeRelationRecord[];
}
export type AppVersionRef = {
    kind: 'app';
    creatorUsername: string;
    name: string;
    version: string;
};
export type AssetVersionRef = {
    kind: 'asset';
    creatorUsername: string;
    name: string;
    revision: number;
};
export type PackVersionRef = {
    kind: 'pack';
    creatorUsername: string;
    name: string;
    version: string;
};
export type ContentVersionRef = AppVersionRef | AssetVersionRef | PackVersionRef | AssetSpecVersionRef;
export declare function parseContentVersionRef(raw: string): ContentVersionRef | null;
export declare function formatContentVersionRef(ref: ContentVersionRef): string;
export declare function isVersionNodeKind(value: unknown): value is VersionNodeKind;
export declare function isRelationType(value: unknown): value is RelationType;
//# sourceMappingURL=graph.d.ts.map