import { OmniaNamedModel, GuidValue, ApiResponse, IOmniaPropertyBag, IMessageBusTopicSubscription } from "../../models";
import { HttpClient } from "../http";
import { AxiosResponse } from "axios";
export declare abstract class OmniaPropertyBagBase<T extends OmniaNamedModel> implements IOmniaPropertyBag<T> {
    protected httpClient: HttpClient;
    private currentProperties;
    private retrivedPropertiesPromise;
    private propertyBagChangedPublishSubscriber;
    protected abstract createAddOrUpdateRequest: (route: string, values: Array<T>) => Promise<AxiosResponse<ApiResponse<Array<T>>>>;
    protected abstract createGetAllValuesRequest: (route: string) => Promise<AxiosResponse<ApiResponse<Array<T>>>>;
    protected abstract createRemoveValuesRequest: (route: string, values: Array<T>) => Promise<AxiosResponse<ApiResponse<void>>>;
    protected abstract createRemoveAllValuesRequest: (route: string) => Promise<AxiosResponse<ApiResponse<void>>>;
    protected abstract createRemoveOmniaServiceValuesRequest: (route: string, omniaServiceId: GuidValue) => Promise<AxiosResponse<ApiResponse<void>>>;
    constructor(initialProperties?: Array<T>);
    getModel: <Model extends T>(model: new () => Model) => Model;
    addOrUpdate: (...args: Array<T>) => Promise<Array<T>>;
    getAllValues: (forceGetFromServer?: boolean) => Promise<Array<T>>;
    removeValues: (...args: Array<T>) => Promise<void>;
    removeAllValues: () => Promise<void>;
    removeOmniaServiceValues: (omniaServiceId: GuidValue) => Promise<void>;
    onChanged: () => IMessageBusTopicSubscription<void>;
}
