import { Observable } from 'rxjs';
import { ODataModel } from '../models/model';
import { ODataEntity, ODataOptions, ODataSingletonResource } from '../resources';
import { ODataEntityService } from './entity';
/**
 * OData Singleton Service
 * www.odata.org/getting-started/advanced-tutorial/#singleton
 */
export declare class ODataSingletonService<T> extends ODataEntityService<T> {
    static Model?: typeof ODataModel;
    model(entity?: Partial<T>): ODataModel<T> & import("angular-odata").ModelInterface<T>;
    /**
     * Get the entity resource for this service.
     * @param key The entity key.
     */
    entity(): ODataSingletonResource<T>;
    /**
     * Attach an existing model to this service.
     * @param model The model to attach.
     */
    attach<M extends ODataModel<T>>(model: M): void;
    /**
     * The schema for the singleton.
     */
    get singletonSchema(): import("angular-odata").ODataEntitySet | undefined;
    /**
     * Update the singleton entity
     * @param attrs The attributes for the entity.
     * @param etag The etag for the entity.
     * @param options The options for the request.
     */
    update(attrs: Partial<T>, options?: ODataOptions & {
        etag?: string;
    }): Observable<ODataEntity<T>>;
    /**
     * Patch the singleton entity
     * @param attrs The attributes for the entity.
     * @param etag The etag for the entity.
     * @param options The options for the request.
     */
    patch(attrs: Partial<T>, options?: ODataOptions & {
        etag?: string;
    }): Observable<ODataEntity<T>>;
}
