import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Preference } from '../model/preference';
import { PreferenceArray } from '../model/preferenceArray';
import { PreferenceSingle } from '../model/preferenceSingle';
import { PreferenceUpdate } from '../model/preferenceUpdate';
import { HttpConfiguration } from '../configuration';
import * as i0 from "@angular/core";
export declare class PreferencesService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: HttpConfiguration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: HttpConfiguration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * Return a single preference.
     * Return a single preference and the value.
     * @param name The name of the preference.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    getPreference(name: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PreferenceSingle>;
    getPreference(name: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PreferenceSingle>>;
    getPreference(name: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PreferenceSingle>>;
    /**
     * List all users preferences.
     * List all of the preferences of the user.
     * @param xTraceId Unique identifier associated with this request.
     * @param limit Number of items per page. The default pagination is per 50 items.
     * @param page Page number. The default pagination is per 50 items.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    listPreference(xTraceId?: string, limit?: number, page?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PreferenceArray>;
    listPreference(xTraceId?: string, limit?: number, page?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PreferenceArray>>;
    listPreference(xTraceId?: string, limit?: number, page?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PreferenceArray>>;
    /**
     * Store a new preference for this user.
     * This endpoint creates a new preference. The name and data are free-format, and entirely up to you. If the preference is not used in Firefly III itself it may not be configurable through the user interface, but you can use this endpoint to persist custom data for your own app.
     * @param preference JSON array with the necessary preference information or key&#x3D;value pairs. See the model for the exact specifications.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    storePreference(preference: Preference, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PreferenceSingle>;
    storePreference(preference: Preference, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PreferenceSingle>>;
    storePreference(preference: Preference, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PreferenceSingle>>;
    /**
     * Update preference
     * Update a user\&#39;s preference.
     * @param name The name of the preference. Will always overwrite. Will be created if it does not exist.
     * @param preferenceUpdate JSON array or key&#x3D;value pairs with the necessary preference information. See the model for the exact specifications.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    updatePreference(name: string, preferenceUpdate: PreferenceUpdate, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PreferenceSingle>;
    updatePreference(name: string, preferenceUpdate: PreferenceUpdate, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PreferenceSingle>>;
    updatePreference(name: string, preferenceUpdate: PreferenceUpdate, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PreferenceSingle>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<PreferencesService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PreferencesService>;
}
