import { ODataHttpClient } from "@odata2ts/http-client-api";
import { ODataModelPayloadV4 } from "@odata2ts/odata-core";
import { ODataQueryBuilderV4 } from "@odata2ts/odata-query-builder";
import { QComplexParam, QueryObjectModel } from "@odata2ts/odata-query-objects";
import { ODataServiceOptionsInternal } from "../ODataServiceOptions";
import { ServiceStateHelper } from "../ServiceStateHelper.js";
export interface SubtypeOptions {
    withCastPathSegment?: boolean;
    withTypeControlInfo?: boolean;
}
export declare class ServiceStateHelperV4<in out ClientType extends ODataHttpClient, Q extends QueryObjectModel> extends ServiceStateHelper<ClientType> {
    readonly qModel: Q;
    readonly qResponseType: QComplexParam<any, Q>;
    constructor(client: ClientType, basePath: string, name: string, qModel: Q, options?: ODataServiceOptionsInternal);
    applyQueryBuilder: (queryFn?: ((builder: ODataQueryBuilderV4<Q>, qObject: Q) => void) | undefined) => string;
    evaluateSubtypeOptions(options: SubtypeOptions | undefined): {
        dontUseCastPathSegment: boolean;
        useTypeCi: boolean | undefined;
    };
    addTypeControlInfo<T>(model: ODataModelPayloadV4<T>): {
        "@odata.type": string;
    } & T & {
        "@odata.type"?: string | undefined;
        "@odata.context"?: string | undefined;
    };
}
