import { FilterExpression } from '../orm/operators.js';
import { FMTable } from '../orm/table.js';
import { FMODataLayer } from '../services.js';
import { ExecutableBuilder, ExecuteMethodOptions, ExecuteOptions, Result } from '../types.js';
import { NavigationConfig } from './query/url-builder.js';
export declare class CountBuilder<Occ extends FMTable<any, any>, DatabaseIncludeSpecialColumns extends boolean = false> implements ExecutableBuilder<number> {
    private readonly occurrence;
    private readonly layer;
    private readonly config;
    private readonly urlBuilder;
    private filterExpression?;
    private readonly queryOptions;
    private navigationConfig?;
    constructor(config: {
        occurrence: Occ;
        layer: FMODataLayer;
    });
    set navigation(navigation: NavigationConfig | undefined);
    where(expression: FilterExpression | string): CountBuilder<Occ, DatabaseIncludeSpecialColumns>;
    private buildQueryString;
    private parseCountValue;
    execute<EO extends ExecuteOptions>(options?: ExecuteMethodOptions<EO>): Promise<Result<number>>;
    getQueryString(options?: {
        useEntityIds?: boolean;
    }): string;
    getRequestConfig(): {
        method: string;
        url: string;
        body?: any;
    };
    toRequest(baseUrl: string, options?: ExecuteOptions): Request;
    processResponse(response: Response, _options?: ExecuteOptions): Promise<Result<number>>;
}
