import type * as ParseResult from 'effect/ParseResult';
import * as Schema from 'effect/Schema';
import * as SchemaAST from 'effect/SchemaAST';
import type { RelationTypeIdInfo } from './get-relation-type-ids.js';
type ValueList = {
    propertyId: string;
    string: string;
    boolean: boolean;
    number: number;
    time: string;
    point: string;
}[];
type RelationsListItem = {
    id: string;
    toEntity: RecursiveQueryEntity;
    entity: {
        valuesList?: ValueList;
    };
    typeId: string;
};
export type RelationsListWithNodes = {
    nodes?: RelationsListItem[];
    totalCount?: number;
};
type RecursiveQueryEntity = {
    id: string;
    name: string;
    valuesList?: ValueList;
    relations?: RelationsListItem[];
} & {
    [K: `relations_${string}`]: RelationsListWithNodes | undefined;
};
type RawEntityValue = string | boolean | number | unknown[] | Date | {
    id: string;
};
type RawEntity = Record<string, RawEntityValue>;
type NestedRawEntity = RawEntity & {
    _relation: {
        id: string;
    } & Record<string, RawEntityValue>;
};
export type InvalidRelationEntity = {
    parentEntityId: string;
    propertyName: string;
    propertyTypeId: string;
    relationId: string;
    relationTypeId: string;
    toEntityId: string;
    raw: NestedRawEntity;
    error: ParseResult.ParseError;
};
type ConvertRelationsResult = {
    rawEntity: RawEntity;
    invalidRelations: InvalidRelationEntity[];
};
export declare const convertRelations: <_S extends Schema.Schema.AnyNoContext>(queryEntity: RecursiveQueryEntity, ast: SchemaAST.TypeLiteral, relationInfo?: RelationTypeIdInfo[]) => ConvertRelationsResult;
export {};
//# sourceMappingURL=convert-relations.d.ts.map