import { FFetchOptions } from '@fetchkit/ffetch';
import { FMTable } from '../../orm/table.js';
import { ExecuteOptions } from '../../types.js';
/**
 * Resolves table identifier based on entity ID settings.
 * Used by both QueryBuilder and RecordBuilder.
 */
export declare function resolveTableId(table: FMTable<any, any> | undefined, fallbackTableName: string, useEntityIds: boolean): string;
/**
 * Merges database-level useEntityIds with per-request options.
 */
export declare function mergeEntityIdOptions<T extends Record<string, any>>(options: T | undefined, databaseDefault: boolean): T & {
    useEntityIds?: boolean;
};
/**
 * Type-safe helper for merging execute options with entity ID settings
 */
export declare function mergeExecuteOptions(options: (RequestInit & FFetchOptions & ExecuteOptions) | undefined, databaseUseEntityIds: boolean): RequestInit & FFetchOptions & {
    useEntityIds?: boolean;
};
/**
 * Creates an OData Request object with proper headers.
 * Used by both QueryBuilder and RecordBuilder to eliminate duplication.
 *
 * @param baseUrl - Base URL for the request
 * @param config - Request configuration with method and url
 * @param options - Optional execution options
 * @returns Request object ready to use
 */
export declare function createODataRequest(baseUrl: string, config: {
    method: string;
    url: string;
}, options?: {
    includeODataAnnotations?: boolean;
    normalizeDatabaseName?: boolean;
}): Request;
