import { ODataHttpClient, ODataHttpClientConfig, ODataResponse } from "@odata2ts/http-client-api";
import { ODataModelPayloadV4, ODataModelResponseV4 } from "@odata2ts/odata-core";
import { ODataQueryBuilderV4 } from "@odata2ts/odata-query-builder";
import { QueryObjectModel } from "@odata2ts/odata-query-objects";
import { ODataServiceOptionsInternal } from "../ODataServiceOptions";
import { ServiceStateHelperV4, SubtypeOptions } from "./ServiceStateHelperV4.js";
export declare class EntityTypeServiceV4<in out ClientType extends ODataHttpClient, T, EditableT, Q extends QueryObjectModel> {
    protected readonly __base: ServiceStateHelperV4<ClientType, Q>;
    constructor(client: ClientType, basePath: string, name: string, qModel: Q, options?: ODataServiceOptionsInternal);
    getPath(): string;
    patch(model: ODataModelPayloadV4<Partial<EditableT>>, requestConfig?: ODataHttpClientConfig<ClientType>, patchOptions?: SubtypeOptions): ODataResponse<void | ODataModelResponseV4<T>>;
    update(model: ODataModelPayloadV4<EditableT>, requestConfig?: ODataHttpClientConfig<ClientType>, updateOptions?: SubtypeOptions): ODataResponse<void | ODataModelResponseV4<T>>;
    delete(requestConfig?: ODataHttpClientConfig<ClientType>): ODataResponse<void>;
    query<ReturnType extends Partial<T> = T>(queryFn?: (builder: ODataQueryBuilderV4<Q>, qObject: Q) => void, requestConfig?: ODataHttpClientConfig<ClientType>): ODataResponse<ODataModelResponseV4<ReturnType>>;
}
