import { FMTable, InferSchemaOutputFromFMTable } from '../orm/table.js';
import { FMODataLayer } from '../services.js';
import { ConditionallyWithODataAnnotations, ConditionallyWithSpecialColumns, ExecutableBuilder, ExecuteMethodOptions, ExecuteOptions, NormalizeIncludeSpecialColumns, Result } from '../types.js';
export interface InsertOptions {
    return?: "minimal" | "representation";
}
export declare class InsertBuilder<Occ extends FMTable<any, any> | undefined = undefined, ReturnPreference extends "minimal" | "representation" = "representation", DatabaseIncludeSpecialColumns extends boolean = false> implements ExecutableBuilder<ReturnPreference extends "minimal" ? {
    ROWID: number;
} : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<NonNullable<Occ>>, DatabaseIncludeSpecialColumns, false>> {
    private readonly table?;
    private readonly data;
    private readonly returnPreference;
    private readonly layer;
    private readonly config;
    constructor(config: {
        occurrence?: Occ;
        layer: FMODataLayer;
        data: Partial<InferSchemaOutputFromFMTable<NonNullable<Occ>>>;
        returnPreference?: ReturnPreference;
    });
    /**
     * Helper to merge database-level useEntityIds with per-request options
     */
    private mergeExecuteOptions;
    /**
     * Parse ROWID from Location header
     * Expected formats:
     * - contacts(ROWID=4583)
     * - contacts('some-uuid')
     */
    private parseLocationHeader;
    /**
     * Gets the table ID (FMTID) if using entity IDs, otherwise returns the table name
     * @param useEntityIds - Optional override for entity ID usage
     */
    private getTableId;
    /**
     * Builds the schema for validation, excluding container fields.
     */
    private getValidationSchema;
    execute<EO extends ExecuteOptions>(options?: ExecuteMethodOptions<EO>): Promise<Result<ReturnPreference extends "minimal" ? {
        ROWID: number;
    } : ConditionallyWithODataAnnotations<ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<NonNullable<Occ>>, NormalizeIncludeSpecialColumns<EO["includeSpecialColumns"], DatabaseIncludeSpecialColumns>, false>, EO["includeODataAnnotations"] extends true ? true : false>>>;
    getRequestConfig(): {
        method: string;
        url: string;
        body?: any;
    };
    toRequest(baseUrl: string, options?: ExecuteOptions): Request;
    processResponse<EO extends ExecuteOptions | undefined = undefined>(response: Response, options?: EO): Promise<Result<ReturnPreference extends "minimal" ? {
        ROWID: number;
    } : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<NonNullable<Occ>>, NormalizeIncludeSpecialColumns<EO extends ExecuteOptions ? EO["includeSpecialColumns"] : undefined, DatabaseIncludeSpecialColumns>, false>>>;
}
