import { FMTable } from '../../orm/table.js';
import { RecordLocator } from '../builders/mutation-helpers.js';
/**
 * Configuration for navigation from RecordBuilder or EntitySet
 */
export interface NavigationConfig {
    recordLocator?: RecordLocator;
    relation: string;
    relationEntityId?: string;
    sourceTableName: string;
    sourceTableEntityId?: string;
    baseRelation?: string;
    baseRelationEntityId?: string;
    basePath?: string;
    basePathEntityId?: string;
}
/**
 * Builds OData query URLs for different navigation modes.
 * Handles:
 * - Record navigation: /database/sourceTable('recordId')/relation
 * - Entity set navigation: /database/sourceTable/relation
 * - Count endpoint: /database/tableId/$count
 * - Standard queries: /database/tableId
 */
export declare class QueryUrlBuilder {
    private readonly databaseName;
    private readonly occurrence;
    private readonly useEntityIds;
    constructor(databaseName: string, occurrence: FMTable<any, any>, useEntityIds: boolean);
    /**
     * Builds the full URL for a query request.
     *
     * @param queryString - The OData query string (e.g., "?$filter=...&$select=...")
     * @param options - Options including whether this is a count query, useEntityIds override, and navigation config
     */
    build(queryString: string, options: {
        isCount?: boolean;
        useEntityIds?: boolean;
        navigation?: NavigationConfig;
    }): string;
    /**
     * Builds a query string path (without database prefix) for getQueryString().
     * Used when the full URL is not needed.
     */
    buildPath(queryString: string, options?: {
        isCount?: boolean;
        useEntityIds?: boolean;
        navigation?: NavigationConfig;
    }): string;
    /**
     * Build URL for record operations (single record by ID).
     * Used by RecordBuilder to build URLs like /database/table('id').
     *
     * @param recordLocator - The record locator
     * @param queryString - The OData query string (e.g., "?$select=...")
     * @param options - Options including operation type and useEntityIds override
     */
    buildRecordUrl(recordLocator: RecordLocator, queryString: string, options?: {
        operation?: "getSingleField";
        operationParam?: string;
        useEntityIds?: boolean;
        isNavigateFromEntitySet?: boolean;
        navigateSourceTableName?: string;
        navigateRelation?: string;
    }): string;
}
