import { FMTable } from '../orm/table.js';
import { FMODataLayer } from '../services.js';
import { ExecutableBuilder, ExecuteMethodOptions, ExecuteOptions, Result } from '../types.js';
import { RecordLocator } from './builders/mutation-helpers.js';
import { QueryBuilder } from './query-builder.js';
/**
 * Initial delete builder returned from EntitySet.delete()
 * Requires calling .byId() or .where() before .execute() is available
 */
export declare class DeleteBuilder<Occ extends FMTable<any, any>> {
    private readonly table;
    private readonly layer;
    private readonly config;
    constructor(config: {
        occurrence: Occ;
        layer: FMODataLayer;
    });
    /**
     * Delete a single record by ID
     */
    byId(id: string | number): ExecutableDeleteBuilder<Occ>;
    /**
     * Delete a single record by ROWID
     */
    byRowId(rowId: number): ExecutableDeleteBuilder<Occ>;
    /**
     * Delete records matching a filter query
     * @param fn Callback that receives a QueryBuilder for building the filter
     */
    where(fn: (q: QueryBuilder<Occ>) => QueryBuilder<Occ>): ExecutableDeleteBuilder<Occ>;
}
/**
 * Executable delete builder - has execute() method
 * Returned after calling .byId() or .where()
 */
export declare class ExecutableDeleteBuilder<Occ extends FMTable<any, any>> implements ExecutableBuilder<{
    deletedCount: number;
}> {
    private readonly table;
    private readonly mode;
    private readonly recordLocator?;
    private readonly queryBuilder?;
    private readonly layer;
    private readonly config;
    constructor(config: {
        occurrence: Occ;
        layer: FMODataLayer;
        mode: "byId" | "byFilter";
        recordLocator?: RecordLocator;
        queryBuilder?: QueryBuilder<Occ>;
    });
    execute(options?: ExecuteMethodOptions<ExecuteOptions>): Promise<Result<{
        deletedCount: number;
    }>>;
    getRequestConfig(): {
        method: string;
        url: string;
        body?: any;
    };
    toRequest(baseUrl: string, options?: ExecuteOptions): Request;
    processResponse(response: Response, _options?: ExecuteOptions): Promise<Result<{
        deletedCount: number;
    }>>;
}
