import { FMTable, InferSchemaOutputFromFMTable, InsertDataFromFMTable, UpdateDataFromFMTable, ValidExpandTarget } from '../orm/table.js';
import { FMODataLayer } from '../services.js';
import { RowIdRecordLocator } from './builders/mutation-helpers.js';
import { CountBuilder } from './count-builder.js';
import { Database } from './database.js';
import { DeleteBuilder } from './delete-builder.js';
import { InsertBuilder } from './insert-builder.js';
import { QueryBuilder } from './query/index.js';
import { RecordBuilder } from './record-builder.js';
import { UpdateBuilder } from './update-builder.js';
export declare class EntitySet<Occ extends FMTable<any, any>, DatabaseIncludeSpecialColumns extends boolean = false> {
    private readonly occurrence;
    private readonly layer;
    private readonly config;
    private readonly logger;
    private readonly database;
    private readonly isNavigateFromEntitySet?;
    private readonly navigateRelation?;
    private readonly navigateRelationEntityId?;
    private readonly navigateSourceTableName?;
    private readonly navigateSourceTableEntityId?;
    private readonly navigateBasePath?;
    private readonly navigateBasePathEntityId?;
    constructor(config: {
        occurrence: Occ;
        layer: FMODataLayer;
        database?: any;
    });
    static create<Occ extends FMTable<any, any>, DatabaseIncludeSpecialColumns extends boolean = false>(config: {
        occurrence: Occ;
        layer: FMODataLayer;
        database: Database<DatabaseIncludeSpecialColumns>;
    }): EntitySet<Occ, DatabaseIncludeSpecialColumns>;
    private applyNavigationContext;
    list(): QueryBuilder<Occ, keyof InferSchemaOutputFromFMTable<Occ>, false, false, {}, false, DatabaseIncludeSpecialColumns>;
    count(): CountBuilder<Occ, DatabaseIncludeSpecialColumns>;
    get(locator: RowIdRecordLocator | string | number): RecordBuilder<Occ, false, undefined, keyof InferSchemaOutputFromFMTable<Occ>, Record<string, never>, DatabaseIncludeSpecialColumns>;
    insert(data: InsertDataFromFMTable<Occ>, options: {
        returnFullRecord: false;
    }): InsertBuilder<Occ, "minimal", DatabaseIncludeSpecialColumns>;
    insert(data: InsertDataFromFMTable<Occ>, options?: {
        returnFullRecord?: true;
    }): InsertBuilder<Occ, "representation", DatabaseIncludeSpecialColumns>;
    update(data: UpdateDataFromFMTable<Occ>, options: {
        returnFullRecord: true;
    }): UpdateBuilder<Occ, "representation", DatabaseIncludeSpecialColumns>;
    update(data: UpdateDataFromFMTable<Occ>, options?: {
        returnFullRecord?: false;
    }): UpdateBuilder<Occ, "minimal", DatabaseIncludeSpecialColumns>;
    delete(): DeleteBuilder<Occ>;
    navigate<TargetTable extends FMTable<any, any>>(targetTable: ValidExpandTarget<Occ, TargetTable>): EntitySet<TargetTable extends FMTable<any, any> ? TargetTable : never, DatabaseIncludeSpecialColumns>;
}
